From 5749552abd1972434a2b9bbb5828b1359700aab1 Mon Sep 17 00:00:00 2001 From: ItsukiMurayama Date: Wed, 4 Dec 2019 14:08:46 +0900 Subject: [PATCH 1/3] =?UTF-8?q?=E3=83=AC=E3=82=A4=E3=82=A2=E3=82=A6?= =?UTF-8?q?=E3=83=88=E9=9D=A9=E5=91=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .DS_Store | Bin 6148 -> 6148 bytes shlack/shlack/AddViewController.swift | 13 +++++-------- shlack/shlack/Base.lproj/Main.storyboard | 14 +++++++------- 3 files changed, 12 insertions(+), 15 deletions(-) diff --git a/.DS_Store b/.DS_Store index e3cc19cd5da5c2a0c2817ff2eb68746f9bcd5afa..2081024553c03eace4cc78fdb1d58d6606e7a098 100644 GIT binary patch delta 19 acmZoMXffEp&CF(`qhMrUx>=C + + + + + + - - - - - - @@ -654,6 +654,6 @@ - + From ab512353eadceb17ab60b77ac5efcf4ef2b4f197 Mon Sep 17 00:00:00 2001 From: maruta atsuki Date: Fri, 6 Dec 2019 15:33:32 +0900 Subject: [PATCH 2/3] google login --- shlack/Podfile | 2 + shlack/Podfile.lock | 34 +- .../FirebaseAuth/Firebase/Auth/CHANGELOG.md | 217 + .../Pods/FirebaseAuth/Firebase/Auth/README.md | 17 + .../Auth/Source/Auth/FIRActionCodeSettings.m | 45 + .../Firebase/Auth/Source/Auth/FIRAuth.m | 2035 ++++ .../Auth/Source/Auth/FIRAuthDataResult.m | 85 + .../Source/Auth/FIRAuthDataResult_Internal.h | 46 + .../Auth/Source/Auth/FIRAuthDispatcher.h | 63 + .../Auth/Source/Auth/FIRAuthDispatcher.m | 46 + .../Auth/Source/Auth/FIRAuthGlobalWorkQueue.h | 31 + .../Auth/Source/Auth/FIRAuthGlobalWorkQueue.m | 30 + .../Auth/Source/Auth/FIRAuthOperationType.h | 47 + .../Auth/Source/Auth/FIRAuthSerialTaskQueue.h | 50 + .../Auth/Source/Auth/FIRAuthSerialTaskQueue.m | 56 + .../Auth/Source/Auth/FIRAuthSettings.m | 33 + .../Auth/Source/Auth/FIRAuthTokenResult.m | 110 + .../Source/Auth/FIRAuthTokenResult_Internal.h | 37 + .../Auth/Source/Auth/FIRAuth_Internal.h | 122 + .../AuthProvider/Email/FIREmailAuthProvider.m | 41 + .../Email/FIREmailPasswordAuthCredential.h | 61 + .../Email/FIREmailPasswordAuthCredential.m | 90 + .../Source/AuthProvider/FIRAuthCredential.m | 46 + .../AuthProvider/FIRAuthCredential_Internal.h | 41 + .../Source/AuthProvider/FIRAuthProvider.m | 66 + .../Facebook/FIRFacebookAuthCredential.h | 36 + .../Facebook/FIRFacebookAuthCredential.m | 71 + .../Facebook/FIRFacebookAuthProvider.m | 40 + .../GameCenter/FIRGameCenterAuthCredential.h | 80 + .../GameCenter/FIRGameCenterAuthCredential.m | 90 + .../GameCenter/FIRGameCenterAuthProvider.m | 88 + .../GitHub/FIRGitHubAuthCredential.h | 41 + .../GitHub/FIRGitHubAuthCredential.m | 69 + .../GitHub/FIRGitHubAuthProvider.m | 40 + .../Google/FIRGoogleAuthCredential.h | 38 + .../Google/FIRGoogleAuthCredential.m | 76 + .../Google/FIRGoogleAuthProvider.m | 41 + .../AuthProvider/OAuth/FIROAuthCredential.m | 118 + .../OAuth/FIROAuthCredential_Internal.h | 77 + .../AuthProvider/OAuth/FIROAuthProvider.m | 352 + .../Phone/FIRPhoneAuthCredential.m | 92 + .../Phone/FIRPhoneAuthCredential_Internal.h | 70 + .../AuthProvider/Phone/FIRPhoneAuthProvider.m | 445 + .../Twitter/FIRTwitterAuthCredential.h | 48 + .../Twitter/FIRTwitterAuthCredential.m | 73 + .../Twitter/FIRTwitterAuthProvider.m | 40 + .../Auth/Source/Backend/FIRAuthBackend.h | 599 ++ .../Auth/Source/Backend/FIRAuthBackend.m | 1205 +++ .../Auth/Source/Backend/FIRAuthRPCRequest.h | 57 + .../Auth/Source/Backend/FIRAuthRPCResponse.h | 49 + .../Backend/FIRAuthRequestConfiguration.h | 52 + .../Backend/FIRAuthRequestConfiguration.m | 34 + .../Backend/FIRIdentityToolkitRequest.h | 66 + .../Backend/FIRIdentityToolkitRequest.m | 72 + .../Backend/RPC/FIRCreateAuthURIRequest.h | 88 + .../Backend/RPC/FIRCreateAuthURIRequest.m | 99 + .../Backend/RPC/FIRCreateAuthURIResponse.h | 61 + .../Backend/RPC/FIRCreateAuthURIResponse.m | 36 + .../Backend/RPC/FIRDeleteAccountRequest.h | 50 + .../Backend/RPC/FIRDeleteAccountRequest.m | 69 + .../Backend/RPC/FIRDeleteAccountResponse.h | 30 + .../Backend/RPC/FIRDeleteAccountResponse.m | 30 + .../Backend/RPC/FIREmailLinkSignInRequest.h | 66 + .../Backend/RPC/FIREmailLinkSignInRequest.m | 74 + .../Backend/RPC/FIREmailLinkSignInResponse.h | 54 + .../Backend/RPC/FIREmailLinkSignInResponse.m | 36 + .../Backend/RPC/FIRGetAccountInfoRequest.h | 53 + .../Backend/RPC/FIRGetAccountInfoRequest.m | 52 + .../Backend/RPC/FIRGetAccountInfoResponse.h | 156 + .../Backend/RPC/FIRGetAccountInfoResponse.m | 108 + .../RPC/FIRGetOOBConfirmationCodeRequest.h | 180 + .../RPC/FIRGetOOBConfirmationCodeRequest.m | 288 + .../RPC/FIRGetOOBConfirmationCodeResponse.h | 35 + .../RPC/FIRGetOOBConfirmationCodeResponse.m | 36 + .../Backend/RPC/FIRGetProjectConfigRequest.h | 41 + .../Backend/RPC/FIRGetProjectConfigRequest.m | 40 + .../Backend/RPC/FIRGetProjectConfigResponse.h | 40 + .../Backend/RPC/FIRGetProjectConfigResponse.m | 42 + .../Backend/RPC/FIRResetPasswordRequest.h | 55 + .../Backend/RPC/FIRResetPasswordRequest.m | 60 + .../Backend/RPC/FIRResetPasswordResponse.h | 52 + .../Backend/RPC/FIRResetPasswordResponse.m | 33 + .../Backend/RPC/FIRSecureTokenRequest.h | 113 + .../Backend/RPC/FIRSecureTokenRequest.m | 163 + .../Backend/RPC/FIRSecureTokenResponse.h | 50 + .../Backend/RPC/FIRSecureTokenResponse.m | 74 + .../RPC/FIRSendVerificationCodeRequest.h | 67 + .../RPC/FIRSendVerificationCodeRequest.m | 84 + .../RPC/FIRSendVerificationCodeResponse.h | 32 + .../RPC/FIRSendVerificationCodeResponse.m | 36 + .../Backend/RPC/FIRSetAccountInfoRequest.h | 151 + .../Backend/RPC/FIRSetAccountInfoRequest.m | 180 + .../Backend/RPC/FIRSetAccountInfoResponse.h | 98 + .../Backend/RPC/FIRSetAccountInfoResponse.m | 63 + .../RPC/FIRSignInWithGameCenterRequest.h | 91 + .../RPC/FIRSignInWithGameCenterRequest.m | 80 + .../RPC/FIRSignInWithGameCenterResponse.h | 64 + .../RPC/FIRSignInWithGameCenterResponse.m | 40 + .../Backend/RPC/FIRSignUpNewUserRequest.h | 72 + .../Backend/RPC/FIRSignUpNewUserRequest.m | 90 + .../Backend/RPC/FIRSignUpNewUserResponse.h | 44 + .../Backend/RPC/FIRSignUpNewUserResponse.m | 34 + .../Backend/RPC/FIRVerifyAssertionRequest.h | 113 + .../Backend/RPC/FIRVerifyAssertionRequest.m | 168 + .../Backend/RPC/FIRVerifyAssertionResponse.h | 211 + .../Backend/RPC/FIRVerifyAssertionResponse.m | 86 + .../Backend/RPC/FIRVerifyClientRequest.h | 56 + .../Backend/RPC/FIRVerifyClientRequest.m | 63 + .../Backend/RPC/FIRVerifyClientResponse.h | 38 + .../Backend/RPC/FIRVerifyClientResponse.m | 33 + .../Backend/RPC/FIRVerifyCustomTokenRequest.h | 57 + .../Backend/RPC/FIRVerifyCustomTokenRequest.m | 61 + .../RPC/FIRVerifyCustomTokenResponse.h | 52 + .../RPC/FIRVerifyCustomTokenResponse.m | 35 + .../Backend/RPC/FIRVerifyPasswordRequest.h | 81 + .../Backend/RPC/FIRVerifyPasswordRequest.m | 96 + .../Backend/RPC/FIRVerifyPasswordResponse.h | 72 + .../Backend/RPC/FIRVerifyPasswordResponse.m | 38 + .../Backend/RPC/FIRVerifyPhoneNumberRequest.h | 91 + .../Backend/RPC/FIRVerifyPhoneNumberRequest.m | 133 + .../RPC/FIRVerifyPhoneNumberResponse.h | 64 + .../RPC/FIRVerifyPhoneNumberResponse.m | 42 + .../Auth/Source/FirebaseAuthVersion.m | 25 + .../Source/Public/FIRActionCodeSettings.h | 89 + .../Source/Public/FIRAdditionalUserInfo.h | 57 + .../Firebase/Auth/Source/Public/FIRAuth.h | 826 ++ .../Auth/Source/Public/FIRAuthAPNSTokenType.h | 40 + .../Auth/Source/Public/FIRAuthCredential.h | 41 + .../Auth/Source/Public/FIRAuthDataResult.h | 57 + .../Auth/Source/Public/FIRAuthErrors.h | 358 + .../Auth/Source/Public/FIRAuthSettings.h | 35 + .../Auth/Source/Public/FIRAuthTokenResult.h | 66 + .../Auth/Source/Public/FIRAuthUIDelegate.h | 53 + .../Auth/Source/Public/FIREmailAuthProvider.h | 70 + .../Source/Public/FIRFacebookAuthProvider.h | 54 + .../Source/Public/FIRFederatedAuthProvider.h | 52 + .../Source/Public/FIRGameCenterAuthProvider.h | 62 + .../Source/Public/FIRGitHubAuthProvider.h | 55 + .../Source/Public/FIRGoogleAuthProvider.h | 56 + .../Auth/Source/Public/FIROAuthCredential.h | 53 + .../Auth/Source/Public/FIROAuthProvider.h | 95 + .../Source/Public/FIRPhoneAuthCredential.h | 36 + .../Auth/Source/Public/FIRPhoneAuthProvider.h | 105 + .../Source/Public/FIRTwitterAuthProvider.h | 54 + .../Firebase/Auth/Source/Public/FIRUser.h | 490 + .../Firebase/Auth/Source/Public/FIRUserInfo.h | 60 + .../Auth/Source/Public/FIRUserMetadata.h | 45 + .../Auth/Source/Public/FirebaseAuth.h | 46 + .../Auth/Source/Public/FirebaseAuthVersion.h | 27 + .../Auth/Source/Storage/FIRAuthKeychain.h | 98 + .../Auth/Source/Storage/FIRAuthKeychain.m | 327 + .../Storage/FIRAuthUserDefaultsStorage.h | 36 + .../Storage/FIRAuthUserDefaultsStorage.m | 74 + .../Source/SystemService/FIRAuthAPNSToken.h | 59 + .../Source/SystemService/FIRAuthAPNSToken.m | 52 + .../SystemService/FIRAuthAPNSTokenManager.h | 78 + .../SystemService/FIRAuthAPNSTokenManager.m | 247 + .../SystemService/FIRAuthAppCredential.h | 53 + .../SystemService/FIRAuthAppCredential.m | 64 + .../FIRAuthAppCredentialManager.h | 85 + .../FIRAuthAppCredentialManager.m | 164 + .../FIRAuthNotificationManager.h | 71 + .../FIRAuthNotificationManager.m | 177 + .../SystemService/FIRAuthStoredUserManager.h | 99 + .../SystemService/FIRAuthStoredUserManager.m | 125 + .../SystemService/FIRSecureTokenService.h | 99 + .../SystemService/FIRSecureTokenService.m | 210 + .../Auth/Source/User/FIRAdditionalUserInfo.m | 98 + .../User/FIRAdditionalUserInfo_Internal.h | 46 + .../Firebase/Auth/Source/User/FIRUser.m | 1536 +++ .../Auth/Source/User/FIRUserInfoImpl.h | 61 + .../Auth/Source/User/FIRUserInfoImpl.m | 131 + .../Auth/Source/User/FIRUserMetadata.m | 64 + .../Source/User/FIRUserMetadata_Internal.h | 38 + .../Auth/Source/User/FIRUser_Internal.h | 108 + .../Utilities/FIRAuthDefaultUIDelegate.h | 43 + .../Utilities/FIRAuthDefaultUIDelegate.m | 93 + .../Auth/Source/Utilities/FIRAuthErrorUtils.h | 561 ++ .../Auth/Source/Utilities/FIRAuthErrorUtils.m | 1171 +++ .../Source/Utilities/FIRAuthExceptionUtils.h | 41 + .../Source/Utilities/FIRAuthExceptionUtils.m | 40 + .../Source/Utilities/FIRAuthInternalErrors.h | 479 + .../Source/Utilities/FIRAuthURLPresenter.h | 64 + .../Source/Utilities/FIRAuthURLPresenter.m | 190 + .../Auth/Source/Utilities/FIRAuthWebUtils.h | 101 + .../Auth/Source/Utilities/FIRAuthWebUtils.m | 197 + .../Auth/Source/Utilities/FIRAuthWebView.h | 38 + .../Auth/Source/Utilities/FIRAuthWebView.m | 86 + .../Utilities/FIRAuthWebViewController.h | 73 + .../Utilities/FIRAuthWebViewController.m | 111 + .../Auth/Source/Utilities/NSData+FIRBase64.h | 31 + .../Auth/Source/Utilities/NSData+FIRBase64.m | 33 + shlack/Pods/FirebaseAuth/LICENSE | 202 + shlack/Pods/FirebaseAuth/README.md | 223 + shlack/Pods/GTMSessionFetcher/LICENSE | 202 + shlack/Pods/GTMSessionFetcher/README.md | 23 + .../Source/GTMSessionFetcher.h | 1305 +++ .../Source/GTMSessionFetcher.m | 4583 +++++++++ .../Source/GTMSessionFetcherLogging.h | 112 + .../Source/GTMSessionFetcherLogging.m | 982 ++ .../Source/GTMSessionFetcherService.h | 193 + .../Source/GTMSessionFetcherService.m | 1369 +++ .../Source/GTMSessionUploadFetcher.h | 166 + .../Source/GTMSessionUploadFetcher.m | 1959 ++++ shlack/Pods/GoogleSignIn/.cocoapods.yml | 5 + shlack/Pods/GoogleSignIn/CHANGELOG.md | 110 + .../GoogleSignIn.framework/GoogleSignIn | Bin 0 -> 7572960 bytes .../Headers/GIDAuthentication.h | 72 + .../Headers/GIDGoogleUser.h | 43 + .../Headers/GIDProfileData.h | 34 + .../Headers/GIDSignIn.h | 187 + .../Headers/GIDSignInButton.h | 51 + .../Headers/GoogleSignIn.h | 5 + .../Modules/module.modulemap | 12 + shlack/Pods/GoogleSignIn/README.md | 18 + .../Resources/GoogleSignIn.bundle/Info.plist | 24 + .../GoogleSignIn.bundle/Roboto-Bold.ttf | Bin 0 -> 127744 bytes .../ar.lproj/GoogleSignIn.strings | 44 + .../ca.lproj/GoogleSignIn.strings | 44 + .../cs.lproj/GoogleSignIn.strings | 44 + .../da.lproj/GoogleSignIn.strings | 44 + .../de.lproj/GoogleSignIn.strings | 44 + .../el.lproj/GoogleSignIn.strings | 44 + .../en.lproj/GoogleSignIn.strings | 44 + .../en_GB.lproj/GoogleSignIn.strings | 44 + .../es.lproj/GoogleSignIn.strings | 44 + .../es_MX.lproj/GoogleSignIn.strings | 44 + .../fi.lproj/GoogleSignIn.strings | 44 + .../fr.lproj/GoogleSignIn.strings | 44 + .../fr_CA.lproj/GoogleSignIn.strings | 44 + .../Resources/GoogleSignIn.bundle/google.png | Bin 0 -> 572 bytes .../GoogleSignIn.bundle/google@2x.png | Bin 0 -> 987 bytes .../GoogleSignIn.bundle/google@3x.png | Bin 0 -> 1622 bytes .../he.lproj/GoogleSignIn.strings | 44 + .../hi.lproj/GoogleSignIn.strings | 44 + .../hr.lproj/GoogleSignIn.strings | 44 + .../hu.lproj/GoogleSignIn.strings | 44 + .../id.lproj/GoogleSignIn.strings | 44 + .../it.lproj/GoogleSignIn.strings | 44 + .../ja.lproj/GoogleSignIn.strings | 44 + .../ko.lproj/GoogleSignIn.strings | 44 + .../ms.lproj/GoogleSignIn.strings | 44 + .../nb.lproj/GoogleSignIn.strings | 44 + .../nl.lproj/GoogleSignIn.strings | 44 + .../pl.lproj/GoogleSignIn.strings | 44 + .../pt.lproj/GoogleSignIn.strings | 44 + .../pt_BR.lproj/GoogleSignIn.strings | 44 + .../pt_PT.lproj/GoogleSignIn.strings | 44 + .../ro.lproj/GoogleSignIn.strings | 44 + .../ru.lproj/GoogleSignIn.strings | 44 + .../sk.lproj/GoogleSignIn.strings | 44 + .../sv.lproj/GoogleSignIn.strings | 44 + .../th.lproj/GoogleSignIn.strings | 44 + .../tr.lproj/GoogleSignIn.strings | 44 + .../uk.lproj/GoogleSignIn.strings | 44 + .../vi.lproj/GoogleSignIn.strings | 44 + .../zh_CN.lproj/GoogleSignIn.strings | 44 + .../zh_TW.lproj/GoogleSignIn.strings | 44 + .../DebugUtils/GTMDebugSelectorValidation.h | 101 + .../DebugUtils/GTMDebugThreadValidation.h | 44 + .../DebugUtils/GTMMethodCheck.h | 69 + .../Foundation/GTMNSDictionary+URLArguments.h | 40 + .../Foundation/GTMNSDictionary+URLArguments.m | 82 + .../Foundation/GTMNSString+URLArguments.h | 45 + .../Foundation/GTMNSString+URLArguments.m | 48 + shlack/Pods/GoogleToolboxForMac/GTMDefines.h | 375 + shlack/Pods/GoogleToolboxForMac/LICENSE | 202 + shlack/Pods/GoogleToolboxForMac/README.md | 15 + shlack/Pods/Manifest.lock | 34 +- shlack/Pods/Pods.xcodeproj/project.pbxproj | 8249 ++++++++++------- .../Firebase/Firebase.xcconfig | 2 +- .../FirebaseAuth/FirebaseAuth-Info.plist | 26 + .../FirebaseAuth/FirebaseAuth-dummy.m | 5 + .../FirebaseAuth/FirebaseAuth-umbrella.h | 42 + .../FirebaseAuth/FirebaseAuth.modulemap | 6 + .../FirebaseAuth/FirebaseAuth.xcconfig | 11 + .../GTMSessionFetcher-Info.plist | 26 + .../GTMSessionFetcher-dummy.m | 5 + .../GTMSessionFetcher-prefix.pch | 12 + .../GTMSessionFetcher-umbrella.h | 20 + .../GTMSessionFetcher.modulemap | 6 + .../GTMSessionFetcher.xcconfig | 9 + .../GoogleSignIn/GoogleSignIn.xcconfig | 10 + .../GoogleToolboxForMac-Info.plist | 26 + .../GoogleToolboxForMac-dummy.m | 5 + .../GoogleToolboxForMac-prefix.pch | 12 + .../GoogleToolboxForMac-umbrella.h | 22 + .../GoogleToolboxForMac.modulemap | 6 + .../GoogleToolboxForMac.xcconfig | 8 + .../Pods-shlack-acknowledgements.markdown | 626 +- .../Pods-shlack-acknowledgements.plist | 652 +- ...ck-frameworks-Debug-input-files.xcfilelist | 2 + ...k-frameworks-Debug-output-files.xcfilelist | 2 + ...-frameworks-Release-input-files.xcfilelist | 2 + ...frameworks-Release-output-files.xcfilelist | 2 + .../Pods-shlack/Pods-shlack-frameworks.sh | 4 + ...ack-resources-Debug-input-files.xcfilelist | 2 + ...ck-resources-Debug-output-files.xcfilelist | 1 + ...k-resources-Release-input-files.xcfilelist | 2 + ...-resources-Release-output-files.xcfilelist | 1 + .../Pods-shlack/Pods-shlack-resources.sh | 129 + .../Pods-shlack/Pods-shlack.debug.xcconfig | 6 +- .../Pods-shlack/Pods-shlack.release.xcconfig | 6 +- shlack/shlack.xcodeproj/project.pbxproj | 22 + shlack/shlack/AppDelegate.swift | 10 +- shlack/shlack/AuthViewController.swift | 67 + shlack/shlack/Base.lproj/Main.storyboard | 32 +- shlack/shlack/Info.plist | 12 + 308 files changed, 44700 insertions(+), 3344 deletions(-) create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/CHANGELOG.md create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/README.md create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Auth/FIRActionCodeSettings.m create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Auth/FIRAuth.m create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Auth/FIRAuthDataResult.m create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Auth/FIRAuthDataResult_Internal.h create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Auth/FIRAuthDispatcher.h create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Auth/FIRAuthDispatcher.m create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Auth/FIRAuthGlobalWorkQueue.h create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Auth/FIRAuthGlobalWorkQueue.m create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Auth/FIRAuthOperationType.h create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Auth/FIRAuthSerialTaskQueue.h create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Auth/FIRAuthSerialTaskQueue.m create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Auth/FIRAuthSettings.m create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Auth/FIRAuthTokenResult.m create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Auth/FIRAuthTokenResult_Internal.h create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Auth/FIRAuth_Internal.h create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/AuthProvider/Email/FIREmailAuthProvider.m create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/AuthProvider/Email/FIREmailPasswordAuthCredential.h create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/AuthProvider/Email/FIREmailPasswordAuthCredential.m create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/AuthProvider/FIRAuthCredential.m create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/AuthProvider/FIRAuthCredential_Internal.h create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/AuthProvider/FIRAuthProvider.m create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/AuthProvider/Facebook/FIRFacebookAuthCredential.h create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/AuthProvider/Facebook/FIRFacebookAuthCredential.m create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/AuthProvider/Facebook/FIRFacebookAuthProvider.m create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/AuthProvider/GameCenter/FIRGameCenterAuthCredential.h create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/AuthProvider/GameCenter/FIRGameCenterAuthCredential.m create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/AuthProvider/GameCenter/FIRGameCenterAuthProvider.m create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/AuthProvider/GitHub/FIRGitHubAuthCredential.h create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/AuthProvider/GitHub/FIRGitHubAuthCredential.m create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/AuthProvider/GitHub/FIRGitHubAuthProvider.m create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/AuthProvider/Google/FIRGoogleAuthCredential.h create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/AuthProvider/Google/FIRGoogleAuthCredential.m create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/AuthProvider/Google/FIRGoogleAuthProvider.m create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/AuthProvider/OAuth/FIROAuthCredential.m create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/AuthProvider/OAuth/FIROAuthCredential_Internal.h create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/AuthProvider/OAuth/FIROAuthProvider.m create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/AuthProvider/Phone/FIRPhoneAuthCredential.m create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/AuthProvider/Phone/FIRPhoneAuthCredential_Internal.h create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/AuthProvider/Phone/FIRPhoneAuthProvider.m create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/AuthProvider/Twitter/FIRTwitterAuthCredential.h create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/AuthProvider/Twitter/FIRTwitterAuthCredential.m create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/AuthProvider/Twitter/FIRTwitterAuthProvider.m create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/FIRAuthBackend.h create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/FIRAuthBackend.m create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/FIRAuthRPCRequest.h create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/FIRAuthRPCResponse.h create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/FIRAuthRequestConfiguration.h create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/FIRAuthRequestConfiguration.m create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/FIRIdentityToolkitRequest.h create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/FIRIdentityToolkitRequest.m create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRCreateAuthURIRequest.h create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRCreateAuthURIRequest.m create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRCreateAuthURIResponse.h create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRCreateAuthURIResponse.m create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRDeleteAccountRequest.h create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRDeleteAccountRequest.m create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRDeleteAccountResponse.h create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRDeleteAccountResponse.m create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIREmailLinkSignInRequest.h create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIREmailLinkSignInRequest.m create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIREmailLinkSignInResponse.h create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIREmailLinkSignInResponse.m create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRGetAccountInfoRequest.h create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRGetAccountInfoRequest.m create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRGetAccountInfoResponse.h create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRGetAccountInfoResponse.m create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRGetOOBConfirmationCodeRequest.h create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRGetOOBConfirmationCodeRequest.m create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRGetOOBConfirmationCodeResponse.h create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRGetOOBConfirmationCodeResponse.m create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRGetProjectConfigRequest.h create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRGetProjectConfigRequest.m create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRGetProjectConfigResponse.h create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRGetProjectConfigResponse.m create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRResetPasswordRequest.h create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRResetPasswordRequest.m create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRResetPasswordResponse.h create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRResetPasswordResponse.m create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRSecureTokenRequest.h create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRSecureTokenRequest.m create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRSecureTokenResponse.h create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRSecureTokenResponse.m create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRSendVerificationCodeRequest.h create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRSendVerificationCodeRequest.m create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRSendVerificationCodeResponse.h create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRSendVerificationCodeResponse.m create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRSetAccountInfoRequest.h create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRSetAccountInfoRequest.m create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRSetAccountInfoResponse.h create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRSetAccountInfoResponse.m create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRSignInWithGameCenterRequest.h create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRSignInWithGameCenterRequest.m create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRSignInWithGameCenterResponse.h create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRSignInWithGameCenterResponse.m create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRSignUpNewUserRequest.h create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRSignUpNewUserRequest.m create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRSignUpNewUserResponse.h create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRSignUpNewUserResponse.m create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRVerifyAssertionRequest.h create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRVerifyAssertionRequest.m create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRVerifyAssertionResponse.h create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRVerifyAssertionResponse.m create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRVerifyClientRequest.h create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRVerifyClientRequest.m create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRVerifyClientResponse.h create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRVerifyClientResponse.m create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRVerifyCustomTokenRequest.h create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRVerifyCustomTokenRequest.m create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRVerifyCustomTokenResponse.h create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRVerifyCustomTokenResponse.m create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRVerifyPasswordRequest.h create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRVerifyPasswordRequest.m create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRVerifyPasswordResponse.h create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRVerifyPasswordResponse.m create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRVerifyPhoneNumberRequest.h create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRVerifyPhoneNumberRequest.m create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRVerifyPhoneNumberResponse.h create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRVerifyPhoneNumberResponse.m create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/FirebaseAuthVersion.m create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Public/FIRActionCodeSettings.h create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Public/FIRAdditionalUserInfo.h create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Public/FIRAuth.h create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Public/FIRAuthAPNSTokenType.h create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Public/FIRAuthCredential.h create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Public/FIRAuthDataResult.h create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Public/FIRAuthErrors.h create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Public/FIRAuthSettings.h create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Public/FIRAuthTokenResult.h create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Public/FIRAuthUIDelegate.h create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Public/FIREmailAuthProvider.h create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Public/FIRFacebookAuthProvider.h create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Public/FIRFederatedAuthProvider.h create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Public/FIRGameCenterAuthProvider.h create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Public/FIRGitHubAuthProvider.h create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Public/FIRGoogleAuthProvider.h create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Public/FIROAuthCredential.h create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Public/FIROAuthProvider.h create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Public/FIRPhoneAuthCredential.h create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Public/FIRPhoneAuthProvider.h create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Public/FIRTwitterAuthProvider.h create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Public/FIRUser.h create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Public/FIRUserInfo.h create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Public/FIRUserMetadata.h create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Public/FirebaseAuth.h create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Public/FirebaseAuthVersion.h create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Storage/FIRAuthKeychain.h create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Storage/FIRAuthKeychain.m create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Storage/FIRAuthUserDefaultsStorage.h create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Storage/FIRAuthUserDefaultsStorage.m create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/SystemService/FIRAuthAPNSToken.h create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/SystemService/FIRAuthAPNSToken.m create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/SystemService/FIRAuthAPNSTokenManager.h create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/SystemService/FIRAuthAPNSTokenManager.m create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/SystemService/FIRAuthAppCredential.h create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/SystemService/FIRAuthAppCredential.m create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/SystemService/FIRAuthAppCredentialManager.h create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/SystemService/FIRAuthAppCredentialManager.m create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/SystemService/FIRAuthNotificationManager.h create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/SystemService/FIRAuthNotificationManager.m create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/SystemService/FIRAuthStoredUserManager.h create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/SystemService/FIRAuthStoredUserManager.m create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/SystemService/FIRSecureTokenService.h create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/SystemService/FIRSecureTokenService.m create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/User/FIRAdditionalUserInfo.m create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/User/FIRAdditionalUserInfo_Internal.h create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/User/FIRUser.m create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/User/FIRUserInfoImpl.h create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/User/FIRUserInfoImpl.m create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/User/FIRUserMetadata.m create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/User/FIRUserMetadata_Internal.h create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/User/FIRUser_Internal.h create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Utilities/FIRAuthDefaultUIDelegate.h create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Utilities/FIRAuthDefaultUIDelegate.m create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Utilities/FIRAuthErrorUtils.h create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Utilities/FIRAuthErrorUtils.m create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Utilities/FIRAuthExceptionUtils.h create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Utilities/FIRAuthExceptionUtils.m create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Utilities/FIRAuthInternalErrors.h create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Utilities/FIRAuthURLPresenter.h create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Utilities/FIRAuthURLPresenter.m create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Utilities/FIRAuthWebUtils.h create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Utilities/FIRAuthWebUtils.m create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Utilities/FIRAuthWebView.h create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Utilities/FIRAuthWebView.m create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Utilities/FIRAuthWebViewController.h create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Utilities/FIRAuthWebViewController.m create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Utilities/NSData+FIRBase64.h create mode 100644 shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Utilities/NSData+FIRBase64.m create mode 100644 shlack/Pods/FirebaseAuth/LICENSE create mode 100644 shlack/Pods/FirebaseAuth/README.md create mode 100644 shlack/Pods/GTMSessionFetcher/LICENSE create mode 100644 shlack/Pods/GTMSessionFetcher/README.md create mode 100644 shlack/Pods/GTMSessionFetcher/Source/GTMSessionFetcher.h create mode 100644 shlack/Pods/GTMSessionFetcher/Source/GTMSessionFetcher.m create mode 100644 shlack/Pods/GTMSessionFetcher/Source/GTMSessionFetcherLogging.h create mode 100644 shlack/Pods/GTMSessionFetcher/Source/GTMSessionFetcherLogging.m create mode 100644 shlack/Pods/GTMSessionFetcher/Source/GTMSessionFetcherService.h create mode 100644 shlack/Pods/GTMSessionFetcher/Source/GTMSessionFetcherService.m create mode 100644 shlack/Pods/GTMSessionFetcher/Source/GTMSessionUploadFetcher.h create mode 100644 shlack/Pods/GTMSessionFetcher/Source/GTMSessionUploadFetcher.m create mode 100755 shlack/Pods/GoogleSignIn/.cocoapods.yml create mode 100755 shlack/Pods/GoogleSignIn/CHANGELOG.md create mode 100755 shlack/Pods/GoogleSignIn/Frameworks/GoogleSignIn.framework/GoogleSignIn create mode 100755 shlack/Pods/GoogleSignIn/Frameworks/GoogleSignIn.framework/Headers/GIDAuthentication.h create mode 100755 shlack/Pods/GoogleSignIn/Frameworks/GoogleSignIn.framework/Headers/GIDGoogleUser.h create mode 100755 shlack/Pods/GoogleSignIn/Frameworks/GoogleSignIn.framework/Headers/GIDProfileData.h create mode 100755 shlack/Pods/GoogleSignIn/Frameworks/GoogleSignIn.framework/Headers/GIDSignIn.h create mode 100755 shlack/Pods/GoogleSignIn/Frameworks/GoogleSignIn.framework/Headers/GIDSignInButton.h create mode 100755 shlack/Pods/GoogleSignIn/Frameworks/GoogleSignIn.framework/Headers/GoogleSignIn.h create mode 100755 shlack/Pods/GoogleSignIn/Frameworks/GoogleSignIn.framework/Modules/module.modulemap create mode 100755 shlack/Pods/GoogleSignIn/README.md create mode 100755 shlack/Pods/GoogleSignIn/Resources/GoogleSignIn.bundle/Info.plist create mode 100755 shlack/Pods/GoogleSignIn/Resources/GoogleSignIn.bundle/Roboto-Bold.ttf create mode 100755 shlack/Pods/GoogleSignIn/Resources/GoogleSignIn.bundle/ar.lproj/GoogleSignIn.strings create mode 100755 shlack/Pods/GoogleSignIn/Resources/GoogleSignIn.bundle/ca.lproj/GoogleSignIn.strings create mode 100755 shlack/Pods/GoogleSignIn/Resources/GoogleSignIn.bundle/cs.lproj/GoogleSignIn.strings create mode 100755 shlack/Pods/GoogleSignIn/Resources/GoogleSignIn.bundle/da.lproj/GoogleSignIn.strings create mode 100755 shlack/Pods/GoogleSignIn/Resources/GoogleSignIn.bundle/de.lproj/GoogleSignIn.strings create mode 100755 shlack/Pods/GoogleSignIn/Resources/GoogleSignIn.bundle/el.lproj/GoogleSignIn.strings create mode 100755 shlack/Pods/GoogleSignIn/Resources/GoogleSignIn.bundle/en.lproj/GoogleSignIn.strings create mode 100755 shlack/Pods/GoogleSignIn/Resources/GoogleSignIn.bundle/en_GB.lproj/GoogleSignIn.strings create mode 100755 shlack/Pods/GoogleSignIn/Resources/GoogleSignIn.bundle/es.lproj/GoogleSignIn.strings create mode 100755 shlack/Pods/GoogleSignIn/Resources/GoogleSignIn.bundle/es_MX.lproj/GoogleSignIn.strings create mode 100755 shlack/Pods/GoogleSignIn/Resources/GoogleSignIn.bundle/fi.lproj/GoogleSignIn.strings create mode 100755 shlack/Pods/GoogleSignIn/Resources/GoogleSignIn.bundle/fr.lproj/GoogleSignIn.strings create mode 100755 shlack/Pods/GoogleSignIn/Resources/GoogleSignIn.bundle/fr_CA.lproj/GoogleSignIn.strings create mode 100755 shlack/Pods/GoogleSignIn/Resources/GoogleSignIn.bundle/google.png create mode 100755 shlack/Pods/GoogleSignIn/Resources/GoogleSignIn.bundle/google@2x.png create mode 100755 shlack/Pods/GoogleSignIn/Resources/GoogleSignIn.bundle/google@3x.png create mode 100755 shlack/Pods/GoogleSignIn/Resources/GoogleSignIn.bundle/he.lproj/GoogleSignIn.strings create mode 100755 shlack/Pods/GoogleSignIn/Resources/GoogleSignIn.bundle/hi.lproj/GoogleSignIn.strings create mode 100755 shlack/Pods/GoogleSignIn/Resources/GoogleSignIn.bundle/hr.lproj/GoogleSignIn.strings create mode 100755 shlack/Pods/GoogleSignIn/Resources/GoogleSignIn.bundle/hu.lproj/GoogleSignIn.strings create mode 100755 shlack/Pods/GoogleSignIn/Resources/GoogleSignIn.bundle/id.lproj/GoogleSignIn.strings create mode 100755 shlack/Pods/GoogleSignIn/Resources/GoogleSignIn.bundle/it.lproj/GoogleSignIn.strings create mode 100755 shlack/Pods/GoogleSignIn/Resources/GoogleSignIn.bundle/ja.lproj/GoogleSignIn.strings create mode 100755 shlack/Pods/GoogleSignIn/Resources/GoogleSignIn.bundle/ko.lproj/GoogleSignIn.strings create mode 100755 shlack/Pods/GoogleSignIn/Resources/GoogleSignIn.bundle/ms.lproj/GoogleSignIn.strings create mode 100755 shlack/Pods/GoogleSignIn/Resources/GoogleSignIn.bundle/nb.lproj/GoogleSignIn.strings create mode 100755 shlack/Pods/GoogleSignIn/Resources/GoogleSignIn.bundle/nl.lproj/GoogleSignIn.strings create mode 100755 shlack/Pods/GoogleSignIn/Resources/GoogleSignIn.bundle/pl.lproj/GoogleSignIn.strings create mode 100755 shlack/Pods/GoogleSignIn/Resources/GoogleSignIn.bundle/pt.lproj/GoogleSignIn.strings create mode 100755 shlack/Pods/GoogleSignIn/Resources/GoogleSignIn.bundle/pt_BR.lproj/GoogleSignIn.strings create mode 100755 shlack/Pods/GoogleSignIn/Resources/GoogleSignIn.bundle/pt_PT.lproj/GoogleSignIn.strings create mode 100755 shlack/Pods/GoogleSignIn/Resources/GoogleSignIn.bundle/ro.lproj/GoogleSignIn.strings create mode 100755 shlack/Pods/GoogleSignIn/Resources/GoogleSignIn.bundle/ru.lproj/GoogleSignIn.strings create mode 100755 shlack/Pods/GoogleSignIn/Resources/GoogleSignIn.bundle/sk.lproj/GoogleSignIn.strings create mode 100755 shlack/Pods/GoogleSignIn/Resources/GoogleSignIn.bundle/sv.lproj/GoogleSignIn.strings create mode 100755 shlack/Pods/GoogleSignIn/Resources/GoogleSignIn.bundle/th.lproj/GoogleSignIn.strings create mode 100755 shlack/Pods/GoogleSignIn/Resources/GoogleSignIn.bundle/tr.lproj/GoogleSignIn.strings create mode 100755 shlack/Pods/GoogleSignIn/Resources/GoogleSignIn.bundle/uk.lproj/GoogleSignIn.strings create mode 100755 shlack/Pods/GoogleSignIn/Resources/GoogleSignIn.bundle/vi.lproj/GoogleSignIn.strings create mode 100755 shlack/Pods/GoogleSignIn/Resources/GoogleSignIn.bundle/zh_CN.lproj/GoogleSignIn.strings create mode 100755 shlack/Pods/GoogleSignIn/Resources/GoogleSignIn.bundle/zh_TW.lproj/GoogleSignIn.strings create mode 100644 shlack/Pods/GoogleToolboxForMac/DebugUtils/GTMDebugSelectorValidation.h create mode 100644 shlack/Pods/GoogleToolboxForMac/DebugUtils/GTMDebugThreadValidation.h create mode 100644 shlack/Pods/GoogleToolboxForMac/DebugUtils/GTMMethodCheck.h create mode 100644 shlack/Pods/GoogleToolboxForMac/Foundation/GTMNSDictionary+URLArguments.h create mode 100644 shlack/Pods/GoogleToolboxForMac/Foundation/GTMNSDictionary+URLArguments.m create mode 100644 shlack/Pods/GoogleToolboxForMac/Foundation/GTMNSString+URLArguments.h create mode 100644 shlack/Pods/GoogleToolboxForMac/Foundation/GTMNSString+URLArguments.m create mode 100644 shlack/Pods/GoogleToolboxForMac/GTMDefines.h create mode 100644 shlack/Pods/GoogleToolboxForMac/LICENSE create mode 100644 shlack/Pods/GoogleToolboxForMac/README.md create mode 100644 shlack/Pods/Target Support Files/FirebaseAuth/FirebaseAuth-Info.plist create mode 100644 shlack/Pods/Target Support Files/FirebaseAuth/FirebaseAuth-dummy.m create mode 100644 shlack/Pods/Target Support Files/FirebaseAuth/FirebaseAuth-umbrella.h create mode 100644 shlack/Pods/Target Support Files/FirebaseAuth/FirebaseAuth.modulemap create mode 100644 shlack/Pods/Target Support Files/FirebaseAuth/FirebaseAuth.xcconfig create mode 100644 shlack/Pods/Target Support Files/GTMSessionFetcher/GTMSessionFetcher-Info.plist create mode 100644 shlack/Pods/Target Support Files/GTMSessionFetcher/GTMSessionFetcher-dummy.m create mode 100644 shlack/Pods/Target Support Files/GTMSessionFetcher/GTMSessionFetcher-prefix.pch create mode 100644 shlack/Pods/Target Support Files/GTMSessionFetcher/GTMSessionFetcher-umbrella.h create mode 100644 shlack/Pods/Target Support Files/GTMSessionFetcher/GTMSessionFetcher.modulemap create mode 100644 shlack/Pods/Target Support Files/GTMSessionFetcher/GTMSessionFetcher.xcconfig create mode 100644 shlack/Pods/Target Support Files/GoogleSignIn/GoogleSignIn.xcconfig create mode 100644 shlack/Pods/Target Support Files/GoogleToolboxForMac/GoogleToolboxForMac-Info.plist create mode 100644 shlack/Pods/Target Support Files/GoogleToolboxForMac/GoogleToolboxForMac-dummy.m create mode 100644 shlack/Pods/Target Support Files/GoogleToolboxForMac/GoogleToolboxForMac-prefix.pch create mode 100644 shlack/Pods/Target Support Files/GoogleToolboxForMac/GoogleToolboxForMac-umbrella.h create mode 100644 shlack/Pods/Target Support Files/GoogleToolboxForMac/GoogleToolboxForMac.modulemap create mode 100644 shlack/Pods/Target Support Files/GoogleToolboxForMac/GoogleToolboxForMac.xcconfig create mode 100644 shlack/Pods/Target Support Files/Pods-shlack/Pods-shlack-resources-Debug-input-files.xcfilelist create mode 100644 shlack/Pods/Target Support Files/Pods-shlack/Pods-shlack-resources-Debug-output-files.xcfilelist create mode 100644 shlack/Pods/Target Support Files/Pods-shlack/Pods-shlack-resources-Release-input-files.xcfilelist create mode 100644 shlack/Pods/Target Support Files/Pods-shlack/Pods-shlack-resources-Release-output-files.xcfilelist create mode 100755 shlack/Pods/Target Support Files/Pods-shlack/Pods-shlack-resources.sh create mode 100644 shlack/shlack/AuthViewController.swift diff --git a/shlack/Podfile b/shlack/Podfile index c0f88ef..e44915b 100644 --- a/shlack/Podfile +++ b/shlack/Podfile @@ -9,5 +9,7 @@ pod 'Firebase/Analytics' pod 'Firebase/Core' pod 'Firebase/Database' pod 'SwiftyJSON' +pod 'Firebase/Auth' +pod 'GoogleSignIn' # https://firebase.google.com/docs/ios/setup#available-pods end diff --git a/shlack/Podfile.lock b/shlack/Podfile.lock index 8fbfdce..9ab3c93 100644 --- a/shlack/Podfile.lock +++ b/shlack/Podfile.lock @@ -1,6 +1,9 @@ PODS: - Firebase/Analytics (6.5.0): - Firebase/Core + - Firebase/Auth (6.5.0): + - Firebase/CoreOnly + - FirebaseAuth (~> 6.2.1) - Firebase/Core (6.5.0): - Firebase/CoreOnly - FirebaseAnalytics (= 6.0.4) @@ -18,6 +21,12 @@ PODS: - GoogleUtilities/Network (~> 6.0) - "GoogleUtilities/NSData+zlib (~> 6.0)" - nanopb (~> 0.3) + - FirebaseAuth (6.2.1): + - FirebaseAuthInterop (~> 1.0) + - FirebaseCore (~> 6.0) + - GoogleUtilities/AppDelegateSwizzler (~> 6.2) + - GoogleUtilities/Environment (~> 6.2) + - GTMSessionFetcher/Core (~> 1.1) - FirebaseAuthInterop (1.0.0) - FirebaseCore (6.1.0): - GoogleUtilities/Environment (~> 6.0) @@ -36,6 +45,18 @@ PODS: - GoogleUtilities/Network (~> 6.0) - "GoogleUtilities/NSData+zlib (~> 6.0)" - nanopb (~> 0.3) + - GoogleSignIn (4.4.0): + - "GoogleToolboxForMac/NSDictionary+URLArguments (~> 2.1)" + - "GoogleToolboxForMac/NSString+URLArguments (~> 2.1)" + - GTMSessionFetcher/Core (~> 1.1) + - GoogleToolboxForMac/DebugUtils (2.2.1): + - GoogleToolboxForMac/Defines (= 2.2.1) + - GoogleToolboxForMac/Defines (2.2.1) + - "GoogleToolboxForMac/NSDictionary+URLArguments (2.2.1)": + - GoogleToolboxForMac/DebugUtils (= 2.2.1) + - GoogleToolboxForMac/Defines (= 2.2.1) + - "GoogleToolboxForMac/NSString+URLArguments (= 2.2.1)" + - "GoogleToolboxForMac/NSString+URLArguments (2.2.1)" - GoogleUtilities/AppDelegateSwizzler (6.2.3): - GoogleUtilities/Environment - GoogleUtilities/Logger @@ -54,6 +75,7 @@ PODS: - GoogleUtilities/Logger - GoogleUtilities/UserDefaults (6.2.3): - GoogleUtilities/Logger + - GTMSessionFetcher/Core (1.2.2) - leveldb-library (1.20) - nanopb (0.3.901): - nanopb/decode (= 0.3.901) @@ -70,8 +92,10 @@ PODS: DEPENDENCIES: - Firebase/Analytics + - Firebase/Auth - Firebase/Core - Firebase/Database + - GoogleSignIn - RealmSwift - SwiftyJSON - YMTGetDeviceName @@ -80,12 +104,16 @@ SPEC REPOS: https://github.com/cocoapods/specs.git: - Firebase - FirebaseAnalytics + - FirebaseAuth - FirebaseAuthInterop - FirebaseCore - FirebaseDatabase - FirebaseInstanceID - GoogleAppMeasurement + - GoogleSignIn + - GoogleToolboxForMac - GoogleUtilities + - GTMSessionFetcher - leveldb-library - nanopb - Realm @@ -96,12 +124,16 @@ SPEC REPOS: SPEC CHECKSUMS: Firebase: dedc9e48ea3f3649ad5f6b982f8a0c73508a14b5 FirebaseAnalytics: 3fb375bc9d13779add4039716f868d233a473fad + FirebaseAuth: a06ad63e9bf4c86165b54cceb1c14d4f4c38d419 FirebaseAuthInterop: 0ffa57668be100582bb7643d4fcb7615496c41fc FirebaseCore: aecf02fb2274ec361b9bebeac112f5daa18273bd FirebaseDatabase: f48e067716864be2b855cf716b927ef375d6cfa0 FirebaseInstanceID: 662b8108a09fe9ed01aafdedba100fde8536b0f6 GoogleAppMeasurement: 183bd916af7f80deb67c01888368f1108d641832 + GoogleSignIn: 7ff245e1a7b26d379099d3243a562f5747e23d39 + GoogleToolboxForMac: b3553629623a3b1bff17f555e736cd5a6d95ad55 GoogleUtilities: d2b0e277a95962e09bb27f5cd42f5f0b6a506c7d + GTMSessionFetcher: 61bb0f61a4cb560030f1222021178008a5727a23 leveldb-library: 08cba283675b7ed2d99629a4bc5fd052cd2bb6a5 nanopb: 2901f78ea1b7b4015c860c2fdd1ea2fee1a18d48 Realm: 5a1d9d47bfc101dd597668b1a8af4288a2557f6d @@ -109,6 +141,6 @@ SPEC CHECKSUMS: SwiftyJSON: 36413e04c44ee145039d332b4f4e2d3e8d6c4db7 YMTGetDeviceName: fc316b382842751b81bd44eefaaec248f53a2d35 -PODFILE CHECKSUM: 851f9b218067398db64a556c4ce9360439e946c6 +PODFILE CHECKSUM: 2fc2392d396e8d7e93c4cecd9ea4bc9068775189 COCOAPODS: 1.7.5 diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/CHANGELOG.md b/shlack/Pods/FirebaseAuth/Firebase/Auth/CHANGELOG.md new file mode 100644 index 0000000..6d8436f --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/CHANGELOG.md @@ -0,0 +1,217 @@ +# v6.2.1 +- Add new client error MISSING_CLIENT_IDENTIFIER. (#3341) + +# v6.2.0 +- Expose `secret` of OAuth credential in public header. (#3089) +- Fix a keychain issue where API key is incorrectly set. (#3239) + +# v6.1.2 +- Fix line limits and linter warnings in public documentation. (#3139) + +# v6.1.1 +- Fix an issue where a user can't link with email provider by email link. (#3030) + +# v6.1.0 +- Add support of web.app as an auth domain. (#2959) +- Fix an issue where the return type of `getStoredUserForAccessGroup:error:` is nonnull. (#2879) + +# v6.0.0 +- Add support of single sign on. (#2684) +- Deprecate `reauthenticateAndRetrieveDataWithCredential:completion:`, `signInAndRetrieveDataWithCredential:completion:`, `linkAndRetrieveDataWithCredential:completion:`, `fetchProvidersForEmail:completion:`. (#2723, #2756) +- Returned oauth secret token in Generic IDP sign-in for Twitter. (#2663) +- Remove pendingToken from public API. (#2676) +- `GULAppDelegateSwizzler` is used for the app delegate swizzling. (#2591) + +# v5.4.2 +- Support new error code ERROR_INVALID_PROVIDER_ID. (#2629) + +# v5.4.1 +- Deprecate Microsoft and Yahoo OAuth Provider ID (#2517) +- Fix an issue where an exception was thrown when linking OAuth credentials. (#2521) +- Fix an issue where a wrong error was thrown when handling error with + FEDERATED_USER_ID_ALREADY_LINKED. (#2522) + +# v5.4.0 +- Add support of Generic IDP (#2405). + +# v5.3.0 +- Use the new registerInternalLibrary API to register with FirebaseCore. (#2137) + +# v5.2.0 +- Add support of Game Center sign in (#2127). + +# v5.1.0 +- Add support of custom FDL domain link (#2121). + +# v5.0.5 +- Restore SafariServices framework dependency (#2002). + +# v5.0.4 +- Fix analyzer issues (#1740). + +# v5.0.3 +- Add `FIRAuthErrorCodeMalformedJWT`, which is raised on JWT token parsing. + failures during auth operations (#1436). +- Migrate to use FirebaseAuthInterop interfaces to access FirebaseAuth (#1501). + +# v5.0.2 +- Fix an issue where JWT date timestamps weren't parsed correctly. (#1319) +- Fix an issue where anonymous accounts weren't correctly promoted to + non-anonymous when linked with passwordless email auth accounts. (#1383) +- Fix an exception from using an invalidated NSURLSession. (#1261) +- Fix a data race issue caught by the sanitizer. (#1446) + +# v5.0.1 +- Restore 4.x level of support for extensions (#1357). + +# v5.0.0 +- Adds APIs for phone Auth testing to bypass the verification flow (#1192). +- Changes the callback block signature for sign in and create user methods + to provide an AuthDataResult that includes the user and user info (#1123, #1186). +- Removes GoogleToolboxForMac dependency (#1175). +- Removes miscellaneous deprecated APIs (#1188, #1200). + +# v4.6.1 +- Fixes crash which occurred when certain Firebase IDTokens were being parsed (#1076). + +# v4.6.0 +- Adds `getIDTokenResultWithCompletion:` and `getIDTokenResultForcingRefresh:completion:` APIs which + call back with an AuthTokenResult object. The Auth token result object contains the ID token JWT string and other properties associated with the token including the decoded available payload claims (#1004). + +- Adds the `updateCurrentUser:completion:` API which sets the currentUser on the calling Auth instance to the provided user object (#1018). + +- Adds client-side validation to prevent setting `handleCodeInApp` to false when performing + email-link authentication. If `handleCodeInApp` is set to false an invalid argument exception + is thrown (#931). + +- Adds support for passing the deep link (which is embedded in the sign-in link sent via email) to the + `signInWithEmail:link:completion:` and `isSignInWithEmailLink:` methods during an + email/link sign-in flow (#1023). + +# v4.5.0 +- Adds new API which provides a way to determine the sign-in methods associated with an + email address. +- Adds new API which allows authentication using only an email link (Passwordless Authentication + with email link). + +# v4.4.4 +- Addresses CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF warnings that surface in newer versions of + Xcode and CocoaPods. +- Improves FIRUser documentation with clear message explaining when Firebase Auth attempts to validate + users and what happens when an invalidated user is detected (#694) . + +# v4.4.3 +- Adds an explicit dependency on CoreGraphics from Firebase Auth. + +# v4.4.2 +- Fixes bug where the FIRAuthResult object returned following a Phone Number authentication + always contained a nil FIRAdditionalUserInfo object. Now the FIRAdditionalUserInfo object is + never nil and its newUser field is populated correctly. + +# v4.4.0 +- Adds new APIs which return an AuthDataResult object after successfully creating an + Email/Password user, signing in anonymously, signing in with Email/Password and signing + in with Custom Token. The AuthDataResult object contains the new user and additional + information pertaining to the new user. + +# v4.3.2 +- Improves error handling for the phone number sign-in reCAPTCHA flow. +- Improves error handling for phone number linking flow. +- Fixes issue where after linking an anonymous user to a phone number the user remained + anonymous. + +# v4.3.1 +- Internal clean up. + +# v4.3.0 +- Provides account creation and last sign-in dates as metadata to the user + object. +- Returns more descriptive errors for some error cases of the phone number + sign-in reCAPTCHA flow. +- Fixes an issue that invalid users were not automatically signed out earlier. +- Fixes an issue that ID token listeners were not fired in some cases. + +# v4.2.1 +- Fixes a threading issue in phone number auth that completion block was not + executed on the main thread in some error cases. + +# v4.2.0 +- Adds new phone number verification API which makes use of an intelligent reCAPTCHA to verify the application. + +# v4.1.1 +- Improves some method documentation in headers. + +# v4.1.0 +- Allows the app to handle continue URL natively, e.g., from password reset + email. +- Allows the app to set language code, e.g., for sending password reset email. +- Fixes an issue that user's phone number did not persist on client. +- Fixes an issue that recover email action code type was reported as unknown. +- Improves app start-up time by moving initialization off from the main + thread. +- Better reports missing email error when creating a new password user. +- Changes console message logging levels to be more consistent with other + Firebase products on the iOS platform. + +# 2017-05-17 -- v4.0.0 +- Adds Phone Number Authentication. +- Adds support for generic OAuth2 identity providers. +- Adds methods that return additional user data from identity providers if + available when authenticating users. +- Improves session management by automatically refreshing tokens if possible + and signing out users if the session is detected invalidated, for example, + after the user changed password or deleted account from another device. +- Fixes an issue that reauthentication creates new user account if the user + credential is valid but does not match the currently signed in user. +- Fixes an issue that the "password" provider is not immediately listed on the + client side after adding a password to an account. +- Changes factory methods to return non-null FIRAuth instances or raises an + exception, instead of returning nullable instances. +- Changes auth state change listener to only be triggered when the user changes. +- Adds a new listener which is triggered whenever the ID token is changed. +- Switches ERROR_EMAIL_ALREADY_IN_USE to + ERROR_ACCOUNT_EXISTS_WITH_DIFFERENT_CREDENTIAL when the email used in the + signInWithCredential: call is already in use by another account. +- Deprecates FIREmailPasswordAuthProvider in favor of FIREmailAuthProvider. +- Deprecates getTokenWithCompletion in favor of getIDTokenWithCompletion on + FIRUser. +- Changes Swift API names to better align with Swift convention. + +# 2017-02-06 -- v3.1.1 +- Allows handling of additional errors when sending OOB action emails. The + server can respond with the following new error messages: + INVALID_MESSAGE_PAYLOAD,INVALID_SENDER and INVALID_RECIPIENT_EMAIL. +- Removes incorrect reference to FIRAuthErrorCodeCredentialTooOld in FIRUser.h. +- Provides additional error information from server if available. + +# 2016-12-13 -- v3.1.0 +- Adds FIRAuth methods that enable the app to follow up with user actions + delivered by email, such as verifying email address or reset password. +- No longer applies the keychain workaround introduced in v3.0.5 on iOS 10.2 + simulator or above since the issue has been fixed. +- Fixes nullability compilation warnings when used in Swift. +- Better reports missing password error. + +# 2016-10-24 -- v3.0.6 +- Switches to depend on open sourced GoogleToolboxForMac and GTMSessionFetcher. +- Improves logging of keychain error when initializing. + +# 2016-09-14 -- v3.0.5 +- Works around a keychain issue in iOS 10 simulator. +- Reports the correct error for invalid email when signing in with email and + password. + +# 2016-07-18 -- v3.0.4 +- Fixes a race condition bug that could crash the app with an exception from + NSURLSession on iOS 9. + +# 2016-06-20 -- v3.0.3 +- Adds documentation for all possible errors returned by each method. +- Improves error handling and messages for a variety of error conditions. +- Whether or not an user is considered anonymous is now consistent with other + platforms. +- A saved signed in user is now siloed between different Firebase projects + within the same app. + +# 2016-05-18 -- v3.0.2 +- Initial public release. diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/README.md b/shlack/Pods/FirebaseAuth/Firebase/Auth/README.md new file mode 100644 index 0000000..f6e123e --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/README.md @@ -0,0 +1,17 @@ +# Firebase Auth for iOS + +Firebase Auth enables apps to easily support multiple authentication options +for their end users. + +Please visit [our developer site](https://firebase.google.com/docs/auth/) for +integration instructions, documentation, support information, and terms of +service. + +# Firebase Auth Development + +Example/Auth contains a set of samples and tests that integrate with +FirebaseAuth. + +The unit tests run without any additional configuration along with the rest of +Firebase. See [Example/Auth/README.md](../../Example/Auth/README.md) for +information about setting up, running, and testing the samples. diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Auth/FIRActionCodeSettings.m b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Auth/FIRActionCodeSettings.m new file mode 100644 index 0000000..02807ff --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Auth/FIRActionCodeSettings.m @@ -0,0 +1,45 @@ +/* + * 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/LICENSE2.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 "FIRActionCodeSettings.h" + +NS_ASSUME_NONNULL_BEGIN + +@implementation FIRActionCodeSettings + +- (instancetype)init { + self = [super init]; + if (self) { + _iOSBundleID = [NSBundle mainBundle].bundleIdentifier; + } + return self; +} + +- (void)setIOSBundleID:(NSString *)iOSBundleID { + _iOSBundleID = [iOSBundleID copy]; + } + +- (void)setAndroidPackageName:(NSString *)androidPackageName + installIfNotAvailable:(BOOL)installIfNotAvailable + minimumVersion:(nullable NSString *)minimumVersion { + _androidPackageName = [androidPackageName copy]; + _androidInstallIfNotAvailable = installIfNotAvailable; + _androidMinimumVersion = [minimumVersion copy]; + } + + @end + + NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Auth/FIRAuth.m b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Auth/FIRAuth.m new file mode 100644 index 0000000..7199f71 --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Auth/FIRAuth.m @@ -0,0 +1,2035 @@ +/* + * 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 + +#import "FIRAuth_Internal.h" + +#if __has_include() +#import +#endif + +#import +#import +#import +#import +#import +#import +#import +#import + +#import "FIREmailPasswordAuthCredential.h" +#import "FIRAdditionalUserInfo_Internal.h" +#import "FIRAuthCredential_Internal.h" +#import "FIRAuthDataResult_Internal.h" +#import "FIRAuthDispatcher.h" +#import "FIRAuthErrorUtils.h" +#import "FIRAuthExceptionUtils.h" +#import "FIRAuthGlobalWorkQueue.h" +#import "FIRAuthKeychain.h" +#import "FIRAuthOperationType.h" +#import "FIRAuthSettings.h" +#import "FIRAuthStoredUserManager.h" +#import "FIRAuthWebUtils.h" +#import "FIRUser_Internal.h" +#import "FirebaseAuth.h" +#import "FIRAuthBackend.h" +#import "FIRAuthRequestConfiguration.h" +#import "FIRCreateAuthURIRequest.h" +#import "FIRCreateAuthURIResponse.h" +#import "FIREmailLinkSignInRequest.h" +#import "FIREmailLinkSignInResponse.h" +#import "FIRGameCenterAuthCredential.h" +#import "FIRGetOOBConfirmationCodeRequest.h" +#import "FIRGetOOBConfirmationCodeResponse.h" +#import "FIROAuthCredential_Internal.h" +#import "FIRResetPasswordRequest.h" +#import "FIRResetPasswordResponse.h" +#import "FIRSendVerificationCodeRequest.h" +#import "FIRSendVerificationCodeResponse.h" +#import "FIRSetAccountInfoRequest.h" +#import "FIRSetAccountInfoResponse.h" +#import "FIRSignInWithGameCenterRequest.h" +#import "FIRSignInWithGameCenterResponse.h" +#import "FIRSignUpNewUserRequest.h" +#import "FIRSignUpNewUserResponse.h" +#import "FIRVerifyAssertionRequest.h" +#import "FIRVerifyAssertionResponse.h" +#import "FIRVerifyCustomTokenRequest.h" +#import "FIRVerifyCustomTokenResponse.h" +#import "FIRVerifyPasswordRequest.h" +#import "FIRVerifyPasswordResponse.h" +#import "FIRVerifyPhoneNumberRequest.h" +#import "FIRVerifyPhoneNumberResponse.h" + +#if TARGET_OS_IOS +#import "FIRAuthAPNSToken.h" +#import "FIRAuthAPNSTokenManager.h" +#import "FIRAuthAppCredentialManager.h" +#import "FIRPhoneAuthCredential_Internal.h" +#import "FIRAuthNotificationManager.h" +#import "FIRAuthURLPresenter.h" +#endif + +NS_ASSUME_NONNULL_BEGIN + +#pragma mark - Constants + +#if defined(__IPHONE_10_0) && __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_10_0 +const NSNotificationName FIRAuthStateDidChangeNotification = @"FIRAuthStateDidChangeNotification"; +#else +NSString *const FIRAuthStateDidChangeNotification = @"FIRAuthStateDidChangeNotification"; +#endif // defined(__IPHONE_10_0) && __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_10_0 + +/** @var kMaxWaitTimeForBackoff + @brief The maximum wait time before attempting to retry auto refreshing tokens after a failed + attempt. + @remarks This is the upper limit (in seconds) of the exponential backoff used for retrying + token refresh. + */ +static NSTimeInterval kMaxWaitTimeForBackoff = 16 * 60; + +/** @var kTokenRefreshHeadStart + @brief The amount of time before the token expires that proactive refresh should be attempted. + */ +NSTimeInterval kTokenRefreshHeadStart = 5 * 60; + +/** @var kUserKey + @brief Key of user stored in the keychain. Prefixed with a Firebase app name. + */ +static NSString *const kUserKey = @"%@_firebase_user"; + +/** @var kMissingEmailInvalidParameterExceptionReason + @brief The reason for @c invalidParameterException when the email used to initiate password + reset is nil. + */ +static NSString *const kMissingEmailInvalidParameterExceptionReason = + @"The email used to initiate password reset cannot be nil."; + +/** @var kHandleCodeInAppFalseExceptionReason + @brief The reason for @c invalidParameterException when the handleCodeInApp parameter is false + on the ActionCodeSettings object used to send the link for Email-link Authentication. + */ +static NSString *const kHandleCodeInAppFalseExceptionReason = + @"You must set handleCodeInApp in your ActionCodeSettings to true for Email-link " + "Authentication."; + +static NSString *const kInvalidEmailSignInLinkExceptionMessage = + @"The link provided is not valid for email/link sign-in. Please check the link by calling " + "isSignInWithEmailLink:link: on Auth before attempting to use it for email/link sign-in."; + +/** @var kPasswordResetRequestType + @brief The action code type value for resetting password in the check action code response. + */ +static NSString *const kPasswordResetRequestType = @"PASSWORD_RESET"; + +/** @var kVerifyEmailRequestType + @brief The action code type value for verifying email in the check action code response. + */ +static NSString *const kVerifyEmailRequestType = @"VERIFY_EMAIL"; + +/** @var kRecoverEmailRequestType + @brief The action code type value for recovering email in the check action code response. + */ +static NSString *const kRecoverEmailRequestType = @"RECOVER_EMAIL"; + +/** @var kEmailLinkSignInRequestType + @brief The action code type value for an email sign-in link in the check action code response. +*/ +static NSString *const kEmailLinkSignInRequestType = @"EMAIL_SIGNIN"; + +/** @var kMissingPasswordReason + @brief The reason why the @c FIRAuthErrorCodeWeakPassword error is thrown. + @remarks This error message will be localized in the future. + */ +static NSString *const kMissingPasswordReason = @"Missing Password"; + +/** @var gKeychainServiceNameForAppName + @brief A map from Firebase app name to keychain service names. + @remarks This map is needed for looking up the keychain service name after the FIRApp instance + is deleted, to remove the associated keychain item. Accessing should occur within a + @syncronized([FIRAuth class]) context. + */ +static NSMutableDictionary *gKeychainServiceNameForAppName; + +#pragma mark - FIRActionCodeInfo + +@implementation FIRActionCodeInfo { + /** @var _email + @brief The email address to which the code was sent. The new email address in the case of + FIRActionCodeOperationRecoverEmail. + */ + NSString *_email; + + /** @var _fromEmail + @brief The current email address in the case of FIRActionCodeOperationRecoverEmail. + */ + NSString *_fromEmail; +} + +- (NSString *)dataForKey:(FIRActionDataKey)key{ + switch (key) { + case FIRActionCodeEmailKey: + return _email; + case FIRActionCodeFromEmailKey: + return _fromEmail; + } +} + +- (instancetype)initWithOperation:(FIRActionCodeOperation)operation + email:(NSString *)email + newEmail:(nullable NSString *)newEmail { + self = [super init]; + if (self) { + _operation = operation; + if (newEmail) { + _email = [newEmail copy]; + _fromEmail = [email copy]; + } else { + _email = [email copy]; + } + } + return self; +} + +/** @fn actionCodeOperationForRequestType: + @brief Returns the corresponding operation type per provided request type string. + @param requestType Request type returned in in the server response. + @return The corresponding FIRActionCodeOperation for the supplied request type. + */ ++ (FIRActionCodeOperation)actionCodeOperationForRequestType:(NSString *)requestType { + if ([requestType isEqualToString:kPasswordResetRequestType]) { + return FIRActionCodeOperationPasswordReset; + } + if ([requestType isEqualToString:kVerifyEmailRequestType]) { + return FIRActionCodeOperationVerifyEmail; + } + if ([requestType isEqualToString:kRecoverEmailRequestType]) { + return FIRActionCodeOperationRecoverEmail; + } + if ([requestType isEqualToString:kEmailLinkSignInRequestType]) { + return FIRActionCodeOperationEmailLink; + } + return FIRActionCodeOperationUnknown; +} + +@end + +#pragma mark - FIRAuth + +#if TARGET_OS_IOS +@interface FIRAuth () +#else +@interface FIRAuth () +#endif + +/** @property firebaseAppId + @brief The Firebase app ID. + */ +@property(nonatomic, copy, readonly) NSString *firebaseAppId; + +/** @property additionalFrameworkMarker + @brief Additional framework marker that will be added as part of the header of every request. + */ +@property(nonatomic, copy, nullable) NSString *additionalFrameworkMarker; + +/** @property storedUserManager + @brief The stored user manager. + */ +@property(nonatomic, strong, nullable) FIRAuthStoredUserManager *storedUserManager; + +/** @fn initWithApp: + @brief Creates a @c FIRAuth instance associated with the provided @c FIRApp instance. + @param app The application to associate the auth instance with. + */ +- (instancetype)initWithApp:(FIRApp *)app; + +@end + +@implementation FIRAuth { + /** @var _currentUser + @brief The current user. + */ + FIRUser *_currentUser; + + /** @var _firebaseAppName + @brief The Firebase app name. + */ + NSString *_firebaseAppName; + + /** @var _listenerHandles + @brief Handles returned from @c NSNotificationCenter for blocks which are "auth state did + change" notification listeners. + @remarks Mutations should occur within a @syncronized(self) context. + */ + NSMutableArray *_listenerHandles; + + /** @var _keychain + @brief The keychain service. + */ + FIRAuthKeychain *_keychain; + + /** @var _lastNotifiedUserToken + @brief The user access (ID) token used last time for posting auth state changed notification. + */ + NSString *_lastNotifiedUserToken; + + /** @var _autoRefreshTokens + @brief This flag denotes whether or not tokens should be automatically refreshed. + @remarks Will only be set to @YES if the another Firebase service is included (additionally to + Firebase Auth). + */ + BOOL _autoRefreshTokens; + + /** @var _autoRefreshScheduled + @brief Whether or not token auto-refresh is currently scheduled. + */ + BOOL _autoRefreshScheduled; + + /** @var _isAppInBackground + @brief A flag that is set to YES if the app is put in the background and no when the app is + returned to the foreground. + */ + BOOL _isAppInBackground; + + /** @var _applicationDidBecomeActiveObserver + @brief An opaque object to act as the observer for UIApplicationDidBecomeActiveNotification. + */ + id _applicationDidBecomeActiveObserver; + + /** @var _applicationDidBecomeActiveObserver + @brief An opaque object to act as the observer for + UIApplicationDidEnterBackgroundNotification. + */ + id _applicationDidEnterBackgroundObserver; +} + ++ (void)load { + [FIRApp registerInternalLibrary:(Class)self + withName:@"fire-auth" + withVersion:[NSString stringWithUTF8String:FirebaseAuthVersionStr]]; +} + ++ (void)initialize { + gKeychainServiceNameForAppName = [[NSMutableDictionary alloc] init]; +} + ++ (FIRAuth *)auth { + FIRApp *defaultApp = [FIRApp defaultApp]; + if (!defaultApp) { + [NSException raise:NSInternalInconsistencyException + format:@"The default FIRApp instance must be configured before the default FIRAuth" + @"instance can be initialized. One way to ensure that is to call " + @"`[FIRApp configure];` (`FirebaseApp.configure()` in Swift) in the App " + @"Delegate's `application:didFinishLaunchingWithOptions:` " + @"(`application(_:didFinishLaunchingWithOptions:)` in Swift)."]; + } + return [self authWithApp:defaultApp]; +} + ++ (FIRAuth *)authWithApp:(FIRApp *)app { + // Get the instance of Auth from the container, which will create or return the cached instance + // associated with this app. + id auth = FIR_COMPONENT(FIRAuthInterop, app.container); + return (FIRAuth *)auth; +} + +- (instancetype)initWithApp:(FIRApp *)app { + [FIRAuth setKeychainServiceNameForApp:app]; + self = [self initWithAPIKey:app.options.APIKey appName:app.name]; + if (self) { + _app = app; + #if TARGET_OS_IOS + _authURLPresenter = [[FIRAuthURLPresenter alloc] init]; + #endif + } + return self; +} + +- (nullable instancetype)initWithAPIKey:(NSString *)APIKey appName:(NSString *)appName { + self = [super init]; + if (self) { + _listenerHandles = [NSMutableArray array]; + _requestConfiguration = [[FIRAuthRequestConfiguration alloc] initWithAPIKey:APIKey]; + _settings = [[FIRAuthSettings alloc] init]; + _firebaseAppName = [appName copy]; + #if TARGET_OS_IOS + + static Class applicationClass = nil; + // iOS App extensions should not call [UIApplication sharedApplication], even if UIApplication + // responds to it. + if (![GULAppEnvironmentUtil isAppExtension]) { + Class cls = NSClassFromString(@"UIApplication"); + if (cls && [cls respondsToSelector:NSSelectorFromString(@"sharedApplication")]) { + applicationClass = cls; + } + } + UIApplication *application = [applicationClass sharedApplication]; + + [GULAppDelegateSwizzler proxyOriginalDelegateIncludingAPNSMethods]; + #endif + + // Continue with the rest of initialization in the work thread. + __weak FIRAuth *weakSelf = self; + dispatch_async(FIRAuthGlobalWorkQueue(), ^{ + // Load current user from Keychain. + FIRAuth *strongSelf = weakSelf; + if (!strongSelf) { + return; + } + NSString *keychainServiceName = + [FIRAuth keychainServiceNameForAppName:strongSelf->_firebaseAppName]; + if (keychainServiceName) { + strongSelf->_keychain = [[FIRAuthKeychain alloc] initWithService:keychainServiceName]; + strongSelf.storedUserManager = + [[FIRAuthStoredUserManager alloc] initWithServiceName:keychainServiceName]; + } + + NSError *error; + NSString *storedUserAccessGroup = [strongSelf.storedUserManager getStoredUserAccessGroupWithError:&error]; + if (!error) { + if (!storedUserAccessGroup) { + FIRUser *user; + if ([strongSelf getUser:&user error:&error]) { + [strongSelf updateCurrentUser:user byForce:NO savingToDisk:NO error:&error]; + self->_lastNotifiedUserToken = user.rawAccessToken; + } else { + FIRLogError(kFIRLoggerAuth, @"I-AUT000001", + @"Error loading saved user when starting up: %@", error); + } + } else { + [strongSelf useUserAccessGroup:storedUserAccessGroup error:&error]; + if (error) { + FIRLogError(kFIRLoggerAuth, @"I-AUT000001", + @"Error loading saved user when starting up: %@", error); + } + } + } else { + FIRLogError(kFIRLoggerAuth, @"I-AUT000001", + @"Error loading saved user when starting up: %@", error); + } + + #if TARGET_OS_IOS + // Initialize for phone number auth. + strongSelf->_tokenManager = + [[FIRAuthAPNSTokenManager alloc] initWithApplication:application]; + + strongSelf->_appCredentialManager = + [[FIRAuthAppCredentialManager alloc] initWithKeychain:strongSelf->_keychain]; + + strongSelf->_notificationManager = [[FIRAuthNotificationManager alloc] + initWithApplication:application + appCredentialManager:strongSelf->_appCredentialManager]; + + [GULAppDelegateSwizzler registerAppDelegateInterceptor:strongSelf]; + #endif + }); + } + return self; +} + +- (void)dealloc { + @synchronized (self) { + NSNotificationCenter *defaultCenter = [NSNotificationCenter defaultCenter]; + while (_listenerHandles.count != 0) { + FIRAuthStateDidChangeListenerHandle handleToRemove = _listenerHandles.lastObject; + [defaultCenter removeObserver:handleToRemove]; + [_listenerHandles removeLastObject]; + } + + #if TARGET_OS_IOS + [defaultCenter removeObserver:_applicationDidBecomeActiveObserver + name:UIApplicationDidBecomeActiveNotification + object:nil]; + [defaultCenter removeObserver:_applicationDidEnterBackgroundObserver + name:UIApplicationDidEnterBackgroundNotification + object:nil]; + #endif + } +} + +#pragma mark - Public API + +- (nullable FIRUser *)currentUser { + __block FIRUser *result; + dispatch_sync(FIRAuthGlobalWorkQueue(), ^{ + result = self->_currentUser; + }); + return result; +} + +- (void)fetchProvidersForEmail:(NSString *)email + completion:(nullable FIRProviderQueryCallback)completion { + dispatch_async(FIRAuthGlobalWorkQueue(), ^{ + FIRCreateAuthURIRequest *request = + [[FIRCreateAuthURIRequest alloc] initWithIdentifier:email + continueURI:@"http://www.google.com/" + requestConfiguration:self->_requestConfiguration]; + [FIRAuthBackend createAuthURI:request callback:^(FIRCreateAuthURIResponse *_Nullable response, + NSError *_Nullable error) { + if (completion) { + dispatch_async(dispatch_get_main_queue(), ^{ + completion(response.allProviders, error); + }); + } + }]; + }); +} + + +- (void)signInWithProvider:(id)provider + UIDelegate:(nullable id)UIDelegate + completion:(nullable FIRAuthDataResultCallback)completion { +#if TARGET_OS_IOS + dispatch_async(FIRAuthGlobalWorkQueue(), ^{ + FIRAuthDataResultCallback decoratedCallback = + [self signInFlowAuthDataResultCallbackByDecoratingCallback:completion]; + [provider getCredentialWithUIDelegate:UIDelegate + completion:^(FIRAuthCredential *_Nullable credential, + NSError *_Nullable error) { + if (error) { + decoratedCallback(nil, error); + return; + } + [self internalSignInAndRetrieveDataWithCredential:credential + isReauthentication:NO + callback:decoratedCallback]; + }]; + }); +#endif // TARGET_OS_IOS +} + +- (void)fetchSignInMethodsForEmail:(nonnull NSString *)email + completion:(nullable FIRSignInMethodQueryCallback)completion { + dispatch_async(FIRAuthGlobalWorkQueue(), ^{ + FIRCreateAuthURIRequest *request = + [[FIRCreateAuthURIRequest alloc] initWithIdentifier:email + continueURI:@"http://www.google.com/" + requestConfiguration:self->_requestConfiguration]; + [FIRAuthBackend createAuthURI:request callback:^(FIRCreateAuthURIResponse *_Nullable response, + NSError *_Nullable error) { + if (completion) { + dispatch_async(dispatch_get_main_queue(), ^{ + completion(response.signinMethods, error); + }); + } + }]; + }); +} + +- (void)signInWithEmail:(NSString *)email + password:(NSString *)password + completion:(nullable FIRAuthDataResultCallback)completion { + dispatch_async(FIRAuthGlobalWorkQueue(), ^{ + FIRAuthDataResultCallback decoratedCallback = + [self signInFlowAuthDataResultCallbackByDecoratingCallback:completion]; + [self internalSignInAndRetrieveDataWithEmail:email + password:password + completion:^(FIRAuthDataResult *_Nullable authResult, + NSError *_Nullable error) { + decoratedCallback(authResult, error); + }]; + }); +} + +- (void)signInWithEmail:(NSString *)email + link:(NSString *)link + completion:(nullable FIRAuthDataResultCallback)completion { + dispatch_async(FIRAuthGlobalWorkQueue(), ^{ + FIRAuthDataResultCallback decoratedCallback = + [self signInFlowAuthDataResultCallbackByDecoratingCallback:completion]; + FIREmailPasswordAuthCredential *credential = + [[FIREmailPasswordAuthCredential alloc] initWithEmail:email link:link]; + [self internalSignInAndRetrieveDataWithCredential:credential + isReauthentication:NO + callback:^(FIRAuthDataResult *_Nullable authResult, + NSError *_Nullable error) { + decoratedCallback(authResult, error); + }]; + }); +} + +/** @fn signInWithEmail:password:callback: + @brief Signs in using an email address and password. + @param email The user's email address. + @param password The user's password. + @param callback A block which is invoked when the sign in finishes (or is cancelled.) Invoked + asynchronously on the global auth work queue in the future. + @remarks This is the internal counterpart of this method, which uses a callback that does not + update the current user. + */ +- (void)signInWithEmail:(NSString *)email + password:(NSString *)password + callback:(FIRAuthResultCallback)callback { + + FIRVerifyPasswordRequest *request = + [[FIRVerifyPasswordRequest alloc] initWithEmail:email + password:password + requestConfiguration:_requestConfiguration]; + + if (![request.password length]) { + callback(nil, [FIRAuthErrorUtils wrongPasswordErrorWithMessage:nil]); + return; + } + [FIRAuthBackend verifyPassword:request + callback:^(FIRVerifyPasswordResponse *_Nullable response, + NSError *_Nullable error) { + if (error) { + callback(nil, error); + return; + } + [self completeSignInWithAccessToken:response.IDToken + accessTokenExpirationDate:response.approximateExpirationDate + refreshToken:response.refreshToken + anonymous:NO + callback:callback]; + }]; +} + +/** @fn internalSignInAndRetrieveDataWithEmail:password:callback: + @brief Signs in using an email address and password. + @param email The user's email address. + @param password The user's password. + @param completion A block which is invoked when the sign in finishes (or is cancelled.) Invoked + asynchronously on the global auth work queue in the future. + @remarks This is the internal counterpart of this method, which uses a callback that does not + update the current user. + */ +- (void)internalSignInAndRetrieveDataWithEmail:(NSString *)email + password:(NSString *)password + completion:(FIRAuthDataResultCallback)completion { + FIREmailPasswordAuthCredential *credentail = + [[FIREmailPasswordAuthCredential alloc] initWithEmail:email password:password]; + [self internalSignInAndRetrieveDataWithCredential:credentail + isReauthentication:NO + callback:completion]; +} + +/** @fn signInAndRetrieveDataWithGameCenterCredential:callback: + @brief Signs in using a game center credential. + @param credential The Game Center Auth Credential used to sign in. + @param callback A block which is invoked when the sign in finished (or is cancelled). Invoked + asynchronously on the global auth work queue in the future. + */ +- (void)signInAndRetrieveDataWithGameCenterCredential:(FIRGameCenterAuthCredential *)credential + callback:(FIRAuthDataResultCallback)callback { + FIRSignInWithGameCenterRequest *request = + [[FIRSignInWithGameCenterRequest alloc] initWithPlayerID:credential.playerID + publicKeyURL:credential.publicKeyURL + signature:credential.signature + salt:credential.salt + timestamp:credential.timestamp + displayName:credential.displayName + requestConfiguration:_requestConfiguration]; + [FIRAuthBackend signInWithGameCenter:request + callback:^(FIRSignInWithGameCenterResponse *_Nullable response, + NSError *_Nullable error) { + if (error) { + if (callback) { + callback(nil, error); + } + return; + } + + [self completeSignInWithAccessToken:response.IDToken + accessTokenExpirationDate:response.approximateExpirationDate + refreshToken:response.refreshToken + anonymous:NO + callback:^(FIRUser *_Nullable user, NSError *_Nullable error) { + if (error && callback) { + callback(nil, error); + return; + } + FIRAdditionalUserInfo *additionalUserInfo = + [[FIRAdditionalUserInfo alloc] initWithProviderID:FIRGameCenterAuthProviderID + profile:nil + username:nil + isNewUser:response.isNewUser]; + FIRAuthDataResult *result = user ? + [[FIRAuthDataResult alloc] initWithUser:user + additionalUserInfo:additionalUserInfo] : nil; + if (callback) { + callback(result, error); + } + }]; + }]; +} + +/** @fn internalSignInAndRetrieveDataWithEmail:link:completion: + @brief Signs in using an email and email sign-in link. + @param email The user's email address. + @param link The email sign-in link. + @param callback A block which is invoked when the sign in finishes (or is cancelled.) Invoked + asynchronously on the global auth work queue in the future. + */ +- (void)internalSignInAndRetrieveDataWithEmail:(nonnull NSString *)email + link:(nonnull NSString *)link + callback:(nullable FIRAuthDataResultCallback)callback { + if (![self isSignInWithEmailLink:link]) { + [FIRAuthExceptionUtils raiseInvalidParameterExceptionWithReason: + kInvalidEmailSignInLinkExceptionMessage]; + return; + } + NSDictionary *queryItems = [FIRAuthWebUtils parseURL:link]; + if (![queryItems count]) { + NSURLComponents *urlComponents = [NSURLComponents componentsWithString:link]; + queryItems = [FIRAuthWebUtils parseURL:urlComponents.query]; + } + NSString *actionCode = queryItems[@"oobCode"]; + + FIREmailLinkSignInRequest *request = + [[FIREmailLinkSignInRequest alloc] initWithEmail:email + oobCode:actionCode + requestConfiguration:_requestConfiguration]; + + [FIRAuthBackend emailLinkSignin:request + callback:^(FIREmailLinkSignInResponse *_Nullable response, + NSError *_Nullable error) { + if (error) { + if (callback) { + callback(nil, error); + } + return; + } + [self completeSignInWithAccessToken:response.IDToken + accessTokenExpirationDate:response.approximateExpirationDate + refreshToken:response.refreshToken + anonymous:NO + callback:^(FIRUser *_Nullable user, NSError *_Nullable error) { + if (error && callback) { + callback(nil, error); + return; + } + FIRAdditionalUserInfo *additionalUserInfo = + [[FIRAdditionalUserInfo alloc] initWithProviderID:FIREmailAuthProviderID + profile:nil + username:nil + isNewUser:response.isNewUser]; + FIRAuthDataResult *result = user ? + [[FIRAuthDataResult alloc] initWithUser:user + additionalUserInfo:additionalUserInfo] : nil; + if (callback) { + callback(result, error); + } + }]; + }]; +} + +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" +- (void)signInWithCredential:(FIRAuthCredential *)credential + completion:(nullable FIRAuthDataResultCallback)completion { + [self signInAndRetrieveDataWithCredential:credential completion:completion]; +} +#pragma clang diagnostic pop + +- (void)signInAndRetrieveDataWithCredential:(FIRAuthCredential *)credential + completion:(nullable FIRAuthDataResultCallback)completion { + dispatch_async(FIRAuthGlobalWorkQueue(), ^{ + FIRAuthDataResultCallback callback = + [self signInFlowAuthDataResultCallbackByDecoratingCallback:completion]; + [self internalSignInAndRetrieveDataWithCredential:credential + isReauthentication:NO + callback:callback]; + }); +} + +- (void)internalSignInWithCredential:(FIRAuthCredential *)credential + callback:(FIRAuthResultCallback)callback { + [self internalSignInAndRetrieveDataWithCredential:credential + isReauthentication:NO + callback:^(FIRAuthDataResult *_Nullable authResult, + NSError *_Nullable error) { + callback(authResult.user, error); + }]; +} + +- (void)internalSignInAndRetrieveDataWithCredential:(FIRAuthCredential *)credential + isReauthentication:(BOOL)isReauthentication + callback:(nullable FIRAuthDataResultCallback)callback { + if ([credential isKindOfClass:[FIREmailPasswordAuthCredential class]]) { + // Special case for email/password credentials + FIREmailPasswordAuthCredential *emailPasswordCredential = + (FIREmailPasswordAuthCredential *)credential; + + if (emailPasswordCredential.link) { + // Email link sign in + [self internalSignInAndRetrieveDataWithEmail:emailPasswordCredential.email + link:emailPasswordCredential.link + callback:callback]; + } else { + // Email password sign in + FIRAuthResultCallback completeEmailSignIn = ^(FIRUser *_Nullable user, + NSError *_Nullable error) { + if (callback) { + if (error) { + callback(nil, error); + return; + } + FIRAdditionalUserInfo *additionalUserInfo = + [[FIRAdditionalUserInfo alloc] initWithProviderID:FIREmailAuthProviderID + profile:nil + username:nil + isNewUser:NO]; + FIRAuthDataResult *result = user ? + [[FIRAuthDataResult alloc] initWithUser:user + additionalUserInfo:additionalUserInfo] : nil; + callback(result, error); + } + }; + + [self signInWithEmail:emailPasswordCredential.email + password:emailPasswordCredential.password + callback:completeEmailSignIn]; + } + return; + } + + if ([credential isKindOfClass:[FIRGameCenterAuthCredential class]]) { + // Special case for Game Center credentials. + [self signInAndRetrieveDataWithGameCenterCredential:(FIRGameCenterAuthCredential *)credential + callback:callback]; + return; + } + + #if TARGET_OS_IOS + if ([credential isKindOfClass:[FIRPhoneAuthCredential class]]) { + // Special case for phone auth credentials + FIRPhoneAuthCredential *phoneCredential = (FIRPhoneAuthCredential *)credential; + FIRAuthOperationType operation = + isReauthentication ? FIRAuthOperationTypeReauth : FIRAuthOperationTypeSignUpOrSignIn; + [self signInWithPhoneCredential:phoneCredential + operation:operation + callback:^(FIRVerifyPhoneNumberResponse *_Nullable response, + NSError *_Nullable error) { + if (callback) { + if (error) { + callback(nil, error); + return; + } + + [self completeSignInWithAccessToken:response.IDToken + accessTokenExpirationDate:response.approximateExpirationDate + refreshToken:response.refreshToken + anonymous:NO + callback:^(FIRUser *_Nullable user, NSError *_Nullable error) { + if (error && callback) { + callback(nil, error); + return; + } + FIRAdditionalUserInfo *additionalUserInfo = + [[FIRAdditionalUserInfo alloc] initWithProviderID:FIRPhoneAuthProviderID + profile:nil + username:nil + isNewUser:response.isNewUser]; + FIRAuthDataResult *result = user ? + [[FIRAuthDataResult alloc] initWithUser:user + additionalUserInfo:additionalUserInfo] : nil; + if (callback) { + callback(result, error); + } + }]; + } + }]; + return; + } + #endif + FIRVerifyAssertionRequest *request = + [[FIRVerifyAssertionRequest alloc] initWithProviderID:credential.provider + requestConfiguration:_requestConfiguration]; + request.autoCreate = !isReauthentication; + [credential prepareVerifyAssertionRequest:request]; + [FIRAuthBackend verifyAssertion:request + callback:^(FIRVerifyAssertionResponse *response, NSError *error) { + if (error) { + if (callback) { + callback(nil, error); + } + return; + } + + if (response.needConfirmation) { + if (callback) { + NSString *email = response.email; + FIROAuthCredential *credential = + [[FIROAuthCredential alloc] initWithVerifyAssertionResponse:response]; + callback(nil, [FIRAuthErrorUtils accountExistsWithDifferentCredentialErrorWithEmail:email + updatedCredential:credential]); + } + return; + } + + if (!response.providerID.length) { + if (callback) { + callback(nil, [FIRAuthErrorUtils unexpectedResponseWithDeserializedResponse:response]); + } + return; + } + [self completeSignInWithAccessToken:response.IDToken + accessTokenExpirationDate:response.approximateExpirationDate + refreshToken:response.refreshToken + anonymous:NO + callback:^(FIRUser *_Nullable user, NSError *_Nullable error) { + if (callback) { + if (error) { + callback(nil, error); + return; + } + FIRAdditionalUserInfo *additionalUserInfo = + [FIRAdditionalUserInfo userInfoWithVerifyAssertionResponse:response]; + FIROAuthCredential *updatedOAuthCredential = + [[FIROAuthCredential alloc] initWithVerifyAssertionResponse:response]; + FIRAuthDataResult *result = user ? + [[FIRAuthDataResult alloc] initWithUser:user + additionalUserInfo:additionalUserInfo + credential:updatedOAuthCredential] : nil; + callback(result, error); + } + }]; + }]; +} + +- (void)signInAnonymouslyWithCompletion:(nullable FIRAuthDataResultCallback)completion { + dispatch_async(FIRAuthGlobalWorkQueue(), ^{ + FIRAuthDataResultCallback decoratedCallback = + [self signInFlowAuthDataResultCallbackByDecoratingCallback:completion]; + if (self->_currentUser.anonymous) { + FIRAuthDataResult *result = + [[FIRAuthDataResult alloc] initWithUser:self->_currentUser additionalUserInfo:nil]; + decoratedCallback(result, nil); + return; + } + [self internalSignInAnonymouslyWithCompletion:^(FIRSignUpNewUserResponse *_Nullable response, + NSError *_Nullable error) { + if (error) { + decoratedCallback(nil, error); + return; + } + [self completeSignInWithAccessToken:response.IDToken + accessTokenExpirationDate:response.approximateExpirationDate + refreshToken:response.refreshToken + anonymous:YES + callback:^(FIRUser * _Nullable user, NSError * _Nullable error) { + if (error) { + decoratedCallback(nil, error); + return; + } + FIRAdditionalUserInfo *additionalUserInfo = + [[FIRAdditionalUserInfo alloc] initWithProviderID:FIREmailAuthProviderID + profile:nil + username:nil + isNewUser:YES]; + FIRAuthDataResult *authDataResult = user ? + [[FIRAuthDataResult alloc] initWithUser:user + additionalUserInfo:additionalUserInfo] : nil; + decoratedCallback(authDataResult, error); + }]; + }]; + }); +} + +- (void)signInWithCustomToken:(NSString *)token + completion:(nullable FIRAuthDataResultCallback)completion { + dispatch_async(FIRAuthGlobalWorkQueue(), ^{ + FIRAuthDataResultCallback decoratedCallback = + [self signInFlowAuthDataResultCallbackByDecoratingCallback:completion]; + [self internalSignInAndRetrieveDataWithCustomToken:token + completion:^(FIRAuthDataResult *_Nullable authResult, + NSError *_Nullable error) { + decoratedCallback(authResult, error); + }]; + }); +} + +- (void)createUserWithEmail:(NSString *)email + password:(NSString *)password + completion:(nullable FIRAuthDataResultCallback)completion { + dispatch_async(FIRAuthGlobalWorkQueue(), ^{ + FIRAuthDataResultCallback decoratedCallback = + [self signInFlowAuthDataResultCallbackByDecoratingCallback:completion]; + [self internalCreateUserWithEmail:email + password:password + completion:^(FIRSignUpNewUserResponse *_Nullable response, + NSError *_Nullable error) { + if (error) { + decoratedCallback(nil, error); + return; + } + [self completeSignInWithAccessToken:response.IDToken + accessTokenExpirationDate:response.approximateExpirationDate + refreshToken:response.refreshToken + anonymous:NO + callback:^(FIRUser *_Nullable user, NSError *_Nullable error) { + if (error) { + decoratedCallback(nil, error); + return; + } + FIRAdditionalUserInfo *additionalUserInfo = + [[FIRAdditionalUserInfo alloc] initWithProviderID:FIREmailAuthProviderID + profile:nil + username:nil + isNewUser:YES]; + FIRAuthDataResult *authDataResult = user ? + [[FIRAuthDataResult alloc] initWithUser:user + additionalUserInfo:additionalUserInfo] : nil; + decoratedCallback(authDataResult, error); + }]; + }]; + }); +} + +- (void)confirmPasswordResetWithCode:(NSString *)code + newPassword:(NSString *)newPassword + completion:(FIRConfirmPasswordResetCallback)completion { + dispatch_async(FIRAuthGlobalWorkQueue(), ^{ + FIRResetPasswordRequest *request = + [[FIRResetPasswordRequest alloc] initWithOobCode:code + newPassword:newPassword + requestConfiguration:self->_requestConfiguration]; + [FIRAuthBackend resetPassword:request callback:^(FIRResetPasswordResponse *_Nullable response, + NSError *_Nullable error) { + if (completion) { + dispatch_async(dispatch_get_main_queue(), ^{ + if (error) { + completion(error); + return; + } + completion(nil); + }); + } + }]; + }); +} + +- (void)checkActionCode:(NSString *)code completion:(FIRCheckActionCodeCallBack)completion { + dispatch_async(FIRAuthGlobalWorkQueue(), ^ { + FIRResetPasswordRequest *request = + [[FIRResetPasswordRequest alloc] initWithOobCode:code + newPassword:nil + requestConfiguration:self->_requestConfiguration]; + [FIRAuthBackend resetPassword:request callback:^(FIRResetPasswordResponse *_Nullable response, + NSError *_Nullable error) { + if (completion) { + if (error) { + dispatch_async(dispatch_get_main_queue(), ^{ + completion(nil, error); + }); + return; + } + FIRActionCodeOperation operation = + [FIRActionCodeInfo actionCodeOperationForRequestType:response.requestType]; + FIRActionCodeInfo *actionCodeInfo = + [[FIRActionCodeInfo alloc] initWithOperation:operation + email:response.email + newEmail:response.verifiedEmail]; + dispatch_async(dispatch_get_main_queue(), ^{ + completion(actionCodeInfo, nil); + }); + } + }]; + }); +} + +- (void)verifyPasswordResetCode:(NSString *)code + completion:(FIRVerifyPasswordResetCodeCallback)completion { + [self checkActionCode:code completion:^(FIRActionCodeInfo *_Nullable info, + NSError *_Nullable error) { + if (completion) { + if (error) { + completion(nil, error); + return; + } + completion([info dataForKey:FIRActionCodeEmailKey], nil); + } + }]; +} + +- (void)applyActionCode:(NSString *)code completion:(FIRApplyActionCodeCallback)completion { + dispatch_async(FIRAuthGlobalWorkQueue(), ^ { + FIRSetAccountInfoRequest *request = + [[FIRSetAccountInfoRequest alloc] initWithRequestConfiguration:self->_requestConfiguration]; + request.OOBCode = code; + [FIRAuthBackend setAccountInfo:request callback:^(FIRSetAccountInfoResponse *_Nullable response, + NSError *_Nullable error) { + if (completion) { + dispatch_async(dispatch_get_main_queue(), ^{ + completion(error); + }); + } + }]; + }); +} + +- (void)sendPasswordResetWithEmail:(NSString *)email + completion:(nullable FIRSendPasswordResetCallback)completion { + [self sendPasswordResetWithNullableActionCodeSettings:nil email:email completion:completion]; +} + +- (void)sendPasswordResetWithEmail:(NSString *)email + actionCodeSettings:(FIRActionCodeSettings *)actionCodeSettings + completion:(nullable FIRSendPasswordResetCallback)completion { + [self sendPasswordResetWithNullableActionCodeSettings:actionCodeSettings + email:email + completion:completion]; +} + +/** @fn sendPasswordResetWithNullableActionCodeSettings:actionCodeSetting:email:completion: + @brief Initiates a password reset for the given email address and @FIRActionCodeSettings object. + + @param actionCodeSettings Optionally, An @c FIRActionCodeSettings object containing settings + related to the handling action codes. + @param email The email address of the user. + @param completion Optionally; a block which is invoked when the request finishes. Invoked + asynchronously on the main thread in the future. + */ +- (void)sendPasswordResetWithNullableActionCodeSettings:(nullable FIRActionCodeSettings *) + actionCodeSettings + email:(NSString *)email + completion:(nullable FIRSendPasswordResetCallback) + completion { + dispatch_async(FIRAuthGlobalWorkQueue(), ^{ + if (!email) { + [FIRAuthExceptionUtils raiseInvalidParameterExceptionWithReason: + kMissingEmailInvalidParameterExceptionReason]; + return; + } + FIRGetOOBConfirmationCodeRequest *request = + [FIRGetOOBConfirmationCodeRequest passwordResetRequestWithEmail:email + actionCodeSettings:actionCodeSettings + requestConfiguration:self->_requestConfiguration + ]; + [FIRAuthBackend getOOBConfirmationCode:request + callback:^(FIRGetOOBConfirmationCodeResponse *_Nullable response, + NSError *_Nullable error) { + if (completion) { + dispatch_async(dispatch_get_main_queue(), ^{ + completion(error); + }); + } + }]; + }); +} + +- (void)sendSignInLinkToEmail:(nonnull NSString *)email + actionCodeSettings:(nonnull FIRActionCodeSettings *)actionCodeSettings + completion:(nullable FIRSendSignInLinkToEmailCallback)completion { + dispatch_async(FIRAuthGlobalWorkQueue(), ^{ + if (!email) { + [FIRAuthExceptionUtils raiseInvalidParameterExceptionWithReason: + kMissingEmailInvalidParameterExceptionReason]; + } + + if (!actionCodeSettings.handleCodeInApp) { + [FIRAuthExceptionUtils raiseInvalidParameterExceptionWithReason: + kHandleCodeInAppFalseExceptionReason]; + } + FIRGetOOBConfirmationCodeRequest *request = + [FIRGetOOBConfirmationCodeRequest signInWithEmailLinkRequest:email + actionCodeSettings:actionCodeSettings + requestConfiguration:self->_requestConfiguration]; + [FIRAuthBackend getOOBConfirmationCode:request + callback:^(FIRGetOOBConfirmationCodeResponse *_Nullable response, + NSError *_Nullable error) { + if (completion) { + dispatch_async(dispatch_get_main_queue(), ^{ + completion(error); + }); + } + }]; + }); +} + +- (void)updateCurrentUser:(FIRUser *)user completion:(nullable FIRUserUpdateCallback)completion { + dispatch_async(FIRAuthGlobalWorkQueue(), ^{ + if (!user) { + if (completion) { + dispatch_async(dispatch_get_main_queue(), ^{ + completion([FIRAuthErrorUtils nullUserErrorWithMessage:nil]); + }); + } + return; + } + void (^updateUserBlock)(FIRUser *user) = ^(FIRUser *user) { + NSError *error; + [self updateCurrentUser:user byForce:YES savingToDisk:YES error:(&error)]; + if (error) { + if (completion) { + dispatch_async(dispatch_get_main_queue(), ^{ + completion(error); + }); + } + return; + } if (completion) { + dispatch_async(dispatch_get_main_queue(), ^{ + completion(nil); + }); + } + }; + if (![user.requestConfiguration.APIKey isEqualToString:self->_requestConfiguration.APIKey]) { + // If the API keys are different, then we need to confirm that the user belongs to the same + // project before proceeding. + user.requestConfiguration = self->_requestConfiguration; + [user reloadWithCompletion:^(NSError *_Nullable error) { + if (error) { + if (completion) { + dispatch_async(dispatch_get_main_queue(), ^{ + completion(error); + }); + } + return; + } + updateUserBlock(user); + }]; + } else { + updateUserBlock(user); + } + }); +} + +- (BOOL)signOut:(NSError *_Nullable __autoreleasing *_Nullable)error { + __block BOOL result = YES; + dispatch_sync(FIRAuthGlobalWorkQueue(), ^{ + if (!self->_currentUser) { + return; + } + result = [self updateCurrentUser:nil byForce:NO savingToDisk:YES error:error]; + }); + return result; +} + +- (BOOL)signOutByForceWithUserID:(NSString *)userID error:(NSError *_Nullable *_Nullable)error { + if (_currentUser.uid != userID) { + return YES; + } + return [self updateCurrentUser:nil byForce:YES savingToDisk:YES error:error]; +} + +- (BOOL)isSignInWithEmailLink:(NSString *)link { + if (link.length == 0) { + return NO; + } + NSDictionary *queryItems = [FIRAuthWebUtils parseURL:link]; + if (![queryItems count]) { + NSURLComponents *urlComponents = [NSURLComponents componentsWithString:link]; + if (!urlComponents.query) { + return NO; + } + queryItems = [FIRAuthWebUtils parseURL:urlComponents.query]; + } + + if (![queryItems count]) { + return NO; + } + + NSString *actionCode = queryItems[@"oobCode"]; + NSString *mode = queryItems[@"mode"]; + + if (actionCode && [mode isEqualToString:@"signIn"]) { + return YES; + } + return NO; +} + +- (FIRAuthStateDidChangeListenerHandle)addAuthStateDidChangeListener: + (FIRAuthStateDidChangeListenerBlock)listener { + __block BOOL firstInvocation = YES; + __block NSString *previousUserID; + return [self addIDTokenDidChangeListener:^(FIRAuth *_Nonnull auth, FIRUser *_Nullable user) { + BOOL shouldCallListener = firstInvocation || + !(previousUserID == user.uid || [previousUserID isEqualToString:user.uid]); + firstInvocation = NO; + previousUserID = [user.uid copy]; + if (shouldCallListener) { + listener(auth, user); + } + }]; +} + +- (void)removeAuthStateDidChangeListener:(FIRAuthStateDidChangeListenerHandle)listenerHandle { + [self removeIDTokenDidChangeListener:listenerHandle]; +} + +- (FIRIDTokenDidChangeListenerHandle)addIDTokenDidChangeListener: + (FIRIDTokenDidChangeListenerBlock)listener { + if (!listener) { + [NSException raise:NSInvalidArgumentException format:@"listener must not be nil."]; + return nil; + } + FIRAuthStateDidChangeListenerHandle handle; + NSNotificationCenter *notifications = [NSNotificationCenter defaultCenter]; + handle = [notifications addObserverForName:FIRAuthStateDidChangeNotification + object:self + queue:[NSOperationQueue mainQueue] + usingBlock:^(NSNotification *_Nonnull notification) { + FIRAuth *auth = notification.object; + listener(auth, auth.currentUser); + }]; + @synchronized (self) { + [_listenerHandles addObject:handle]; + } + dispatch_async(dispatch_get_main_queue(), ^{ + listener(self, self->_currentUser); + }); + return handle; +} + +- (void)removeIDTokenDidChangeListener:(FIRIDTokenDidChangeListenerHandle)listenerHandle { + [[NSNotificationCenter defaultCenter] removeObserver:listenerHandle]; + @synchronized (self) { + [_listenerHandles removeObject:listenerHandle]; + } +} + +- (void)useAppLanguage { + dispatch_sync(FIRAuthGlobalWorkQueue(), ^{ + self->_requestConfiguration.languageCode = + [NSBundle mainBundle].preferredLocalizations.firstObject; + }); +} + +- (nullable NSString *)languageCode { + return _requestConfiguration.languageCode; +} + +- (void)setLanguageCode:(nullable NSString *)languageCode { + dispatch_sync(FIRAuthGlobalWorkQueue(), ^{ + self->_requestConfiguration.languageCode = [languageCode copy]; + }); +} + +- (nullable NSString *)additionalFrameworkMarker { + return self->_requestConfiguration.additionalFrameworkMarker; +} + +- (void)setAdditionalFrameworkMarker:(nullable NSString *)additionalFrameworkMarker { + dispatch_sync(FIRAuthGlobalWorkQueue(), ^{ + self->_requestConfiguration.additionalFrameworkMarker = [additionalFrameworkMarker copy]; + }); +} + +#if TARGET_OS_IOS +- (nullable NSData *)APNSToken { + __block NSData *result = nil; + dispatch_sync(FIRAuthGlobalWorkQueue(), ^{ + result = self->_tokenManager.token.data; + }); + return result; +} + +#pragma mark - UIApplicationDelegate + +- (void)application:(UIApplication *)application +didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken { + [self setAPNSToken:deviceToken type:FIRAuthAPNSTokenTypeUnknown]; +} + +- (void)application:(UIApplication *)application +didFailToRegisterForRemoteNotificationsWithError:(NSError *)error { + dispatch_sync(FIRAuthGlobalWorkQueue(), ^{ + [self->_tokenManager cancelWithError:error]; + }); +} + +- (void)application:(UIApplication *)application +didReceiveRemoteNotification:(NSDictionary *)userInfo +fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler { + [self canHandleNotification:userInfo]; +} + +- (void)application:(UIApplication *)application +didReceiveRemoteNotification:(NSDictionary *)userInfo { + [self canHandleNotification:userInfo]; +} + +- (BOOL)application:(UIApplication *)app + openURL:(NSURL *)url + options:(NSDictionary *)options { + return [self canHandleURL:url]; +} + +- (BOOL)application:(UIApplication *)application + openURL:(NSURL *)url + sourceApplication:(nullable NSString *)sourceApplication + annotation:(id)annotation { + return [self canHandleURL:url]; +} + +- (void)setAPNSToken:(NSData *)token type:(FIRAuthAPNSTokenType)type { + dispatch_sync(FIRAuthGlobalWorkQueue(), ^{ + self->_tokenManager.token = [[FIRAuthAPNSToken alloc] initWithData:token type:type]; + }); +} + +- (BOOL)canHandleNotification:(NSDictionary *)userInfo { + __block BOOL result = NO; + dispatch_sync(FIRAuthGlobalWorkQueue(), ^{ + result = [self->_notificationManager canHandleNotification:userInfo]; + }); + return result; +} + +- (BOOL)canHandleURL:(NSURL *)URL { + __block BOOL result = NO; + dispatch_sync(FIRAuthGlobalWorkQueue(), ^{ + result = [self->_authURLPresenter canHandleURL:URL]; + }); + return result; +} +#endif + +#pragma mark - Internal Methods + +#if TARGET_OS_IOS +/** @fn signInWithPhoneCredential:callback: + @brief Signs in using a phone credential. + @param credential The Phone Auth credential used to sign in. + @param operation The type of operation for which this sign-in attempt is initiated. + @param callback A block which is invoked when the sign in finishes (or is cancelled.) Invoked + asynchronously on the global auth work queue in the future. + */ +- (void)signInWithPhoneCredential:(FIRPhoneAuthCredential *)credential + operation:(FIRAuthOperationType)operation + callback:(FIRVerifyPhoneNumberResponseCallback)callback { + if (credential.temporaryProof.length && credential.phoneNumber.length) { + FIRVerifyPhoneNumberRequest *request = + [[FIRVerifyPhoneNumberRequest alloc] initWithTemporaryProof:credential.temporaryProof + phoneNumber:credential.phoneNumber + operation:operation + requestConfiguration:_requestConfiguration]; + [FIRAuthBackend verifyPhoneNumber:request callback:callback]; + return; + } + + if (!credential.verificationID.length) { + callback(nil, [FIRAuthErrorUtils missingVerificationIDErrorWithMessage:nil]); + return; + } + if (!credential.verificationCode.length) { + callback(nil, [FIRAuthErrorUtils missingVerificationCodeErrorWithMessage:nil]); + return; + } + FIRVerifyPhoneNumberRequest *request = + [[FIRVerifyPhoneNumberRequest alloc]initWithVerificationID:credential.verificationID + verificationCode:credential.verificationCode + operation:operation + requestConfiguration:_requestConfiguration]; + [FIRAuthBackend verifyPhoneNumber:request callback:callback]; +} + +#endif + +/** @fn internalSignInAndRetrieveDataWithCustomToken:completion: + @brief Signs in a Firebase user given a custom token. + @param token A self-signed custom auth token. + @param completion A block which is invoked when the custom token sign in request completes. + */ +- (void)internalSignInAndRetrieveDataWithCustomToken:(NSString *)token + completion:(nullable FIRAuthDataResultCallback) + completion { + FIRVerifyCustomTokenRequest *request = + [[FIRVerifyCustomTokenRequest alloc] initWithToken:token + requestConfiguration:_requestConfiguration]; + [FIRAuthBackend verifyCustomToken:request + callback:^(FIRVerifyCustomTokenResponse *_Nullable response, + NSError *_Nullable error) { + if (error) { + if (completion) { + completion(nil, error); + return; + } + } + [self completeSignInWithAccessToken:response.IDToken + accessTokenExpirationDate:response.approximateExpirationDate + refreshToken:response.refreshToken + anonymous:NO + callback:^(FIRUser *_Nullable user, + NSError *_Nullable error) { + if (error && completion) { + completion(nil, error); + return; + } + FIRAdditionalUserInfo *additonalUserInfo = + [[FIRAdditionalUserInfo alloc] initWithProviderID:nil + profile:nil + username:nil + isNewUser:response.isNewUser]; + FIRAuthDataResult *result = user ? + [[FIRAuthDataResult alloc] initWithUser:user additionalUserInfo:additonalUserInfo] : nil; + if (completion) { + completion(result, error); + } + }]; + }]; +} + +/** @fn internalCreateUserWithEmail:password:completion: + @brief Makes a backend request attempting to create a new Firebase user given an email address + and password. + @param email The email address used to create the new Firebase user. + @param password The password used to create the new Firebase user. + @param completion Optionally; a block which is invoked when the request finishes. + */ +- (void)internalCreateUserWithEmail:(NSString *)email + password:(NSString *)password + completion:(nullable FIRSignupNewUserCallback)completion { + FIRSignUpNewUserRequest *request = + [[FIRSignUpNewUserRequest alloc] initWithEmail:email + password:password + displayName:nil + requestConfiguration:_requestConfiguration]; + if (![request.password length]) { + completion(nil, [FIRAuthErrorUtils + weakPasswordErrorWithServerResponseReason:kMissingPasswordReason]); + return; + } + if (![request.email length]) { + completion(nil, [FIRAuthErrorUtils missingEmailErrorWithMessage:nil]); + return; + } + [FIRAuthBackend signUpNewUser:request callback:completion]; +} + +/** @fn internalSignInAnonymouslyWithCompletion: + @param completion A block which is invoked when the anonymous sign in request completes. + */ +- (void)internalSignInAnonymouslyWithCompletion:(FIRSignupNewUserCallback)completion { + FIRSignUpNewUserRequest *request = + [[FIRSignUpNewUserRequest alloc]initWithRequestConfiguration:_requestConfiguration]; + [FIRAuthBackend signUpNewUser:request + callback:completion]; +} + +/** @fn possiblyPostAuthStateChangeNotification + @brief Posts the auth state change notificaton if current user's token has been changed. + */ +- (void)possiblyPostAuthStateChangeNotification { + NSString *token = _currentUser.rawAccessToken; + if (_lastNotifiedUserToken == token || + (token != nil && [_lastNotifiedUserToken isEqualToString:token])) { + return; + } + _lastNotifiedUserToken = token; + if (_autoRefreshTokens) { + // Shedule new refresh task after successful attempt. + [self scheduleAutoTokenRefresh]; + } + NSMutableDictionary *internalNotificationParameters = [NSMutableDictionary dictionary]; + if (self.app) { + internalNotificationParameters[FIRAuthStateDidChangeInternalNotificationAppKey] = self.app; + } + if (token.length) { + internalNotificationParameters[FIRAuthStateDidChangeInternalNotificationTokenKey] = token; + } + internalNotificationParameters[FIRAuthStateDidChangeInternalNotificationUIDKey] = _currentUser.uid; + NSNotificationCenter *notifications = [NSNotificationCenter defaultCenter]; + dispatch_async(dispatch_get_main_queue(), ^{ + [notifications postNotificationName:FIRAuthStateDidChangeInternalNotification + object:self + userInfo:internalNotificationParameters]; + [notifications postNotificationName:FIRAuthStateDidChangeNotification + object:self]; + }); +} + +- (BOOL)updateKeychainWithUser:(FIRUser *)user error:(NSError *_Nullable *_Nullable)error { + if (user != _currentUser) { + // No-op if the user is no longer signed in. This is not considered an error as we don't check + // whether the user is still current on other callbacks of user operations either. + return YES; + } + if ([self saveUser:user error:error]) { + [self possiblyPostAuthStateChangeNotification]; + return YES; + } + return NO; +} + +/** @fn setKeychainServiceNameForApp + @brief Sets the keychain service name global data for the particular app. + @param app The Firebase app to set keychain service name for. + */ ++ (void)setKeychainServiceNameForApp:(FIRApp *)app { + @synchronized (self) { + gKeychainServiceNameForAppName[app.name] = + [@"firebase_auth_" stringByAppendingString:app.options.googleAppID]; + } +} + +/** @fn keychainServiceNameForAppName: + @brief Gets the keychain service name global data for the particular app by name. + @param appName The name of the Firebase app to get keychain service name for. + */ ++ (NSString *)keychainServiceNameForAppName:(NSString *)appName { + @synchronized (self) { + return gKeychainServiceNameForAppName[appName]; + } +} + +/** @fn deleteKeychainServiceNameForAppName: + @brief Deletes the keychain service name global data for the particular app by name. + @param appName The name of the Firebase app to delete keychain service name for. + */ ++ (void)deleteKeychainServiceNameForAppName:(NSString *)appName { + @synchronized (self) { + [gKeychainServiceNameForAppName removeObjectForKey:appName]; + } +} + +/** @fn scheduleAutoTokenRefreshWithDelay: + @brief Schedules a task to automatically refresh tokens on the current user. The token refresh + is scheduled 5 minutes before the scheduled expiration time. + @remarks If the token expires in less than 5 minutes, schedule the token refresh immediately. + */ +- (void)scheduleAutoTokenRefresh { + NSTimeInterval tokenExpirationInterval = + [_currentUser.accessTokenExpirationDate timeIntervalSinceNow] - kTokenRefreshHeadStart; + [self scheduleAutoTokenRefreshWithDelay:MAX(tokenExpirationInterval, 0) retry:NO]; +} + +/** @fn scheduleAutoTokenRefreshWithDelay: + @brief Schedules a task to automatically refresh tokens on the current user. + @param delay The delay in seconds after which the token refresh task should be scheduled to be + executed. + @param retry Flag to determine whether the invocation is a retry attempt or not. + */ +- (void)scheduleAutoTokenRefreshWithDelay:(NSTimeInterval)delay retry:(BOOL)retry { + NSString *accessToken = _currentUser.rawAccessToken; + if (!accessToken) { + return; + } + if (retry) { + FIRLogInfo(kFIRLoggerAuth, @"I-AUT000003", + @"Token auto-refresh re-scheduled in %02d:%02d " + @"because of error on previous refresh attempt.", + (int)ceil(delay) / 60, (int)ceil(delay) % 60); + } else { + FIRLogInfo(kFIRLoggerAuth, @"I-AUT000004", + @"Token auto-refresh scheduled in %02d:%02d for the new token.", + (int)ceil(delay) / 60, (int)ceil(delay) % 60); + } + _autoRefreshScheduled = YES; + __weak FIRAuth *weakSelf = self; + [[FIRAuthDispatcher sharedInstance] dispatchAfterDelay:delay + queue:FIRAuthGlobalWorkQueue() + task:^(void) { + FIRAuth *strongSelf = weakSelf; + if (!strongSelf) { + return; + } + if (![strongSelf->_currentUser.rawAccessToken isEqualToString:accessToken]) { + // Another auto refresh must have been scheduled, so keep _autoRefreshScheduled unchanged. + return; + } + strongSelf->_autoRefreshScheduled = NO; + if (strongSelf->_isAppInBackground) { + return; + } + NSString *uid = strongSelf->_currentUser.uid; + [strongSelf->_currentUser internalGetTokenForcingRefresh:YES + callback:^(NSString *_Nullable token, + NSError *_Nullable error) { + if (![strongSelf->_currentUser.uid isEqualToString:uid]) { + return; + } + if (error) { + // Kicks off exponential back off logic to retry failed attempt. Starts with one minute + // delay (60 seconds) if this is the first failed attempt. + NSTimeInterval rescheduleDelay; + if (retry) { + rescheduleDelay = MIN(delay * 2, kMaxWaitTimeForBackoff); + } else { + rescheduleDelay = 60; + } + [strongSelf scheduleAutoTokenRefreshWithDelay:rescheduleDelay retry:YES]; + } + }]; + }]; +} + +#pragma mark - + +/** @fn completeSignInWithTokenService:callback: + @brief Completes a sign-in flow once we have access and refresh tokens for the user. + @param accessToken The STS access token. + @param accessTokenExpirationDate The approximate expiration date of the access token. + @param refreshToken The STS refresh token. + @param anonymous Whether or not the user is anonymous. + @param callback Called when the user has been signed in or when an error occurred. Invoked + asynchronously on the global auth work queue in the future. + */ +- (void)completeSignInWithAccessToken:(nullable NSString *)accessToken + accessTokenExpirationDate:(nullable NSDate *)accessTokenExpirationDate + refreshToken:(nullable NSString *)refreshToken + anonymous:(BOOL)anonymous + callback:(FIRAuthResultCallback)callback { + [FIRUser retrieveUserWithAuth:self + accessToken:accessToken + accessTokenExpirationDate:accessTokenExpirationDate + refreshToken:refreshToken + anonymous:anonymous + callback:callback]; +} + +/** @fn signInFlowAuthResultCallbackByDecoratingCallback: + @brief Creates a FIRAuthResultCallback block which wraps another FIRAuthResultCallback; trying + to update the current user before forwarding it's invocations along to a subject block + @param callback Called when the user has been updated or when an error has occurred. Invoked + asynchronously on the main thread in the future. + @return Returns a block that updates the current user. + @remarks Typically invoked as part of the complete sign-in flow. For any other uses please + consider alternative ways of updating the current user. +*/ +- (FIRAuthResultCallback)signInFlowAuthResultCallbackByDecoratingCallback: + (nullable FIRAuthResultCallback)callback { + return ^(FIRUser *_Nullable user, NSError *_Nullable error) { + if (error) { + if (callback) { + dispatch_async(dispatch_get_main_queue(), ^{ + callback(nil, error); + }); + } + return; + } + if (![self updateCurrentUser:user byForce:NO savingToDisk:YES error:&error]) { + if (callback) { + dispatch_async(dispatch_get_main_queue(), ^{ + callback(nil, error); + }); + } + return; + } + if (callback) { + dispatch_async(dispatch_get_main_queue(), ^{ + callback(user, nil); + }); + } + }; +} + +/** @fn signInFlowAuthDataResultCallbackByDecoratingCallback: + @brief Creates a FIRAuthDataResultCallback block which wraps another FIRAuthDataResultCallback; + trying to update the current user before forwarding it's invocations along to a subject + block. + @param callback Called when the user has been updated or when an error has occurred. Invoked + asynchronously on the main thread in the future. + @return Returns a block that updates the current user. + @remarks Typically invoked as part of the complete sign-in flow. For any other uses please + consider alternative ways of updating the current user. +*/ +- (FIRAuthDataResultCallback)signInFlowAuthDataResultCallbackByDecoratingCallback: + (nullable FIRAuthDataResultCallback)callback { + return ^(FIRAuthDataResult *_Nullable authResult, NSError *_Nullable error) { + if (error) { + if (callback) { + dispatch_async(dispatch_get_main_queue(), ^{ + callback(nil, error); + }); + } + return; + } + if (![self updateCurrentUser:authResult.user byForce:NO savingToDisk:YES error:&error]) { + if (callback) { + dispatch_async(dispatch_get_main_queue(), ^{ + callback(nil, error); + }); + } + return; + } + if (callback) { + dispatch_async(dispatch_get_main_queue(), ^{ + callback(authResult, nil); + }); + } + }; +} + +#pragma mark - User-Related Methods + +/** @fn updateCurrentUser:byForce:savingToDisk:error: + @brief Update the current user; initializing the user's internal properties correctly, and + optionally saving the user to disk. + @remarks This method is called during: sign in and sign out events, as well as during class + initialization time. The only time the saveToDisk parameter should be set to NO is during + class initialization time because the user was just read from disk. + @param user The user to use as the current user (including nil, which is passed at sign out + time.) + @param saveToDisk Indicates the method should persist the user data to disk. + */ +- (BOOL)updateCurrentUser:(nullable FIRUser *)user + byForce:(BOOL)force + savingToDisk:(BOOL)saveToDisk + error:(NSError *_Nullable *_Nullable)error { + if (user == _currentUser) { + [self possiblyPostAuthStateChangeNotification]; + return YES; + } + BOOL success = YES; + if (saveToDisk) { + success = [self saveUser:user error:error]; + } + if (success || force) { + _currentUser = user; + [self possiblyPostAuthStateChangeNotification]; + } + return success; +} + +/** @fn saveUser:error: + @brief Persists user. + @param user The user to save. + @param outError Return value for any error which occurs. + @return @YES on success, @NO otherwise. + */ +- (BOOL)saveUser:(nullable FIRUser *)user + error:(NSError *_Nullable *_Nullable)outError { + BOOL success; + + if (!self.userAccessGroup) { + NSString *userKey = [NSString stringWithFormat:kUserKey, _firebaseAppName]; + if (!user) { + success = [_keychain removeDataForKey:userKey error:outError]; + } else { + // Encode the user object. + NSMutableData *archiveData = [NSMutableData data]; + NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc] initForWritingWithMutableData:archiveData]; + [archiver encodeObject:user forKey:userKey]; + [archiver finishEncoding]; + + // Save the user object's encoded value. + success = [_keychain setData:archiveData forKey:userKey error:outError]; + } + } else { + if (!user) { + success = [self.storedUserManager removeStoredUserForAccessGroup:self.userAccessGroup + projectIdentifier:self.app.options.APIKey + error:outError]; + } else { + success = [self.storedUserManager setStoredUser:user + forAccessGroup:self.userAccessGroup + projectIdentifier:self.app.options.APIKey + error:outError]; + } + } + + return success; +} + +/** @fn getUser:error: + @brief Retrieves the saved user associated, if one exists, from the keychain. + @param outUser An out parameter which is populated with the saved user, if one exists. + @param error Return value for any error which occurs. + @return YES if the operation was a success (irrespective of whether or not a saved user existed + for the given @c firebaseAppId,) NO if an error occurred. + */ +- (BOOL)getUser:(FIRUser *_Nullable *)outUser + error:(NSError *_Nullable *_Nullable)error { + if (!self.userAccessGroup) { + NSString *userKey = [NSString stringWithFormat:kUserKey, _firebaseAppName]; + + NSError *keychainError; + NSData *encodedUserData = [_keychain dataForKey:userKey error:&keychainError]; + if (keychainError) { + if (error) { + *error = keychainError; + } + return NO; + } + if (!encodedUserData) { + *outUser = nil; + return YES; + } + NSKeyedUnarchiver *unarchiver = + [[NSKeyedUnarchiver alloc] initForReadingWithData:encodedUserData]; + FIRUser *user = [unarchiver decodeObjectOfClass:[FIRUser class] forKey:userKey]; + user.auth = self; + *outUser = user; + + return YES; + } else { + FIRUser *user = [self.storedUserManager getStoredUserForAccessGroup:self.userAccessGroup + projectIdentifier:self.app.options.APIKey + error:error]; + user.auth = self; + *outUser = user; + if (user) { + return YES; + } else { + if (error && *error) { + return NO; + } else { + return YES; + } + } + } +} + +#pragma mark - Interoperability + ++ (nonnull NSArray *)componentsToRegister { + FIRComponentCreationBlock authCreationBlock = + ^id _Nullable(FIRComponentContainer *_Nonnull container, BOOL *_Nonnull isCacheable) { + *isCacheable = YES; + return [[FIRAuth alloc] initWithApp:container.app]; + }; + FIRComponent *authInterop = [FIRComponent componentWithProtocol:@protocol(FIRAuthInterop) + creationBlock:authCreationBlock]; + return @[authInterop]; +} + +#pragma mark - FIRCoreConfigurable + ++ (void)configureWithApp:(nonnull FIRApp *)app { + // TODO: Evaluate what actually needs to be configured here instead of initializing a full + // instance. + // Ensures the @c FIRAuth instance for a given app gets loaded as soon as the app is ready. + [FIRAuth authWithApp:app]; +} + +#pragma mark - FIRComponentLifecycleMaintainer + +- (void)appWillBeDeleted:(nonnull FIRApp *)app { + dispatch_async(FIRAuthGlobalWorkQueue(), ^{ + // This doesn't stop any request already issued, see b/27704535 . + NSString *keychainServiceName = [FIRAuth keychainServiceNameForAppName:app.name]; + if (keychainServiceName) { + [[self class] deleteKeychainServiceNameForAppName:app.name]; + FIRAuthKeychain *keychain = [[FIRAuthKeychain alloc] initWithService:keychainServiceName]; + NSString *userKey = [NSString stringWithFormat:kUserKey, app.name]; + [keychain removeDataForKey:userKey error:NULL]; + } + dispatch_async(dispatch_get_main_queue(), ^{ + // TODO: Move over to fire an event instead, once ready. + [[NSNotificationCenter defaultCenter] postNotificationName:FIRAuthStateDidChangeNotification + object:nil]; + }); + }); +} + +#pragma mark - FIRAuthInterop + +- (void)getTokenForcingRefresh:(BOOL)forceRefresh withCallback:(FIRTokenCallback)callback { + __weak FIRAuth *weakSelf = self; + dispatch_async(FIRAuthGlobalWorkQueue(), ^{ + FIRAuth *strongSelf = weakSelf; + // Enable token auto-refresh if not aleady enabled. + if (strongSelf && !strongSelf->_autoRefreshTokens) { + FIRLogInfo(kFIRLoggerAuth, @"I-AUT000002", @"Token auto-refresh enabled."); + strongSelf->_autoRefreshTokens = YES; + [strongSelf scheduleAutoTokenRefresh]; + +#if TARGET_OS_IOS || TARGET_OS_TV // TODO: Is a similar mechanism needed on macOS? + strongSelf->_applicationDidBecomeActiveObserver = [[NSNotificationCenter defaultCenter] + addObserverForName:UIApplicationDidBecomeActiveNotification + object:nil + queue:nil + usingBlock:^(NSNotification *notification) { + FIRAuth *strongSelf = weakSelf; + if (strongSelf) { + strongSelf->_isAppInBackground = NO; + if (!strongSelf->_autoRefreshScheduled) { + [weakSelf scheduleAutoTokenRefresh]; + } + } + }]; + strongSelf->_applicationDidEnterBackgroundObserver = [[NSNotificationCenter defaultCenter] + addObserverForName:UIApplicationDidEnterBackgroundNotification + object:nil + queue:nil + usingBlock:^(NSNotification *notification) { + FIRAuth *strongSelf = weakSelf; + if (strongSelf) { + strongSelf->_isAppInBackground = YES; + } + }]; +#endif + } + // Call back with 'nil' if there is no current user. + if (!strongSelf || !strongSelf->_currentUser) { + dispatch_async(dispatch_get_main_queue(), ^{ + callback(nil, nil); + }); + return; + } + // Call back with current user token. + [strongSelf->_currentUser internalGetTokenForcingRefresh:forceRefresh + callback:^(NSString *_Nullable token, + NSError *_Nullable error) { + dispatch_async(dispatch_get_main_queue(), ^{ + callback(token, error); + }); + }]; + }); +} + +- (nullable NSString *)getUserID { + return _currentUser.uid; +} + +#pragma mark - Keychain sharing + +- (BOOL)useUserAccessGroup:(NSString *_Nullable)accessGroup + error:(NSError *_Nullable *_Nullable)outError { + BOOL success; + success = [self.storedUserManager setStoredUserAccessGroup:accessGroup error:outError]; + if (!success) { + return NO; + } + + FIRUser *user = [self getStoredUserForAccessGroup:accessGroup error:outError]; + if (!user && outError && *outError) { + return NO; + } + success = [self updateCurrentUser:user byForce:NO savingToDisk:NO error:outError]; + if (!success) { + return NO; + } + + if(_userAccessGroup == nil && accessGroup != nil) { + NSString *userKey = [NSString stringWithFormat:kUserKey, _firebaseAppName]; + [_keychain removeDataForKey:userKey error:outError]; + } + _userAccessGroup = accessGroup; + self->_lastNotifiedUserToken = user.rawAccessToken; + + return YES; +} + +- (nullable FIRUser *)getStoredUserForAccessGroup:(NSString *_Nullable)accessGroup + error:(NSError *_Nullable *_Nullable)outError { + FIRUser *user; + if (!accessGroup) { + NSString *userKey = [NSString stringWithFormat:kUserKey, _firebaseAppName]; + NSData *encodedUserData = [_keychain dataForKey:userKey error:outError]; + if (!encodedUserData) { + return nil; + } + + NSKeyedUnarchiver *unarchiver = + [[NSKeyedUnarchiver alloc] initForReadingWithData:encodedUserData]; + user = [unarchiver decodeObjectOfClass:[FIRUser class] forKey:userKey]; + } else { + user = [self.storedUserManager getStoredUserForAccessGroup:self.userAccessGroup + projectIdentifier:self.app.options.APIKey + error:outError]; + } + + user.auth = self; + return user; +} + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Auth/FIRAuthDataResult.m b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Auth/FIRAuthDataResult.m new file mode 100644 index 0000000..e6c4b92 --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Auth/FIRAuthDataResult.m @@ -0,0 +1,85 @@ +/* + * 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 "FIRAuthDataResult_Internal.h" + +#import "FIRAdditionalUserInfo.h" +#import "FIRUser.h" +#import "FIROAuthCredential.h" + +NS_ASSUME_NONNULL_BEGIN + +@implementation FIRAuthDataResult + +/** @var kAdditionalUserInfoCodingKey + @brief The key used to encode the additionalUserInfo property for NSSecureCoding. + */ +static NSString *const kAdditionalUserInfoCodingKey = @"additionalUserInfo"; + +/** @var kUserCodingKey + @brief The key used to encode the user property for NSSecureCoding. + */ +static NSString *const kUserCodingKey = @"user"; + +/** @var kCredentialCodingKey + @brief The key used to encode the credential for NSSecureCoding. + */ +static NSString *const kCredentialCodingKey = @"credential"; + +- (nullable instancetype)initWithUser:(FIRUser *)user + additionalUserInfo:(nullable FIRAdditionalUserInfo *)additionalUserInfo { + return [self initWithUser:user additionalUserInfo:additionalUserInfo credential:nil]; +} + +- (nullable instancetype)initWithUser:(FIRUser *)user + additionalUserInfo:(nullable FIRAdditionalUserInfo *)additionalUserInfo + credential:(nullable FIROAuthCredential *)credential { + self = [super init]; + if (self) { + _additionalUserInfo = additionalUserInfo; + _user = user; + _credential = credential; + } + return self; +} + +#pragma mark - NSSecureCoding + ++ (BOOL)supportsSecureCoding { + return YES; +} + +- (nullable instancetype)initWithCoder:(NSCoder *)aDecoder { + FIRUser *user = + [aDecoder decodeObjectOfClass:[FIRUser class] forKey:kUserCodingKey]; + FIRAdditionalUserInfo *additionalUserInfo = + [aDecoder decodeObjectOfClass:[FIRAdditionalUserInfo class] + forKey:kAdditionalUserInfoCodingKey]; + FIROAuthCredential *credential = + [aDecoder decodeObjectOfClass:[FIROAuthCredential class] + forKey:kCredentialCodingKey]; + return [self initWithUser:user additionalUserInfo:additionalUserInfo credential:credential]; +} + +- (void)encodeWithCoder:(NSCoder *)aCoder { + [aCoder encodeObject:_user forKey:kUserCodingKey]; + [aCoder encodeObject:_additionalUserInfo forKey:kAdditionalUserInfoCodingKey]; + [aCoder encodeObject:_credential forKey:kCredentialCodingKey]; +} + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Auth/FIRAuthDataResult_Internal.h b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Auth/FIRAuthDataResult_Internal.h new file mode 100644 index 0000000..1c6f31c --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Auth/FIRAuthDataResult_Internal.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 "FIRAuthDataResult.h" + +@class FIROAuthCredential; + +NS_ASSUME_NONNULL_BEGIN + +@interface FIRAuthDataResult () + +/** @fn initWithUser:additionalUserInfo: + @brief Designated initializer. + @param user The signed in user reference. + @param additionalUserInfo The additional user info if available. + */ +- (nullable instancetype)initWithUser:(FIRUser *)user + additionalUserInfo:(nullable FIRAdditionalUserInfo *)additionalUserInfo; + +/** @fn initWithUser:additionalUserInfo: + @brief Designated initializer. + @param user The signed in user reference. + @param additionalUserInfo The additional user info if available. + @param credential The updated OAuth credential if available. + */ +- (nullable instancetype)initWithUser:(FIRUser *)user + additionalUserInfo:(nullable FIRAdditionalUserInfo *)additionalUserInfo + credential:(nullable FIROAuthCredential *)credential + NS_DESIGNATED_INITIALIZER; + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Auth/FIRAuthDispatcher.h b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Auth/FIRAuthDispatcher.h new file mode 100644 index 0000000..f8ddca5 --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Auth/FIRAuthDispatcher.h @@ -0,0 +1,63 @@ +/* + * 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 + +NS_ASSUME_NONNULL_BEGIN + +/** @typedef FIRAuthDispatcherImplBlock + @brief The type of block which can be set as the implementation for @c + dispatchAfterDelay:queue:callback: . + + @param delay The delay in seconds after which the task will be scheduled to execute. + @param queue The dispatch queue on which the task will be submitted. + @param task The task (block) to be scheduled for future execution. + */ +typedef void(^FIRAuthDispatcherImplBlock)(NSTimeInterval delay, + dispatch_queue_t queue, + void (^task)(void)); + +/** @class FIRAuthDispatchAfter + @brief A utility class used to facilitate scheduling tasks to be executed in the future. + */ +@interface FIRAuthDispatcher : NSObject + +/** @property dispatchAfterImplementation + @brief Allows custom implementation of dispatchAfterDelay:queue:callback:. + @remarks Set to nil to restore default implementation. + */ +@property(nonatomic, nullable, copy) FIRAuthDispatcherImplBlock dispatchAfterImplementation; + +/** @fn dispatchAfterDelay:queue:callback: + @brief Schedules task in the future after a specified delay. + + @param delay The delay in seconds after which the task will be scheduled to execute. + @param queue The dispatch queue on which the task will be submitted. + @param task The task (block) to be scheduled for future execution. + */ + - (void)dispatchAfterDelay:(NSTimeInterval)delay + queue:(dispatch_queue_t)queue + task:(void (^)(void))task; + +/** @fn sharedInstance + @brief Gets the shared instance of this class. + @returns The shared instance of this clss + */ ++ (instancetype)sharedInstance; + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Auth/FIRAuthDispatcher.m b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Auth/FIRAuthDispatcher.m new file mode 100644 index 0000000..78ed2e3 --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Auth/FIRAuthDispatcher.m @@ -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 "FIRAuthDispatcher.h" + +NS_ASSUME_NONNULL_BEGIN + +@implementation FIRAuthDispatcher + +@synthesize dispatchAfterImplementation = _dispatchAfterImplementation; + ++ (instancetype)sharedInstance { + static dispatch_once_t onceToken; + static FIRAuthDispatcher *sharedInstance; + dispatch_once(&onceToken, ^{ + sharedInstance = [[self alloc] init]; + }); + return sharedInstance; +} + +- (void)dispatchAfterDelay:(NSTimeInterval)delay + queue:(dispatch_queue_t)queue + task:(void (^)(void))task { + if (_dispatchAfterImplementation) { + _dispatchAfterImplementation(delay, queue, task); + return; + } + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, delay * NSEC_PER_SEC), queue, task); +} + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Auth/FIRAuthGlobalWorkQueue.h b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Auth/FIRAuthGlobalWorkQueue.h new file mode 100644 index 0000000..55bb1a7 --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Auth/FIRAuthGlobalWorkQueue.h @@ -0,0 +1,31 @@ +/* + * 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 + +NS_ASSUME_NONNULL_BEGIN + +/** @fn FIRAuthGlobalWorkQueue + @brief Retrieves the global serial work queue for Firebase Auth. + @return The global serial dispatch queue. + @remarks To ensure thread safety, all auth code must be executed in either this global work + queue, or a serial queue that has its target queue set to this work queue. All public method + implementations that may involve contested code shall dispatch to this work queue as the + first thing they do. + */ +extern dispatch_queue_t FIRAuthGlobalWorkQueue(void); + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Auth/FIRAuthGlobalWorkQueue.m b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Auth/FIRAuthGlobalWorkQueue.m new file mode 100644 index 0000000..6295b8b --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Auth/FIRAuthGlobalWorkQueue.m @@ -0,0 +1,30 @@ +/* + * 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 "FIRAuthGlobalWorkQueue.h" + +NS_ASSUME_NONNULL_BEGIN + +dispatch_queue_t FIRAuthGlobalWorkQueue() { + static dispatch_once_t once; + static dispatch_queue_t queue; + dispatch_once(&once, ^{ + queue = dispatch_queue_create("com.google.firebase.auth.globalWorkQueue", NULL); + }); + return queue; +} + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Auth/FIRAuthOperationType.h b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Auth/FIRAuthOperationType.h new file mode 100644 index 0000000..15d3dd7 --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Auth/FIRAuthOperationType.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 + +NS_ASSUME_NONNULL_BEGIN + +/** + @brief Indicates the type of operation performed for RPCs that support the operation + parameter. + */ +typedef NS_ENUM(NSInteger, FIRAuthOperationType) { + /** Indicates that the operation type is uspecified. + */ + FIRAuthOperationTypeUnspecified = 0, + + /** Indicates that the operation type is sign in or sign up. + */ + FIRAuthOperationTypeSignUpOrSignIn = 1, + + /** Indicates that the operation type is reauthentication. + */ + FIRAuthOperationTypeReauth = 2, + + /** Indicates that the operation type is update. + */ + FIRAuthOperationTypeUpdate = 3, + + /** Indicates that the operation type is link. + */ + FIRAuthOperationTypeLink = 4, +}; + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Auth/FIRAuthSerialTaskQueue.h b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Auth/FIRAuthSerialTaskQueue.h new file mode 100644 index 0000000..cdae046 --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Auth/FIRAuthSerialTaskQueue.h @@ -0,0 +1,50 @@ +/* + * 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 + +NS_ASSUME_NONNULL_BEGIN + +/** @typedef FIRAuthSerialTaskCompletionBlock + @brief The type of method a @c FIRAuthSerialTask must call when it is complete. + */ +typedef void (^FIRAuthSerialTaskCompletionBlock)(void); + +/** @typedef FIRAuthSerialTask + @brief Represents a unit of work submitted to a task queue. + @param complete The task MUST call the complete method when done. + */ +typedef void (^FIRAuthSerialTask)(FIRAuthSerialTaskCompletionBlock complete); + +/** @class FIRAuthSerialTaskQueue + @brief An easy to use serial task queue which supports a callback-based completion notification + system for easy asyncronous call chaining. + */ +@interface FIRAuthSerialTaskQueue : NSObject + +/** @fn enqueueTask: + @brief Enqueues a task for serial execution in the queue. + @remarks The task MUST call the complete method when done. This method is thread-safe. + The task block won't be executed concurrently with any other blocks in other task queues or + the global work queue as returned by @c FIRAuthGlobalWorkQueue , but an uncompleted task + (e.g. task block finished executation before complete method is called at a later time) + does not affect other task queues or the global work queue. + */ +- (void)enqueueTask:(FIRAuthSerialTask)task; + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Auth/FIRAuthSerialTaskQueue.m b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Auth/FIRAuthSerialTaskQueue.m new file mode 100644 index 0000000..78005e0 --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Auth/FIRAuthSerialTaskQueue.m @@ -0,0 +1,56 @@ +/* + * 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 "FIRAuthSerialTaskQueue.h" + +#import "FIRAuthGlobalWorkQueue.h" + +NS_ASSUME_NONNULL_BEGIN + +@implementation FIRAuthSerialTaskQueue { + /** @var _dispatchQueue + @brief The asyncronous dispatch queue into which tasks are enqueued and processed + serially. + */ + dispatch_queue_t _dispatchQueue; +} + +- (instancetype)init { + self = [super init]; + if (self) { + _dispatchQueue = dispatch_queue_create("com.google.firebase.auth.serialTaskQueue", NULL); + dispatch_set_target_queue(_dispatchQueue, FIRAuthGlobalWorkQueue()); + } + return self; +} + +- (void)enqueueTask:(FIRAuthSerialTask)task { + // This dispatch queue will run tasks serially in FIFO order, as long as it's not suspended. + dispatch_async(self->_dispatchQueue, ^{ + // But as soon as a task is started, stop other tasks from running until the task calls it's + // completion handler, which allows the queue to resume processing of tasks. This allows the + // task to perform other asyncronous actions on other dispatch queues and "get back to us" when + // all of their sub-tasks are complete. + dispatch_suspend(self->_dispatchQueue); + task(^{ + dispatch_resume(self->_dispatchQueue); + }); + }); +} + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Auth/FIRAuthSettings.m b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Auth/FIRAuthSettings.m new file mode 100644 index 0000000..8ed5bb6 --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Auth/FIRAuthSettings.m @@ -0,0 +1,33 @@ +/* + * 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/LICENSE2.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 "FIRAuthSettings.h" + +NS_ASSUME_NONNULL_BEGIN + +@implementation FIRAuthSettings + +- (instancetype)init { + self = [super init]; + if (self) { + _appVerificationDisabledForTesting = NO; + } + return self; +} + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Auth/FIRAuthTokenResult.m b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Auth/FIRAuthTokenResult.m new file mode 100644 index 0000000..3a06ac6 --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Auth/FIRAuthTokenResult.m @@ -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 "FIRAuthTokenResult_Internal.h" + +NS_ASSUME_NONNULL_BEGIN + +/** @var kExpirationDateKey + @brief The key used to encode the expirationDate property for NSSecureCoding. + */ +static NSString *const kExpirationDateKey = @"expiratinDate"; + +/** @var kTokenKey + @brief The key used to encode the token property for NSSecureCoding. + */ +static NSString *const kTokenKey = @"token"; + +/** @var kAuthDateKey + @brief The key used to encode the authDate property for NSSecureCoding. + */ +static NSString *const kAuthDateKey = @"authDate"; + +/** @var kIssuedDateKey + @brief The key used to encode the issuedDate property for NSSecureCoding. + */ +static NSString *const kIssuedDateKey = @"issuedDate"; + +/** @var kSignInProviderKey + @brief The key used to encode the signInProvider property for NSSecureCoding. + */ +static NSString *const kSignInProviderKey = @"signInProvider"; + +/** @var kClaimsKey + @brief The key used to encode the claims property for NSSecureCoding. + */ +static NSString *const kClaimsKey = @"claims"; + +@implementation FIRAuthTokenResult + +- (instancetype)initWithToken:(NSString *)token + expirationDate:(NSDate *)expirationDate + authDate:(NSDate *)authDate + issuedAtDate:(NSDate *)issuedAtDate + signInProvider:(NSString *)signInProvider + claims:(NSDictionary *)claims { + self = [super init]; + if (self) { + _token = token; + _expirationDate = expirationDate; + _authDate = authDate; + _issuedAtDate = issuedAtDate; + _signInProvider = signInProvider; + _claims = claims; + } + return self; +} + +#pragma mark - NSSecureCoding + ++ (BOOL)supportsSecureCoding { + return YES; +} + +- (nullable instancetype)initWithCoder:(NSCoder *)aDecoder { + NSString *token = + [aDecoder decodeObjectOfClass:[NSDate class] forKey:kTokenKey]; + NSDate *expirationDate = + [aDecoder decodeObjectOfClass:[NSDate class] forKey:kExpirationDateKey]; + NSDate *authDate = + [aDecoder decodeObjectOfClass:[NSDate class] forKey:kAuthDateKey]; + NSDate *issuedAtDate = + [aDecoder decodeObjectOfClass:[NSDate class] forKey:kAuthDateKey]; + NSString *signInProvider = + [aDecoder decodeObjectOfClass:[NSString class] forKey:kSignInProviderKey]; + NSDictionary *claims = + [aDecoder decodeObjectOfClass:[NSDictionary class] forKey:kClaimsKey]; + + return [self initWithToken:token + expirationDate:expirationDate + authDate:authDate + issuedAtDate:issuedAtDate + signInProvider:signInProvider + claims:claims]; +} + +- (void)encodeWithCoder:(NSCoder *)aCoder { + [aCoder encodeObject:_token forKey:kTokenKey]; + [aCoder encodeObject:_expirationDate forKey:kExpirationDateKey]; + [aCoder encodeObject:_authDate forKey:kAuthDateKey]; + [aCoder encodeObject:_issuedAtDate forKey:kIssuedDateKey]; + [aCoder encodeObject:_signInProvider forKey:kSignInProviderKey]; + [aCoder encodeObject:_claims forKey:kClaimsKey]; +} + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Auth/FIRAuthTokenResult_Internal.h b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Auth/FIRAuthTokenResult_Internal.h new file mode 100644 index 0000000..2914f2a --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Auth/FIRAuthTokenResult_Internal.h @@ -0,0 +1,37 @@ +/* + * 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 + + #import "FIRAuthTokenResult.h" + + NS_ASSUME_NONNULL_BEGIN + +/** @extension FIRAuthAPNSTokenResult + @brief An internal class used to expose internal methods of FIRAuthAPNSTokenResult. + */ +@interface FIRAuthTokenResult () + +- (instancetype)initWithToken:(NSString *)token + expirationDate:(NSDate *)expirationDate + authDate:(NSDate *)authDate + issuedAtDate:(NSDate *)issuedAtDate + signInProvider:(NSString *)signInProvider + claims:(NSDictionary *)claims; + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Auth/FIRAuth_Internal.h b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Auth/FIRAuth_Internal.h new file mode 100644 index 0000000..ce01224 --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Auth/FIRAuth_Internal.h @@ -0,0 +1,122 @@ +/* + * 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 + +#import "FIRAuth.h" + +#import + +@class FIRAuthRequestConfiguration; +@class FIRAuthURLPresenter; + +#if TARGET_OS_IOS +@class FIRAuthAPNSTokenManager; +@class FIRAuthAppCredentialManager; +@class FIRAuthNotificationManager; +#endif + +NS_ASSUME_NONNULL_BEGIN + +@interface FIRAuth () + +/** @property requestConfiguration + @brief The configuration object comprising of paramters needed to make a request to Firebase + Auth's backend. + */ +@property(nonatomic, copy, readonly) FIRAuthRequestConfiguration *requestConfiguration; + +#if TARGET_OS_IOS + +/** @property tokenManager + @brief The manager for APNs tokens used by phone number auth. + */ +@property(nonatomic, strong, readonly) FIRAuthAPNSTokenManager *tokenManager; + +/** @property appCredentailManager + @brief The manager for app credentials used by phone number auth. + */ +@property(nonatomic, strong, readonly) FIRAuthAppCredentialManager *appCredentialManager; + +/** @property notificationManager + @brief The manager for remote notifications used by phone number auth. + */ +@property(nonatomic, strong, readonly) FIRAuthNotificationManager *notificationManager; + +#endif // TARGET_OS_IOS + +/** @property authURLPresenter + @brief An object that takes care of presenting URLs via the auth instance. + */ +@property(nonatomic, strong, readonly) FIRAuthURLPresenter *authURLPresenter; + +/** @fn initWithAPIKey:appName: + @brief Designated initializer. + @param APIKey The Google Developers Console API key for making requests from your app. + @param appName The name property of the previously created @c FIRApp instance. + */ +- (nullable instancetype)initWithAPIKey:(NSString *)APIKey + appName:(NSString *)appName NS_DESIGNATED_INITIALIZER; + +/** @fn getUserID + @brief Gets the identifier of the current user, if any. + @return The identifier of the current user, or nil if there is no current user. + */ +- (nullable NSString *)getUserID; + +/** @fn updateKeychainWithUser:error: + @brief Updates the keychain for the given user. + @param user The user to be updated. + @param error The error caused the method to fail if the method returns NO. + @return Whether updating keychain has succeeded or not. + @remarks Called by @c FIRUser when user info or token changes occur. + */ +- (BOOL)updateKeychainWithUser:(FIRUser *)user error:(NSError *_Nullable *_Nullable)error; + +/** @fn internalSignInWithCredential:callback: + @brief Convenience method for @c internalSignInAndRetrieveDataWithCredential:callback: + This method doesn't return additional identity provider data. +*/ +- (void)internalSignInWithCredential:(FIRAuthCredential *)credential + callback:(FIRAuthResultCallback)callback; + +/** @fn internalSignInAndRetrieveDataWithCredential:callback: + @brief Asynchronously signs in Firebase with the given 3rd party credentials (e.g. a Facebook + login Access Token, a Google ID Token/Access Token pair, etc.) and returns additional + identity provider data. + @param credential The credential supplied by the IdP. + @param isReauthentication Indicates whether or not the current invocation originated from an + attempt to reauthenticate. + @param callback A block which is invoked when the sign in finishes (or is cancelled.) Invoked + asynchronously on the auth global work queue in the future. + @remarks This is the internal counterpart of this method, which uses a callback that does not + update the current user. + */ +- (void)internalSignInAndRetrieveDataWithCredential:(FIRAuthCredential *)credential + isReauthentication:(BOOL)isReauthentication + callback:(nullable FIRAuthDataResultCallback)callback; + +/** @fn signOutByForceWithUserID:error: + @brief Signs out the current user. + @param userID The ID of the user to force sign out. + @param error An optional out parameter for error results. + @return @YES when the sign out request was successful. @NO otherwise. + */ +- (BOOL)signOutByForceWithUserID:(NSString *)userID error:(NSError *_Nullable *_Nullable)error; + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/AuthProvider/Email/FIREmailAuthProvider.m b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/AuthProvider/Email/FIREmailAuthProvider.m new file mode 100644 index 0000000..373c0b1 --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/AuthProvider/Email/FIREmailAuthProvider.m @@ -0,0 +1,41 @@ +/* + * 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 "FIREmailAuthProvider.h" + +#import "FIREmailPasswordAuthCredential.h" + +NS_ASSUME_NONNULL_BEGIN + +@implementation FIREmailAuthProvider + +- (instancetype)init { + @throw [NSException exceptionWithName:@"Attempt to call unavailable initializer." + reason:@"This class is not meant to be initialized." + userInfo:nil]; +} + ++ (FIRAuthCredential *)credentialWithEmail:(NSString *)email password:(NSString *)password { + return [[FIREmailPasswordAuthCredential alloc] initWithEmail:email password:password]; +} + ++ (FIRAuthCredential *)credentialWithEmail:(NSString *)email link:(NSString *)link { + return [[FIREmailPasswordAuthCredential alloc] initWithEmail:email link:link]; +} + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/AuthProvider/Email/FIREmailPasswordAuthCredential.h b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/AuthProvider/Email/FIREmailPasswordAuthCredential.h new file mode 100644 index 0000000..dc719ac --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/AuthProvider/Email/FIREmailPasswordAuthCredential.h @@ -0,0 +1,61 @@ +/* + * 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 + +#import "FIRAuthCredential_Internal.h" + +NS_ASSUME_NONNULL_BEGIN + +/** @class FIREmailPasswordAuthCredential + @brief Internal implementation of FIRAuthCredential for Email/Password credentials. + */ +@interface FIREmailPasswordAuthCredential : FIRAuthCredential + +/** @property email + @brief The user's email address. + */ +@property(nonatomic, readonly) NSString *email; + +/** @property password + @brief The user's password. + */ +@property(nonatomic, readonly) NSString *password; + +/** @property link + @brief The email sign-in link. + */ +@property(nonatomic, readonly) NSString *link; + +/** @fn initWithEmail:password: + @brief Designated initializer. + @param email The user's email address. + @param password The user's password. + */ +- (nullable instancetype)initWithEmail:(NSString *)email password:(NSString *)password + NS_DESIGNATED_INITIALIZER; + +/** @fn initWithEmail:link: + @brief Designated initializer. + @param email The user's email address. + @param link The email sign-in link. + */ +- (nullable instancetype)initWithEmail:(NSString *)email link:(NSString *)link + NS_DESIGNATED_INITIALIZER; + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/AuthProvider/Email/FIREmailPasswordAuthCredential.m b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/AuthProvider/Email/FIREmailPasswordAuthCredential.m new file mode 100644 index 0000000..84c1461 --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/AuthProvider/Email/FIREmailPasswordAuthCredential.m @@ -0,0 +1,90 @@ +/* + * 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 "FIREmailPasswordAuthCredential.h" + +#import "FIREmailAuthProvider.h" +#import "FIRAuthExceptionUtils.h" +#import "FIRVerifyAssertionRequest.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface FIREmailPasswordAuthCredential () + +- (nullable instancetype)initWithProvider:(NSString *)provider NS_UNAVAILABLE; + +@end + +@implementation FIREmailPasswordAuthCredential + +- (nullable instancetype)initWithProvider:(NSString *)provider { + [FIRAuthExceptionUtils raiseMethodNotImplementedExceptionWithReason: + @"Please call the designated initializer."]; + return nil; +} + +- (nullable instancetype)initWithEmail:(NSString *)email password:(NSString *)password { + self = [super initWithProvider:FIREmailAuthProviderID]; + if (self) { + _email = [email copy]; + _password = [password copy]; + } + return self; +} + +- (nullable instancetype)initWithEmail:(NSString *)email link:(NSString *)link { + self = [super initWithProvider:FIREmailAuthProviderID]; + if (self) { + _email = [email copy]; + _link = [link copy]; + } + return self; +} + +- (void)prepareVerifyAssertionRequest:(FIRVerifyAssertionRequest *)request { + [FIRAuthExceptionUtils raiseMethodNotImplementedExceptionWithReason: + @"Attempt to call prepareVerifyAssertionRequest: on a FIREmailPasswordAuthCredential."]; +} + +#pragma mark - NSSecureCoding + ++ (BOOL)supportsSecureCoding { + return YES; +} + +- (nullable instancetype)initWithCoder:(NSCoder *)aDecoder { + NSString *email = [aDecoder decodeObjectOfClass:[NSString class] forKey:@"email"]; + NSString *password = [aDecoder decodeObjectOfClass:[NSString class] forKey:@"password"]; + NSString *link = [aDecoder decodeObjectOfClass:[NSString class] forKey:@"link"]; + if (email.length && password.length) { + self = [self initWithEmail:email password:password]; + } else if (email.length && link.length) { + self = [self initWithEmail:email link:link]; + } else { + self = nil; + } + return self; +} + +- (void)encodeWithCoder:(NSCoder *)aCoder { + [aCoder encodeObject:self.email forKey:@"email"]; + [aCoder encodeObject:self.password forKey:@"password"]; + [aCoder encodeObject:self.link forKey:@"link"]; +} + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/AuthProvider/FIRAuthCredential.m b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/AuthProvider/FIRAuthCredential.m new file mode 100644 index 0000000..510d5f9 --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/AuthProvider/FIRAuthCredential.m @@ -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 "FIRAuthCredential_Internal.h" + +NS_ASSUME_NONNULL_BEGIN + +@implementation FIRAuthCredential + +- (instancetype)init { + @throw [NSException exceptionWithName:@"Attempt to call unavailable initializer." + reason:@"This class is an abstract base class. It's init method " + "should not be called directly." + userInfo:nil]; +} + +- (nullable instancetype)initWithProvider:(NSString *)provider { + self = [super init]; + if (self) { + _provider = [provider copy]; + } + return self; +} + +- (void)prepareVerifyAssertionRequest:(FIRVerifyAssertionRequest *)request { + @throw [NSException exceptionWithName:@"Attempt to call virtual method." + reason:@"This method must be overridden by a subclass." + userInfo:nil]; +} + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/AuthProvider/FIRAuthCredential_Internal.h b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/AuthProvider/FIRAuthCredential_Internal.h new file mode 100644 index 0000000..e060cda --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/AuthProvider/FIRAuthCredential_Internal.h @@ -0,0 +1,41 @@ +/* + * 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 "FIRAuthCredential.h" + +@class FIRVerifyAssertionRequest; + +NS_ASSUME_NONNULL_BEGIN + +@interface FIRAuthCredential () + +/** @fn initWithProvider: + @brief Designated initializer. + @remarks This is the designated initializer for internal/friend subclasses. + @param provider The provider name. + */ +- (nullable instancetype)initWithProvider:(NSString *)provider NS_DESIGNATED_INITIALIZER; + +/** @fn prepareVerifyAssertionRequest: + @brief Called immediately before a request to the verifyAssertion endpoint is made. Implementers + should update the passed request instance with their credentials. + @param request The request to be updated with credentials. + */ +- (void)prepareVerifyAssertionRequest:(FIRVerifyAssertionRequest *)request; + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/AuthProvider/FIRAuthProvider.m b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/AuthProvider/FIRAuthProvider.m new file mode 100644 index 0000000..6192ad6 --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/AuthProvider/FIRAuthProvider.m @@ -0,0 +1,66 @@ +/* + * 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 + +#pragma mark - Provider ID constants + +// Declared 'extern' in FIRGoogleAuthProvider.h +NSString *const FIRGoogleAuthProviderID = @"google.com"; + +// Declared 'extern' in FIRFacebookAuthProvider.h +NSString *const FIRFacebookAuthProviderID = @"facebook.com"; + +// Declared 'extern' in FIREmailAuthProvider.h +NSString *const FIREmailAuthProviderID = @"password"; + +// Declared 'extern' in FIRTwitterAuthProvider.h +NSString *const FIRTwitterAuthProviderID = @"twitter.com"; + +// Declared 'extern' in FIRGitHubAuthProvider.h +NSString *const FIRGitHubAuthProviderID = @"github.com"; + +// Declared 'extern' in FIRPhoneAuthProvider.h +NSString *const FIRPhoneAuthProviderID = @"phone"; + +// Declared 'extern' in FIRGameCenterAuthProvider.h +NSString *const FIRGameCenterAuthProviderID = @"gc.apple.com"; + +#pragma mark - sign-in methods constants + +// Declared 'extern' in FIRGoogleAuthProvider.h +NSString *const FIRGoogleAuthSignInMethod = @"google.com"; + +// Declared 'extern' in FIREmailAuthProvider.h +NSString *const FIREmailPasswordAuthSignInMethod = @"password"; + +// Declared 'extern' in FIREmailAuthProvider.h +NSString *const FIREmailLinkAuthSignInMethod = @"emailLink"; + +// Declared 'extern' in FIRTwitterAuthProvider.h +NSString *const FIRTwitterAuthSignInMethod = @"twitter.com"; + +// Declared 'extern' in FIRFacebookAuthProvider.h +NSString *const FIRFacebookAuthSignInMethod = @"facebook.com"; + +// Declared 'extern' in FIRGitHubAuthProvider.h +NSString *const FIRGitHubAuthSignInMethod = @"github.com"; + +// Declared 'extern' in FIRPhoneAuthProvider.h +NSString *const FIRPhoneAuthSignInMethod = @"phone"; + +// Declared 'extern' in FIRGameCenterAuthProvider.h +NSString *const FIRGameCenterAuthSignInMethod = @"gc.apple.com"; diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/AuthProvider/Facebook/FIRFacebookAuthCredential.h b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/AuthProvider/Facebook/FIRFacebookAuthCredential.h new file mode 100644 index 0000000..29849a1 --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/AuthProvider/Facebook/FIRFacebookAuthCredential.h @@ -0,0 +1,36 @@ +/* + * 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 + +#import "FIRAuthCredential_Internal.h" + +NS_ASSUME_NONNULL_BEGIN + +/** @class FIRFacebookAuthCredential + @brief Internal implementation of FIRAuthCredential for the Facebook IdP. + */ +@interface FIRFacebookAuthCredential : FIRAuthCredential + +/** @fn initWithAccessToken: + @brief Designated initializer. + @param accessToken The Access Token obtained from Facebook. + */ +- (nullable instancetype)initWithAccessToken:(NSString *)accessToken NS_DESIGNATED_INITIALIZER; + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/AuthProvider/Facebook/FIRFacebookAuthCredential.m b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/AuthProvider/Facebook/FIRFacebookAuthCredential.m new file mode 100644 index 0000000..4f10860 --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/AuthProvider/Facebook/FIRFacebookAuthCredential.m @@ -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 "FIRFacebookAuthCredential.h" + +#import "FIRFacebookAuthProvider.h" +#import "FIRAuthExceptionUtils.h" +#import "FIRVerifyAssertionRequest.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface FIRFacebookAuthCredential () + +- (nullable instancetype)initWithProvider:(NSString *)provider NS_UNAVAILABLE; + +@end + +@implementation FIRFacebookAuthCredential { + NSString *_accessToken; +} + +- (nullable instancetype)initWithProvider:(NSString *)provider { + [FIRAuthExceptionUtils raiseMethodNotImplementedExceptionWithReason: + @"Please call the designated initializer."]; + return nil; +} + +- (nullable instancetype)initWithAccessToken:(NSString *)accessToken { + self = [super initWithProvider:FIRFacebookAuthProviderID]; + if (self) { + _accessToken = [accessToken copy]; + } + return self; +} + +- (void)prepareVerifyAssertionRequest:(FIRVerifyAssertionRequest *)request { + request.providerAccessToken = _accessToken; +} + +#pragma mark - NSSecureCoding + ++ (BOOL)supportsSecureCoding { + return YES; +} + +- (nullable instancetype)initWithCoder:(NSCoder *)aDecoder { + NSString *accessToken = [aDecoder decodeObjectOfClass:[NSString class] forKey:@"accessToken"]; + self = [self initWithAccessToken:accessToken]; + return self; +} + +- (void)encodeWithCoder:(NSCoder *)aCoder { + [aCoder encodeObject:_accessToken forKey:@"accessToken"]; +} + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/AuthProvider/Facebook/FIRFacebookAuthProvider.m b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/AuthProvider/Facebook/FIRFacebookAuthProvider.m new file mode 100644 index 0000000..d850830 --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/AuthProvider/Facebook/FIRFacebookAuthProvider.m @@ -0,0 +1,40 @@ +/* + * 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 "FIRFacebookAuthProvider.h" + +#import "FIRFacebookAuthCredential.h" +#import "FIRAuthExceptionUtils.h" + +// FIRFacebookAuthProviderID is defined in FIRAuthProvider.m. + +NS_ASSUME_NONNULL_BEGIN + +@implementation FIRFacebookAuthProvider + +- (instancetype)init { + [FIRAuthExceptionUtils raiseMethodNotImplementedExceptionWithReason: + @"This class is not meant to be initialized."]; + return nil; +} + ++ (FIRAuthCredential *)credentialWithAccessToken:(NSString *)accessToken { + return [[FIRFacebookAuthCredential alloc] initWithAccessToken:accessToken]; +} + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/AuthProvider/GameCenter/FIRGameCenterAuthCredential.h b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/AuthProvider/GameCenter/FIRGameCenterAuthCredential.h new file mode 100644 index 0000000..ee1d21b --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/AuthProvider/GameCenter/FIRGameCenterAuthCredential.h @@ -0,0 +1,80 @@ +/* + * 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 + +#import "FIRAuthCredential.h" + +NS_ASSUME_NONNULL_BEGIN + +/** @class FIRGameCenterAuthCredential + @brief Internal implementation of FIRAuthCredential for Game Center credentials. + */ +@interface FIRGameCenterAuthCredential : FIRAuthCredential + +/** @property playerID + @brief The ID of the Game Center local player. + */ +@property(nonatomic, readonly) NSString *playerID; + +/** @property publicKeyURL + @brief The URL for the public encryption key. + */ +@property(nonatomic, readonly) NSURL *publicKeyURL; + +/** @property signature + @brief The verification signature data generated. + */ +@property(nonatomic, readonly) NSData *signature; + +/** @property salt + @brief A random string used to compute the hash and keep it randomized. + */ +@property(nonatomic, readonly) NSData *salt; + +/** @property timestamp + @brief The date and time that the signature was created. + */ +@property(nonatomic, readonly) uint64_t timestamp; + +/** @property displayName + @brief The date and time that the signature was created. + */ +@property(nonatomic, readonly) NSString *displayName; + +/** @fn initWithPlayerID:publicKeyURL:signature:salt:timestamp:displayName: + @brief Designated initializer. + @param publicKeyURL The URL for the public encryption key. + @param signature The verification signature generated. + @param salt A random string used to compute the hash and keep it randomized. + @param timestamp The date and time that the signature was created. + */ +- (nullable instancetype)initWithPlayerID:(NSString *)playerID + publicKeyURL:(NSURL *)publicKeyURL + signature:(NSData *)signature + salt:(NSData *)salt + timestamp:(uint64_t)timestamp + displayName:(NSString *)displayName NS_DESIGNATED_INITIALIZER; + +/** @fn initWithProvider: + @brief Initializer with a provider name. + @param provider The provider name. + */ +- (nullable instancetype)initWithProvider:(NSString *)provider NS_UNAVAILABLE; + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/AuthProvider/GameCenter/FIRGameCenterAuthCredential.m b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/AuthProvider/GameCenter/FIRGameCenterAuthCredential.m new file mode 100644 index 0000000..91a4b68 --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/AuthProvider/GameCenter/FIRGameCenterAuthCredential.m @@ -0,0 +1,90 @@ +/* + * 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 "FIRGameCenterAuthCredential.h" + +#import "FIRAuthExceptionUtils.h" +#import "FIRAuthCredential_Internal.h" +#import "FIRGameCenterAuthProvider.h" +#import "FIRVerifyAssertionRequest.h" + +NS_ASSUME_NONNULL_BEGIN + +@implementation FIRGameCenterAuthCredential + +- (nullable instancetype)initWithProvider:(NSString *)provider { + [FIRAuthExceptionUtils raiseMethodNotImplementedExceptionWithReason: + @"Please call the designated initializer."]; + return nil; +} + +- (nullable instancetype)initWithPlayerID:(NSString *)playerID + publicKeyURL:(NSURL *)publicKeyURL + signature:(NSData *)signature + salt:(NSData *)salt + timestamp:(uint64_t)timestamp + displayName:(NSString *)displayName { + self = [super initWithProvider:FIRGameCenterAuthProviderID]; + if (self) { + _playerID = [playerID copy]; + _publicKeyURL = [publicKeyURL copy]; + _signature = [signature copy]; + _salt = [salt copy]; + _timestamp = timestamp; + _displayName = [displayName copy]; + } + return self; +} + +- (void)prepareVerifyAssertionRequest:(FIRVerifyAssertionRequest *)request { + [FIRAuthExceptionUtils raiseMethodNotImplementedExceptionWithReason: + @"Attempt to call prepareVerifyAssertionRequest: on a FIRGameCenterAuthCredential."]; +} + +#pragma mark - NSSecureCoding + ++ (BOOL)supportsSecureCoding { + return YES; +} + +- (nullable instancetype)initWithCoder:(NSCoder *)aDecoder { + NSString *playerID = [aDecoder decodeObjectOfClass:[NSString class] forKey:@"playerID"]; + NSURL *publicKeyURL = [aDecoder decodeObjectOfClass:[NSURL class] forKey:@"publicKeyURL"]; + NSData *signature = [aDecoder decodeObjectOfClass:[NSData class] forKey:@"signature"]; + NSData *salt = [aDecoder decodeObjectOfClass:[NSData class] forKey:@"salt"]; + NSNumber *timestamp = [aDecoder decodeObjectOfClass:[NSNumber class] forKey:@"timestamp"]; + NSString *displayName = [aDecoder decodeObjectOfClass:[NSString class] forKey:@"displayName"]; + self = [self initWithPlayerID:playerID + publicKeyURL:publicKeyURL + signature:signature + salt:salt + timestamp:timestamp.unsignedLongLongValue + displayName:displayName]; + return self; +} + +- (void)encodeWithCoder:(NSCoder *)aCoder { + [aCoder encodeObject:self.playerID forKey:@"playerID"]; + [aCoder encodeObject:self.publicKeyURL forKey:@"publicKeyURL"]; + [aCoder encodeObject:self.signature forKey:@"signature"]; + [aCoder encodeObject:self.salt forKey:@"salt"]; + [aCoder encodeObject:[NSNumber numberWithUnsignedLongLong:self.timestamp] forKey:@"timestamp"]; + [aCoder encodeObject:self.displayName forKey:@"displayName"]; +} + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/AuthProvider/GameCenter/FIRGameCenterAuthProvider.m b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/AuthProvider/GameCenter/FIRGameCenterAuthProvider.m new file mode 100644 index 0000000..af8e7e6 --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/AuthProvider/GameCenter/FIRGameCenterAuthProvider.m @@ -0,0 +1,88 @@ +/* + * 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 "FIRGameCenterAuthProvider.h" + +#import + +#import "FIRAuthErrorUtils.h" +#import "FIRAuthExceptionUtils.h" +#import "FIRGameCenterAuthCredential.h" + +NS_ASSUME_NONNULL_BEGIN + +@implementation FIRGameCenterAuthProvider + +- (instancetype)init { + [FIRAuthExceptionUtils raiseMethodNotImplementedExceptionWithReason: + @"This class is not meant to be initialized."]; + return nil; +} + ++ (void)getCredentialWithCompletion:(FIRGameCenterCredentialCallback)completion { + /** + Linking GameKit.framework without using it on macOS results in App Store rejection. + Thus we don't link GameKit.framework to our SDK directly. `optionalLocalPlayer` is used for + checking whether the APP that consuming our SDK has linked GameKit.framework. If not, a + `GameKitNotLinkedError` will be raised. + **/ + GKLocalPlayer * _Nullable optionalLocalPlayer = [[NSClassFromString(@"GKLocalPlayer") alloc] init]; + + if (!optionalLocalPlayer) { + if (completion) { + completion(nil, [FIRAuthErrorUtils gameKitNotLinkedError]); + } + return; + } + + __weak GKLocalPlayer *localPlayer = [[optionalLocalPlayer class] localPlayer]; + if (!localPlayer.isAuthenticated) { + if (completion) { + completion(nil, [FIRAuthErrorUtils localPlayerNotAuthenticatedError]); + } + return; + } + + [localPlayer generateIdentityVerificationSignatureWithCompletionHandler: + ^(NSURL *publicKeyURL, NSData *signature, NSData *salt, uint64_t timestamp, NSError *error) { + if (error) { + if (completion) { + completion(nil, error); + } + } else { + if (completion) { + /** + @c `localPlayer.alias` is actually the displayname needed, instead of + `localPlayer.displayname`. For more information, check + https://developer.apple.com/documentation/gamekit/gkplayer + **/ + NSString *displayName = localPlayer.alias; + FIRGameCenterAuthCredential *credential = + [[FIRGameCenterAuthCredential alloc] initWithPlayerID:localPlayer.playerID + publicKeyURL:publicKeyURL + signature:signature + salt:salt + timestamp:timestamp + displayName:displayName]; + completion(credential, nil); + } + } + }]; +} + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/AuthProvider/GitHub/FIRGitHubAuthCredential.h b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/AuthProvider/GitHub/FIRGitHubAuthCredential.h new file mode 100644 index 0000000..ba406f7 --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/AuthProvider/GitHub/FIRGitHubAuthCredential.h @@ -0,0 +1,41 @@ +/* + * 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 + +#import "FIRAuthCredential_Internal.h" + +NS_ASSUME_NONNULL_BEGIN + +/** @class FIRGitHubAuthCredential + @brief Internal implementation of FIRAuthCredential for GitHub credentials. + */ +@interface FIRGitHubAuthCredential : FIRAuthCredential + +/** @property token + @brief The GitHub OAuth access token. + */ +@property(nonatomic, readonly) NSString *token; + +/** @fn initWithToken: + @brief Designated initializer. + @param token The GitHub OAuth access token. + */ +- (nullable instancetype)initWithToken:(NSString *)token NS_DESIGNATED_INITIALIZER; + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/AuthProvider/GitHub/FIRGitHubAuthCredential.m b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/AuthProvider/GitHub/FIRGitHubAuthCredential.m new file mode 100644 index 0000000..f6b536d --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/AuthProvider/GitHub/FIRGitHubAuthCredential.m @@ -0,0 +1,69 @@ +/* + * 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 "FIRGitHubAuthCredential.h" + +#import "FIRGitHubAuthProvider.h" +#import "FIRAuthExceptionUtils.h" +#import "FIRVerifyAssertionRequest.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface FIRGitHubAuthCredential () + +- (nullable instancetype)initWithProvider:(NSString *)provider NS_UNAVAILABLE; + +@end + +@implementation FIRGitHubAuthCredential + +- (nullable instancetype)initWithProvider:(NSString *)provider { + [FIRAuthExceptionUtils raiseMethodNotImplementedExceptionWithReason: + @"Please call the designated initializer."]; + return nil; +} + +- (nullable instancetype)initWithToken:(NSString *)token { + self = [super initWithProvider:FIRGitHubAuthProviderID]; + if (self) { + _token = [token copy]; + } + return self; +} + +- (void)prepareVerifyAssertionRequest:(FIRVerifyAssertionRequest *)request { + request.providerAccessToken = _token; +} + +#pragma mark - NSSecureCoding + ++ (BOOL)supportsSecureCoding { + return YES; +} + +- (nullable instancetype)initWithCoder:(NSCoder *)aDecoder { + NSString *token = [aDecoder decodeObjectOfClass:[NSString class] forKey:@"token"]; + self = [self initWithToken:token]; + return self; +} + +- (void)encodeWithCoder:(NSCoder *)aCoder { + [aCoder encodeObject:self.token forKey:@"token"]; +} + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/AuthProvider/GitHub/FIRGitHubAuthProvider.m b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/AuthProvider/GitHub/FIRGitHubAuthProvider.m new file mode 100644 index 0000000..fa6be66 --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/AuthProvider/GitHub/FIRGitHubAuthProvider.m @@ -0,0 +1,40 @@ +/* + * 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 "FIRGitHubAuthProvider.h" + +#import "FIRGitHubAuthCredential.h" +#import "FIRAuthExceptionUtils.h" + +// FIRGitHubAuthProviderID is defined in FIRAuthProvider.m. + +NS_ASSUME_NONNULL_BEGIN + +@implementation FIRGitHubAuthProvider + +- (instancetype)init { + [FIRAuthExceptionUtils raiseMethodNotImplementedExceptionWithReason: + @"This class is not meant to be initialized."]; + return nil; +} + ++ (FIRAuthCredential *)credentialWithToken:(NSString *)token { + return [[FIRGitHubAuthCredential alloc] initWithToken:token]; +} + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/AuthProvider/Google/FIRGoogleAuthCredential.h b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/AuthProvider/Google/FIRGoogleAuthCredential.h new file mode 100644 index 0000000..23e2d68 --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/AuthProvider/Google/FIRGoogleAuthCredential.h @@ -0,0 +1,38 @@ +/* + * 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 + +#import "FIRAuthCredential_Internal.h" + +NS_ASSUME_NONNULL_BEGIN + +/** @class FIRGoogleAuthCredential + @brief Internal implementation of FIRAuthCredential for the Google IdP. + */ +@interface FIRGoogleAuthCredential : FIRAuthCredential + +/** @fn initWithIDToken:accessToken: + @brief Designated initializer. + @param IDToken The ID Token obtained from Google. + @param accessToken The Access Token obtained from Google. + */ +- (nullable instancetype)initWithIDToken:(NSString *)IDToken accessToken:(NSString *)accessToken + NS_DESIGNATED_INITIALIZER; + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/AuthProvider/Google/FIRGoogleAuthCredential.m b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/AuthProvider/Google/FIRGoogleAuthCredential.m new file mode 100644 index 0000000..a4676d9 --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/AuthProvider/Google/FIRGoogleAuthCredential.m @@ -0,0 +1,76 @@ +/* + * 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 "FIRGoogleAuthCredential.h" + +#import "FIRGoogleAuthProvider.h" +#import "FIRAuthExceptionUtils.h" +#import "FIRVerifyAssertionRequest.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface FIRGoogleAuthCredential () + +- (nullable instancetype)initWithProvider:(NSString *)provider NS_UNAVAILABLE; + +@end + +@implementation FIRGoogleAuthCredential { + NSString *_IDToken; + NSString *_accessToken; +} + +- (nullable instancetype)initWithProvider:(NSString *)provider { + [FIRAuthExceptionUtils raiseMethodNotImplementedExceptionWithReason: + @"Please call the designated initializer."]; + return nil; +} + +- (nullable instancetype)initWithIDToken:(NSString *)IDToken accessToken:(NSString *)accessToken { + self = [super initWithProvider:FIRGoogleAuthProviderID]; + if (self) { + _IDToken = [IDToken copy]; + _accessToken = [accessToken copy]; + } + return self; +} + +- (void)prepareVerifyAssertionRequest:(FIRVerifyAssertionRequest *)request { + request.providerIDToken = _IDToken; + request.providerAccessToken = _accessToken; +} + +#pragma mark - NSSecureCoding + ++ (BOOL)supportsSecureCoding { + return YES; +} + +- (nullable instancetype)initWithCoder:(NSCoder *)aDecoder { + NSString *IDToken = [aDecoder decodeObjectOfClass:[NSString class] forKey:@"IDToken"]; + NSString *accessToken = [aDecoder decodeObjectOfClass:[NSString class] forKey:@"accessToken"]; + self = [self initWithIDToken:IDToken accessToken:accessToken]; + return self; +} + +- (void)encodeWithCoder:(NSCoder *)aCoder { + [aCoder encodeObject:_IDToken forKey:@"IDToken"]; + [aCoder encodeObject:_accessToken forKey:@"accessToken"]; +} + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/AuthProvider/Google/FIRGoogleAuthProvider.m b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/AuthProvider/Google/FIRGoogleAuthProvider.m new file mode 100644 index 0000000..93a33d8 --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/AuthProvider/Google/FIRGoogleAuthProvider.m @@ -0,0 +1,41 @@ +/* + * 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 "FIRGoogleAuthProvider.h" + +#import "FIRGoogleAuthCredential.h" +#import "FIRAuthExceptionUtils.h" + +// FIRGoogleAuthProviderID is defined in FIRAuthProvider.m. + +NS_ASSUME_NONNULL_BEGIN + +@implementation FIRGoogleAuthProvider + +- (instancetype)init { + [FIRAuthExceptionUtils raiseMethodNotImplementedExceptionWithReason: + @"This class is not meant to be initialized."]; + return nil; +} + ++ (FIRAuthCredential *)credentialWithIDToken:(NSString *)IDToken + accessToken:(NSString *)accessToken { + return [[FIRGoogleAuthCredential alloc] initWithIDToken:IDToken accessToken:accessToken]; +} + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/AuthProvider/OAuth/FIROAuthCredential.m b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/AuthProvider/OAuth/FIROAuthCredential.m new file mode 100644 index 0000000..069d4f3 --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/AuthProvider/OAuth/FIROAuthCredential.m @@ -0,0 +1,118 @@ +/* + * 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 "FIROAuthCredential.h" + +#import "FIRAuthCredential_Internal.h" +#import "FIRAuthExceptionUtils.h" +#import "FIROAuthCredential_Internal.h" +#import "FIRVerifyAssertionRequest.h" +#import "FIRVerifyAssertionResponse.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface FIROAuthCredential () + +- (nullable instancetype)initWithProvider:(NSString *)provider NS_UNAVAILABLE; + +@end + +@implementation FIROAuthCredential + +- (nullable instancetype)initWithProvider:(NSString *)provider { + [FIRAuthExceptionUtils raiseMethodNotImplementedExceptionWithReason: + @"Please call the designated initializer."]; + return nil; +} + +- (instancetype)initWithProviderID:(NSString *)providerID + IDToken:(nullable NSString *)IDToken + accessToken:(nullable NSString *)accessToken + secret:(nullable NSString *)secret + pendingToken:(nullable NSString *)pendingToken { + self = [super initWithProvider:providerID]; + if (self) { + _IDToken = IDToken; + _accessToken = accessToken; + _pendingToken = pendingToken; + _secret = secret; + } + return self; +} + +- (instancetype)initWithProviderID:(NSString *)providerID + sessionID:(NSString *)sessionID + OAuthResponseURLString:(NSString *)OAuthResponseURLString { + self = + [self initWithProviderID:providerID IDToken:nil accessToken:nil secret:nil pendingToken:nil]; + if (self) { + _OAuthResponseURLString = OAuthResponseURLString; + _sessionID = sessionID; + } + return self; +} + + +- (nullable instancetype)initWithVerifyAssertionResponse:(FIRVerifyAssertionResponse *)response { + if (response.oauthIDToken.length || response.oauthAccessToken.length || + response.oauthSecretToken.length) { + return [self initWithProviderID:response.providerID + IDToken:response.oauthIDToken + accessToken:response.oauthAccessToken + secret:response.oauthSecretToken + pendingToken:response.pendingToken]; + } + return nil; +} + +- (void)prepareVerifyAssertionRequest:(FIRVerifyAssertionRequest *)request { + request.providerIDToken = _IDToken; + request.providerAccessToken = _accessToken; + request.requestURI = _OAuthResponseURLString; + request.sessionID = _sessionID; + request.providerOAuthTokenSecret = _secret; + request.pendingToken = _pendingToken; +} + +#pragma mark - NSSecureCoding + ++ (BOOL)supportsSecureCoding { + return YES; +} + +- (nullable instancetype)initWithCoder:(NSCoder *)aDecoder { + NSString *IDToken = [aDecoder decodeObjectOfClass:[NSString class] forKey:@"IDToken"]; + NSString *accessToken = [aDecoder decodeObjectOfClass:[NSString class] forKey:@"accessToken"]; + NSString *pendingToken = [aDecoder decodeObjectOfClass:[NSString class] forKey:@"pendingToken"]; + NSString *secret = [aDecoder decodeObjectOfClass:[NSString class] forKey:@"secret"]; + self = [self initWithProviderID:self.provider + IDToken:IDToken + accessToken:accessToken + secret:secret + pendingToken:pendingToken]; + return self; +} + +- (void)encodeWithCoder:(NSCoder *)aCoder { + [aCoder encodeObject:self.IDToken forKey:@"IDToken"]; + [aCoder encodeObject:self.accessToken forKey:@"accessToken"]; + [aCoder encodeObject:self.pendingToken forKey:@"pendingToken"]; + [aCoder encodeObject:self.secret forKey:@"secret"]; +} + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/AuthProvider/OAuth/FIROAuthCredential_Internal.h b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/AuthProvider/OAuth/FIROAuthCredential_Internal.h new file mode 100644 index 0000000..6bc7f4e --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/AuthProvider/OAuth/FIROAuthCredential_Internal.h @@ -0,0 +1,77 @@ +/* + * 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 + +#import "FIROAuthCredential.h" + +@class FIRVerifyAssertionResponse; + +NS_ASSUME_NONNULL_BEGIN + +/** @extension FIROAuthCredential + @brief Internal implementation of FIRAuthCredential for generic credentials. + */ +@interface FIROAuthCredential() + +/** @property OAuthResponseURLString + @brief A string representation of the response URL corresponding to this OAuthCredential. + */ +@property(nonatomic, readonly, nullable) NSString *OAuthResponseURLString; + +/** @property sessionID + @brief The session ID used when completing the headful-lite flow. + */ +@property(nonatomic, readonly, nullable) NSString *sessionID; + +/** @property pendingToken + @brief The pending token used when completing the headful-lite flow. + */ +@property(nonatomic, readonly, nullable) NSString *pendingToken; + +/** @fn initWithProviderId:IDToken:accessToken:secret:pendingToken + @brief Designated initializer. + @param providerID The provider ID associated with the credential being created. + @param IDToken The ID Token associated with the credential being created. + @param accessToken The access token associated with the credential being created. + @param secret The secret associated with the credential being created. + @param pendingToken The pending token associated with the credential being created. + */ +- (instancetype)initWithProviderID:(NSString *)providerID + IDToken:(nullable NSString *)IDToken + accessToken:(nullable NSString *)accessToken + secret:(nullable NSString *)secret + pendingToken:(nullable NSString *)pendingToken NS_DESIGNATED_INITIALIZER; + +/** @fn initWithProviderId:sessionID:OAuthResponseURLString: + @brief Intitializer which takes a sessionID and an OAuthResponseURLString. + @param providerID The provider ID associated with the credential being created. + @param sessionID The session ID used when completing the headful-lite flow. + @param OAuthResponseURLString The error that occurred if any. + */ +- (instancetype)initWithProviderID:(NSString *)providerID + sessionID:(NSString *)sessionID + OAuthResponseURLString:(NSString *)OAuthResponseURLString; + +/** @fn initWithVerifyAssertionResponse + @brief Intitializer which takes an verifyAssertion response. + @param response The verifyAssertion Response to create the credential instance. + */ +- (nullable instancetype)initWithVerifyAssertionResponse:(FIRVerifyAssertionResponse *)response; + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/AuthProvider/OAuth/FIROAuthProvider.m b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/AuthProvider/OAuth/FIROAuthProvider.m new file mode 100644 index 0000000..6f2fa50 --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/AuthProvider/OAuth/FIROAuthProvider.m @@ -0,0 +1,352 @@ +/* + * 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. + */ + +#include +#import "FIROAuthProvider.h" + +#import +#import + +#import "FIRAuthBackend.h" +#import "FIRAuth_Internal.h" +#import "FIRAuthErrorUtils.h" +#import "FIRAuthGlobalWorkQueue.h" +#import "FIRAuthRequestConfiguration.h" +#import "FIRAuthWebUtils.h" +#import "FIROAuthCredential_Internal.h" +#import "FIROAuthCredential.h" + +#if TARGET_OS_IOS +#import "FIRAuthURLPresenter.h" +#endif + +NS_ASSUME_NONNULL_BEGIN + +/** @typedef FIRHeadfulLiteURLCallBack + @brief The callback invoked at the end of the flow to fetch a headful-lite URL. + @param headfulLiteURL The headful lite URL. + @param error The error that occurred while fetching the headful-lite, if any. + */ +typedef void (^FIRHeadfulLiteURLCallBack)(NSURL *_Nullable headfulLiteURL, + NSError *_Nullable error); + +/** @var kHeadfulLiteURLStringFormat + @brief The format of the URL used to open the headful lite page during sign-in. + */ +NSString *const kHeadfulLiteURLStringFormat = @"https://%@/__/auth/handler?%@"; + +/** @var kauthTypeSignInWithRedirect + @brief The auth type to be specified in the sign-in request with redirect request and response. + */ +static NSString *const kAuthTypeSignInWithRedirect = @"signInWithRedirect"; + +@implementation FIROAuthProvider { + /** @var _auth + @brief The auth instance used for launching the URL presenter. + */ + FIRAuth *_auth; + + /** @var _callbackScheme + @brief The callback URL scheme used for headful-lite sign-in. + */ + NSString *_callbackScheme; +} + ++ (FIROAuthCredential *)credentialWithProviderID:(NSString *)providerID + IDToken:(NSString *)IDToken + accessToken:(nullable NSString *)accessToken { + return [[FIROAuthCredential alloc] initWithProviderID:providerID + IDToken:IDToken + accessToken:accessToken + secret:nil + pendingToken:nil]; +} + ++ (FIROAuthCredential *)credentialWithProviderID:(NSString *)providerID + accessToken:(NSString *)accessToken { + return [[FIROAuthCredential alloc] initWithProviderID:providerID + IDToken:nil + accessToken:accessToken + secret:nil + pendingToken:nil]; +} + ++ (instancetype)providerWithProviderID:(NSString *)providerID { + return [[self alloc]initWithProviderID:providerID auth:[FIRAuth auth]]; +} + ++ (instancetype)providerWithProviderID:(NSString *)providerID auth:(FIRAuth *)auth { + return [[self alloc] initWithProviderID:providerID auth:auth]; +} + +#if TARGET_OS_IOS +- (void)getCredentialWithUIDelegate:(nullable id)UIDelegate + completion:(nullable FIRAuthCredentialCallback)completion { + if (![FIRAuthWebUtils isCallbackSchemeRegisteredForCustomURLScheme:self->_callbackScheme]) { + [NSException raise:NSInternalInconsistencyException + format:@"Please register custom URL scheme '%@' in the app's Info.plist file.", + self->_callbackScheme]; + } + __weak __typeof__(self) weakSelf = self; + __weak FIRAuth *weakAuth = _auth; + __weak NSString *weakProviderID = _providerID; + dispatch_async(FIRAuthGlobalWorkQueue(), ^{ + FIRAuthCredentialCallback callbackOnMainThread = ^(FIRAuthCredential *_Nullable credential, + NSError *_Nullable error) { + if (completion) { + dispatch_async(dispatch_get_main_queue(), ^{ + completion(credential, error); + }); + } + }; + NSString *eventID = [FIRAuthWebUtils randomStringWithLength:10]; + NSString *sessionID = [FIRAuthWebUtils randomStringWithLength:10]; + __strong __typeof__(self) strongSelf = weakSelf; + [strongSelf getHeadFulLiteURLWithEventID:eventID + sessionID:sessionID + completion:^(NSURL *_Nullable headfulLiteURL, + NSError *_Nullable error) { + if (error) { + callbackOnMainThread(nil, error); + return; + } + FIRAuthURLCallbackMatcher callbackMatcher = ^BOOL(NSURL *_Nullable callbackURL) { + return [FIRAuthWebUtils isExpectedCallbackURL:callbackURL + eventID:eventID + authType:kAuthTypeSignInWithRedirect + callbackScheme:strongSelf->_callbackScheme]; + }; + __strong FIRAuth *strongAuth = weakAuth; + [strongAuth.authURLPresenter presentURL:headfulLiteURL + UIDelegate:UIDelegate + callbackMatcher:callbackMatcher + completion:^(NSURL *_Nullable callbackURL, + NSError *_Nullable error) { + if (error) { + callbackOnMainThread(nil, error); + return; + } + NSString *OAuthResponseURLString = + [strongSelf OAuthResponseForURL:callbackURL error:&error]; + if (error) { + callbackOnMainThread(nil, error); + return; + } + __strong NSString *strongProviderID = weakProviderID; + FIROAuthCredential *credential = + [[FIROAuthCredential alloc] initWithProviderID:strongProviderID + sessionID:sessionID + OAuthResponseURLString:OAuthResponseURLString]; + callbackOnMainThread(credential, nil); + }]; + }]; + }); +} +#endif // TARGET_OS_IOS + +#pragma mark - Internal Methods + +/** @fn initWithProviderID:auth: + @brief returns an instance of @c FIROAuthProvider associated with the provided auth instance. + @param auth The Auth instance to be associated with the OAuthProvider instance. + @return An Instance of @c FIROAuthProvider. + */ +- (nullable instancetype)initWithProviderID:(NSString *)providerID auth:(FIRAuth *)auth { + self = [super init]; + if (self) { + _auth = auth; + _providerID = providerID; + _callbackScheme = [[[_auth.app.options.clientID componentsSeparatedByString:@"."] + reverseObjectEnumerator].allObjects componentsJoinedByString:@"."]; + } + return self; +} + +/** @fn OAuthResponseForURL:error: + @brief Parses the redirected URL and returns a string representation of the OAuth response URL. + @param URL The url to be parsed for an OAuth response URL. + @param error The error that occurred if any. + @return The OAuth response if successful. + */ +- (nullable NSString *)OAuthResponseForURL:(NSURL *)URL error:(NSError *_Nullable *_Nullable)error { + NSDictionary *URLQueryItems = + [FIRAuthWebUtils dictionaryWithHttpArgumentsString:URL.query]; + NSURL *deepLinkURL = [NSURL URLWithString:URLQueryItems[@"deep_link_id"]]; + URLQueryItems = + [FIRAuthWebUtils dictionaryWithHttpArgumentsString:deepLinkURL.query]; + NSString *queryItemLink = URLQueryItems[@"link"]; + if (queryItemLink) { + return queryItemLink; + } + if (!error) { + return nil; + } + NSData *errorData = [URLQueryItems[@"firebaseError"] dataUsingEncoding:NSUTF8StringEncoding]; + NSError *jsonError; + NSDictionary *errorDict = [NSJSONSerialization JSONObjectWithData:errorData + options:0 + error:&jsonError]; + if (jsonError) { + *error = [FIRAuthErrorUtils JSONSerializationErrorWithUnderlyingError:jsonError]; + return nil; + } + *error = [FIRAuthErrorUtils URLResponseErrorWithCode:errorDict[@"code"] + message:errorDict[@"message"]]; + if (!*error) { + NSString *reason; + if(errorDict[@"code"] && errorDict[@"message"]) { + reason = [NSString stringWithFormat:@"[%@] - %@",errorDict[@"code"], errorDict[@"message"]]; + } + *error = [FIRAuthErrorUtils webSignInUserInteractionFailureWithReason:reason]; + } + return nil; +} + +/** @fn getHeadFulLiteURLWithEventID:completion: + @brief Constructs a URL used for opening a headful-lite flow using a given event + ID and session ID. + @param eventID The event ID used for this purpose. + @param sessionID The session ID used when completing the headful lite flow. + @param completion The callback invoked after the URL has been constructed or an error + has been encountered. + */ +- (void)getHeadFulLiteURLWithEventID:(NSString *)eventID + sessionID:(NSString *)sessionID + completion:(FIRHeadfulLiteURLCallBack)completion { + __weak __typeof__(self) weakSelf = self; + [FIRAuthWebUtils fetchAuthDomainWithRequestConfiguration:_auth.requestConfiguration + completion:^(NSString *_Nullable authDomain, + NSError *_Nullable error) { + if (error) { + if (completion) { + completion(nil, error); + } + return; + } + __strong __typeof__(self) strongSelf = weakSelf; + NSString *bundleID = [NSBundle mainBundle].bundleIdentifier; + NSString *clienID = strongSelf->_auth.app.options.clientID; + NSString *apiKey = strongSelf->_auth.requestConfiguration.APIKey; + NSMutableDictionary *urlArguments = [@{ + @"apiKey" : apiKey, + @"authType" : @"signInWithRedirect", + @"ibi" : bundleID ?: @"", + @"clientId" : clienID, + @"sessionId" : [strongSelf hashforString:sessionID], + @"v" : [FIRAuthBackend authUserAgent], + @"eventId" : eventID, + @"providerId" : strongSelf->_providerID, + } mutableCopy]; + if (strongSelf.scopes.count) { + urlArguments[@"scopes"] = [strongSelf.scopes componentsJoinedByString:@","]; + } + if (strongSelf.customParameters.count) { + NSString *customParameters = [strongSelf customParametersStringWithError:&error]; + if (error) { + completion(nil, error); + return; + } + if (customParameters) { + urlArguments[@"customParameters"] = customParameters; + } + } + if (strongSelf->_auth.requestConfiguration.languageCode) { + urlArguments[@"hl"] = strongSelf->_auth.requestConfiguration.languageCode; + } + NSString *argumentsString = [strongSelf httpArgumentsStringForArgsDictionary:urlArguments]; + NSString *URLString = + [NSString stringWithFormat:kHeadfulLiteURLStringFormat, authDomain, argumentsString]; + if (completion) { + NSCharacterSet *set = [NSCharacterSet URLFragmentAllowedCharacterSet]; + completion([NSURL URLWithString: + [URLString stringByAddingPercentEncodingWithAllowedCharacters:set]], nil); + } + }]; +} + +/** @fn customParametersString + @brief Returns a JSON string representation of the custom parameters dictionary corresponding + to the OAuthProvider. + @return The JSON string representation of the custom parameters dictionary corresponding + to the OAuthProvider. + */ +- (nullable NSString *)customParametersStringWithError:(NSError *_Nullable *_Nullable)error { + if (!_customParameters.count) { + return nil; + } + + if (!error) { + return nil; + } + NSError *jsonError; + NSData *customParametersJSONData = + [NSJSONSerialization dataWithJSONObject:_customParameters + options:0 + error:&jsonError]; + if (jsonError) { + *error = [FIRAuthErrorUtils JSONSerializationErrorWithUnderlyingError:jsonError]; + return nil; + } + + NSString *customParamsRawJSON = + [[NSString alloc] initWithData:customParametersJSONData encoding:NSUTF8StringEncoding]; + return customParamsRawJSON; +} + +/** @fn hashforString: + @brief Returns the SHA256 hash representation of a given string object. + @param string The string for which a SHA256 hash is desired. + @return An hexadecimal string representation of the SHA256 hash. + */ +- (NSString *)hashforString:(NSString *)string { + NSData *sessionIDData = [string dataUsingEncoding:NSUTF8StringEncoding]; + NSMutableData *hashOutputData = [NSMutableData dataWithLength:CC_SHA256_DIGEST_LENGTH]; + if (CC_SHA256(sessionIDData.bytes, + (CC_LONG)[sessionIDData length], + hashOutputData.mutableBytes)) { + } + return [self hexStringFromData:hashOutputData];; +} + +/** @fn hexStringFromData: + @brief Returns the hexadecimal string representation of an NSData object. + @param data The NSData object for which a hexadecical string is desired. + @return The hexadecimal string representation of the supplied NSData object. + */ +- (NSString *)hexStringFromData:(NSData *)data { + const unsigned char *dataBuffer = (const unsigned char *)[data bytes]; + NSMutableString *string = [[NSMutableString alloc] init]; + for (unsigned int i = 0; i < data.length; i++){ + [string appendFormat:@"%02lx", (unsigned long)dataBuffer[i]]; + } + return [string copy]; +} + +- (NSString *)httpArgumentsStringForArgsDictionary:(NSDictionary *)argsDictionary { + NSMutableArray* arguments = [NSMutableArray arrayWithCapacity:argsDictionary.count]; + NSString* key; + for (key in argsDictionary) { + NSString *description = [argsDictionary[key] description]; + [arguments addObject:[NSString stringWithFormat:@"%@=%@", + [FIRAuthWebUtils stringByUnescapingFromURLArgument:key], + [FIRAuthWebUtils stringByUnescapingFromURLArgument:description]]] ; + } + return [arguments componentsJoinedByString:@"&"]; +} + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/AuthProvider/Phone/FIRPhoneAuthCredential.m b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/AuthProvider/Phone/FIRPhoneAuthCredential.m new file mode 100644 index 0000000..64f79b8 --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/AuthProvider/Phone/FIRPhoneAuthCredential.m @@ -0,0 +1,92 @@ +/* + * 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 "FIRPhoneAuthCredential.h" + +#import "FIRPhoneAuthCredential_Internal.h" +#import "FIRAuthCredential_Internal.h" +#import "FIRAuthExceptionUtils.h" +#import "FIRVerifyAssertionRequest.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface FIRPhoneAuthCredential () + +- (nullable instancetype)initWithProvider:(NSString *)provider NS_UNAVAILABLE; + +@end + +@implementation FIRPhoneAuthCredential + +- (instancetype)initWithTemporaryProof:(NSString *)temporaryProof + phoneNumber:(NSString *)phoneNumber + providerID:(NSString *)providerID { + self = [super initWithProvider:providerID]; + if (self) { + _temporaryProof = [temporaryProof copy]; + _phoneNumber = [phoneNumber copy]; + } + return self; +} + +- (nullable instancetype)initWithProvider:(NSString *)provider { + [FIRAuthExceptionUtils raiseMethodNotImplementedExceptionWithReason: + @"Please call the designated initializer."]; + return nil; +} + +- (instancetype)initWithProviderID:(NSString *)providerID + verificationID:(NSString *)verificationID + verificationCode:(NSString *)verificationCode { + self = [super initWithProvider:providerID]; + if (self) { + _verificationID = [verificationID copy]; + _verificationCode = [verificationCode copy]; + } + return self; +} + +#pragma mark - NSSecureCoding + ++ (BOOL)supportsSecureCoding { + return YES; +} + +- (nullable instancetype)initWithCoder:(NSCoder *)aDecoder { + NSString *verificationID = [aDecoder decodeObjectOfClass:[NSString class] forKey:@"verificationID"]; + NSString *verificationCode = [aDecoder decodeObjectOfClass:[NSString class] forKey:@"verificationCode"]; + NSString *temporaryProof = [aDecoder decodeObjectOfClass:[NSString class] forKey:@"temporaryProof"]; + NSString *phoneNumber = [aDecoder decodeObjectOfClass:[NSString class] forKey:@"phoneNumber"]; + if (temporaryProof.length && phoneNumber.length) { + self = [self initWithTemporaryProof:temporaryProof phoneNumber:phoneNumber providerID:self.provider]; + } else if (verificationID.length && verificationCode.length) { + self = [self initWithProviderID:self.provider verificationID:verificationID verificationCode:verificationCode]; + } else { + self = nil; + } + return self; +} + +- (void)encodeWithCoder:(NSCoder *)aCoder { + [aCoder encodeObject:self.verificationID forKey:@"verificationID"]; + [aCoder encodeObject:self.verificationCode forKey:@"verificationCode"]; + [aCoder encodeObject:self.temporaryProof forKey:@"temporaryProof"]; + [aCoder encodeObject:self.phoneNumber forKey:@"phoneNumber"]; +} + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/AuthProvider/Phone/FIRPhoneAuthCredential_Internal.h b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/AuthProvider/Phone/FIRPhoneAuthCredential_Internal.h new file mode 100644 index 0000000..f260b89 --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/AuthProvider/Phone/FIRPhoneAuthCredential_Internal.h @@ -0,0 +1,70 @@ +/* + * 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 + +#import "FIRPhoneAuthCredential.h" + +NS_ASSUME_NONNULL_BEGIN + +/** @extension FIRPhoneAuthCredential + @brief Internal implementation of FIRAuthCredential for Phone Auth credentials. + */ +@interface FIRPhoneAuthCredential () + +/** @var verificationID + @brief The verification ID obtained from invoking @c verifyPhoneNumber:completion: + */ +@property(nonatomic, readonly, nonnull) NSString *verificationID; + +/** @var verificationCode + @brief The verification code provided by the user. + */ +@property(nonatomic, readonly, nonnull) NSString *verificationCode; + +/** @var temporaryProof + @brief The a temporary proof code perftaining to this credential, returned from the backend. + */ +@property(nonatomic, readonly, nonnull) NSString *temporaryProof; + +/** @var phoneNumber + @brief The a phone number pertaining to this credential, returned from the backend. + */ +@property(nonatomic, readonly, nonnull) NSString *phoneNumber; + +/** @var initWithTemporaryProof:phoneNumber: + @brief Designated Initializer. + @param providerID The provider ID associated with the phone auth credential being created. + */ +- (instancetype)initWithTemporaryProof:(NSString *)temporaryProof + phoneNumber:(NSString *)phoneNumber + providerID:(NSString *)providerID NS_DESIGNATED_INITIALIZER; + +/** @var initWithProviderID:verificationID:verificationCode: + @brief Designated Initializer. + @param providerID The provider ID associated with the phone auth credential being created. + @param verificationID The verification ID associated witht Phone Auth credential being created. + @param verificationCode The verification code associated witht Phone Auth credential being + created. + */ +- (instancetype)initWithProviderID:(NSString *)providerID + verificationID:(NSString *)verificationID + verificationCode:(NSString *)verificationCode NS_DESIGNATED_INITIALIZER; + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/AuthProvider/Phone/FIRPhoneAuthProvider.m b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/AuthProvider/Phone/FIRPhoneAuthProvider.m new file mode 100644 index 0000000..299423c --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/AuthProvider/Phone/FIRPhoneAuthProvider.m @@ -0,0 +1,445 @@ +/* + * 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 "FIRPhoneAuthProvider.h" + +#import +#import "FIRPhoneAuthCredential_Internal.h" +#import +#import "FIRAuthAPNSToken.h" +#import "FIRAuthAPNSTokenManager.h" +#import "FIRAuthAppCredential.h" +#import "FIRAuthAppCredentialManager.h" +#import "FIRAuthGlobalWorkQueue.h" +#import "FIRAuth_Internal.h" +#import "FIRAuthURLPresenter.h" +#import "FIRAuthNotificationManager.h" +#import "FIRAuthErrorUtils.h" +#import "FIRAuthBackend.h" +#import "FIRAuthSettings.h" +#import "FIRAuthWebUtils.h" +#import "FirebaseAuthVersion.h" +#import +#import "FIRGetProjectConfigRequest.h" +#import "FIRGetProjectConfigResponse.h" +#import "FIRSendVerificationCodeRequest.h" +#import "FIRSendVerificationCodeResponse.h" +#import "FIRVerifyClientRequest.h" +#import "FIRVerifyClientResponse.h" + +NS_ASSUME_NONNULL_BEGIN + +/** @typedef FIRReCAPTCHAURLCallBack + @brief The callback invoked at the end of the flow to fetch a reCAPTCHA URL. + @param reCAPTCHAURL The reCAPTCHA URL. + @param error The error that occurred while fetching the reCAPTCHAURL, if any. + */ +typedef void (^FIRReCAPTCHAURLCallBack)(NSURL *_Nullable reCAPTCHAURL, NSError *_Nullable error); + +/** @typedef FIRVerifyClientCallback + @brief The callback invoked at the end of a client verification flow. + @param appCredential credential that proves the identity of the app during a phone + authentication flow. + @param error The error that occurred while verifying the app, if any. + */ +typedef void (^FIRVerifyClientCallback)(FIRAuthAppCredential *_Nullable appCredential, + NSString *_Nullable reCAPTCHAToken, + NSError *_Nullable error); + +/** @typedef FIRFetchAuthDomainCallback + @brief The callback invoked at the end of the flow to fetch the Auth domain. + @param authDomain The Auth domain. + @param error The error that occurred while fetching the auth domain, if any. + */ +typedef void (^FIRFetchAuthDomainCallback)(NSString *_Nullable authDomain, + NSError *_Nullable error); + +/** @var kauthTypeVerifyApp + @brief The auth type to be specified in the app verification request. + */ +static NSString *const kAuthTypeVerifyApp = @"verifyApp"; + +/** @var kReCAPTCHAURLStringFormat + @brief The format of the URL used to open the reCAPTCHA page during app verification. + */ +NSString *const kReCAPTCHAURLStringFormat = @"https://%@/__/auth/handler?"; + +@implementation FIRPhoneAuthProvider { + + /** @var _auth + @brief The auth instance used for verifying the phone number. + */ + FIRAuth *_auth; + + /** @var _callbackScheme + @brief The callback URL scheme used for reCAPTCHA fallback. + */ + NSString *_callbackScheme; +} + +/** @fn initWithAuth: + @brief returns an instance of @c FIRPhoneAuthProvider associated with the provided auth + instance. + @return An Instance of @c FIRPhoneAuthProvider. + */ +- (nullable instancetype)initWithAuth:(FIRAuth *)auth { + self = [super init]; + if (self) { + _auth = auth; + _callbackScheme = [[[_auth.app.options.clientID componentsSeparatedByString:@"."] + reverseObjectEnumerator].allObjects componentsJoinedByString:@"."]; + } + return self; +} + +- (void)verifyPhoneNumber:(NSString *)phoneNumber + UIDelegate:(nullable id)UIDelegate + completion:(nullable FIRVerificationResultCallback)completion { + if (![FIRAuthWebUtils isCallbackSchemeRegisteredForCustomURLScheme:_callbackScheme]) { + [NSException raise:NSInternalInconsistencyException + format:@"Please register custom URL scheme '%@' in the app's Info.plist file.", + _callbackScheme]; + } + dispatch_async(FIRAuthGlobalWorkQueue(), ^{ + FIRVerificationResultCallback callBackOnMainThread = ^(NSString *_Nullable verificationID, + NSError *_Nullable error) { + if (completion) { + dispatch_async(dispatch_get_main_queue(), ^{ + completion(verificationID, error); + }); + } + }; + [self internalVerifyPhoneNumber:phoneNumber + UIDelegate:UIDelegate + completion:^(NSString *_Nullable verificationID, + NSError *_Nullable error) { + if (!error) { + callBackOnMainThread(verificationID, nil); + return; + } else { + callBackOnMainThread(nil, error); + return; + } + }]; + }); +} + +- (FIRPhoneAuthCredential *)credentialWithVerificationID:(NSString *)verificationID + verificationCode:(NSString *)verificationCode { + return [[FIRPhoneAuthCredential alloc] initWithProviderID:FIRPhoneAuthProviderID + verificationID:verificationID + verificationCode:verificationCode]; +} + ++ (instancetype)provider { + return [[self alloc]initWithAuth:[FIRAuth auth]]; +} + ++ (instancetype)providerWithAuth:(FIRAuth *)auth { + return [[self alloc]initWithAuth:auth]; +} + +#pragma mark - Internal Methods + +/** @fn reCAPTCHATokenForURL:error: + @brief Parses the reCAPTCHA URL and returns the reCAPTCHA token. + @param URL The url to be parsed for a reCAPTCHA token. + @param error The error that occurred if any. + @return The reCAPTCHA token if successful. + */ +- (NSString *)reCAPTCHATokenForURL:(NSURL *)URL error:(NSError **)error { + NSURLComponents *actualURLComponents = [NSURLComponents componentsWithURL:URL resolvingAgainstBaseURL:NO]; + NSArray *queryItems = [actualURLComponents queryItems]; + NSString *deepLinkURL = [FIRAuthWebUtils queryItemValue:@"deep_link_id" from:queryItems]; + NSData *errorData; + if (deepLinkURL) { + actualURLComponents = [NSURLComponents componentsWithString:deepLinkURL]; + queryItems = [actualURLComponents queryItems]; + NSString *recaptchaToken = [FIRAuthWebUtils queryItemValue:@"recaptchaToken" from:queryItems]; + if (recaptchaToken) { + return recaptchaToken; + } + NSString *firebaseError = [FIRAuthWebUtils queryItemValue:@"firebaseError" from:queryItems]; + errorData = [firebaseError dataUsingEncoding:NSUTF8StringEncoding]; + } else { + errorData = nil; + } + NSError *jsonError; + NSDictionary *errorDict = [NSJSONSerialization JSONObjectWithData:errorData + options:0 + error:&jsonError]; + if (jsonError) { + *error = [FIRAuthErrorUtils JSONSerializationErrorWithUnderlyingError:jsonError]; + return nil; + } + *error = [FIRAuthErrorUtils URLResponseErrorWithCode:errorDict[@"code"] + message:errorDict[@"message"]]; + if (!*error) { + NSString *reason; + if(errorDict[@"code"] && errorDict[@"message"]) { + reason = [NSString stringWithFormat:@"[%@] - %@",errorDict[@"code"], errorDict[@"message"]]; + } else { + reason = [NSString stringWithFormat:@"An unknown error occurred with the following " + "response: %@", deepLinkURL]; + } + *error = [FIRAuthErrorUtils appVerificationUserInteractionFailureWithReason:reason]; + } + return nil; +} + +/** @fn internalVerifyPhoneNumber:completion: + @brief Starts the phone number authentication flow by sending a verifcation code to the + specified phone number. + @param phoneNumber The phone number to be verified. + @param completion The callback to be invoked when the verification flow is finished. + */ + +- (void)internalVerifyPhoneNumber:(NSString *)phoneNumber + UIDelegate:(nullable id)UIDelegate + completion:(nullable FIRVerificationResultCallback)completion { + if (!phoneNumber.length) { + completion(nil, [FIRAuthErrorUtils missingPhoneNumberErrorWithMessage:nil]); + return; + } + [_auth.notificationManager checkNotificationForwardingWithCallback: + ^(BOOL isNotificationBeingForwarded) { + if (!isNotificationBeingForwarded) { + completion(nil, [FIRAuthErrorUtils notificationNotForwardedError]); + return; + } + FIRVerificationResultCallback callback = ^(NSString *_Nullable verificationID, + NSError *_Nullable error) { + if (completion) { + completion(verificationID, error); + } + }; + [self verifyClientAndSendVerificationCodeToPhoneNumber:phoneNumber + retryOnInvalidAppCredential:YES + UIDelegate:UIDelegate + callback:callback]; + }]; +} + +/** @fn verifyClientAndSendVerificationCodeToPhoneNumber:retryOnInvalidAppCredential:callback: + @brief Starts the flow to verify the client via silent push notification. + @param retryOnInvalidAppCredential Whether of not the flow should be retried if an + FIRAuthErrorCodeInvalidAppCredential error is returned from the backend. + @param phoneNumber The phone number to be verified. + @param callback The callback to be invoked on the global work queue when the flow is + finished. + */ +- (void)verifyClientAndSendVerificationCodeToPhoneNumber:(NSString *)phoneNumber + retryOnInvalidAppCredential:(BOOL)retryOnInvalidAppCredential + UIDelegate:(nullable id)UIDelegate + callback:(FIRVerificationResultCallback)callback { + if (_auth.settings.isAppVerificationDisabledForTesting) { + FIRSendVerificationCodeRequest *request = + [[FIRSendVerificationCodeRequest alloc] initWithPhoneNumber:phoneNumber + appCredential:nil + reCAPTCHAToken:nil + requestConfiguration: + _auth.requestConfiguration]; + [FIRAuthBackend sendVerificationCode:request + callback:^(FIRSendVerificationCodeResponse *_Nullable response, + NSError *_Nullable error) { + callback(response.verificationID, error); + }]; + return; + } + [self verifyClientWithUIDelegate:UIDelegate + completion:^(FIRAuthAppCredential *_Nullable appCredential, + NSString *_Nullable reCAPTCHAToken, + NSError *_Nullable error) { + if (error) { + callback(nil, error); + return; + } + FIRSendVerificationCodeRequest * _Nullable request; + if (appCredential) { + request = + [[FIRSendVerificationCodeRequest alloc] + initWithPhoneNumber:phoneNumber + appCredential:appCredential + reCAPTCHAToken:nil + requestConfiguration:self->_auth.requestConfiguration]; + } else if (reCAPTCHAToken) { + request = + [[FIRSendVerificationCodeRequest alloc] + initWithPhoneNumber:phoneNumber + appCredential:nil + reCAPTCHAToken:reCAPTCHAToken + requestConfiguration:self->_auth.requestConfiguration]; + } + if (request) { + [FIRAuthBackend sendVerificationCode:request + callback:^(FIRSendVerificationCodeResponse *_Nullable response, + NSError *_Nullable error) { + if (error) { + if (error.code == FIRAuthErrorCodeInvalidAppCredential) { + if (retryOnInvalidAppCredential) { + [self->_auth.appCredentialManager clearCredential]; + [self verifyClientAndSendVerificationCodeToPhoneNumber:phoneNumber + retryOnInvalidAppCredential:NO + UIDelegate:UIDelegate + callback:callback]; + return; + } + callback(nil, [FIRAuthErrorUtils unexpectedResponseWithDeserializedResponse:nil + underlyingError:error]); + return; + } + callback(nil, error); + return; + } + callback(response.verificationID, nil); + }]; + } + }]; +} + +/** @fn verifyClientWithCompletion:completion: + @brief Continues the flow to verify the client via silent push notification. + @param completion The callback to be invoked when the client verification flow is finished. + */ +- (void)verifyClientWithUIDelegate:(nullable id)UIDelegate + completion:(FIRVerifyClientCallback)completion { + if (_auth.appCredentialManager.credential) { + completion(_auth.appCredentialManager.credential, nil, nil); + return; + } + [_auth.tokenManager getTokenWithCallback:^(FIRAuthAPNSToken *_Nullable token, + NSError *_Nullable error) { + if (!token) { + [self reCAPTCHAFlowWithUIDelegate:UIDelegate completion:completion]; + return; + } + FIRVerifyClientRequest *request = + [[FIRVerifyClientRequest alloc] initWithAppToken:token.string + isSandbox:token.type == FIRAuthAPNSTokenTypeSandbox + requestConfiguration:self->_auth.requestConfiguration]; + [FIRAuthBackend verifyClient:request callback:^(FIRVerifyClientResponse *_Nullable response, + NSError *_Nullable error) { + if (error) { + NSError *underlyingError = error.userInfo[NSUnderlyingErrorKey]; + BOOL isInvalidAppCredential = error.code == FIRAuthErrorCodeInternalError && + underlyingError.code == FIRAuthErrorCodeInvalidAppCredential; + if (error.code != FIRAuthErrorCodeMissingAppToken && !isInvalidAppCredential) { + completion(nil, nil, error); + return; + } else { + [self reCAPTCHAFlowWithUIDelegate:UIDelegate completion:completion]; + return; + } + } + NSTimeInterval timeout = [response.suggestedTimeOutDate timeIntervalSinceNow]; + [self->_auth.appCredentialManager + didStartVerificationWithReceipt:response.receipt + timeout:timeout + callback:^(FIRAuthAppCredential *credential) { + if (!credential.secret) { + FIRLogWarning(kFIRLoggerAuth, @"I-AUT000014", + @"Failed to receive remote notification to verify app identity within " + @"%.0f second(s)", timeout); + } + completion(credential, nil, nil); + }]; + }]; + }]; +} + +- (void)reCAPTCHAFlowWithUIDelegate:(nullable id)UIDelegate + completion:(FIRVerifyClientCallback)completion { + NSString *eventID = [FIRAuthWebUtils randomStringWithLength:10]; + [self reCAPTCHAURLWithEventID:eventID completion:^(NSURL *_Nullable reCAPTCHAURL, + NSError *_Nullable error) { + if (error) { + completion(nil, nil, error); + return; + } + FIRAuthURLCallbackMatcher callbackMatcher = ^BOOL(NSURL *_Nullable callbackURL) { + return [FIRAuthWebUtils isExpectedCallbackURL:callbackURL + eventID:eventID + authType:kAuthTypeVerifyApp + callbackScheme:self->_callbackScheme]; + }; + [self->_auth.authURLPresenter presentURL:reCAPTCHAURL + UIDelegate:UIDelegate + callbackMatcher:callbackMatcher + completion:^(NSURL *_Nullable callbackURL, + NSError *_Nullable error) { + if (error) { + completion(nil, nil, error); + return; + } + NSError *reCAPTCHAError; + NSString *reCAPTCHAToken = [self reCAPTCHATokenForURL:callbackURL error:&reCAPTCHAError]; + if (!reCAPTCHAToken) { + completion(nil, nil, reCAPTCHAError); + return; + } else { + completion(nil, reCAPTCHAToken, nil); + return; + } + }]; + }]; +} + +/** @fn reCAPTCHAURLWithEventID:completion: + @brief Constructs a URL used for opening a reCAPTCHA app verification flow using a given event + ID. + @param eventID The event ID used for this purpose. + @param completion The callback invoked after the URL has been constructed or an error + has been encountered. + */ +- (void)reCAPTCHAURLWithEventID:(NSString *)eventID completion:(FIRReCAPTCHAURLCallBack)completion { + [FIRAuthWebUtils fetchAuthDomainWithRequestConfiguration:_auth.requestConfiguration + completion:^(NSString *_Nullable authDomain, + NSError *_Nullable error) { + if (error) { + if (completion) { + completion(nil, error); + return; + } + } + NSString *bundleID = [NSBundle mainBundle].bundleIdentifier; + NSString *clientID = self->_auth.app.options.clientID; + NSString *apiKey = self->_auth.requestConfiguration.APIKey; + NSMutableArray *queryItems = [@[ + [NSURLQueryItem queryItemWithName:@"apiKey" value:apiKey], + [NSURLQueryItem queryItemWithName:@"authType" value:kAuthTypeVerifyApp], + [NSURLQueryItem queryItemWithName:@"ibi" value:bundleID ?: @""], + [NSURLQueryItem queryItemWithName:@"clientId" value:clientID], + [NSURLQueryItem queryItemWithName:@"v" value:[FIRAuthBackend authUserAgent]], + [NSURLQueryItem queryItemWithName:@"eventId" value:eventID] + ] mutableCopy + ]; + + if (self->_auth.requestConfiguration.languageCode) { + [queryItems addObject:[NSURLQueryItem queryItemWithName:@"hl"value: + self->_auth.requestConfiguration.languageCode]]; + } + NSURLComponents *components = [[NSURLComponents alloc] initWithString: + [NSString stringWithFormat:kReCAPTCHAURLStringFormat, authDomain]]; + [components setQueryItems:queryItems]; + if (completion) { + completion([components URL], nil); + } + }]; +} + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/AuthProvider/Twitter/FIRTwitterAuthCredential.h b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/AuthProvider/Twitter/FIRTwitterAuthCredential.h new file mode 100644 index 0000000..423d595 --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/AuthProvider/Twitter/FIRTwitterAuthCredential.h @@ -0,0 +1,48 @@ +/* + * 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 + +#import "FIRAuthCredential_Internal.h" + +NS_ASSUME_NONNULL_BEGIN + +/** @class FIRTwitterAuthCredential + @brief Internal implementation of FIRAuthCredential for Twitter credentials. + */ +@interface FIRTwitterAuthCredential : FIRAuthCredential + +/** @property token + @brief The Twitter OAuth token. + */ +@property(nonatomic, readonly) NSString *token; + +/** @property secret + @brief The Twitter OAuth secret. + */ +@property(nonatomic, readonly) NSString *secret; + +/** @fn initWithToken:secret: + @brief Designated initializer. + @param token The Twitter OAuth token. + @param secret The Twitter OAuth secret. + */ +- (nullable instancetype)initWithToken:(NSString *)token secret:(NSString *)secret + NS_DESIGNATED_INITIALIZER; + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/AuthProvider/Twitter/FIRTwitterAuthCredential.m b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/AuthProvider/Twitter/FIRTwitterAuthCredential.m new file mode 100644 index 0000000..cb46615 --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/AuthProvider/Twitter/FIRTwitterAuthCredential.m @@ -0,0 +1,73 @@ +/* + * 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 "FIRTwitterAuthCredential.h" + +#import "FIRTwitterAuthProvider.h" +#import "FIRAuthExceptionUtils.h" +#import "FIRVerifyAssertionRequest.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface FIRTwitterAuthCredential () + +- (nullable instancetype)initWithProvider:(NSString *)provider NS_UNAVAILABLE; + +@end + +@implementation FIRTwitterAuthCredential + +- (nullable instancetype)initWithProvider:(NSString *)provider { + [FIRAuthExceptionUtils raiseMethodNotImplementedExceptionWithReason: + @"Please call the designated initializer."]; + return nil; +} + +- (nullable instancetype)initWithToken:(NSString *)token secret:(NSString *)secret { + self = [super initWithProvider:FIRTwitterAuthProviderID]; + if (self) { + _token = [token copy]; + _secret = [secret copy]; + } + return self; +} + +- (void)prepareVerifyAssertionRequest:(FIRVerifyAssertionRequest *)request { + request.providerAccessToken = _token; + request.providerOAuthTokenSecret = _secret; +} + +#pragma mark - NSSecureCoding + ++ (BOOL)supportsSecureCoding { + return YES; +} + +- (nullable instancetype)initWithCoder:(NSCoder *)aDecoder { + NSString *token = [aDecoder decodeObjectOfClass:[NSString class] forKey:@"token"]; + NSString *secret = [aDecoder decodeObjectOfClass:[NSString class] forKey:@"secret"]; + self = [self initWithToken:token secret:secret]; + return self; +} + +- (void)encodeWithCoder:(NSCoder *)aCoder { + [aCoder encodeObject:self.token forKey:@"token"]; + [aCoder encodeObject:self.secret forKey:@"secret"]; +} + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/AuthProvider/Twitter/FIRTwitterAuthProvider.m b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/AuthProvider/Twitter/FIRTwitterAuthProvider.m new file mode 100644 index 0000000..33771b7 --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/AuthProvider/Twitter/FIRTwitterAuthProvider.m @@ -0,0 +1,40 @@ +/* + * 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 "FIRTwitterAuthProvider.h" + +#import "FIRTwitterAuthCredential.h" +#import "FIRAuthExceptionUtils.h" + +// FIRTwitterAuthProviderID is defined in FIRAuthProvider.m. + +NS_ASSUME_NONNULL_BEGIN + +@implementation FIRTwitterAuthProvider + +- (instancetype)init { + [FIRAuthExceptionUtils raiseMethodNotImplementedExceptionWithReason: + @"This class is not meant to be initialized."]; + return nil; +} + ++ (FIRAuthCredential *)credentialWithToken:(NSString *)token secret:(NSString *)secret { + return [[FIRTwitterAuthCredential alloc] initWithToken:token secret:secret]; +} + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/FIRAuthBackend.h b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/FIRAuthBackend.h new file mode 100644 index 0000000..9ced6a3 --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/FIRAuthBackend.h @@ -0,0 +1,599 @@ +/* + * 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 + +@class FIRAuthRequestConfiguration; +@class FIRCreateAuthURIRequest; +@class FIRCreateAuthURIResponse; +@class FIRDeleteAccountRequest; +@class FIRDeleteAccountResponse; +@class FIREmailLinkSignInRequest; +@class FIREmailLinkSignInResponse; +@class FIRGetAccountInfoRequest; +@class FIRGetAccountInfoResponse; +@class FIRGetProjectConfigRequest; +@class FIRGetProjectConfigResponse; +@class FIRGetOOBConfirmationCodeRequest; +@class FIRGetOOBConfirmationCodeResponse; +@class FIRResetPasswordRequest; +@class FIRResetPasswordResponse; +@class FIRSecureTokenRequest; +@class FIRSecureTokenResponse; +@class FIRSetAccountInfoRequest; +@class FIRSetAccountInfoResponse; +@class FIRVerifyAssertionRequest; +@class FIRVerifyAssertionResponse; +@class FIRVerifyClientRequest; +@class FIRVerifyClientResponse; +@class FIRVerifyCustomTokenRequest; +@class FIRVerifyCustomTokenResponse; +@class FIRVerifyPasswordRequest; +@class FIRVerifyPasswordResponse; +@class FIRVerifyPhoneNumberRequest; +@class FIRVerifyPhoneNumberResponse; +@class FIRSendVerificationCodeRequest; +@class FIRSendVerificationCodeResponse; +@class FIRSignInWithGameCenterRequest; +@class FIRSignInWithGameCenterResponse; +@class FIRSignUpNewUserRequest; +@class FIRSignUpNewUserResponse; + +@protocol FIRAuthBackendImplementation; +@protocol FIRAuthBackendRPCIssuer; + +NS_ASSUME_NONNULL_BEGIN + +/** @typedef FIRAuthBackendRPCIssuerCompletionHandler + @brief The type of block used to return the result of a call to an endpoint. + @param data The HTTP response body. + @param error The error which occurred, if any. + @remarks One of response or error will be non-nil. + */ +typedef void (^FIRAuthBackendRPCIssuerCompletionHandler)(NSData *_Nullable data, + NSError *_Nullable error); + +/** @typedef FIRCreateAuthURIResponseCallback + @brief The type of block used to return the result of a call to the createAuthURI + endpoint. + @param response The received response, if any. + @param error The error which occurred, if any. + @remarks One of response or error will be non-nil. + */ +typedef void (^FIRCreateAuthURIResponseCallback) + (FIRCreateAuthURIResponse *_Nullable response, NSError *_Nullable error); + +/** @typedef FIRGetAccountInfoResponseCallback + @brief The type of block used to return the result of a call to the getAccountInfo + endpoint. + @param response The received response, if any. + @param error The error which occurred, if any. + @remarks One of response or error will be non-nil. + */ +typedef void (^FIRGetAccountInfoResponseCallback) + (FIRGetAccountInfoResponse *_Nullable response, NSError *_Nullable error); + +/** @typedef FIRGetProjectConfigResponseCallback + @brief The type of block used to return the result of a call to the getProjectInfo + endpoint. + @param response The received response, if any. + @param error The error which occurred, if any. + @remarks One of response or error will be non-nil. + */ +typedef void (^FIRGetProjectConfigResponseCallback) + (FIRGetProjectConfigResponse *_Nullable response, NSError *_Nullable error); + +/** @typedef FIRSetAccountInfoResponseCallback + @brief The type of block used to return the result of a call to the setAccountInfo + endpoint. + @param response The received response, if any. + @param error The error which occurred, if any. + @remarks One of response or error will be non-nil. + */ +typedef void (^FIRSetAccountInfoResponseCallback) + (FIRSetAccountInfoResponse *_Nullable response, NSError *_Nullable error); + +/** @typedef FIRSecureTokenResponseCallback + @brief The type of block used to return the result of a call to the token endpoint. + @param response The received response, if any. + @param error The error which occurred, if any. + @remarks One of response or error will be non-nil. + */ +typedef void (^FIRSecureTokenResponseCallback) + (FIRSecureTokenResponse *_Nullable response, NSError *_Nullable error); + +/** @typedef FIRVerifyAssertionResponseCallback + @brief The type of block used to return the result of a call to the verifyAssertion + endpoint. + @param response The received response, if any. + @param error The error which occurred, if any. + @remarks One of response or error will be non-nil. + */ +typedef void (^FIRVerifyAssertionResponseCallback) + (FIRVerifyAssertionResponse *_Nullable response, NSError *_Nullable error); + +/** @typedef FIRVerifyPasswordResponseCallback + @brief The type of block used to return the result of a call to the verifyPassword + endpoint. + @param response The received response, if any. + @param error The error which occurred, if any. + @remarks One of response or error will be non-nil. + */ +typedef void (^FIRVerifyPasswordResponseCallback) + (FIRVerifyPasswordResponse *_Nullable response, NSError *_Nullable error); + +/** @typedef FIREmailLinkSigninResponseCallback + @brief The type of block used to return the result of a call to the emailLinkSignin + endpoint. + @param response The received response, if any. + @param error The error which occurred, if any. + @remarks One of response or error will be non-nil. + */ +typedef void (^FIREmailLinkSigninResponseCallback) + (FIREmailLinkSignInResponse *_Nullable response, NSError *_Nullable error); + +/** @typedef FIRVerifyCustomTokenResponseCallback + @brief The type of block used to return the result of a call to the verifyCustomToken + endpoint. + @param response The received response, if any. + @param error The error which occurred, if any. + @remarks One of response or error will be non-nil. + */ +typedef void (^FIRVerifyCustomTokenResponseCallback) + (FIRVerifyCustomTokenResponse *_Nullable response, NSError *_Nullable error); + +/** @typedef FIRDeleteCallBack + @brief The type of block called when a request delete account has finished. + @param error The error which occurred, or nil if the request was successful. + */ +typedef void (^FIRDeleteCallBack)(NSError *_Nullable error); + +/** @typedef FIRGetOOBConfirmationCodeResponseCallback + @brief The type of block used to return the result of a call to the getOOBConfirmationCode + endpoint. + @param response The received response, if any. + @param error The error which occurred, if any. + @remarks One of response or error will be non-nil. + */ +typedef void (^FIRGetOOBConfirmationCodeResponseCallback) + (FIRGetOOBConfirmationCodeResponse *_Nullable response, NSError *_Nullable error); + +/** @typedef FIRSignupNewUserCallback + @brief The type of block used to return the result of a call to the signupNewUser endpoint. + @param response The received response, if any. + @param error The error which occurred, if any. + @remarks One of response or error will be non-nil. + */ +typedef void (^FIRSignupNewUserCallback) + (FIRSignUpNewUserResponse *_Nullable response, NSError *_Nullable error); + +/** @typedef FIRResetPasswordCallback + @brief The type of block used to return the result of a call to the resetPassword endpoint. + @param response The received response, if any. + @param error The error which occurred, if any. + @remarks One of response or error will be non-nil. + */ +typedef void (^FIRResetPasswordCallback) + (FIRResetPasswordResponse *_Nullable response, NSError *_Nullable error); + +/** @typedef FIRSendVerificationCodeResponseCallback + @brief The type of block used to return the result of a call to the sendVerificationCode + endpoint. + @param response The received response, if any. + @param error The error which occurred, if any. + @remarks One of response or error will be non-nil. + */ +typedef void (^FIRSendVerificationCodeResponseCallback) + (FIRSendVerificationCodeResponse *_Nullable response, NSError *_Nullable error); + +/** @typedef FIRVerifyPhoneNumberResponseCallback + @brief The type of block used to return the result of a call to the verifyPhoneNumber endpoint. + @param response The received response, if any. + @param error The error which occurred, if any. + @remarks One of response or error will be non-nil. + */ +typedef void (^FIRVerifyPhoneNumberResponseCallback) + (FIRVerifyPhoneNumberResponse *_Nullable response, NSError *_Nullable error); + +/** @typedef FIRVerifyClientResponseCallback + @brief The type of block used to return the result of a call to the verifyClient endpoint. + @param response The received response, if any. + @param error The error which occurred, if any. + @remarks One of response or error will be non-nil. + */ +typedef void (^FIRVerifyClientResponseCallback) + (FIRVerifyClientResponse *_Nullable response, NSError *_Nullable error); + +/** @typedef FIRSignInWithGameCenterResponseCallback + @brief The type of block used to return the result of a call to the SignInWithGameCenter endpoint. + @param response The received response, if any. + @param error The error which occurred, if any. + @remarks One of response or error will be non-nil. + */ +typedef void (^FIRSignInWithGameCenterResponseCallback) + (FIRSignInWithGameCenterResponse *_Nullable response, NSError *_Nullable error); + +/** @class FIRAuthBackend + @brief Simple static class with methods representing the backend RPCs. + @remarks All callback blocks passed as method parameters are invoked asynchronously on the + global work queue in the future. See + https://github.com/firebase/firebase-ios-sdk/tree/master/Firebase/Auth/Docs/threading.ml + */ +@interface FIRAuthBackend : NSObject + +/** @fn authUserAgent + @brief Retrieves the Firebase Auth user agent. + @return The Firebase Auth user agent. + */ ++ (NSString *)authUserAgent; + +/** @fn setBackendImplementation: + @brief Changes the default backend implementation to something else. + @param backendImplementation The backend implementation to use. + @remarks This is not, generally, safe to call in a scenario where other backend requests may + be occuring. This is specifically to help mock the backend for testing purposes. + */ ++ (void)setBackendImplementation:(id)backendImplementation; + +/** @fn setDefaultBackendImplementationWithRPCIssuer: + @brief Uses the default backend implementation, but with a custom RPC issuer. + @param RPCIssuer The RPC issuer to use. If @c nil, will use the default implementation. + @remarks This is not, generally, safe to call in a scenario where other backend requests may + be occuring. This is specifically to help test the backend interfaces (requests, responses, + and shared FIRAuthBackend logic.) + */ ++ (void)setDefaultBackendImplementationWithRPCIssuer: + (nullable id)RPCIssuer; + +/** @fn createAuthURI:callback: + @brief Calls the createAuthURI endpoint, which is responsible for creating the URI used by the + IdP to authenticate the user. + @param request The request parameters. + @param callback The callback. + */ ++ (void)createAuthURI:(FIRCreateAuthURIRequest *)request + callback:(FIRCreateAuthURIResponseCallback)callback; + +/** @fn getAccountInfo:callback: + @brief Calls the getAccountInfo endpoint, which returns account info for a given account. + @param request The request parameters. + @param callback The callback. + */ ++ (void)getAccountInfo:(FIRGetAccountInfoRequest *)request + callback:(FIRGetAccountInfoResponseCallback)callback; + +/** @fn getProjectConfig:callback: + @brief Calls the getProjectConfig endpoint, which returns configuration information for a given + project. + @param request An object wrapping the backend get request. + @param callback The callback. + */ ++ (void)getProjectConfig:(FIRGetProjectConfigRequest *)request + callback:(FIRGetProjectConfigResponseCallback)callback; + +/** @fn setAccountInfo:callback: + @brief Calls the setAccountInfo endpoint, which is responsible for setting account info for a + user, for example, to sign up a new user with email and password. + @param request The request parameters. + @param callback The callback. + */ ++ (void)setAccountInfo:(FIRSetAccountInfoRequest *)request + callback:(FIRSetAccountInfoResponseCallback)callback; + +/** @fn verifyAssertion:callback: + @brief Calls the verifyAssertion endpoint, which is responsible for authenticating a + user who has IDP-related credentials (an ID Token, an Access Token, etc.) + @param request The request parameters. + @param callback The callback. + */ ++ (void)verifyAssertion:(FIRVerifyAssertionRequest *)request + callback:(FIRVerifyAssertionResponseCallback)callback; + +/** @fn verifyCustomToken:callback: + @brief Calls the verifyCustomToken endpoint, which is responsible for authenticating a + user who has BYOAuth credentials (a self-signed token using their BYOAuth private key.) + @param request The request parameters. + @param callback The callback. + */ ++ (void)verifyCustomToken:(FIRVerifyCustomTokenRequest *)request + callback:(FIRVerifyCustomTokenResponseCallback)callback; + +/** @fn verifyPassword:callback: + @brief Calls the verifyPassword endpoint, which is responsible for authenticating a + user who has email and password credentials. + @param request The request parameters. + @param callback The callback. + */ ++ (void)verifyPassword:(FIRVerifyPasswordRequest *)request + callback:(FIRVerifyPasswordResponseCallback)callback; + +/** @fn emailLinkSignin:callback: + @brief Calls the emailLinkSignin endpoint, which is responsible for authenticating a + user through passwordless sign-in. + @param request The request parameters. + @param callback The callback. + */ ++ (void)emailLinkSignin:(FIREmailLinkSignInRequest *)request + callback:(FIREmailLinkSigninResponseCallback)callback; + +/** @fn secureToken:callback: + @brief Calls the token endpoint, which is responsible for performing STS token exchanges and + token refreshes. + @param request The request parameters. + @param callback The callback. + */ ++ (void)secureToken:(FIRSecureTokenRequest *)request + callback:(FIRSecureTokenResponseCallback)callback; + +/** @fn getOOBConfirmationCode:callback: + @brief Calls the getOOBConfirmationCode endpoint, which is responsible for sending email change + request emails, and password reset emails. + @param request The request parameters. + @param callback The callback. + */ ++ (void)getOOBConfirmationCode:(FIRGetOOBConfirmationCodeRequest *)request + callback:(FIRGetOOBConfirmationCodeResponseCallback)callback; + +/** @fn signUpNewUser: + @brief Calls the signUpNewUser endpoint, which is responsible anonymously signing up a user + or signing in a user anonymously. + @param request The request parameters. + @param callback The callback. + */ ++ (void)signUpNewUser:(FIRSignUpNewUserRequest *)request + callback:(FIRSignupNewUserCallback)callback; + +/** @fn resetPassword:callback + @brief Calls the resetPassword endpoint, which is responsible for resetting a user's password + given an OOB code and new password. + @param request The request parameters. + @param callback The callback. + */ ++ (void)resetPassword:(FIRResetPasswordRequest *)request + callback:(FIRResetPasswordCallback)callback; + +/** @fn deleteAccount: + @brief Calls the DeleteAccount endpoint, which is responsible for deleting a user. + @param request The request parameters. + @param callback The callback. + */ ++ (void)deleteAccount:(FIRDeleteAccountRequest *)request + callback:(FIRDeleteCallBack)callback; + +/** @fn SignInWithGameCenter:callback: + @brief Calls the SignInWithGameCenter endpoint, which is responsible for authenticating a user + who has Game Center credentials. + @param request The request parameters. + @param callback The callback. + */ ++ (void)signInWithGameCenter:(FIRSignInWithGameCenterRequest *)request + callback:(FIRSignInWithGameCenterResponseCallback)callback; + +#if TARGET_OS_IOS +/** @fn sendVerificationCode:callback: + @brief Calls the sendVerificationCode endpoint, which is responsible for sending the + verification code to a phone number specified in the request parameters. + @param request The request parameters. + @param callback The callback. + */ ++ (void)sendVerificationCode:(FIRSendVerificationCodeRequest *)request + callback:(FIRSendVerificationCodeResponseCallback)callback; + +/** @fn verifyPhoneNumber:callback: + @brief Calls the verifyPhoneNumber endpoint, which is responsible for sending the verification + code to a phone number specified in the request parameters. + @param request The request parameters. + @param callback The callback. + */ ++ (void)verifyPhoneNumber:(FIRVerifyPhoneNumberRequest *)request + callback:(FIRVerifyPhoneNumberResponseCallback)callback; + +/** @fn verifyClient:callback: + @brief Calls the verifyClient endpoint, which is responsible for sending the silent push + notification used for app validation to the device provided in the request parameters. + @param request The request parameters. + @param callback The callback. + */ ++ (void)verifyClient:(FIRVerifyClientRequest *)request + callback:(FIRVerifyClientResponseCallback)callback; +#endif + +@end + +/** @protocol FIRAuthBackendRPCIssuer + @brief Used to make FIRAuthBackend + */ +@protocol FIRAuthBackendRPCIssuer + +/** @fn asyncPostToURLWithRequestConfiguration:URL:body:contentType:completionHandler: + @brief Asynchronously seXnds a POST request. + @param requestConfiguration The request to be made. + @param URL The request URL. + @param body Request body. + @param contentType Content type of the body. + @param handler provided that handles POST response. Invoked asynchronously on the auth global + work queue in the future. + */ +- (void)asyncPostToURLWithRequestConfiguration:(FIRAuthRequestConfiguration *)requestConfiguration + URL:(NSURL *)URL + body:(nullable NSData *)body + contentType:(NSString *)contentType + completionHandler:(FIRAuthBackendRPCIssuerCompletionHandler)handler; + +@end + +/** @protocol FIRAuthBackendImplementation + @brief Used to make FIRAuthBackend provide a layer of indirection to an actual RPC-based backend + or a mock backend. + */ +@protocol FIRAuthBackendImplementation + +/** @fn createAuthURI:callback: + @brief Calls the createAuthURI endpoint, which is responsible for creating the URI used by the + IdP to authenticate the user. + @param request The request parameters. + @param callback The callback. + */ +- (void)createAuthURI:(FIRCreateAuthURIRequest *)request + callback:(FIRCreateAuthURIResponseCallback)callback; + +/** @fn getAccountInfo:callback: + @brief Calls the getAccountInfo endpoint, which returns account info for a given account. + @param request The request parameters. + @param callback The callback. + */ +- (void)getAccountInfo:(FIRGetAccountInfoRequest *)request + callback:(FIRGetAccountInfoResponseCallback)callback; + +/** @fn getProjectConfig:callback: + @brief Calls the getProjectInfo endpoint, which returns configuration information for a given + project. + @param request The request parameters. + @param callback The callback. + */ +- (void)getProjectConfig:(FIRGetProjectConfigRequest *)request + callback:(FIRGetProjectConfigResponseCallback)callback; + +/** @fn setAccountInfo:callback: + @brief Calls the setAccountInfo endpoint, which is responsible for setting account info for a + user, for example, to sign up a new user with email and password. + @param request The request parameters. + @param callback The callback. + */ +- (void)setAccountInfo:(FIRSetAccountInfoRequest *)request + callback:(FIRSetAccountInfoResponseCallback)callback; + +/** @fn verifyAssertion:callback: + @brief Calls the verifyAssertion endpoint, which is responsible for authenticating a + user who has IDP-related credentials (an ID Token, an Access Token, etc.) + @param request The request parameters. + @param callback The callback. + */ +- (void)verifyAssertion:(FIRVerifyAssertionRequest *)request + callback:(FIRVerifyAssertionResponseCallback)callback; + +/** @fn verifyCustomToken:callback: + @brief Calls the verifyCustomToken endpoint, which is responsible for authenticating a + user who has BYOAuth credentials (a self-signed token using their BYOAuth private key.) + @param request The request parameters. + @param callback The callback. + */ +- (void)verifyCustomToken:(FIRVerifyCustomTokenRequest *)request + callback:(FIRVerifyCustomTokenResponseCallback)callback; + +/** @fn verifyPassword:callback: + @brief Calls the verifyPassword endpoint, which is responsible for authenticating a + user who has email and password credentials. + @param request The request parameters. + @param callback The callback. + */ +- (void)verifyPassword:(FIRVerifyPasswordRequest *)request + callback:(FIRVerifyPasswordResponseCallback)callback; + +/** @fn emailLinkSignin:callback: + @brief Calls the emailLinkSignin endpoint, which is responsible for authenticating a + user through passwordless sign-in. + @param request The request parameters. + @param callback The callback. + */ +- (void)emailLinkSignin:(FIREmailLinkSignInRequest *)request + callback:(FIREmailLinkSigninResponseCallback)callback; + +/** @fn secureToken:callback: + @brief Calls the token endpoint, which is responsible for performing STS token exchanges and + token refreshes. + @param request The request parameters. + @param callback The callback. + */ +- (void)secureToken:(FIRSecureTokenRequest *)request + callback:(FIRSecureTokenResponseCallback)callback; + +/** @fn getOOBConfirmationCode:callback: + @brief Calls the getOOBConfirmationCode endpoint, which is responsible for sending email change + request emails, email sign-in link emails, and password reset emails. + @param request The request parameters. + @param callback The callback. + */ +- (void)getOOBConfirmationCode:(FIRGetOOBConfirmationCodeRequest *)request + callback:(FIRGetOOBConfirmationCodeResponseCallback)callback; + +/** @fn signUpNewUser: + @brief Calls the signUpNewUser endpoint, which is responsible anonymously signing up a user + or signing in a user anonymously. + @param request The request parameters. + @param callback The callback. + */ +- (void)signUpNewUser:(FIRSignUpNewUserRequest *)request + callback:(FIRSignupNewUserCallback)callback; + +/** @fn deleteAccount: + @brief Calls the DeleteAccount endpoint, which is responsible for deleting a user. + @param request The request parameters. + @param callback The callback. + */ +- (void)deleteAccount:(FIRDeleteAccountRequest *)request + callback:(FIRDeleteCallBack)callback; + +#if TARGET_OS_IOS +/** @fn sendVerificationCode:callback: + @brief Calls the sendVerificationCode endpoint, which is responsible for sending the + verification code to a phone number specified in the request parameters. + @param request The request parameters. + @param callback The callback. + */ +- (void)sendVerificationCode:(FIRSendVerificationCodeRequest *)request + callback:(FIRSendVerificationCodeResponseCallback)callback; + +/** @fn verifyPhoneNumber:callback: + @brief Calls the verifyPhoneNumber endpoint, which is responsible for sending the verification + code to a phone number specified in the request parameters. + @param request The request parameters. + @param callback The callback. + */ +- (void)verifyPhoneNumber:(FIRVerifyPhoneNumberRequest *)request + callback:(FIRVerifyPhoneNumberResponseCallback)callback; + +/** @fn verifyClient:callback: + @brief Calls the verifyClient endpoint, which is responsible for sending the silent push + notification used for app validation to the device provided in the request parameters. + @param request The request parameters. + @param callback The callback. + */ +- (void)verifyClient:(FIRVerifyClientRequest *)request + callback:(FIRVerifyClientResponseCallback)callback; +#endif + +/** @fn SignInWithGameCenter:callback: + @brief Calls the SignInWithGameCenter endpoint, which is responsible for authenticating a user + who has Game Center credentials. + @param request The request parameters. + @param callback The callback. + */ +- (void)signInWithGameCenter:(FIRSignInWithGameCenterRequest *)request + callback:(FIRSignInWithGameCenterResponseCallback)callback; + +/** @fn resetPassword:callback + @brief Calls the resetPassword endpoint, which is responsible for resetting a user's password + given an OOB code and new password. + @param request The request parameters. + @param callback The callback. + */ +- (void)resetPassword:(FIRResetPasswordRequest *)request + callback:(FIRResetPasswordCallback)callback; + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/FIRAuthBackend.m b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/FIRAuthBackend.m new file mode 100644 index 0000000..2684357 --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/FIRAuthBackend.m @@ -0,0 +1,1205 @@ +/* + * 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 "FIRAuthBackend.h" + +#import +#import + +#import "FIRAuthErrorUtils.h" +#import "FIRAuthGlobalWorkQueue.h" +#import "FirebaseAuth.h" +#import "FIRAuthRPCRequest.h" +#import "FIRAuthRPCResponse.h" +#import "FIRCreateAuthURIRequest.h" +#import "FIRCreateAuthURIResponse.h" +#import "FIRDeleteAccountRequest.h" +#import "FIRDeleteAccountResponse.h" +#import "FIRGetAccountInfoRequest.h" +#import "FIRGetAccountInfoResponse.h" +#import "FIRSignInWithGameCenterRequest.h" +#import "FIRSignInWithGameCenterResponse.h" +#import "FIRGetOOBConfirmationCodeRequest.h" +#import "FIRGetOOBConfirmationCodeResponse.h" +#import "FIRGetProjectConfigRequest.h" +#import "FIRGetProjectConfigResponse.h" +#import "FIRResetPasswordRequest.h" +#import "FIRResetPasswordResponse.h" +#import "FIRSendVerificationCodeRequest.h" +#import "FIRSendVerificationCodeResponse.h" +#import "FIRSecureTokenRequest.h" +#import "FIRSecureTokenResponse.h" +#import "FIRSetAccountInfoRequest.h" +#import "FIRSetAccountInfoResponse.h" +#import "FIRSignUpNewUserRequest.h" +#import "FIRSignUpNewUserResponse.h" +#import "FIRVerifyAssertionRequest.h" +#import "FIRVerifyAssertionResponse.h" +#import "FIRVerifyClientRequest.h" +#import "FIRVerifyClientResponse.h" +#import "FIRVerifyCustomTokenRequest.h" +#import "FIRVerifyCustomTokenResponse.h" +#import "FIRVerifyPasswordRequest.h" +#import "FIRVerifyPasswordResponse.h" +#import "FIREmailLinkSignInRequest.h" +#import "FIREmailLinkSignInResponse.h" +#import "FIRVerifyPhoneNumberRequest.h" +#import "FIRVerifyPhoneNumberResponse.h" + +#import "FIROAuthCredential_Internal.h" +#if TARGET_OS_IOS +#import "FIRPhoneAuthCredential_Internal.h" +#import "FIRPhoneAuthProvider.h" +#endif + +NS_ASSUME_NONNULL_BEGIN + +/** @var kClientVersionHeader + @brief HTTP header name for the client version. + */ +static NSString *const kClientVersionHeader = @"X-Client-Version"; + +/** @var kIosBundleIdentifierHeader + @brief HTTP header name for iOS bundle ID. + */ +static NSString *const kIosBundleIdentifierHeader = @"X-Ios-Bundle-Identifier"; + +/** @var kFirebaseLocalHeader + @brief HTTP header name for the firebase locale. + */ +static NSString *const kFirebaseLocalHeader = @"X-Firebase-Locale"; + +/** @var kFirebaseAuthCoreFrameworkMarker + @brief The marker in the HTTP header that indicates the request comes from Firebase Auth Core. + */ +static NSString *const kFirebaseAuthCoreFrameworkMarker = @"FirebaseCore-iOS"; + +/** @var kJSONContentType + @brief The value of the HTTP content-type header for JSON payloads. + */ +static NSString *const kJSONContentType = @"application/json"; + +/** @var kErrorDataKey + @brief Key for error data in NSError returned by @c GTMSessionFetcher. + */ +static NSString * const kErrorDataKey = @"data"; + +/** @var kErrorKey + @brief The key for the "error" value in JSON responses from the server. + */ +static NSString *const kErrorKey = @"error"; + +/** @var kErrorsKey + @brief The key for the "errors" value in JSON responses from the server. + */ +static NSString *const kErrorsKey = @"errors"; + +/** @var kReasonKey + @brief The key for the "reason" value in JSON responses from the server. + */ +static NSString *const kReasonKey = @"reason"; + +/** @var kInvalidKeyReasonValue + @brief The value for the "reason" key indicating an invalid API Key was received by the server. + */ +static NSString *const kInvalidKeyReasonValue = @"keyInvalid"; + +/** @var kAppNotAuthorizedReasonValue + @brief The value for the "reason" key indicating the App is not authorized to use Firebase + Authentication. + */ +static NSString *const kAppNotAuthorizedReasonValue = @"ipRefererBlocked"; + +/** @var kErrorMessageKey + @brief The key for an error's "message" value in JSON responses from the server. + */ +static NSString *const kErrorMessageKey = @"message"; + +/** @var kReturnIDPCredentialErrorMessageKey + @brief The key for "errorMessage" value in JSON responses from the server, In case + returnIDPCredential of a verifyAssertion request is set to @YES. + */ +static NSString *const kReturnIDPCredentialErrorMessageKey = @"errorMessage"; + +/** @var kUserNotFoundErrorMessage + @brief This is the error message returned when the user is not found, which means the user + account has been deleted given the token was once valid. + */ +static NSString *const kUserNotFoundErrorMessage = @"USER_NOT_FOUND"; + +/** @var kUserDeletedErrorMessage + @brief This is the error message the server will respond with if the user entered an invalid + email address. + */ +static NSString *const kUserDeletedErrorMessage = @"EMAIL_NOT_FOUND"; + +/** @var kInvalidLocalIDErrorMessage + @brief This is the error message the server responds with if the user local id in the id token + does not exit. + */ +static NSString *const kInvalidLocalIDErrorMessage = @"INVALID_LOCAL_ID"; + +/** @var kUserTokenExpiredErrorMessage + @brief The error returned by the server if the token issue time is older than the account's + valid_since time. + */ +static NSString *const kUserTokenExpiredErrorMessage = @"TOKEN_EXPIRED"; + +/** @var kTooManyRequestsErrorMessage + @brief This is the error message the server will respond with if too many requests were made to + a server method. + */ +static NSString *const kTooManyRequestsErrorMessage = @"TOO_MANY_ATTEMPTS_TRY_LATER"; + +/** @var kInvalidTokenCustomErrorMessage + @brief This is the error message the server will respond with if there is a validation error + with the custom token. + */ +static NSString *const kInvalidCustomTokenErrorMessage = @"INVALID_CUSTOM_TOKEN"; + +/** @var kCustomTokenMismatch + @brief This is the error message the server will respond with if the service account and API key + belong to different projects. + */ +static NSString *const kCustomTokenMismatch = @"CREDENTIAL_MISMATCH"; + +/** @var kInvalidCredentialErrorMessage + @brief This is the error message the server responds with if the IDP token or requestUri is + invalid. + */ +static NSString *const kInvalidCredentialErrorMessage = @"INVALID_IDP_RESPONSE"; + +/** @var kUserDisabledErrorMessage + @brief The error returned by the server if the user account is diabled. + */ +static NSString *const kUserDisabledErrorMessage = @"USER_DISABLED"; + +/** @var kOperationNotAllowedErrorMessage + @brief This is the error message the server will respond with if Admin disables IDP specified by + provider. + */ +static NSString *const kOperationNotAllowedErrorMessage = @"OPERATION_NOT_ALLOWED"; + +/** @var kPasswordLoginDisabledErrorMessage + @brief This is the error message the server responds with if password login is disabled. + */ +static NSString *const kPasswordLoginDisabledErrorMessage = @"PASSWORD_LOGIN_DISABLED"; + +/** @var kEmailAlreadyInUseErrorMessage + @brief This is the error message the server responds with if the email address already exists. + */ +static NSString *const kEmailAlreadyInUseErrorMessage = @"EMAIL_EXISTS"; + +/** @var kInvalidEmailErrorMessage + @brief The error returned by the server if the email is invalid. + */ +static NSString *const kInvalidEmailErrorMessage = @"INVALID_EMAIL"; + +/** @var kInvalidIdentifierErrorMessage + @brief The error returned by the server if the identifier is invalid. + */ +static NSString *const kInvalidIdentifierErrorMessage = @"INVALID_IDENTIFIER"; + +/** @var kWrongPasswordErrorMessage + @brief This is the error message the server will respond with if the user entered a wrong + password. + */ +static NSString *const kWrongPasswordErrorMessage = @"INVALID_PASSWORD"; + +/** @var kCredentialTooOldErrorMessage + @brief This is the error message the server responds with if account change is attempted 5 + minutes after signing in. + */ +static NSString *const kCredentialTooOldErrorMessage = @"CREDENTIAL_TOO_OLD_LOGIN_AGAIN"; + +/** @var kFederatedUserIDAlreadyLinkedMessage + @brief This is the error message the server will respond with if the federated user ID has been + already linked with another account. + */ +static NSString *const kFederatedUserIDAlreadyLinkedMessage = @"FEDERATED_USER_ID_ALREADY_LINKED"; + +/** @var kInvalidUserTokenErrorMessage + @brief This is the error message the server responds with if user's saved auth credential is + invalid, and the user needs to sign in again. + */ +static NSString *const kInvalidUserTokenErrorMessage = @"INVALID_ID_TOKEN"; + +/** @var kWeakPasswordErrorMessagePrefix + @brief This is the prefix for the error message the server responds with if user's new password + to be set is too weak. + */ +static NSString *const kWeakPasswordErrorMessagePrefix = @"WEAK_PASSWORD"; + +/** @var kExpiredActionCodeErrorMessage + @brief This is the error message the server will respond with if the action code is expired. + */ +static NSString *const kExpiredActionCodeErrorMessage = @"EXPIRED_OOB_CODE"; + +/** @var kInvalidActionCodeErrorMessage + @brief This is the error message the server will respond with if the action code is invalid. + */ +static NSString *const kInvalidActionCodeErrorMessage = @"INVALID_OOB_CODE"; + +/** @var kMissingEmailErrorMessage + @brief This is the error message the server will respond with if the email address is missing + during a "send password reset email" attempt. + */ +static NSString *const kMissingEmailErrorMessage = @"MISSING_EMAIL"; + +/** @var kInvalidSenderEmailErrorMessage + @brief This is the error message the server will respond with if the sender email is invalid + during a "send password reset email" attempt. + */ +static NSString *const kInvalidSenderEmailErrorMessage = @"INVALID_SENDER"; + +/** @var kInvalidMessagePayloadErrorMessage + @brief This is the error message the server will respond with if there are invalid parameters in + the payload during a "send password reset email" attempt. + */ +static NSString *const kInvalidMessagePayloadErrorMessage = @"INVALID_MESSAGE_PAYLOAD"; + +/** @var kInvalidRecipientEmailErrorMessage + @brief This is the error message the server will respond with if the recipient email is invalid. + */ +static NSString *const kInvalidRecipientEmailErrorMessage = @"INVALID_RECIPIENT_EMAIL"; + +/** @var kMissingIosBundleIDErrorMessage + @brief This is the error message the server will respond with if iOS bundle ID is missing but + the iOS App store ID is provided. + */ +static NSString *const kMissingIosBundleIDErrorMessage = @"MISSING_IOS_BUNDLE_ID"; + +/** @var kMissingAndroidPackageNameErrorMessage + @brief This is the error message the server will respond with if Android Package Name is missing + but the flag indicating the app should be installed is set to true. + */ +static NSString *const kMissingAndroidPackageNameErrorMessage = @"MISSING_ANDROID_PACKAGE_NAME"; + +/** @var kUnauthorizedDomainErrorMessage + @brief This is the error message the server will respond with if the domain of the continue URL + specified is not whitelisted in the firebase console. + */ +static NSString *const kUnauthorizedDomainErrorMessage = @"UNAUTHORIZED_DOMAIN"; + +/** @var kInvalidProviderIDErrorMessage + @brief This is the error message the server will respond with if the provider id given for the + web operation is invalid. + */ +static NSString *const kInvalidProviderIDErrorMessage = @"INVALID_PROVIDER_ID"; + +/** @var kInvalidDynamicLinkDomainErrorMessage + @brief This is the error message the server will respond with if the dynamic link domain + provided in the request is invalid. + */ +static NSString *const kInvalidDynamicLinkDomainErrorMessage = @"INVALID_DYNAMIC_LINK_DOMAIN"; + +/** @var kInvalidContinueURIErrorMessage + @brief This is the error message the server will respond with if the continue URL provided in + the request is invalid. + */ +static NSString *const kInvalidContinueURIErrorMessage = @"INVALID_CONTINUE_URI"; + +/** @var kMissingContinueURIErrorMessage + @brief This is the error message the server will respond with if there was no continue URI + present in a request that required one. + */ +static NSString *const kMissingContinueURIErrorMessage = @"MISSING_CONTINUE_URI"; + +/** @var kInvalidPhoneNumberErrorMessage + @brief This is the error message the server will respond with if an incorrectly formatted phone + number is provided. + */ +static NSString *const kInvalidPhoneNumberErrorMessage = @"INVALID_PHONE_NUMBER"; + +/** @var kInvalidVerificationCodeErrorMessage + @brief This is the error message the server will respond with if an invalid verification code is + provided. + */ +static NSString *const kInvalidVerificationCodeErrorMessage = @"INVALID_CODE"; + +/** @var kInvalidSessionInfoErrorMessage + @brief This is the error message the server will respond with if an invalid session info + (verification ID) is provided. + */ +static NSString *const kInvalidSessionInfoErrorMessage = @"INVALID_SESSION_INFO"; + +/** @var kSessionExpiredErrorMessage + @brief This is the error message the server will respond with if the SMS code has expired before + it is used. + */ +static NSString *const kSessionExpiredErrorMessage = @"SESSION_EXPIRED"; + +/** @var kMissingAppTokenErrorMessage + @brief This is the error message the server will respond with if the APNS token is missing in a + verifyClient request. + */ +static NSString *const kMissingAppTokenErrorMessage = @"MISSING_IOS_APP_TOKEN"; + +/** @var kMissingAppCredentialErrorMessage + @brief This is the error message the server will respond with if the app token is missing in a + sendVerificationCode request. + */ +static NSString *const kMissingAppCredentialErrorMessage = @"MISSING_APP_CREDENTIAL"; + +/** @var kInvalidAppCredentialErrorMessage + @brief This is the error message the server will respond with if the app credential in a + sendVerificationCode request is invalid. + */ +static NSString *const kInvalidAppCredentialErrorMessage = @"INVALID_APP_CREDENTIAL"; + +/** @var kQuoutaExceededErrorMessage + @brief This is the error message the server will respond with if the quota for SMS text messages + has been exceeded for the project. + */ +static NSString *const kQuoutaExceededErrorMessage = @"QUOTA_EXCEEDED"; + +/** @var kAppNotVerifiedErrorMessage + @brief This is the error message the server will respond with if Firebase could not verify the + app during a phone authentication flow. + */ +static NSString *const kAppNotVerifiedErrorMessage = @"APP_NOT_VERIFIED"; + +/** @var kMissingClientIdentifier + @brief This is the error message the server will respond with if Firebase could not verify the + app during a phone authentication flow when a real phone number is used and app verification + is disabled for testing. + */ +static NSString *const kMissingClientIdentifier = @"MISSING_CLIENT_IDENTIFIER"; + +/** @var kCaptchaCheckFailedErrorMessage + @brief This is the error message the server will respond with if the reCAPTCHA token provided is + invalid. + */ +static NSString *const kCaptchaCheckFailedErrorMessage = @"CAPTCHA_CHECK_FAILED"; + +/** @var kInvalidPendingToken + @brief Generic IDP error codes. + */ +static NSString *const kInvalidPendingToken = @"INVALID_PENDING_TOKEN"; + +/** @var gBackendImplementation + @brief The singleton FIRAuthBackendImplementation instance to use. + */ +static id gBackendImplementation; + +/** @class FIRAuthBackendRPCImplementation + @brief The default RPC-based backend implementation. + */ +@interface FIRAuthBackendRPCImplementation : NSObject + +/** @property RPCIssuer + @brief An instance of FIRAuthBackendRPCIssuer for making RPC requests. Allows the RPC + requests/responses to be easily faked. + */ +@property(nonatomic, strong) id RPCIssuer; + +@end + +@implementation FIRAuthBackend + ++ (id)implementation { + if (!gBackendImplementation) { + gBackendImplementation = [[FIRAuthBackendRPCImplementation alloc] init]; + } + return gBackendImplementation; +} + ++ (void)setBackendImplementation:(id)backendImplementation { + gBackendImplementation = backendImplementation; +} + ++ (void)setDefaultBackendImplementationWithRPCIssuer: + (nullable id)RPCIssuer { + FIRAuthBackendRPCImplementation *defaultImplementation = + [[FIRAuthBackendRPCImplementation alloc] init]; + if (RPCIssuer) { + defaultImplementation.RPCIssuer = RPCIssuer; + } + gBackendImplementation = defaultImplementation; +} + ++ (void)createAuthURI:(FIRCreateAuthURIRequest *)request + callback:(FIRCreateAuthURIResponseCallback)callback { + [[self implementation] createAuthURI:request callback:callback]; +} + ++ (void)getAccountInfo:(FIRGetAccountInfoRequest *)request + callback:(FIRGetAccountInfoResponseCallback)callback { + [[self implementation] getAccountInfo:request callback:callback]; +} + ++ (void)getProjectConfig:(FIRGetProjectConfigRequest *)request + callback:(FIRGetProjectConfigResponseCallback)callback { + [[self implementation] getProjectConfig:request callback:callback]; +} + ++ (void)setAccountInfo:(FIRSetAccountInfoRequest *)request + callback:(FIRSetAccountInfoResponseCallback)callback { + [[self implementation] setAccountInfo:request callback:callback]; +} + ++ (void)verifyAssertion:(FIRVerifyAssertionRequest *)request + callback:(FIRVerifyAssertionResponseCallback)callback { + [[self implementation] verifyAssertion:request callback:callback]; +} + ++ (void)verifyCustomToken:(FIRVerifyCustomTokenRequest *)request + callback:(FIRVerifyCustomTokenResponseCallback)callback { + [[self implementation] verifyCustomToken:request callback:callback]; +} + ++ (void)verifyPassword:(FIRVerifyPasswordRequest *)request + callback:(FIRVerifyPasswordResponseCallback)callback { + [[self implementation] verifyPassword:request callback:callback]; +} + ++ (void)emailLinkSignin:(FIREmailLinkSignInRequest *)request + callback:(FIREmailLinkSigninResponseCallback)callback { + [[self implementation] emailLinkSignin:request callback:callback]; +} + ++ (void)secureToken:(FIRSecureTokenRequest *)request + callback:(FIRSecureTokenResponseCallback)callback { + [[self implementation] secureToken:request callback:callback]; +} + ++ (void)getOOBConfirmationCode:(FIRGetOOBConfirmationCodeRequest *)request + callback:(FIRGetOOBConfirmationCodeResponseCallback)callback { + [[self implementation] getOOBConfirmationCode:request callback:callback]; +} + ++ (void)signUpNewUser:(FIRSignUpNewUserRequest *)request + callback:(FIRSignupNewUserCallback)callback { + [[self implementation] signUpNewUser:request callback:callback]; +} + ++ (void)deleteAccount:(FIRDeleteAccountRequest *)request callback:(FIRDeleteCallBack)callback { + [[self implementation] deleteAccount:request callback:callback]; +} + ++ (void)signInWithGameCenter:(FIRSignInWithGameCenterRequest *)request + callback:(FIRSignInWithGameCenterResponseCallback)callback { + [[self implementation] signInWithGameCenter:request callback:callback]; +} + +#if TARGET_OS_IOS ++ (void)sendVerificationCode:(FIRSendVerificationCodeRequest *)request + callback:(FIRSendVerificationCodeResponseCallback)callback { + [[self implementation] sendVerificationCode:request callback:callback]; +} + ++ (void)verifyPhoneNumber:(FIRVerifyPhoneNumberRequest *)request + callback:(FIRVerifyPhoneNumberResponseCallback)callback { + [[self implementation] verifyPhoneNumber:request callback:callback]; +} + ++ (void)verifyClient:(id)request callback:(FIRVerifyClientResponseCallback)callback { + [[self implementation] verifyClient:request callback:callback]; +} +#endif + ++ (void)resetPassword:(FIRResetPasswordRequest *)request + callback:(FIRResetPasswordCallback)callback { + [[self implementation] resetPassword:request callback:callback]; +} + ++ (NSString *)authUserAgent { + return [NSString stringWithFormat:@"FirebaseAuth.iOS/%s %@", + FirebaseAuthVersionStr, GTMFetcherStandardUserAgentString(nil)]; +} + +@end + +@interface FIRAuthBackendRPCIssuerImplementation : NSObject +@end + +@implementation FIRAuthBackendRPCIssuerImplementation { + /** @var The session fetcher service. + */ + GTMSessionFetcherService *_fetcherService; +} + +- (instancetype)init { + self = [super init]; + if (self) { + _fetcherService = [[GTMSessionFetcherService alloc] init]; + _fetcherService.userAgent = [FIRAuthBackend authUserAgent]; + _fetcherService.callbackQueue = FIRAuthGlobalWorkQueue(); + + // Avoid reusing the session to prevent + // https://github.com/firebase/firebase-ios-sdk/issues/1261 + _fetcherService.reuseSession = NO; + } + return self; +} + +- (void)asyncPostToURLWithRequestConfiguration:(FIRAuthRequestConfiguration *)requestConfiguration + URL:(NSURL *)URL + body:(nullable NSData *)body + contentType:(NSString *)contentType + completionHandler:(void (^)(NSData *_Nullable, + NSError *_Nullable))handler { + NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:URL]; + [request setValue:contentType forHTTPHeaderField:@"Content-Type"]; + NSString *additionalFrameworkMarker = requestConfiguration.additionalFrameworkMarker ?: + kFirebaseAuthCoreFrameworkMarker; + NSString *clientVersion = [NSString stringWithFormat:@"iOS/FirebaseSDK/%s/%@", + FirebaseAuthVersionStr, + additionalFrameworkMarker]; + [request setValue:clientVersion forHTTPHeaderField:kClientVersionHeader]; + NSString *bundleID = [[NSBundle mainBundle] bundleIdentifier]; + [request setValue:bundleID forHTTPHeaderField:kIosBundleIdentifierHeader]; + + NSArray *preferredLocalizations = [NSBundle mainBundle].preferredLocalizations; + if (preferredLocalizations.count) { + NSString *acceptLanguage = preferredLocalizations.firstObject; + [request setValue:acceptLanguage forHTTPHeaderField:@"Accept-Language"]; + } + NSString *languageCode = requestConfiguration.languageCode; + if (languageCode.length) { + [request setValue:languageCode forHTTPHeaderField:kFirebaseLocalHeader]; + } + GTMSessionFetcher *fetcher = [_fetcherService fetcherWithRequest:request]; + fetcher.bodyData = body; + [fetcher beginFetchWithCompletionHandler:handler]; +} + +@end + +@implementation FIRAuthBackendRPCImplementation + +- (instancetype)init { + self = [super init]; + if (self) { + _RPCIssuer = [[FIRAuthBackendRPCIssuerImplementation alloc] init]; + } + return self; +} + +- (void)createAuthURI:(FIRCreateAuthURIRequest *)request + callback:(FIRCreateAuthURIResponseCallback)callback { + FIRCreateAuthURIResponse *response = [[FIRCreateAuthURIResponse alloc] init]; + [self postWithRequest:request response:response callback:^(NSError *error) { + if (error) { + callback(nil, error); + } else { + callback(response, nil); + } + }]; +} + +- (void)getAccountInfo:(FIRGetAccountInfoRequest *)request + callback:(FIRGetAccountInfoResponseCallback)callback { + FIRGetAccountInfoResponse *response = [[FIRGetAccountInfoResponse alloc] init]; + [self postWithRequest:request response:response callback:^(NSError *error) { + if (error) { + callback(nil, error); + } else { + callback(response, nil); + } + }]; +} + +- (void)getProjectConfig:(FIRGetProjectConfigRequest *)request + callback:(FIRGetProjectConfigResponseCallback)callback { + FIRGetProjectConfigResponse *response = [[FIRGetProjectConfigResponse alloc] init]; + [self postWithRequest:request response:response callback:^(NSError *error) { + if (error) { + callback(nil, error); + } else { + callback(response, nil); + } + }]; +} + +- (void)setAccountInfo:(FIRSetAccountInfoRequest *)request + callback:(FIRSetAccountInfoResponseCallback)callback { + FIRSetAccountInfoResponse *response = [[FIRSetAccountInfoResponse alloc] init]; + [self postWithRequest:request response:response callback:^(NSError *error) { + if (error) { + callback(nil, error); + } else { + callback(response, nil); + } + }]; +} + +- (void)verifyAssertion:(FIRVerifyAssertionRequest *)request + callback:(FIRVerifyAssertionResponseCallback)callback { + FIRVerifyAssertionResponse *response = [[FIRVerifyAssertionResponse alloc] init]; + [self postWithRequest:request response:response callback:^(NSError *error) { + if (error) { + callback(nil, error); + return; + } + callback(response, nil); + }]; +} + +- (void)verifyCustomToken:(FIRVerifyCustomTokenRequest *)request + callback:(FIRVerifyCustomTokenResponseCallback)callback { + FIRVerifyCustomTokenResponse *response = [[FIRVerifyCustomTokenResponse alloc] init]; + [self postWithRequest:request response:response callback:^(NSError *error) { + if (error) { + callback(nil, error); + } else { + callback(response, nil); + } + }]; +} + +- (void)verifyPassword:(FIRVerifyPasswordRequest *)request + callback:(FIRVerifyPasswordResponseCallback)callback { + FIRVerifyPasswordResponse *response = [[FIRVerifyPasswordResponse alloc] init]; + [self postWithRequest:request response:response callback:^(NSError *error) { + if (error) { + callback(nil, error); + } else { + callback(response, nil); + } + }]; +} + +- (void)emailLinkSignin:(FIREmailLinkSignInRequest *)request + callback:(FIREmailLinkSigninResponseCallback)callback { + FIREmailLinkSignInResponse *response = [[FIREmailLinkSignInResponse alloc] init]; + [self postWithRequest:request response:response callback:^(NSError *error) { + if (error) { + callback(nil, error); + } else { + callback(response, nil); + } + }]; +} + +- (void)secureToken:(FIRSecureTokenRequest *)request + callback:(FIRSecureTokenResponseCallback)callback { + FIRSecureTokenResponse *response = [[FIRSecureTokenResponse alloc] init]; + [self postWithRequest:request response:response callback:^(NSError *error) { + if (error) { + callback(nil, error); + } else { + callback(response, nil); + } + }]; +} + +- (void)getOOBConfirmationCode:(FIRGetOOBConfirmationCodeRequest *)request + callback:(FIRGetOOBConfirmationCodeResponseCallback)callback { + FIRGetOOBConfirmationCodeResponse *response = [[FIRGetOOBConfirmationCodeResponse alloc] init]; + [self postWithRequest:request response:response callback:^(NSError *error) { + if (error) { + callback(nil, error); + } else { + callback(response, nil); + } + }]; +} + +- (void)signUpNewUser:(FIRSignUpNewUserRequest *)request + callback:(FIRSignupNewUserCallback)callback{ + FIRSignUpNewUserResponse *response = [[FIRSignUpNewUserResponse alloc] init]; + [self postWithRequest:request response:response callback:^(NSError *error) { + if (error) { + callback(nil, error); + } else { + callback(response, nil); + } + }]; +} + +- (void)deleteAccount:(FIRDeleteAccountRequest *)request callback:(FIRDeleteCallBack)callback { + FIRDeleteAccountResponse *response = [[FIRDeleteAccountResponse alloc] init]; + [self postWithRequest:request response:response callback:callback]; +} + +#if TARGET_OS_IOS +- (void)sendVerificationCode:(FIRSendVerificationCodeRequest *)request + callback:(FIRSendVerificationCodeResponseCallback)callback { + FIRSendVerificationCodeResponse *response = [[FIRSendVerificationCodeResponse alloc] init]; + [self postWithRequest:request response:response callback:^(NSError *error) { + if (error) { + callback(nil, error); + } else { + callback(response, error); + } + }]; +} + +- (void)verifyPhoneNumber:(FIRVerifyPhoneNumberRequest *)request + callback:(FIRVerifyPhoneNumberResponseCallback)callback { + FIRVerifyPhoneNumberResponse *response = [[FIRVerifyPhoneNumberResponse alloc] init]; + [self postWithRequest:request response:response callback:^(NSError *error) { + if (error) { + callback(nil, error); + return; + } + // Check whether or not the successful response is actually the special case phone auth flow + // that returns a temporary proof and phone number. + if (response.phoneNumber.length && response.temporaryProof.length) { + FIRPhoneAuthCredential *credential = + [[FIRPhoneAuthCredential alloc] initWithTemporaryProof:response.temporaryProof + phoneNumber:response.phoneNumber + providerID:FIRPhoneAuthProviderID]; + callback(nil, + [FIRAuthErrorUtils credentialAlreadyInUseErrorWithMessage:nil + credential:credential + email:nil]); + return; + } + callback(response, nil); + }]; +} + +- (void)verifyClient:(id)request callback:(FIRVerifyClientResponseCallback)callback { + FIRVerifyClientResponse *response = [[FIRVerifyClientResponse alloc] init]; + [self postWithRequest:request response:response callback:^(NSError *error) { + if (error) { + callback(nil, error); + return; + } + callback(response, nil); + }]; +} +#endif + +- (void)resetPassword:(FIRResetPasswordRequest *)request + callback:(FIRResetPasswordCallback)callback { + FIRResetPasswordResponse *response = [[FIRResetPasswordResponse alloc] init]; + [self postWithRequest:request response:response callback:^(NSError *error) { + if (error) { + callback(nil, error); + return; + } + callback(response, nil); + }]; +} + +- (void)signInWithGameCenter:(FIRSignInWithGameCenterRequest *)request + callback:(FIRSignInWithGameCenterResponseCallback)callback { + FIRSignInWithGameCenterResponse *response = [[FIRSignInWithGameCenterResponse alloc] init]; + [self postWithRequest:request response:response callback:^(NSError *error) { + if (error) { + if (callback) { + callback(nil, error); + } + } else { + if (callback) { + callback(response, nil); + } + } + }]; +} + +#pragma mark - Generic RPC handling methods + +/** @fn postWithRequest:response:callback: + @brief Calls the RPC using HTTP POST. + @remarks Possible error responses: + @see FIRAuthInternalErrorCodeRPCRequestEncodingError + @see FIRAuthInternalErrorCodeJSONSerializationError + @see FIRAuthInternalErrorCodeNetworkError + @see FIRAuthInternalErrorCodeUnexpectedErrorResponse + @see FIRAuthInternalErrorCodeUnexpectedResponse + @see FIRAuthInternalErrorCodeRPCResponseDecodingError + @param request The request. + @param response The empty response to be filled. + @param callback The callback for both success and failure. + */ +- (void)postWithRequest:(id)request + response:(id)response + callback:(void (^)(NSError * _Nullable error))callback { + NSError *error; + NSData *bodyData; + if ([request containsPostBody]) { + id postBody = [request unencodedHTTPRequestBodyWithError:&error]; + if (!postBody) { + callback([FIRAuthErrorUtils RPCRequestEncodingErrorWithUnderlyingError:error]); + return; + } + + NSJSONWritingOptions JSONWritingOptions = 0; + #if DEBUG + JSONWritingOptions |= NSJSONWritingPrettyPrinted; + #endif + + if ([NSJSONSerialization isValidJSONObject:postBody]) { + bodyData = [NSJSONSerialization dataWithJSONObject:postBody + options:JSONWritingOptions + error:&error]; + if (!bodyData) { + // This is an untested case. This happens exclusively when there is an error in the framework + // implementation of dataWithJSONObject:options:error:. This shouldn't normally occur as + // isValidJSONObject: should return NO in any case we should encounter an error. + error = [FIRAuthErrorUtils JSONSerializationErrorWithUnderlyingError:error]; + } + } else { + error = [FIRAuthErrorUtils JSONSerializationErrorForUnencodableType]; + } + if (!bodyData) { + callback(error); + return; + } + } + + [_RPCIssuer asyncPostToURLWithRequestConfiguration:[request requestConfiguration] + URL:[request requestURL] + body:bodyData + contentType:kJSONContentType + completionHandler:^(NSData *data, NSError *error) { + // If there is an error with no body data at all, then this must be a network error. + if (error && !data) { + callback([FIRAuthErrorUtils networkErrorWithUnderlyingError:error]); + return; + } + + // Try to decode the HTTP response data which may contain either a successful response or error + // message. + NSError *jsonError; + NSDictionary * dictionary = + [NSJSONSerialization JSONObjectWithData:data + options:NSJSONReadingMutableLeaves + error:&jsonError]; + if (!dictionary) { + if (error) { + // We have an error, but we couldn't decode the body, so we have no additional information + // other than the raw response and the original NSError (the jsonError is infered by the + // error code (FIRAuthErrorCodeUnexpectedHTTPResponse, and is irrelevant.) + callback([FIRAuthErrorUtils unexpectedErrorResponseWithData:data underlyingError:error]); + } else { + // This is supposed to be a "successful" response, but we couldn't deserialize the body. + callback([FIRAuthErrorUtils unexpectedResponseWithData:data underlyingError:jsonError]); + } + return; + } + if (![dictionary isKindOfClass:[NSDictionary class]]) { + if (error) { + callback([FIRAuthErrorUtils unexpectedErrorResponseWithDeserializedResponse:dictionary]); + } else { + callback([FIRAuthErrorUtils unexpectedResponseWithDeserializedResponse:dictionary]); + } + return; + } + + // At this point we either have an error with successfully decoded details in the body, or we + // have a response which must pass further validation before we know it's truly successful. + // We deal with the case where we have an error with successfully decoded error details first: + if (error) { + NSDictionary *errorDictionary = dictionary[kErrorKey]; + if ([errorDictionary isKindOfClass:[NSDictionary class]]) { + id errorMessage = errorDictionary[kErrorMessageKey]; + if ([errorMessage isKindOfClass:[NSString class]]) { + NSString *errorMessageString = (NSString *)errorMessage; + + // Contruct client error. + NSError *clientError = [[self class] clientErrorWithServerErrorMessage:errorMessageString + errorDictionary:errorDictionary + response:response]; + if (clientError) { + callback(clientError); + return; + } + } + // Not a message we know, return the message directly. + if (errorMessage) { + NSError *unexpecterErrorResponse = + [FIRAuthErrorUtils unexpectedErrorResponseWithDeserializedResponse:errorDictionary]; + callback(unexpecterErrorResponse); + return; + } + } + // No error message at all, return the decoded response. + callback([FIRAuthErrorUtils unexpectedErrorResponseWithDeserializedResponse:dictionary]); + return; + } + + // Finally, we try to populate the response object with the JSON values. + if (![response setWithDictionary:dictionary error:&error]) { + callback([FIRAuthErrorUtils RPCResponseDecodingErrorWithDeserializedResponse:dictionary + underlyingError:error]); + return; + } + // In case returnIDPCredential of a verifyAssertion request is set to @YES, the server may + // return a 200 with a response that may contain a server error. + if ([request isKindOfClass:[FIRVerifyAssertionRequest class]]) { + FIRVerifyAssertionRequest *verifyAssertionRequest = (FIRVerifyAssertionRequest *)request; + if (verifyAssertionRequest.returnIDPCredential) { + NSString *errorMessage = dictionary[kReturnIDPCredentialErrorMessageKey]; + if ([errorMessage isKindOfClass:[NSString class]]) { + NSString *errorString = (NSString *)errorMessage; + NSError *clientError = [[self class] clientErrorWithServerErrorMessage:errorString + errorDictionary:@{} + response:response]; + if (clientError) { + callback(clientError); + return; + } + } + } + } + // Success! The response object originally passed in can be used by the caller. + callback(nil); + }]; +} + +/** @fn clientErrorWithServerErrorMessage:errorDictionary: + @brief Translates known server errors to client errors. + @param serverErrorMessage The error message from the server. + @param errorDictionary The error part of the response from the server. + @param response The response from the server RPC. + @return A client error, if any. + */ ++ (nullable NSError *)clientErrorWithServerErrorMessage:(NSString *)serverErrorMessage + errorDictionary:(NSDictionary *)errorDictionary + response:(id)response { + NSString *shortErrorMessage = serverErrorMessage; + NSString *serverDetailErrorMessage; + NSRange colonRange = [serverErrorMessage rangeOfString:@":"]; + if (colonRange.location != NSNotFound) { + shortErrorMessage = [serverErrorMessage substringToIndex:colonRange.location]; + shortErrorMessage = + [shortErrorMessage stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]]; + serverDetailErrorMessage = [serverErrorMessage substringFromIndex:colonRange.location + 1]; + serverDetailErrorMessage = [serverDetailErrorMessage stringByTrimmingCharactersInSet: + [NSCharacterSet whitespaceCharacterSet]]; + } + + // Delegate the responsibility for constructing the client error to the response object, + // if possible. + SEL clientErrorWithServerErrorMessageSelector = + @selector(clientErrorWithShortErrorMessage:detailErrorMessage:); + if ([response respondsToSelector:clientErrorWithServerErrorMessageSelector]) { + NSError *error = [response clientErrorWithShortErrorMessage:shortErrorMessage + detailErrorMessage:serverDetailErrorMessage]; + if (error) { + return error; + } + } + + if ([shortErrorMessage isEqualToString:kUserNotFoundErrorMessage]) { + return [FIRAuthErrorUtils userNotFoundErrorWithMessage:serverDetailErrorMessage]; + } + + if ([shortErrorMessage isEqualToString:kUserDeletedErrorMessage]) { + return [FIRAuthErrorUtils userNotFoundErrorWithMessage:serverDetailErrorMessage]; + } + + if ([shortErrorMessage isEqualToString:kInvalidLocalIDErrorMessage]) { + // This case shouldn't be necessary but it is for now: b/27908364 . + return [FIRAuthErrorUtils userNotFoundErrorWithMessage:serverDetailErrorMessage]; + } + + if ([shortErrorMessage isEqualToString:kUserTokenExpiredErrorMessage]) { + return [FIRAuthErrorUtils userTokenExpiredErrorWithMessage:serverDetailErrorMessage]; + } + + if ([shortErrorMessage isEqualToString:kTooManyRequestsErrorMessage]) { + return [FIRAuthErrorUtils tooManyRequestsErrorWithMessage:serverDetailErrorMessage]; + } + + if ([shortErrorMessage isEqualToString:kInvalidCustomTokenErrorMessage]) { + return [FIRAuthErrorUtils invalidCustomTokenErrorWithMessage:serverDetailErrorMessage]; + } + + if ([shortErrorMessage isEqualToString:kCustomTokenMismatch]) { + return [FIRAuthErrorUtils customTokenMistmatchErrorWithMessage:serverDetailErrorMessage]; + } + + if ([shortErrorMessage isEqualToString:kInvalidCredentialErrorMessage] || + [shortErrorMessage isEqualToString:kInvalidPendingToken]) { + return [FIRAuthErrorUtils invalidCredentialErrorWithMessage:serverDetailErrorMessage]; + } + + if ([shortErrorMessage isEqualToString:kUserDisabledErrorMessage]) { + return [FIRAuthErrorUtils userDisabledErrorWithMessage:serverDetailErrorMessage]; + } + + if ([shortErrorMessage isEqualToString:kOperationNotAllowedErrorMessage]) { + return [FIRAuthErrorUtils operationNotAllowedErrorWithMessage:serverDetailErrorMessage]; + } + + if ([shortErrorMessage isEqualToString:kPasswordLoginDisabledErrorMessage]) { + return [FIRAuthErrorUtils operationNotAllowedErrorWithMessage:serverDetailErrorMessage]; + } + + if ([shortErrorMessage isEqualToString:kEmailAlreadyInUseErrorMessage]) { + return [FIRAuthErrorUtils emailAlreadyInUseErrorWithEmail:nil]; + } + + if ([shortErrorMessage isEqualToString:kInvalidEmailErrorMessage]) { + return [FIRAuthErrorUtils invalidEmailErrorWithMessage:serverDetailErrorMessage]; + } + + // "INVALID_IDENTIFIER" can be returned by createAuthURI RPC. Considering email addresses are + // currently the only identifiers, we surface the FIRAuthErrorCodeInvalidEmail error code in this + // case. + if ([shortErrorMessage isEqualToString:kInvalidIdentifierErrorMessage]) { + return [FIRAuthErrorUtils invalidEmailErrorWithMessage:serverDetailErrorMessage]; + } + + if ([shortErrorMessage isEqualToString:kWrongPasswordErrorMessage]) { + return [FIRAuthErrorUtils wrongPasswordErrorWithMessage:serverDetailErrorMessage]; + } + + if ([shortErrorMessage isEqualToString:kCredentialTooOldErrorMessage]) { + return [FIRAuthErrorUtils requiresRecentLoginErrorWithMessage:serverDetailErrorMessage]; + } + + if ([shortErrorMessage isEqualToString:kInvalidUserTokenErrorMessage]) { + return [FIRAuthErrorUtils invalidUserTokenErrorWithMessage:serverDetailErrorMessage]; + } + + if ([shortErrorMessage isEqualToString:kFederatedUserIDAlreadyLinkedMessage]) { + FIROAuthCredential *credential; + NSString *email; + if ([response isKindOfClass:[FIRVerifyAssertionResponse class]]) { + FIRVerifyAssertionResponse *verifyAssertion = (FIRVerifyAssertionResponse *)response; + credential = + [[FIROAuthCredential alloc] initWithVerifyAssertionResponse:verifyAssertion]; + email = verifyAssertion.email; + } + return [FIRAuthErrorUtils credentialAlreadyInUseErrorWithMessage:serverDetailErrorMessage + credential:credential + email:email]; + } + + if ([shortErrorMessage isEqualToString:kWeakPasswordErrorMessagePrefix]) { + return [FIRAuthErrorUtils weakPasswordErrorWithServerResponseReason:serverDetailErrorMessage]; + } + + if ([shortErrorMessage isEqualToString:kExpiredActionCodeErrorMessage]) { + return [FIRAuthErrorUtils expiredActionCodeErrorWithMessage:serverDetailErrorMessage]; + } + + if ([shortErrorMessage isEqualToString:kInvalidActionCodeErrorMessage]) { + return [FIRAuthErrorUtils invalidActionCodeErrorWithMessage:serverDetailErrorMessage]; + } + + if ([shortErrorMessage isEqualToString:kMissingEmailErrorMessage]) { + return [FIRAuthErrorUtils missingEmailErrorWithMessage:serverDetailErrorMessage]; + } + + if ([shortErrorMessage isEqualToString:kInvalidSenderEmailErrorMessage]) { + return [FIRAuthErrorUtils invalidSenderErrorWithMessage:serverDetailErrorMessage]; + } + + if ([shortErrorMessage isEqualToString:kInvalidMessagePayloadErrorMessage]) { + return [FIRAuthErrorUtils invalidMessagePayloadErrorWithMessage:serverDetailErrorMessage]; + } + + if ([shortErrorMessage isEqualToString:kInvalidRecipientEmailErrorMessage]) { + return [FIRAuthErrorUtils invalidRecipientEmailErrorWithMessage:serverDetailErrorMessage]; + } + + if ([shortErrorMessage isEqualToString:kMissingIosBundleIDErrorMessage]) { + return [FIRAuthErrorUtils missingIosBundleIDErrorWithMessage:serverDetailErrorMessage]; + } + + if ([shortErrorMessage isEqualToString:kMissingAndroidPackageNameErrorMessage]) { + return [FIRAuthErrorUtils missingAndroidPackageNameErrorWithMessage:serverDetailErrorMessage]; + } + + if ([shortErrorMessage isEqualToString:kUnauthorizedDomainErrorMessage]) { + return [FIRAuthErrorUtils unauthorizedDomainErrorWithMessage:serverDetailErrorMessage]; + } + + if ([shortErrorMessage isEqualToString:kInvalidContinueURIErrorMessage]) { + return [FIRAuthErrorUtils invalidContinueURIErrorWithMessage:serverDetailErrorMessage]; + } + + if ([shortErrorMessage isEqualToString:kInvalidProviderIDErrorMessage]) { + return [FIRAuthErrorUtils invalidProviderIDErrorWithMessage:serverDetailErrorMessage]; + } + + if ([shortErrorMessage isEqualToString:kInvalidDynamicLinkDomainErrorMessage]) { + return [FIRAuthErrorUtils invalidDynamicLinkDomainErrorWithMessage:serverDetailErrorMessage]; + } + + if ([shortErrorMessage isEqualToString:kMissingContinueURIErrorMessage]) { + return [FIRAuthErrorUtils missingContinueURIErrorWithMessage:serverDetailErrorMessage]; + } + + if ([shortErrorMessage isEqualToString:kInvalidPhoneNumberErrorMessage]) { + return [FIRAuthErrorUtils invalidPhoneNumberErrorWithMessage:serverDetailErrorMessage]; + } + + if ([shortErrorMessage isEqualToString:kInvalidSessionInfoErrorMessage]) { + return [FIRAuthErrorUtils invalidVerificationIDErrorWithMessage:serverDetailErrorMessage]; + } + + if ([shortErrorMessage isEqualToString:kInvalidVerificationCodeErrorMessage]) { + return [FIRAuthErrorUtils invalidVerificationCodeErrorWithMessage:serverDetailErrorMessage]; + } + + if ([shortErrorMessage isEqualToString:kSessionExpiredErrorMessage]) { + return [FIRAuthErrorUtils sessionExpiredErrorWithMessage:serverDetailErrorMessage]; + } + + if ([shortErrorMessage isEqualToString:kMissingAppTokenErrorMessage]) { + return [FIRAuthErrorUtils missingAppTokenErrorWithUnderlyingError:nil]; + } + + if ([shortErrorMessage isEqualToString:kMissingAppCredentialErrorMessage]) { + return [FIRAuthErrorUtils missingAppCredentialWithMessage:serverDetailErrorMessage]; + } + + if ([shortErrorMessage isEqualToString:kInvalidAppCredentialErrorMessage]) { + return [FIRAuthErrorUtils invalidAppCredentialWithMessage:serverDetailErrorMessage]; + } + + if ([shortErrorMessage isEqualToString:kQuoutaExceededErrorMessage]) { + return [FIRAuthErrorUtils quotaExceededErrorWithMessage:serverErrorMessage]; + } + + if ([shortErrorMessage isEqualToString:kAppNotVerifiedErrorMessage]) { + return [FIRAuthErrorUtils appNotVerifiedErrorWithMessage:serverErrorMessage]; + } + + if ([shortErrorMessage isEqualToString:kMissingClientIdentifier]) { + return [FIRAuthErrorUtils missingClientIdentifierErrorWithMessage:serverErrorMessage]; + } + + if ([shortErrorMessage isEqualToString:kCaptchaCheckFailedErrorMessage]) { + return [FIRAuthErrorUtils captchaCheckFailedErrorWithMessage:serverErrorMessage]; + } + + // In this case we handle an error that might be specified in the underlying errors dictionary, + // the error message in determined based on the @c reason key in the dictionary. + if (errorDictionary[kErrorsKey]) { + // Check for underlying error with reason = keyInvalid; + id underlyingErrors = errorDictionary[kErrorsKey]; + if ([underlyingErrors isKindOfClass:[NSArray class]]) { + NSArray *underlyingErrorsArray = (NSArray *)underlyingErrors; + for (id underlyingError in underlyingErrorsArray) { + if ([underlyingError isKindOfClass:[NSDictionary class]]) { + NSDictionary *underlyingErrorDictionary = (NSDictionary *)underlyingError; + NSString *reason = underlyingErrorDictionary[kReasonKey]; + if ([reason hasPrefix:kInvalidKeyReasonValue]) { + return [FIRAuthErrorUtils invalidAPIKeyError]; + } + if ([reason isEqualToString:kAppNotAuthorizedReasonValue]) { + return [FIRAuthErrorUtils appNotAuthorizedError]; + } + } + } + } + } + return nil; +} + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/FIRAuthRPCRequest.h b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/FIRAuthRPCRequest.h new file mode 100644 index 0000000..9ca4f44 --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/FIRAuthRPCRequest.h @@ -0,0 +1,57 @@ +/* + * 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 + +@class FIRAuthRequestConfiguration; + +NS_ASSUME_NONNULL_BEGIN + +/** @protocol FIRAuthRPCRequest + @brief The generic interface for an RPC request needed by @c FIRAuthBackend. + */ +@protocol FIRAuthRPCRequest + +/** @fn requestURL + @brief Gets the request's full URL. + */ +- (NSURL *)requestURL; + +@optional + +/** @fn containsPostBody + @brief Returns whether the request contains a post body or not. Requests without a post body + are get requests. + @remarks The default implementation returns YES. + */ +- (BOOL)containsPostBody; + +/** @fn UnencodedHTTPRequestBodyWithError: + @brief Creates unencoded HTTP body representing the request. + @param error An out field for an error which occurred constructing the request. + @return The HTTP body data representing the request before any encoding, or nil for error. + */ +- (nullable id)unencodedHTTPRequestBodyWithError:(NSError *_Nullable *_Nullable)error; + +/** @fn requestConfiguration + @brief Obtains the request configurations if available. + @return Returns the request configurations. + */ +- (FIRAuthRequestConfiguration *)requestConfiguration; + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/FIRAuthRPCResponse.h b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/FIRAuthRPCResponse.h new file mode 100644 index 0000000..2b26161 --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/FIRAuthRPCResponse.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 + +NS_ASSUME_NONNULL_BEGIN + +/** @protocol FIRAuthRPCResponse + @brief The generic interface for an RPC response needed by @c FIRAuthBackend. + */ +@protocol FIRAuthRPCResponse + +/** @fn setFieldsWithDictionary:error: + @brief Sets the response instance from the decoded JSON response. + @param dictionary The dictionary decoded from HTTP JSON response. + @param error An out field for an error which occurred constructing the request. + @return Whether the operation was successful or not. + */ +- (BOOL)setWithDictionary:(NSDictionary *)dictionary + error:(NSError *_Nullable *_Nullable)error; + +@optional + +/** @fn clientErrorWithshortErrorMessage:detailErrorMessage + @brief This optional method allows response classes to create client errors given a short error + message and a detail error message from the server. + @param shortErrorMessage The short error message from the server. + @param detailErrorMessage The detailed error message from the server. + @return A client error, if any. + */ +- (nullable NSError *)clientErrorWithShortErrorMessage:(NSString *)shortErrorMessage + detailErrorMessage:(nullable NSString *)detailErrorMessage; + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/FIRAuthRequestConfiguration.h b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/FIRAuthRequestConfiguration.h new file mode 100644 index 0000000..91e8e71 --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/FIRAuthRequestConfiguration.h @@ -0,0 +1,52 @@ +/* + * 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 + +#import "FIRAuthRPCRequest.h" + +NS_ASSUME_NONNULL_BEGIN + +/** @class FIRAuthRequestConfiguration + @brief Defines configurations to be added to a request to Firebase Auth's backend. + */ +@interface FIRAuthRequestConfiguration : NSObject + +/** @property APIKey + @brief The Firebase Auth API key used in the request. + */ +@property(nonatomic, copy, readonly) NSString *APIKey; + +/** @property LanguageCode + @brief The language code used in the request. + */ +@property(nonatomic, copy, nullable) NSString *languageCode; + +/** @property additionalFrameworkMarker + @brief Additional framework marker that will be added as part of the header of every request. + */ +@property(nonatomic, copy, nullable) NSString *additionalFrameworkMarker; + +- (instancetype)init NS_UNAVAILABLE; + +/** @fn initWithRequestClass:APIKey:authLanguage: + @brief Designated initializer. + @param APIKey The API key to be used in the request. + */ +- (nullable instancetype)initWithAPIKey:(NSString *)APIKey NS_DESIGNATED_INITIALIZER; +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/FIRAuthRequestConfiguration.m b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/FIRAuthRequestConfiguration.m new file mode 100644 index 0000000..a4ee5dd --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/FIRAuthRequestConfiguration.m @@ -0,0 +1,34 @@ +/* + * 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 "FIRAuthRequestConfiguration.h" +#import "FIRAuthExceptionUtils.h" + +NS_ASSUME_NONNULL_BEGIN + +@implementation FIRAuthRequestConfiguration + +- (nullable instancetype)initWithAPIKey:(NSString *)APIKey { + self = [super init]; + if (self) { + _APIKey = [APIKey copy]; + } + return self; +} + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/FIRIdentityToolkitRequest.h b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/FIRIdentityToolkitRequest.h new file mode 100644 index 0000000..b5ca726 --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/FIRIdentityToolkitRequest.h @@ -0,0 +1,66 @@ +/* + * 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 + +#import "FIRAuthRequestConfiguration.h" + +@class FIRAuthRequestConfiguration; + +NS_ASSUME_NONNULL_BEGIN + +/** @class FIRIdentityToolkitRequest + @brief Represents a request to an identity toolkit endpoint. + */ +@interface FIRIdentityToolkitRequest : NSObject + +/** @property endpoint + @brief Gets the RPC's endpoint. + */ +@property(nonatomic, copy, readonly) NSString *endpoint; + +/** @property APIKey + @brief Gets the client's API key used for the request. + */ +@property(nonatomic, copy, readonly) NSString *APIKey; + +/** @fn init + @brief Please use initWithEndpoint:APIKey: + */ +- (instancetype)init NS_UNAVAILABLE; + +/** @fn initWithEndpoint:APIKey: + @brief Designated initializer. + @param endpoint The endpoint name. + @param requestConfiguration An object containing configurations to be added to the request. + */ +- (nullable instancetype)initWithEndpoint:(NSString *)endpoint + requestConfiguration:(FIRAuthRequestConfiguration *)requestConfiguration + NS_DESIGNATED_INITIALIZER; + +/** @fn requestURL + @brief Gets the request's full URL. + */ +- (NSURL *)requestURL; + +/** @fn requestConfiguration + @brief Gets the request's configuration. + */ +- (FIRAuthRequestConfiguration *)requestConfiguration; + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/FIRIdentityToolkitRequest.m b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/FIRIdentityToolkitRequest.m new file mode 100644 index 0000000..a1ab482 --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/FIRIdentityToolkitRequest.m @@ -0,0 +1,72 @@ +/* + * 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 "FIRIdentityToolkitRequest.h" + +NS_ASSUME_NONNULL_BEGIN + +/** @var kAPIURLFormat + @brief URL format for server API calls. + */ +static NSString *const kAPIURLFormat = @"https://%@/identitytoolkit/v3/relyingparty/%@?key=%@"; + +/** @var gAPIHost + @brief Host for server API calls. + */ +static NSString *gAPIHost = @"www.googleapis.com"; + +@implementation FIRIdentityToolkitRequest { + FIRAuthRequestConfiguration *_requestConfiguration; +} + +- (nullable instancetype)initWithEndpoint:(NSString *)endpoint + requestConfiguration:(FIRAuthRequestConfiguration *)requestConfiguration { + self = [super init]; + if (self) { + _endpoint = [endpoint copy]; + _APIKey = [requestConfiguration.APIKey copy]; + _requestConfiguration = requestConfiguration; + } + return self; +} + +- (BOOL)containsPostBody { + return YES; +} + +- (NSURL *)requestURL { + NSString *URLString = [NSString stringWithFormat:kAPIURLFormat, gAPIHost, _endpoint, _APIKey]; + NSURL *URL = [NSURL URLWithString:URLString]; + return URL; +} + +- (FIRAuthRequestConfiguration *)requestConfiguration { + return _requestConfiguration; +} + +#pragma mark - Internal API for development + ++ (NSString *)host { + return gAPIHost; +} + ++ (void)setHost:(NSString *)host { + gAPIHost = host; +} + +NS_ASSUME_NONNULL_END + +@end diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRCreateAuthURIRequest.h b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRCreateAuthURIRequest.h new file mode 100644 index 0000000..a4fb6f5 --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRCreateAuthURIRequest.h @@ -0,0 +1,88 @@ +/* + * 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 + +#import "FIRAuthRPCRequest.h" +#import "FIRIdentityToolkitRequest.h" + +NS_ASSUME_NONNULL_BEGIN + +/** @class FIRCreateAuthURIRequest + @brief Represents the parameters for the createAuthUri endpoint. + @see https://developers.google.com/identity/toolkit/web/reference/relyingparty/createAuthUri + */ +@interface FIRCreateAuthURIRequest : FIRIdentityToolkitRequest + +/** @property identifier + @brief The email or federated ID of the user. + */ +@property(nonatomic, copy) NSString *identifier; + +/** @property continueURI + @brief The URI to which the IDP redirects the user after the federated login flow. + */ +@property(nonatomic, copy) NSString *continueURI; + +/** @property openIDRealm + @brief Optional realm for OpenID protocol. The sub string "scheme://domain:port" of the param + "continueUri" is used if this is not set. + */ +@property(nonatomic, copy, nullable) NSString *openIDRealm; + +/** @property providerID + @brief The IdP ID. For white listed IdPs it's a short domain name e.g. google.com, aol.com, + live.net and yahoo.com. For other OpenID IdPs it's the OP identifier. + */ +@property(nonatomic, copy, nullable) NSString *providerID; + +/** @property clientID + @brief The relying party OAuth client ID. + */ +@property(nonatomic, copy, nullable) NSString *clientID; + +/** @property context + @brief The opaque value used by the client to maintain context info between the authentication + request and the IDP callback. + */ +@property(nonatomic, copy, nullable) NSString *context; + +/** @property appID + @brief The iOS client application's bundle identifier. + */ +@property(nonatomic, copy, nullable) NSString *appID; + +/** @fn initWithEndpoint:requestConfiguration:requestConfiguration. + @brief Please use initWithIdentifier:continueURI:requestConfiguration: instead. + */ +- (nullable instancetype)initWithEndpoint:(NSString *)endpoint + requestConfiguration:(FIRAuthRequestConfiguration *)requestConfiguration + NS_UNAVAILABLE; + +/** @fn initWithIdentifier:continueURI:requestConfiguration: + @brief Designated initializer. + @param identifier The email or federated ID of the user. + @param continueURI The URI to which the IDP redirects the user after the federated login flow. + @param requestConfiguration An object containing configurations to be added to the request. + */ +- (nullable instancetype)initWithIdentifier:(NSString *)identifier + continueURI:(NSString *)continueURI + requestConfiguration:(FIRAuthRequestConfiguration *)requestConfiguration + NS_DESIGNATED_INITIALIZER; + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRCreateAuthURIRequest.m b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRCreateAuthURIRequest.m new file mode 100644 index 0000000..de97d4d --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRCreateAuthURIRequest.m @@ -0,0 +1,99 @@ +/* + * 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 "FIRCreateAuthURIRequest.h" + +NS_ASSUME_NONNULL_BEGIN + +/** @var kCreateAuthURIEndpoint + @brief The "createAuthUri" endpoint. + */ +static NSString *const kCreateAuthURIEndpoint = @"createAuthUri"; + +/** @var kProviderIDKey + @brief The key for the "providerId" value in the request. + */ +static NSString *const kProviderIDKey = @"providerId"; + +/** @var kIdentifierKey + @brief The key for the "identifier" value in the request. + */ +static NSString *const kIdentifierKey = @"identifier"; + +/** @var kContinueURIKey + @brief The key for the "continueUri" value in the request. + */ +static NSString *const kContinueURIKey = @"continueUri"; + +/** @var kOpenIDRealmKey + @brief The key for the "openidRealm" value in the request. + */ +static NSString *const kOpenIDRealmKey = @"openidRealm"; + +/** @var kClientIDKey + @brief The key for the "clientId" value in the request. + */ +static NSString *const kClientIDKey = @"clientId"; + +/** @var kContextKey + @brief The key for the "context" value in the request. + */ +static NSString *const kContextKey = @"context"; + +/** @var kAppIDKey + @brief The key for the "appId" value in the request. + */ +static NSString *const kAppIDKey = @"appId"; + +@implementation FIRCreateAuthURIRequest + +- (nullable instancetype)initWithIdentifier:(NSString *)identifier + continueURI:(NSString *)continueURI + requestConfiguration:(FIRAuthRequestConfiguration *)requestConfiguration { + self = [super initWithEndpoint:kCreateAuthURIEndpoint requestConfiguration:requestConfiguration]; + if (self) { + _identifier = [identifier copy]; + _continueURI = [continueURI copy]; + } + return self; +} + +- (nullable id)unencodedHTTPRequestBodyWithError:(NSError *_Nullable *_Nullable)error { + NSMutableDictionary *postBody = [@{ + kIdentifierKey : _identifier, + kContinueURIKey : _continueURI + } mutableCopy]; + if (_providerID) { + postBody[kProviderIDKey] = _providerID; + } + if (_openIDRealm) { + postBody[kOpenIDRealmKey] = _openIDRealm; + } + if (_clientID) { + postBody[kClientIDKey] = _clientID; + } + if (_context) { + postBody[kContextKey] = _context; + } + if (_appID) { + postBody[kAppIDKey] = _appID; + } + return postBody; +} + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRCreateAuthURIResponse.h b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRCreateAuthURIResponse.h new file mode 100644 index 0000000..8e8f7b0 --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRCreateAuthURIResponse.h @@ -0,0 +1,61 @@ +/* + * 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 + +#import "FIRAuthRPCResponse.h" + +NS_ASSUME_NONNULL_BEGIN + +/** @class FIRCreateAuthURIResponse + @brief Represents the parameters for the createAuthUri endpoint. + @see https://developers.google.com/identity/toolkit/web/reference/relyingparty/createAuthUri + */ +@interface FIRCreateAuthURIResponse : NSObject + +/** @property authUri + @brief The URI used by the IDP to authenticate the user. + */ +@property(nonatomic, strong, readonly, nullable) NSString *authURI; + +/** @property registered + @brief Whether the user is registered if the identifier is an email. + */ +@property(nonatomic, assign, readonly) BOOL registered; + +/** @property providerId + @brief The provider ID of the auth URI. + */ +@property(nonatomic, strong, readonly, nullable) NSString *providerID; + +/** @property forExistingProvider + @brief True if the authUri is for user's existing provider. + */ +@property(nonatomic, assign, readonly) BOOL forExistingProvider; + +/** @property allProviders + @brief A list of provider IDs the passed @c identifier could use to sign in with. + */ +@property(nonatomic, copy, readonly, nullable) NSArray *allProviders; + +/** @property signinMethods + @brief A list of sign-in methods available for the passed @c identifier. + */ +@property(nonatomic, copy, readonly, nullable) NSArray *signinMethods; + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRCreateAuthURIResponse.m b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRCreateAuthURIResponse.m new file mode 100644 index 0000000..474582e --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRCreateAuthURIResponse.m @@ -0,0 +1,36 @@ +/* + * 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 "FIRCreateAuthURIResponse.h" + +NS_ASSUME_NONNULL_BEGIN + +@implementation FIRCreateAuthURIResponse + +- (BOOL)setWithDictionary:(NSDictionary *)dictionary + error:(NSError *_Nullable *_Nullable)error { + _providerID = [dictionary[@"providerId"] copy]; + _authURI = [dictionary[@"authUri"] copy]; + _registered = [dictionary[@"registered"] boolValue]; + _forExistingProvider = [dictionary[@"forExistingProvider"] boolValue]; + _allProviders = [dictionary[@"allProviders"] copy]; + _signinMethods = [dictionary[@"signinMethods"] copy]; + return YES; +} + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRDeleteAccountRequest.h b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRDeleteAccountRequest.h new file mode 100644 index 0000000..89a7d26 --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRDeleteAccountRequest.h @@ -0,0 +1,50 @@ +/* + * 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 + +#import "FIRAuthRPCRequest.h" +#import "FIRIdentityToolkitRequest.h" + +NS_ASSUME_NONNULL_BEGIN + +/** @class FIRDeleteAccountRequest + @brief Represents the parameters for the deleteAccount endpoint. + @see https://developers.google.com/identity/toolkit/web/reference/relyingparty/deleteAccount + */ +@interface FIRDeleteAccountRequest : FIRIdentityToolkitRequest + +/** @fn initWithEndpoint:requestConfiguration:requestConfiguration. + @brief Please use initWitLocalID:accessToken:requestConfiguration instead. + */ +- (nullable instancetype)initWithEndpoint:(NSString *)endpoint + requestConfiguration:(FIRAuthRequestConfiguration *)requestConfiguration + NS_UNAVAILABLE; + +/** @fn initWitLocalID:accessToken:requestConfiguration. + @brief Designated initializer. + @param localID The local ID. + @param accessToken The access token. + @param requestConfiguration An object containing configurations to be added to the request. + */ +- (nullable instancetype)initWitLocalID:(NSString *)localID + accessToken:(NSString *)accessToken + requestConfiguration:(FIRAuthRequestConfiguration *)requestConfiguration + NS_DESIGNATED_INITIALIZER; + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRDeleteAccountRequest.m b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRDeleteAccountRequest.m new file mode 100644 index 0000000..701d446 --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRDeleteAccountRequest.m @@ -0,0 +1,69 @@ +/* + * 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 "FIRDeleteAccountRequest.h" + +NS_ASSUME_NONNULL_BEGIN + +/** @var kCreateAuthURIEndpoint + @brief The "deleteAccount" endpoint. + */ +static NSString *const kDeleteAccountEndpoint = @"deleteAccount"; + +/** @var kIDTokenKey + @brief The key for the "idToken" value in the request. This is actually the STS Access Token, + despite it's confusing (backwards compatiable) parameter name. + */ +static NSString *const kIDTokenKey = @"idToken"; + +/** @var kLocalIDKey + @brief The key for the "localID" value in the request. + */ +static NSString *const kLocalIDKey = @"localId"; + +@implementation FIRDeleteAccountRequest { + /** @var _accessToken + @brief The STS Access Token of the authenticated user. + */ + NSString *_accessToken; + + /** @var _localID + @brief The localID of the user. + */ + NSString *_localID; +} + +- (nullable instancetype)initWitLocalID:(NSString *)localID + accessToken:(NSString *)accessToken + requestConfiguration:(FIRAuthRequestConfiguration *)requestConfiguration { + self = [super initWithEndpoint:kDeleteAccountEndpoint requestConfiguration:requestConfiguration]; + if (self) { + _localID = [localID copy]; + _accessToken = [accessToken copy]; + } + return self; +} + +- (nullable id)unencodedHTTPRequestBodyWithError:(NSError *_Nullable *_Nullable)error { + NSMutableDictionary *postBody = [NSMutableDictionary dictionary]; + postBody[kIDTokenKey] = _accessToken; + postBody[kLocalIDKey] = _localID; + return postBody; +} + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRDeleteAccountResponse.h b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRDeleteAccountResponse.h new file mode 100644 index 0000000..cf09f94 --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRDeleteAccountResponse.h @@ -0,0 +1,30 @@ +/* + * 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 + +#import "FIRAuthRPCResponse.h" + +NS_ASSUME_NONNULL_BEGIN + +/** @class FIRDeleteAccountResponse + @brief Represents the response from the deleteAccount endpoint. + @see https://developers.google.com/identity/toolkit/web/reference/relyingparty/deleteAccount + */ +@interface FIRDeleteAccountResponse : NSObject +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRDeleteAccountResponse.m b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRDeleteAccountResponse.m new file mode 100644 index 0000000..d75d2eb --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRDeleteAccountResponse.m @@ -0,0 +1,30 @@ +/* + * 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 "FIRDeleteAccountResponse.h" + +NS_ASSUME_NONNULL_BEGIN + +@implementation FIRDeleteAccountResponse + +- (BOOL)setWithDictionary:(NSDictionary *)dictionary + error:(NSError *_Nullable *_Nullable)error { + return YES; +} + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIREmailLinkSignInRequest.h b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIREmailLinkSignInRequest.h new file mode 100644 index 0000000..e1b10d8 --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIREmailLinkSignInRequest.h @@ -0,0 +1,66 @@ +/* + * 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 + +#import "FIRAuthRPCRequest.h" +#import "FIRIdentityToolkitRequest.h" + +NS_ASSUME_NONNULL_BEGIN + +/** @class FIREmailLinkSignInRequest + @brief Represents the parameters for the emailLinkSignin endpoint. + */ +@interface FIREmailLinkSignInRequest : FIRIdentityToolkitRequest + +#pragma mark - Components of "postBody" + +/** @property email + @brief The email identifier used to complete the email link sign-in. + */ +@property(nonatomic, copy, readonly) NSString *email; + +/** @property oobCode + @brief The OOB code used to complete the email link sign-in flow. + */ +@property(nonatomic, copy, readonly) NSString *oobCode; + +/** @property idToken + @brief The ID Token code potentially used to complete the email link sign-in flow. + */ +@property(nonatomic, copy) NSString *IDToken; + +/** @fn initWithEndpoint:requestConfiguration: + @brief Please use initWithProviderID:requestConfifuration instead. + */ +- (instancetype)initWithEndpoint:(NSString *)endpoint + requestConfiguration:(FIRAuthRequestConfiguration *)requestConfiguration NS_UNAVAILABLE; + +/** @fn initWithProviderID:requestConfifuration + @brief Designated initializer. + @param email The email identifier used to complete hte email link sign-in flow. + @param oobCode The OOB code used to complete the email link sign-in flow. + @param requestConfiguration An object containing configurations to be added to the request. + + */ +- (instancetype)initWithEmail:(NSString *)email + oobCode:(NSString *)oobCode + requestConfiguration:(FIRAuthRequestConfiguration *)requestConfiguration + NS_DESIGNATED_INITIALIZER; + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIREmailLinkSignInRequest.m b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIREmailLinkSignInRequest.m new file mode 100644 index 0000000..2750f9f --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIREmailLinkSignInRequest.m @@ -0,0 +1,74 @@ +/* + * 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 "FIREmailLinkSignInRequest.h" + +NS_ASSUME_NONNULL_BEGIN + +/** @var kEmailLinkSigninEndpoint + @brief The "EmailLinkSignin" endpoint. + */ +static NSString *const kEmailLinkSigninEndpoint = @"emailLinkSignin"; + +/** @var kEmailKey + @brief The key for the "identifier" value in the request. + */ +static NSString *const kEmailKey = @"email"; + +/** @var kEmailLinkKey + @brief The key for the "emailLink" value in the request. + */ +static NSString *const kOOBCodeKey = @"oobCode"; + +/** @var kIDTokenKey + @brief The key for the "IDToken" value in the request. + */ +static NSString *const kIDTokenKey = @"idToken"; + +/** @var kPostBodyKey + @brief The key for the "postBody" value in the request. + */ +static NSString *const kPostBodyKey = @"postBody"; + +@implementation FIREmailLinkSignInRequest + +- (instancetype)initWithEmail:(NSString *)email + oobCode:(NSString *)oobCode + requestConfiguration:(FIRAuthRequestConfiguration *)requestConfiguration { + self = [super initWithEndpoint:kEmailLinkSigninEndpoint + requestConfiguration:requestConfiguration]; + if (self) { + _email = email; + _oobCode = oobCode; + } + return self; +} + +- (nullable id)unencodedHTTPRequestBodyWithError:(NSError *_Nullable *_Nullable)error { + NSMutableDictionary *postBody = [@{ + kEmailKey : _email, + kOOBCodeKey : _oobCode, + } mutableCopy]; + + if (_IDToken) { + postBody[kIDTokenKey] = _IDToken; + } + return postBody; +} + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIREmailLinkSignInResponse.h b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIREmailLinkSignInResponse.h new file mode 100644 index 0000000..df0a127 --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIREmailLinkSignInResponse.h @@ -0,0 +1,54 @@ +/* + * 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 + +#import "FIRAuthRPCResponse.h" + +NS_ASSUME_NONNULL_BEGIN + +/** @class FIRVerifyAssertionResponse + @brief Represents the response from the emailLinkSignin endpoint. + */ +@interface FIREmailLinkSignInResponse : NSObject + +/** @property IDToken + @brief The ID token in the email link sign-in response. + */ +@property(nonatomic, copy, readonly) NSString *IDToken; + +/** @property email + @brief The email returned by the IdP. + */ +@property(nonatomic, strong, readonly, nullable) NSString *email; + +/** @property refreshToken + @brief The refreshToken returned by the server. + */ +@property(nonatomic, strong, readonly, nullable) NSString *refreshToken; + +/** @property approximateExpirationDate + @brief The approximate expiration date of the access token. + */ +@property(nonatomic, copy, readonly, nullable) NSDate *approximateExpirationDate; + +/** @property isNewUser + @brief Flag indicating that the user signing in is a new user and not a returning user. + */ +@property(nonatomic, assign) BOOL isNewUser; + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIREmailLinkSignInResponse.m b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIREmailLinkSignInResponse.m new file mode 100644 index 0000000..f58cab5 --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIREmailLinkSignInResponse.m @@ -0,0 +1,36 @@ +/* + * 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 "FIREmailLinkSignInResponse.h" + +NS_ASSUME_NONNULL_BEGIN + +@implementation FIREmailLinkSignInResponse + +- (BOOL)setWithDictionary:(NSDictionary *)dictionary + error:(NSError *_Nullable *_Nullable)error { + _email = [dictionary[@"email"] copy]; + _IDToken = [dictionary[@"idToken"] copy]; + _isNewUser = [dictionary[@"isNewUser"] boolValue]; + _refreshToken = [dictionary[@"refreshToken"] copy]; + _approximateExpirationDate = [dictionary[@"expiresIn"] isKindOfClass:[NSString class]] ? + [NSDate dateWithTimeIntervalSinceNow:[dictionary[@"expiresIn"] doubleValue]] : nil; + return YES; +} + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRGetAccountInfoRequest.h b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRGetAccountInfoRequest.h new file mode 100644 index 0000000..a5a8a20 --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRGetAccountInfoRequest.h @@ -0,0 +1,53 @@ +/* + * 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 + +#import "FIRAuthRPCRequest.h" +#import "FIRIdentityToolkitRequest.h" + +NS_ASSUME_NONNULL_BEGIN + +/** @class FIRGetAccountInfoRequest + @brief Represents the parameters for the getAccountInfo endpoint. + @see https://developers.google.com/identity/toolkit/web/reference/relyingparty/getAccountInfo + */ +@interface FIRGetAccountInfoRequest : FIRIdentityToolkitRequest + +/** @property accessToken + @brief The STS Access Token for the authenticated user. + */ +@property(nonatomic, copy) NSString *accessToken; + +/** @fn initWithEndpoint:requestConfiguration:requestConfiguration + @brief Please use initWithAccessToken:requestConfiguration: instead. + */ +- (nullable instancetype)initWithEndpoint:(NSString *)endpoint + requestConfiguration:(FIRAuthRequestConfiguration *)requestConfiguration + NS_UNAVAILABLE; + +/** @fn initWithAccessToken:requestConfiguration + @brief Designated initializer. + @param accessToken The Access Token of the authenticated user. + @param requestConfiguration An object containing configurations to be added to the request. + */ +- (nullable instancetype)initWithAccessToken:(NSString *)accessToken + requestConfiguration:(FIRAuthRequestConfiguration *)requestConfiguration + NS_DESIGNATED_INITIALIZER; + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRGetAccountInfoRequest.m b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRGetAccountInfoRequest.m new file mode 100644 index 0000000..e707937 --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRGetAccountInfoRequest.m @@ -0,0 +1,52 @@ +/* + * 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 "FIRGetAccountInfoRequest.h" + +NS_ASSUME_NONNULL_BEGIN + +/** @var kGetAccountInfoEndpoint + @brief The "getAccountInfo" endpoint. + */ +static NSString *const kGetAccountInfoEndpoint = @"getAccountInfo"; + +/** @var kIDTokenKey + @brief The key for the "idToken" value in the request. This is actually the STS Access Token, + despite it's confusing (backwards compatiable) parameter name. + */ +static NSString *const kIDTokenKey = @"idToken"; + +@implementation FIRGetAccountInfoRequest + +- (nullable instancetype)initWithAccessToken:(NSString *)accessToken + requestConfiguration:(FIRAuthRequestConfiguration *)requestConfiguration { + self = [super initWithEndpoint:kGetAccountInfoEndpoint + requestConfiguration:requestConfiguration]; + if (self) { + _accessToken = [accessToken copy]; + } + return self; +} + +- (nullable id)unencodedHTTPRequestBodyWithError:(NSError *_Nullable *_Nullable)error { + return @{ + kIDTokenKey : _accessToken + }; +} + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRGetAccountInfoResponse.h b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRGetAccountInfoResponse.h new file mode 100644 index 0000000..6c30dbe --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRGetAccountInfoResponse.h @@ -0,0 +1,156 @@ +/* + * 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 + +#import "FIRAuthRPCResponse.h" + +NS_ASSUME_NONNULL_BEGIN + +/** @class FIRGetAccountInfoResponseProviderUserInfo + @brief Represents the provider user info part of the response from the getAccountInfo endpoint. + @see https://developers.google.com/identity/toolkit/web/reference/relyingparty/getAccountInfo + */ +@interface FIRGetAccountInfoResponseProviderUserInfo : NSObject + +/** @property providerID + @brief The ID of the identity provider. + */ +@property(nonatomic, strong, readonly, nullable) NSString *providerID; + +/** @property displayName + @brief The user's display name at the identity provider. + */ +@property(nonatomic, strong, readonly, nullable) NSString *displayName; + +/** @property photoURL + @brief The user's photo URL at the identity provider. + */ +@property(nonatomic, strong, readonly, nullable) NSURL *photoURL; + +/** @property federatedID + @brief The user's identifier at the identity provider. + */ +@property(nonatomic, strong, readonly, nullable) NSString *federatedID; + +/** @property email + @brief The user's email at the identity provider. + */ +@property(nonatomic, strong, readonly, nullable) NSString *email; + +/** @property phoneNumber + @brief A phone number associated with the user. + */ +@property(nonatomic, readonly, nullable) NSString *phoneNumber; + +/** @fn init + @brief Please use initWithDictionary: + */ +- (instancetype)init NS_UNAVAILABLE; + +/** @fn initWithAPIKey: + @brief Designated initializer. + @param dictionary The provider user info data from endpoint. + */ +- (instancetype)initWithDictionary:(NSDictionary *)dictionary NS_DESIGNATED_INITIALIZER; + +@end + +/** @class FIRGetAccountInfoResponseUser + @brief Represents the firebase user info part of the response from the getAccountInfo endpoint. + @see https://developers.google.com/identity/toolkit/web/reference/relyingparty/getAccountInfo + */ +@interface FIRGetAccountInfoResponseUser : NSObject + +/** @property localID + @brief The ID of the user. + */ +@property(nonatomic, strong, readonly, nullable) NSString *localID; + +/** @property email + @brief The email or the user. + */ +@property(nonatomic, strong, readonly, nullable) NSString *email; + +/** @property emailVerified + @brief Whether the email has been verified. + */ +@property(nonatomic, assign, readonly) BOOL emailVerified; + +/** @property displayName + @brief The display name of the user. + */ +@property(nonatomic, strong, readonly, nullable) NSString *displayName; + +/** @property photoURL + @brief The user's photo URL. + */ +@property(nonatomic, strong, readonly, nullable) NSURL *photoURL; + +/** @property creationDate + @brief The user's creation date. + */ +@property(nonatomic, strong, readonly, nullable) NSDate *creationDate; + +/** @property lastSignInDate + @brief The user's last login date. + */ +@property(nonatomic, strong, readonly, nullable) NSDate *lastLoginDate; + +/** @property providerUserInfo + @brief The user's profiles at the associated identity providers. + */ +@property(nonatomic, strong, readonly, nullable) + NSArray *providerUserInfo; + +/** @property passwordHash + @brief Information about user's password. + @remarks This is not necessarily the hash of user's actual password. + */ +@property(nonatomic, strong, readonly, nullable) NSString *passwordHash; + +/** @property phoneNumber + @brief A phone number associated with the user. + */ +@property(nonatomic, readonly, nullable) NSString *phoneNumber; + +/** @fn init + @brief Please use initWithDictionary: + */ +- (instancetype)init NS_UNAVAILABLE; + +/** @fn initWithAPIKey: + @brief Designated initializer. + @param dictionary The provider user info data from endpoint. + */ +- (instancetype)initWithDictionary:(NSDictionary *)dictionary NS_DESIGNATED_INITIALIZER; + +@end + +/** @class FIRGetAccountInfoResponse + @brief Represents the response from the setAccountInfo endpoint. + @see https://developers.google.com/identity/toolkit/web/reference/relyingparty/getAccountInfo + */ +@interface FIRGetAccountInfoResponse : NSObject + +/** @property providerUserInfo + @brief The requested users' profiles. + */ +@property(nonatomic, strong, readonly, nullable) NSArray *users; + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRGetAccountInfoResponse.m b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRGetAccountInfoResponse.m new file mode 100644 index 0000000..cb78b78 --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRGetAccountInfoResponse.m @@ -0,0 +1,108 @@ +/* + * 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 "FIRGetAccountInfoResponse.h" + +#import "FIRAuthErrorUtils.h" + +NS_ASSUME_NONNULL_BEGIN + +/** @var kErrorKey + @brief The key for the "error" value in JSON responses from the server. + */ +static NSString *const kErrorKey = @"error"; + +@implementation FIRGetAccountInfoResponseProviderUserInfo + +- (instancetype)initWithDictionary:(NSDictionary *)dictionary { + self = [super init]; + if (self) { + _providerID = [dictionary[@"providerId"] copy]; + _displayName = [dictionary[@"displayName"] copy]; + NSString *photoURL = dictionary[@"photoUrl"]; + if (photoURL) { + _photoURL = [NSURL URLWithString:photoURL]; + } + _federatedID = [dictionary[@"federatedId"] copy]; + _email = [dictionary[@"email"] copy]; + _phoneNumber = [dictionary[@"phoneNumber"] copy]; + } + return self; +} + +@end + +@implementation FIRGetAccountInfoResponseUser + +- (instancetype)initWithDictionary:(NSDictionary *)dictionary { + self = [super init]; + if (self) { + NSArray *providerUserInfoData = dictionary[@"providerUserInfo"]; + if (providerUserInfoData) { + NSMutableArray *providerUserInfoArray = + [NSMutableArray arrayWithCapacity:providerUserInfoData.count]; + for (NSDictionary *dictionary in providerUserInfoData) { + [providerUserInfoArray addObject: + [[FIRGetAccountInfoResponseProviderUserInfo alloc] initWithDictionary:dictionary]]; + } + _providerUserInfo = [providerUserInfoArray copy]; + } + _localID = [dictionary[@"localId"] copy]; + _displayName = [dictionary[@"displayName"] copy]; + _email = [dictionary[@"email"] copy]; + NSString *photoURL = dictionary[@"photoUrl"]; + if (photoURL) { + _photoURL = [NSURL URLWithString:photoURL]; + } + if ([dictionary[@"createdAt"] isKindOfClass:[NSString class]]) { + // Divide by 1000 in order to convert miliseconds to seconds. + NSTimeInterval creationDateTimeInterval = [dictionary[@"createdAt"] doubleValue] / 1000; + _creationDate = [NSDate dateWithTimeIntervalSince1970:creationDateTimeInterval]; + } + if ([dictionary[@"lastLoginAt"] isKindOfClass:[NSString class]]) { + // Divide by 1000 in order to convert miliseconds to seconds + NSTimeInterval creationDateTimeInterval = [dictionary[@"lastLoginAt"] doubleValue] / 1000; + _lastLoginDate = [NSDate dateWithTimeIntervalSince1970:creationDateTimeInterval]; + } + _emailVerified = [dictionary[@"emailVerified"] boolValue]; + _passwordHash = [dictionary[@"passwordHash"] copy]; + _phoneNumber = [dictionary[@"phoneNumber"] copy]; + } + return self; +} + +@end + +@implementation FIRGetAccountInfoResponse + +- (BOOL)setWithDictionary:(NSDictionary *)dictionary + error:(NSError *_Nullable *_Nullable)error { + NSArray *usersData = dictionary[@"users"]; + // The client side never sends a getAccountInfo request with multiple localID, so only one user + // data is expected in the response. + if (![usersData isKindOfClass:[NSArray class]] || usersData.count != 1) { + if (error) { + *error = [FIRAuthErrorUtils unexpectedResponseWithDeserializedResponse:dictionary]; + } + return NO; + } + _users = @[ [[FIRGetAccountInfoResponseUser alloc] initWithDictionary:usersData.firstObject] ]; + return YES; +} + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRGetOOBConfirmationCodeRequest.h b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRGetOOBConfirmationCodeRequest.h new file mode 100644 index 0000000..b74f2f8 --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRGetOOBConfirmationCodeRequest.h @@ -0,0 +1,180 @@ +/* + * 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 + +#import "FIRAuthRPCRequest.h" +#import "FIRIdentityToolkitRequest.h" + +@class FIRActionCodeSettings; + +NS_ASSUME_NONNULL_BEGIN + +/** @enum FIRGetOOBConfirmationCodeRequestType + @brief Types of OOB Confirmation Code requests. + */ +typedef NS_ENUM(NSInteger, FIRGetOOBConfirmationCodeRequestType) { + /** @var FIRGetOOBConfirmationCodeRequestTypePasswordReset + @brief Requests a password reset code. + */ + FIRGetOOBConfirmationCodeRequestTypePasswordReset, + + /** @var FIRGetOOBConfirmationCodeRequestTypeVerifyEmail + @brief Requests an email verification code. + */ + FIRGetOOBConfirmationCodeRequestTypeVerifyEmail, + + /** @var FIRGetOOBConfirmationCodeRequestTypeEmailLink + @brief Requests an email sign-in link. + */ + FIRGetOOBConfirmationCodeRequestTypeEmailLink, + + /** @var FIRGetOOBConfirmationCodeRequestTypeVerifyBeforeUpdateEmail + @brief Requests an verify before update email. + */ + FIRGetOOBConfirmationCodeRequestTypeVerifyBeforeUpdateEmail, +}; + +/** @enum FIRGetOOBConfirmationCodeRequest + @brief Represents the parameters for the getOOBConfirmationCode endpoint. + */ +@interface FIRGetOOBConfirmationCodeRequest : FIRIdentityToolkitRequest + +/** @property requestType + @brief The types of OOB Confirmation Code to request. + */ +@property(nonatomic, assign, readonly) FIRGetOOBConfirmationCodeRequestType requestType; + +/** @property email + @brief The email of the user. + @remarks For password reset. + */ +@property(nonatomic, copy, nullable, readonly) NSString *email; + +/** @property updatedEmail + @brief The new email to be updated. + @remarks For verifyBeforeUpdateEmail. + */ +@property(nonatomic, copy, nullable, readonly) NSString *updatedEmail; + +/** @property accessToken + @brief The STS Access Token of the authenticated user. + @remarks For email change. + */ +@property(nonatomic, copy, nullable, readonly) NSString *accessToken; + +/** @property continueURL + @brief This URL represents the state/Continue URL in the form of a universal link. + */ +@property(nonatomic, copy, nullable, readonly) NSString *continueURL; + +/** @property iOSBundleID + @brief The iOS bundle Identifier, if available. + */ +@property(nonatomic, copy, nullable, readonly) NSString *iOSBundleID; + +/** @property androidPackageName + @brief The Android package name, if available. + */ +@property(nonatomic, copy, nullable, readonly) NSString *androidPackageName; + +/** @property androidMinimumVersion + @brief The minimum Android version supported, if available. + */ +@property(nonatomic, copy, nullable, readonly) NSString *androidMinimumVersion; + +/** @property androidInstallIfNotAvailable + @brief Indicates whether or not the Android app should be installed if not already available. + */ +@property(nonatomic, assign, readonly) BOOL androidInstallApp; + +/** @property handleCodeInApp + @brief Indicates whether the action code link will open the app directly or after being + redirected from a Firebase owned web widget. + */ +@property(assign, nonatomic) BOOL handleCodeInApp; + +/** @property dynamicLinkDomain + @brief The Firebase Dynamic Link domain used for out of band code flow. + */ +@property(copy, nonatomic, nullable) NSString *dynamicLinkDomain; + + +/** @fn passwordResetRequestWithEmail:actionCodeSettings:requestConfiguration: + @brief Creates a password reset request. + @param email The user's email address. + @param actionCodeSettings An object of FIRActionCodeSettings which specifies action code + settings to be applied to the password reset request. + @param requestConfiguration An object containing configurations to be added to the request. + @return A password reset request. + */ ++ (nullable FIRGetOOBConfirmationCodeRequest *) + passwordResetRequestWithEmail:(NSString *)email + actionCodeSettings:(nullable FIRActionCodeSettings *)actionCodeSettings + requestConfiguration:(FIRAuthRequestConfiguration *)requestConfiguration; + +/** @fn verifyEmailRequestWithAccessToken:actionCodeSettings:requestConfiguration: + @brief Creates a password reset request. + @param accessToken The user's STS Access Token. + @param actionCodeSettings An object of FIRActionCodeSettings which specifies action code + settings to be applied to the email verification request. + @param requestConfiguration An object containing configurations to be added to the request. + @return A password reset request. + */ ++ (nullable FIRGetOOBConfirmationCodeRequest *) + verifyEmailRequestWithAccessToken:(NSString *)accessToken + actionCodeSettings:(nullable FIRActionCodeSettings *)actionCodeSettings + requestConfiguration:(FIRAuthRequestConfiguration *)requestConfiguration; + +/** @fn signInWithEmailLinkRequest:actionCodeSettings:requestConfiguration: + @brief Creates a sign-in with email link. + @param email The user's email address. + @param actionCodeSettings An object of FIRActionCodeSettings which specifies action code + settings to be applied to the email sign-in link. + @param requestConfiguration An object containing configurations to be added to the request. + @return An email sign-in link request. + */ ++ (nullable FIRGetOOBConfirmationCodeRequest *) + signInWithEmailLinkRequest:(NSString *)email + actionCodeSettings:(nullable FIRActionCodeSettings *)actionCodeSettings + requestConfiguration:(FIRAuthRequestConfiguration *)requestConfiguration; + + +/** @fn verifyBeforeUpdateEmailWithAccessToken:newEmail:actionCodeSettings:requestConfiguration: + @brief Creates a verifyBeforeUpdateEmail request. + @param accessToken The user's STS Access Token. + @param newEmail The user's email address to be updated. + @param actionCodeSettings An object of FIRActionCodeSettings which specifies action code + settings to be applied to the password reset request. + @param requestConfiguration An object containing configurations to be added to the request. + @return A verifyBeforeUpdateEmail request. + */ ++ (nullable FIRGetOOBConfirmationCodeRequest *) + verifyBeforeUpdateEmailWithAccessToken:(NSString *)accessToken + newEmail:(NSString *)newEmail + actionCodeSettings:(nullable FIRActionCodeSettings *)actionCodeSettings + requestConfiguration:(FIRAuthRequestConfiguration *)requestConfiguration; + +/** @fn init + @brief Please use a factory method. + */ +- (nullable instancetype)initWithEndpoint:(NSString *)endpoint + requestConfiguration:(FIRAuthRequestConfiguration *)requestConfiguration + NS_UNAVAILABLE; + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRGetOOBConfirmationCodeRequest.m b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRGetOOBConfirmationCodeRequest.m new file mode 100644 index 0000000..ad6adcb --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRGetOOBConfirmationCodeRequest.m @@ -0,0 +1,288 @@ +/* + * 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 "FIRGetOOBConfirmationCodeRequest.h" + +#import "FIRActionCodeSettings.h" + +#import "FIRAuthErrorUtils.h" +#import "FIRAuth_Internal.h" + +NS_ASSUME_NONNULL_BEGIN + +/** @var kEndpoint + @brief The getOobConfirmationCode endpoint name. + */ +static NSString *const kGetOobConfirmationCodeEndpoint = @"getOobConfirmationCode"; + +/** @var kRequestTypeKey + @brief The name of the required "requestType" property in the request. + */ +static NSString *const kRequestTypeKey = @"requestType"; + +/** @var kEmailKey + @brief The name of the "email" property in the request. + */ +static NSString *const kEmailKey = @"email"; + +/** @var kNewEmailKey + @brief The name of the "newEmail" property in the request. + */ +static NSString *const kNewEmailKey = @"newEmail"; + +/** @var kIDTokenKey + @brief The key for the "idToken" value in the request. This is actually the STS Access Token, + despite it's confusing (backwards compatiable) parameter name. + */ +static NSString *const kIDTokenKey = @"idToken"; + +/** @var kContinueURLKey + @brief The key for the "continue URL" value in the request. + */ +static NSString *const kContinueURLKey = @"continueUrl"; + +/** @var kIosBundeIDKey + @brief The key for the "iOS Bundle Identifier" value in the request. + */ +static NSString *const kIosBundleIDKey = @"iOSBundleId"; + +/** @var kAndroidPackageNameKey + @brief The key for the "Android Package Name" value in the request. + */ +static NSString *const kAndroidPackageNameKey = @"androidPackageName"; + +/** @var kAndroidInstallAppKey + @brief The key for the request parameter indicating whether the android app should be installed + or not. + */ +static NSString *const kAndroidInstallAppKey = @"androidInstallApp"; + +/** @var kAndroidMinimumVersionKey + @brief The key for the "minimum Android version supported" value in the request. + */ +static NSString *const kAndroidMinimumVersionKey = @"androidMinimumVersion"; + +/** @var kCanHandleCodeInAppKey + @brief The key for the request parameter indicating whether the action code can be handled in + the app or not. + */ +static NSString *const kCanHandleCodeInAppKey = @"canHandleCodeInApp"; + +/** @var kDynamicLinkDomainKey + @brief The key for the "dynamic link domain" value in the request. + */ +static NSString *const kDynamicLinkDomainKey = @"dynamicLinkDomain"; + +/** @var kPasswordResetRequestTypeValue + @brief The value for the "PASSWORD_RESET" request type. + */ +static NSString *const kPasswordResetRequestTypeValue = @"PASSWORD_RESET"; + +/** @var kEmailLinkSignInTypeValue + @brief The value for the "EMAIL_SIGNIN" request type. + */ +static NSString *const kEmailLinkSignInTypeValue= @"EMAIL_SIGNIN"; + +/** @var kVerifyEmailRequestTypeValue + @brief The value for the "VERIFY_EMAIL" request type. + */ +static NSString *const kVerifyEmailRequestTypeValue = @"VERIFY_EMAIL"; + +/** @var kVerifyBeforeUpdateEmailRequestTypeValue + @brief The value for the "VERIFY_AND_CHANGE_EMAIL" request type. + */ +static NSString *const kVerifyBeforeUpdateEmailRequestTypeValue = @"VERIFY_AND_CHANGE_EMAIL"; + +@interface FIRGetOOBConfirmationCodeRequest () + +/** @fn initWithRequestType:email:APIKey: + @brief Designated initializer. + @param requestType The types of OOB Confirmation Code to request. + @param email The email of the user. + @param newEmail The email of the user to be updated. + @param accessToken The STS Access Token of the currently signed in user. + @param actionCodeSettings An object of FIRActionCodeSettings which specifies action code + settings to be applied to the OOB code request. + @param requestConfiguration An object containing configurations to be added to the request. + */ +- (nullable instancetype)initWithRequestType:(FIRGetOOBConfirmationCodeRequestType)requestType + email:(nullable NSString *)email + newEmail:(nullable NSString *)newEmail + accessToken:(nullable NSString *)accessToken + actionCodeSettings:(nullable FIRActionCodeSettings *)actionCodeSettings + requestConfiguration:(FIRAuthRequestConfiguration *)requestConfiguration + NS_DESIGNATED_INITIALIZER; + +@end + +@implementation FIRGetOOBConfirmationCodeRequest + +/** @var requestTypeStringValueForRequestType: + @brief Returns the string equivilent for an @c FIRGetOOBConfirmationCodeRequestType value. + */ ++ (NSString *)requestTypeStringValueForRequestType: + (FIRGetOOBConfirmationCodeRequestType)requestType { + switch (requestType) { + case FIRGetOOBConfirmationCodeRequestTypePasswordReset: + return kPasswordResetRequestTypeValue; + case FIRGetOOBConfirmationCodeRequestTypeVerifyEmail: + return kVerifyEmailRequestTypeValue; + case FIRGetOOBConfirmationCodeRequestTypeEmailLink: + return kEmailLinkSignInTypeValue; + case FIRGetOOBConfirmationCodeRequestTypeVerifyBeforeUpdateEmail: + return kVerifyBeforeUpdateEmailRequestTypeValue; + // No default case so that we get a compiler warning if a new value was added to the enum. + } +} + ++ (nullable FIRGetOOBConfirmationCodeRequest *) + passwordResetRequestWithEmail:(NSString *)email + actionCodeSettings:(nullable FIRActionCodeSettings *)actionCodeSettings + requestConfiguration:(FIRAuthRequestConfiguration *)requestConfiguration { + return [[self alloc] initWithRequestType:FIRGetOOBConfirmationCodeRequestTypePasswordReset + email:email + newEmail:nil + accessToken:nil + actionCodeSettings:actionCodeSettings + requestConfiguration:requestConfiguration]; +} + ++ (nullable FIRGetOOBConfirmationCodeRequest *) + verifyEmailRequestWithAccessToken:(NSString *)accessToken + actionCodeSettings:(nullable FIRActionCodeSettings *)actionCodeSettings + requestConfiguration:(FIRAuthRequestConfiguration *)requestConfiguration { + return [[self alloc] initWithRequestType:FIRGetOOBConfirmationCodeRequestTypeVerifyEmail + email:nil + newEmail:nil + accessToken:accessToken + actionCodeSettings:actionCodeSettings + requestConfiguration:requestConfiguration]; +} + ++ (nullable FIRGetOOBConfirmationCodeRequest *) + signInWithEmailLinkRequest:(NSString *)email + actionCodeSettings:(nullable FIRActionCodeSettings *)actionCodeSettings + requestConfiguration:(FIRAuthRequestConfiguration *)requestConfiguration { + return [[self alloc] initWithRequestType:FIRGetOOBConfirmationCodeRequestTypeEmailLink + email:email + newEmail:nil + accessToken:nil + actionCodeSettings:actionCodeSettings + requestConfiguration:requestConfiguration]; +} + ++ (nullable FIRGetOOBConfirmationCodeRequest *) + verifyBeforeUpdateEmailWithAccessToken:(NSString *)accessToken + newEmail:(NSString *)newEmail + actionCodeSettings:(nullable FIRActionCodeSettings *)actionCodeSettings + requestConfiguration:(FIRAuthRequestConfiguration *)requestConfiguration { + return [[self alloc] + initWithRequestType:FIRGetOOBConfirmationCodeRequestTypeVerifyBeforeUpdateEmail + email:nil + newEmail:newEmail + accessToken:accessToken + actionCodeSettings:actionCodeSettings + requestConfiguration:requestConfiguration]; +} + +- (nullable instancetype)initWithRequestType:(FIRGetOOBConfirmationCodeRequestType)requestType + email:(nullable NSString *)email + newEmail:(nullable NSString *)newEmail + accessToken:(nullable NSString *)accessToken + actionCodeSettings:(nullable FIRActionCodeSettings *)actionCodeSettings + requestConfiguration:(FIRAuthRequestConfiguration *)requestConfiguration { + self = [super initWithEndpoint:kGetOobConfirmationCodeEndpoint + requestConfiguration:requestConfiguration]; + if (self) { + _requestType = requestType; + _email = email; + _updatedEmail = newEmail; + _accessToken = accessToken; + _continueURL = actionCodeSettings.URL.absoluteString; + _iOSBundleID = actionCodeSettings.iOSBundleID; + _androidPackageName = actionCodeSettings.androidPackageName; + _androidMinimumVersion = actionCodeSettings.androidMinimumVersion; + _androidInstallApp = actionCodeSettings.androidInstallIfNotAvailable; + _handleCodeInApp = actionCodeSettings.handleCodeInApp; + _dynamicLinkDomain = actionCodeSettings.dynamicLinkDomain; + } + return self; +} + +- (nullable id)unencodedHTTPRequestBodyWithError:(NSError *_Nullable *_Nullable)error { + NSMutableDictionary *body = [@{ + kRequestTypeKey : [[self class] requestTypeStringValueForRequestType:_requestType] + } mutableCopy]; + + // For password reset requests, we only need an email address in addition to the already required + // fields. + if (_requestType == FIRGetOOBConfirmationCodeRequestTypePasswordReset) { + body[kEmailKey] = _email; + } + + // For verify email requests, we only need an STS Access Token in addition to the already required + // fields. + if (_requestType == FIRGetOOBConfirmationCodeRequestTypeVerifyEmail) { + body[kIDTokenKey] = _accessToken; + } + + // For email sign-in link requests, we only need an email address in addition to the already + // required fields. + if (_requestType == FIRGetOOBConfirmationCodeRequestTypeEmailLink) { + body[kEmailKey] = _email; + } + + // For email sign-in link requests, we only need an STS Access Token, a new email address in + // addition to the already required fields. + if (_requestType == FIRGetOOBConfirmationCodeRequestTypeVerifyBeforeUpdateEmail) { + body[kNewEmailKey] = _updatedEmail; + body[kIDTokenKey] = _accessToken; + } + + if (_continueURL) { + body[kContinueURLKey] = _continueURL; + } + + if (_iOSBundleID) { + body[kIosBundleIDKey] = _iOSBundleID; + } + + if (_androidPackageName) { + body[kAndroidPackageNameKey] = _androidPackageName; + } + + if (_androidMinimumVersion) { + body[kAndroidMinimumVersionKey] = _androidMinimumVersion; + } + + if (_androidInstallApp) { + body[kAndroidInstallAppKey] = @YES; + } + + if (_handleCodeInApp) { + body[kCanHandleCodeInAppKey] = @YES; + } + + if (_dynamicLinkDomain) { + body[kDynamicLinkDomainKey] = _dynamicLinkDomain; + } + + return body; +} + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRGetOOBConfirmationCodeResponse.h b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRGetOOBConfirmationCodeResponse.h new file mode 100644 index 0000000..69aa458 --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRGetOOBConfirmationCodeResponse.h @@ -0,0 +1,35 @@ +/* + * 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 + +#import "FIRAuthRPCResponse.h" + +NS_ASSUME_NONNULL_BEGIN + +/** @class FIRGetOOBConfirmationCodeResponse + @brief Represents the response from the getOobConfirmationCode endpoint. + */ +@interface FIRGetOOBConfirmationCodeResponse : NSObject + +/** @property OOBCode + @brief The OOB code returned by the server in some cases. + */ +@property(nonatomic, copy, readonly, nullable) NSString *OOBCode; + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRGetOOBConfirmationCodeResponse.m b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRGetOOBConfirmationCodeResponse.m new file mode 100644 index 0000000..0b6c416 --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRGetOOBConfirmationCodeResponse.m @@ -0,0 +1,36 @@ +/* + * 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 "FIRGetOOBConfirmationCodeResponse.h" + +NS_ASSUME_NONNULL_BEGIN + +/** @var kOOBCodeKey + @brief The name of the field in the response JSON for the OOB code. + */ +static NSString *const kOOBCodeKey = @"oobCode"; + +@implementation FIRGetOOBConfirmationCodeResponse + +- (BOOL)setWithDictionary:(NSDictionary *)dictionary + error:(NSError *_Nullable *_Nullable)error { + _OOBCode = [dictionary[kOOBCodeKey] copy]; + return YES; +} + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRGetProjectConfigRequest.h b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRGetProjectConfigRequest.h new file mode 100644 index 0000000..7c37e8d --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRGetProjectConfigRequest.h @@ -0,0 +1,41 @@ +/* + * 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 "FIRIdentityToolkitRequest.h" + +#import "FIRAuthRPCRequest.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface FIRGetProjectConfigRequest : FIRIdentityToolkitRequest + +/** @fn initWithEndpoint:requestConfiguration: + @brief Please use initWithRequestConfiguration: + */ +- (nullable instancetype)initWithEndpoint:(NSString *)endpoint + requestConfiguration:(FIRAuthRequestConfiguration *)requestConfiguration + NS_UNAVAILABLE; + +/** @fn initWithTemporaryProof:phoneNumberAPIKey + @brief Designated initializer. + @param requestConfiguration An object containing configurations to be added to the request. + */ +- (nullable instancetype)initWithRequestConfiguration: + (FIRAuthRequestConfiguration *)requestConfiguration NS_DESIGNATED_INITIALIZER; + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRGetProjectConfigRequest.m b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRGetProjectConfigRequest.m new file mode 100644 index 0000000..acfcc02 --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRGetProjectConfigRequest.m @@ -0,0 +1,40 @@ +/* + * 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 "FIRGetProjectConfigRequest.h" + +NS_ASSUME_NONNULL_BEGIN + +/** @var kGetProjectConfigEndPoint + @brief The "getProjectConfig" endpoint. + */ +static NSString *const kGetProjectConfigEndPoint = @"getProjectConfig"; + +@implementation FIRGetProjectConfigRequest + +- (nullable instancetype)initWithRequestConfiguration: + (FIRAuthRequestConfiguration *)requestConfiguration { + return [super initWithEndpoint:kGetProjectConfigEndPoint + requestConfiguration:requestConfiguration]; +} + +- (BOOL)containsPostBody { + return NO; +} + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRGetProjectConfigResponse.h b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRGetProjectConfigResponse.h new file mode 100644 index 0000000..bd27cd2 --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRGetProjectConfigResponse.h @@ -0,0 +1,40 @@ +/* + * 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 + +#import "FIRAuthRPCResponse.h" + +NS_ASSUME_NONNULL_BEGIN + +/** @class FIRGetProjectConfigResponse + @brief Represents the response from the getProjectConfig endpoint. + */ +@interface FIRGetProjectConfigResponse : NSObject + +/** @property projectID + @brief The unique ID pertaining to the current project. + */ +@property(nonatomic, strong, readonly, nullable) NSString *projectID; + +/** @property authorizedDomains + @brief A list of domains whitelisted for the current project. + */ +@property(nonatomic, strong, readonly, nullable) NSArray *authorizedDomains; + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRGetProjectConfigResponse.m b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRGetProjectConfigResponse.m new file mode 100644 index 0000000..030edd1 --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRGetProjectConfigResponse.m @@ -0,0 +1,42 @@ +/* + * 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 "FIRGetProjectConfigResponse.h" + +NS_ASSUME_NONNULL_BEGIN + +@implementation FIRGetProjectConfigResponse + +- (BOOL)setWithDictionary:(NSDictionary *)dictionary + error:(NSError *_Nullable *_Nullable)error { + _projectID = [dictionary[@"projectId"] copy]; + id authorizedDomains = dictionary[@"authorizedDomains"]; + if ([authorizedDomains isKindOfClass:[NSString class]]) { + NSData *data = [authorizedDomains dataUsingEncoding:NSUTF8StringEncoding]; + authorizedDomains = [NSJSONSerialization JSONObjectWithData:data + options:NSJSONReadingMutableLeaves + error:nil]; + } + if ([authorizedDomains isKindOfClass:[NSArray class]]) { + _authorizedDomains = [[NSArray alloc] initWithArray:authorizedDomains + copyItems:YES]; + } + return YES; +} + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRResetPasswordRequest.h b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRResetPasswordRequest.h new file mode 100644 index 0000000..701e305 --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRResetPasswordRequest.h @@ -0,0 +1,55 @@ +/* + * 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 + +#import "FIRAuthRPCRequest.h" +#import "FIRIdentityToolkitRequest.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface FIRResetPasswordRequest : FIRIdentityToolkitRequest + +/** @property oobCode + @brief The oobCode sent in the request. + */ +@property(nonatomic, copy, readonly) NSString *oobCode; + +/** @property updatedPassword + @brief The new password sent in the request. + */ +@property(nonatomic, copy, readonly) NSString *updatedPassword; + +/** @fn initWithEndpoint:requestConfiguration: + @brief Please use initWithOobCode:newPassword:requestConfiguration: instead. + */ +- (nullable instancetype)initWithEndpoint:(NSString *)endpoint + requestConfiguration:(FIRAuthRequestConfiguration *)requestConfiguration + NS_UNAVAILABLE; + +/** @fn initWithOobCode:newPassword:requestConfiguration: + @brief Designated initializer. + @param oobCode The OOB Code. + @param newPassword The new password. + @param requestConfiguration An object containing configurations to be added to the request. + */ +- (nullable instancetype)initWithOobCode:(NSString *)oobCode + newPassword:(nullable NSString *)newPassword + requestConfiguration:(FIRAuthRequestConfiguration *)requestConfiguration; + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRResetPasswordRequest.m b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRResetPasswordRequest.m new file mode 100644 index 0000000..1295037 --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRResetPasswordRequest.m @@ -0,0 +1,60 @@ +/* + * 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 "FIRResetPasswordRequest.h" + +NS_ASSUME_NONNULL_BEGIN + +/** @var kResetPasswordEndpoint + @brief The "resetPassword" endpoint. + */ +static NSString *const kResetPasswordEndpoint = @"resetPassword"; + +/** @var kOOBCodeKey + @brief The "resetPassword" key. + */ +static NSString *const kOOBCodeKey = @"oobCode"; + +/** @var kCurrentPasswordKey + @brief The "newPassword" key. + */ +static NSString *const kCurrentPasswordKey = @"newPassword"; + +@implementation FIRResetPasswordRequest + +- (nullable instancetype)initWithOobCode:(NSString *)oobCode + newPassword:(nullable NSString *)newPassword + requestConfiguration:(FIRAuthRequestConfiguration *)requestConfiguration { + self = [super initWithEndpoint:kResetPasswordEndpoint requestConfiguration:requestConfiguration]; + if (self) { + _oobCode = oobCode; + _updatedPassword = newPassword; + } + return self; +} + +- (nullable id)unencodedHTTPRequestBodyWithError:(NSError *_Nullable *_Nullable)error { + NSMutableDictionary *postBody = [NSMutableDictionary dictionary]; + postBody[kOOBCodeKey] = _oobCode; + if (_updatedPassword) { + postBody[kCurrentPasswordKey] = _updatedPassword; + } + return postBody; +} + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRResetPasswordResponse.h b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRResetPasswordResponse.h new file mode 100644 index 0000000..28eb5f4 --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRResetPasswordResponse.h @@ -0,0 +1,52 @@ +/* + * 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 + +#import "FIRAuthRPCResponse.h" + +NS_ASSUME_NONNULL_BEGIN + +/** @class FIRAuthResetPasswordResponse + @brief Represents the response from the resetPassword endpoint. + @remarks Possible error codes: + - FIRAuthErrorCodeWeakPassword + - FIRAuthErrorCodeUserDisabled + - FIRAuthErrorCodeOperationNotAllowed + - FIRAuthErrorCodeExpiredActionCode + - FIRAuthErrorCodeInvalidActionCode + @see https://developers.google.com/identity/toolkit/web/reference/relyingparty/resetPassword + */ +@interface FIRResetPasswordResponse : NSObject + +/** @property email + @brief The email address corresponding to the reset password request. + */ +@property(nonatomic, strong, readonly) NSString *email; + +/** @property verifiedEmail + @brief The verified email returned from the backend. + */ +@property(nonatomic, strong, readonly) NSString *verifiedEmail; + +/** @property requestType + @brief The tpye of request as returned by the backend. + */ +@property(nonatomic, strong, readonly) NSString *requestType; + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRResetPasswordResponse.m b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRResetPasswordResponse.m new file mode 100644 index 0000000..4f43cc9 --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRResetPasswordResponse.m @@ -0,0 +1,33 @@ +/* + * 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 "FIRResetPasswordResponse.h" + +NS_ASSUME_NONNULL_BEGIN + +@implementation FIRResetPasswordResponse + +- (BOOL)setWithDictionary:(NSDictionary *)dictionary + error:(NSError *_Nullable *_Nullable)error { + _email = [dictionary[@"email"] copy]; + _requestType = [dictionary[@"requestType"] copy]; + _verifiedEmail = [dictionary[@"newEmail"] copy]; + return YES; +} + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRSecureTokenRequest.h b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRSecureTokenRequest.h new file mode 100644 index 0000000..14722fa --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRSecureTokenRequest.h @@ -0,0 +1,113 @@ +/* + * 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 + +#import "FIRAuthRPCRequest.h" + +NS_ASSUME_NONNULL_BEGIN + +/** @enum FIRSecureTokenRequestGrantType + @brief Represents the possible grant types for a token request. + */ +typedef NS_ENUM(NSUInteger, FIRSecureTokenRequestGrantType) { + /** @var FIRSecureTokenRequestGrantTypeAuthorizationCode + @brief Indicates an authorization code request. + @remarks Exchanges a Gitkit "ID Token" for an STS Access Token and Refresh Token. + */ + FIRSecureTokenRequestGrantTypeAuthorizationCode, + + /** @var FIRSecureTokenRequestGrantTypeRefreshToken + @brief Indicates an refresh token request. + @remarks Uses an existing Refresh Token to create a new Access Token. + */ + FIRSecureTokenRequestGrantTypeRefreshToken, +}; + +/** @class FIRSecureTokenRequest + @brief Represents the parameters for the token endpoint. + */ +@interface FIRSecureTokenRequest : NSObject + +/** @property grantType + @brief The type of grant requested. + @see FIRSecureTokenRequestGrantType + */ +@property(nonatomic, assign, readonly) FIRSecureTokenRequestGrantType grantType; + +/** @property scope + @brief The scopes requested (a comma-delimited list of scope strings.) + */ +@property(nonatomic, copy, readonly, nullable) NSString *scope; + +/** @property refreshToken + @brief The client's refresh token. + */ +@property(nonatomic, copy, readonly, nullable) NSString *refreshToken; + +/** @property code + @brief The client's authorization code (legacy Gitkit "ID Token"). + */ +@property(nonatomic, copy, readonly, nullable) NSString *code; + +/** @property APIKey + @brief The client's API Key. + */ +@property(nonatomic, copy, readonly) NSString *APIKey; + +/** @fn authCodeRequestWithCode: + @brief Creates an authorization code request with the given code (legacy Gitkit "ID Token"). + @param code The authorization code (legacy Gitkit "ID Token"). + @param requestConfiguration An object containing configurations to be added to the request. + @return An authorization request. + */ ++ (FIRSecureTokenRequest *)authCodeRequestWithCode:(NSString *)code + requestConfiguration:(FIRAuthRequestConfiguration *) + requestConfiguration; + +/** @fn refreshRequestWithCode: + @brief Creates a refresh request with the given refresh token. + @param refreshToken The refresh token. + @param requestConfiguration An object containing configurations to be added to the request. + @return A refresh request. + */ ++ (FIRSecureTokenRequest *)refreshRequestWithRefreshToken:(NSString *)refreshToken + requestConfiguration:(FIRAuthRequestConfiguration *) + requestConfiguration; + +/** @fn init + @brief Please use initWithGrantType:scope:refreshToken:code: + */ +- (instancetype)init NS_UNAVAILABLE; + +/** @fn initWithGrantType:scope:refreshToken:code:APIKey: + @brief Designated initializer. + @param grantType The type of request. + @param scope The scopes requested. + @param refreshToken The client's refresh token (for refresh requests.) + @param code The client's authorization code (Gitkit ID Token) (for authorization code requests.) + @param requestConfiguration An object containing configurations to be added to the request. + */ +- (nullable instancetype)initWithGrantType:(FIRSecureTokenRequestGrantType)grantType + scope:(nullable NSString *)scope + refreshToken:(nullable NSString *)refreshToken + code:(nullable NSString *)code + requestConfiguration:(FIRAuthRequestConfiguration *)requestConfiguration + NS_DESIGNATED_INITIALIZER; + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRSecureTokenRequest.m b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRSecureTokenRequest.m new file mode 100644 index 0000000..b733a94 --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRSecureTokenRequest.m @@ -0,0 +1,163 @@ +/* + * 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 "FIRSecureTokenRequest.h" +#import "FIRAuthRequestConfiguration.h" + +NS_ASSUME_NONNULL_BEGIN + +/** @var kFIRSecureTokenServiceGetTokenURLFormat + @brief The format of the secure token service URLs. Requires string format substitution with + the client's API Key. + */ +static NSString *const kFIRSecureTokenServiceGetTokenURLFormat = @"https://%@/v1/token?key=%@"; + +/** @var kFIRSecureTokenServiceGrantTypeRefreshToken + @brief The string value of the @c FIRSecureTokenRequestGrantTypeRefreshToken request type. + */ +static NSString *const kFIRSecureTokenServiceGrantTypeRefreshToken = @"refresh_token"; + +/** @var kFIRSecureTokenServiceGrantTypeAuthorizationCode + @brief The string value of the @c FIRSecureTokenRequestGrantTypeAuthorizationCode request type. + */ +static NSString *const kFIRSecureTokenServiceGrantTypeAuthorizationCode = @"authorization_code"; + +/** @var kGrantTypeKey + @brief The key for the "grantType" parameter in the request. + */ +static NSString *const kGrantTypeKey = @"grantType"; + +/** @var kScopeKey + @brief The key for the "scope" parameter in the request. + */ +static NSString *const kScopeKey = @"scope"; + +/** @var kRefreshTokenKey + @brief The key for the "refreshToken" parameter in the request. + */ +static NSString *const kRefreshTokenKey = @"refreshToken"; + +/** @var kCodeKey + @brief The key for the "code" parameter in the request. + */ +static NSString *const kCodeKey = @"code"; + +/** @var gAPIHost + @brief Host for server API calls. + */ +static NSString *gAPIHost = @"securetoken.googleapis.com"; + +@implementation FIRSecureTokenRequest { + /** @var _requestConfiguration + @brief Contains configuration relevant to the request. + */ + FIRAuthRequestConfiguration *_requestConfiguration; +} + ++ (FIRSecureTokenRequest *)authCodeRequestWithCode:(NSString *)code + requestConfiguration:(FIRAuthRequestConfiguration *) + requestConfiguration { + return [[self alloc] initWithGrantType:FIRSecureTokenRequestGrantTypeAuthorizationCode + scope:nil + refreshToken:nil + code:code + requestConfiguration:requestConfiguration]; +} + ++ (FIRSecureTokenRequest *)refreshRequestWithRefreshToken:(NSString *)refreshToken + requestConfiguration:(FIRAuthRequestConfiguration *) + requestConfiguration { + return [[self alloc] initWithGrantType:FIRSecureTokenRequestGrantTypeRefreshToken + scope:nil + refreshToken:refreshToken + code:nil + requestConfiguration:requestConfiguration]; +} + +/** @fn grantTypeStringWithGrantType: + @brief Converts a @c FIRSecureTokenRequestGrantType to it's @c NSString equivilent. + */ ++ (NSString *)grantTypeStringWithGrantType:(FIRSecureTokenRequestGrantType)grantType { + switch (grantType) { + case FIRSecureTokenRequestGrantTypeAuthorizationCode: + return kFIRSecureTokenServiceGrantTypeAuthorizationCode; + case FIRSecureTokenRequestGrantTypeRefreshToken: + return kFIRSecureTokenServiceGrantTypeRefreshToken; + // No Default case so we will notice if new grant types are added to the enum. + } +} + +- (nullable instancetype)initWithGrantType:(FIRSecureTokenRequestGrantType)grantType + scope:(nullable NSString *)scope + refreshToken:(nullable NSString *)refreshToken + code:(nullable NSString *)code + requestConfiguration:(FIRAuthRequestConfiguration *)requestConfiguration { + self = [super init]; + if (self) { + _grantType = grantType; + _scope = [scope copy]; + _refreshToken = [refreshToken copy]; + _code = [code copy]; + _APIKey = [requestConfiguration.APIKey copy]; + _requestConfiguration = requestConfiguration; + } + return self; +} + +- (FIRAuthRequestConfiguration *)requestConfiguration { + return _requestConfiguration; +} + +- (NSURL *)requestURL { + NSString *URLString = + [NSString stringWithFormat:kFIRSecureTokenServiceGetTokenURLFormat, gAPIHost, _APIKey]; + NSURL *URL = [NSURL URLWithString:URLString]; + return URL; +} + +- (BOOL)containsPostBody { + return YES; +} + +- (nullable id)unencodedHTTPRequestBodyWithError:(NSError *_Nullable *_Nullable)error { + NSMutableDictionary *postBody = [@{ + kGrantTypeKey : [[self class] grantTypeStringWithGrantType:_grantType] + } mutableCopy]; + if (_scope) { + postBody[kScopeKey] = _scope; + } + if (_refreshToken) { + postBody[kRefreshTokenKey] = _refreshToken; + } + if (_code) { + postBody[kCodeKey] = _code; + } + return postBody; +} + +#pragma mark - Internal API for development + ++ (NSString *)host { + return gAPIHost; +} + ++ (void)setHost:(NSString *)host { + gAPIHost = host; +} + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRSecureTokenResponse.h b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRSecureTokenResponse.h new file mode 100644 index 0000000..0dd4a20 --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRSecureTokenResponse.h @@ -0,0 +1,50 @@ +/* + * 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 + +#import "FIRAuthRPCResponse.h" + +NS_ASSUME_NONNULL_BEGIN + +/** @class FIRSecureTokenResponse + @brief Represents the response from the token endpoint. + */ +@interface FIRSecureTokenResponse : NSObject + +/** @property approximateExpirationDate + @brief The approximate expiration date of the access token. + */ +@property(nonatomic, copy, readonly, nullable) NSDate *approximateExpirationDate; + +/** @property refreshToken + @brief The refresh token. (Possibly an updated one for refresh requests.) + */ +@property(nonatomic, copy, readonly, nullable) NSString *refreshToken; + +/** @property accessToken + @brief The new access token. + */ +@property(nonatomic, copy, readonly, nullable) NSString *accessToken; + +/** @property IDToken + @brief The new ID Token. + */ +@property(nonatomic, copy, readonly, nullable) NSString *IDToken; + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRSecureTokenResponse.m b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRSecureTokenResponse.m new file mode 100644 index 0000000..1b1797b --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRSecureTokenResponse.m @@ -0,0 +1,74 @@ +/* + * 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 "FIRSecureTokenResponse.h" + +#import "FIRAuthErrorUtils.h" + +NS_ASSUME_NONNULL_BEGIN + +/** @var kExpiresInKey + @brief The key for the number of seconds till the access token expires. + */ +static NSString *const kExpiresInKey = @"expires_in"; + +/** @var kRefreshTokenKey + @brief The key for the refresh token. + */ +static NSString *const kRefreshTokenKey = @"refresh_token"; + +/** @var kAccessTokenKey + @brief The key for the access token. + */ +static NSString *const kAccessTokenKey = @"access_token"; + +/** @var kIDTokenKey + @brief The key for the "id_token" value in the response. + */ +static NSString *const kIDTokenKey = @"id_token"; + +@implementation FIRSecureTokenResponse + +- (nullable NSString *)expectedKind { + return nil; +} + +- (BOOL)setWithDictionary:(NSDictionary *)dictionary + error:(NSError *_Nullable *_Nullable)error { + _refreshToken = dictionary[kRefreshTokenKey]; + _accessToken = dictionary[kAccessTokenKey]; + _IDToken = dictionary[kIDTokenKey]; + if (!_accessToken.length) { + if (error) { + *error = [FIRAuthErrorUtils unexpectedResponseWithDeserializedResponse:dictionary]; + } + return NO; + } + id expiresIn = dictionary[kExpiresInKey]; + if (![expiresIn isKindOfClass:[NSString class]]) { + if (error) { + *error = [FIRAuthErrorUtils unexpectedResponseWithDeserializedResponse:dictionary]; + } + return NO; + } + + _approximateExpirationDate = [NSDate dateWithTimeIntervalSinceNow:[expiresIn doubleValue]]; + return YES; +} + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRSendVerificationCodeRequest.h b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRSendVerificationCodeRequest.h new file mode 100644 index 0000000..af6cc93 --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRSendVerificationCodeRequest.h @@ -0,0 +1,67 @@ +/* + * 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 "FIRIdentityToolkitRequest.h" + +#import "FIRAuthRPCRequest.h" +#import "FIRIdentityToolkitRequest.h" + +@class FIRAuthAppCredential; + +NS_ASSUME_NONNULL_BEGIN + +@interface FIRSendVerificationCodeRequest : FIRIdentityToolkitRequest + +/** @property phoneNumber + @brief The phone number to which the verification code should be sent. + */ +@property(nonatomic, strong, readonly) NSString *phoneNumber; + +/** @property appCredential + @brief The credential to prove the identity of the app in order to send the verification code. + */ +@property(nonatomic, strong, readonly, nullable) FIRAuthAppCredential *appCredential; + +/** @property reCAPTCHAToken + @brief The reCAPTCHA token to prove the identity of the app in order to send the verification + code. + */ +@property(nonatomic, strong, readonly, nullable) NSString *reCAPTCHAToken; + +/** @fn initWithEndpoint:requestConfiguration: + @brief Please use initWithPhoneNumber:appCredentials:requestConfiguration: instead. + */ +- (nullable instancetype)initWithEndpoint:(NSString *)endpoint + requestConfiguration:(FIRAuthRequestConfiguration *)requestConfiguration + NS_UNAVAILABLE; + +/** @fn initWithPhoneNumber:appCredentials:requestConfiguration: + @brief Designated initializer. + @param phoneNumber The phone number to which the verification code is to be sent. + @param appCredential The credential that proves the identity of the app. + @param reCAPTCHAToken The reCAPTCHA token that proves the identity of the app. + @param requestConfiguration An object containing configurations to be added to the request. + */ +- (nullable instancetype)initWithPhoneNumber:(NSString *)phoneNumber + appCredential:(nullable FIRAuthAppCredential *)appCredential + reCAPTCHAToken:(nullable NSString *)reCAPTCHAToken + requestConfiguration:(FIRAuthRequestConfiguration *)requestConfiguration + NS_DESIGNATED_INITIALIZER; + + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRSendVerificationCodeRequest.m b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRSendVerificationCodeRequest.m new file mode 100644 index 0000000..38ad8cf --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRSendVerificationCodeRequest.m @@ -0,0 +1,84 @@ +/* + * 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 "FIRSendVerificationCodeRequest.h" + +#import "FIRAuthAppCredential.h" + +NS_ASSUME_NONNULL_BEGIN + +/** @var kSendVerificationCodeEndPoint + @brief The "sendVerificationCodeEnd" endpoint. + */ +static NSString *const kSendVerificationCodeEndPoint = @"sendVerificationCode"; + +/** @var kPhoneNumberKey + @brief The key for the Phone Number parameter in the request. + */ +static NSString *const kPhoneNumberKey = @"phoneNumber"; + +/** @var kReceiptKey + @brief The key for the receipt parameter in the request. + */ +static NSString *const kReceiptKey = @"iosReceipt"; + +/** @var kSecretKey + @brief The key for the Secret parameter in the request. + */ +static NSString *const kSecretKey = @"iosSecret"; + +/** @var kreCAPTCHATokenKey + @brief The key for the reCAPTCHAToken parameter in the request. + */ +static NSString *const kreCAPTCHATokenKey = @"recaptchaToken"; + +@implementation FIRSendVerificationCodeRequest { +} + +- (nullable instancetype)initWithPhoneNumber:(NSString *)phoneNumber + appCredential:(nullable FIRAuthAppCredential *)appCredential + reCAPTCHAToken:(nullable NSString *)reCAPTCHAToken + requestConfiguration:(FIRAuthRequestConfiguration *)requestConfiguration { + self = [super initWithEndpoint:kSendVerificationCodeEndPoint + requestConfiguration:requestConfiguration]; + if (self) { + _phoneNumber = [phoneNumber copy]; + _appCredential = appCredential; + _reCAPTCHAToken = [reCAPTCHAToken copy]; + } + return self; +} + +- (nullable id)unencodedHTTPRequestBodyWithError:(NSError *_Nullable *_Nullable)error { + NSMutableDictionary *postBody = [NSMutableDictionary dictionary]; + if (_phoneNumber) { + postBody[kPhoneNumberKey] = _phoneNumber; + } + if (_appCredential.receipt) { + postBody[kReceiptKey] = _appCredential.receipt; + } + if (_appCredential.secret) { + postBody[kSecretKey] = _appCredential.secret; + } + if (_reCAPTCHAToken) { + postBody[kreCAPTCHATokenKey] = _reCAPTCHAToken; + } + return postBody; +} + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRSendVerificationCodeResponse.h b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRSendVerificationCodeResponse.h new file mode 100644 index 0000000..1a49ec2 --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRSendVerificationCodeResponse.h @@ -0,0 +1,32 @@ +/* + * 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 + +#import "FIRAuthRPCResponse.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface FIRSendVerificationCodeResponse : NSObject + +/** @property verificationID + @brief Encrypted session information returned by the backend. + */ +@property(nonatomic, readonly) NSString *verificationID; + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRSendVerificationCodeResponse.m b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRSendVerificationCodeResponse.m new file mode 100644 index 0000000..9e47b6e --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRSendVerificationCodeResponse.m @@ -0,0 +1,36 @@ +/* + * 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 "FIRSendVerificationCodeResponse.h" + +NS_ASSUME_NONNULL_BEGIN + +@implementation FIRSendVerificationCodeResponse + +// TODO: remove when resolving b/37169084 . +- (nullable NSString *)expectedKind { + return nil; +} + +- (BOOL)setWithDictionary:(NSDictionary *)dictionary + error:(NSError *_Nullable *_Nullable)error { + _verificationID = [dictionary[@"sessionInfo"] copy]; + return YES; +} + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRSetAccountInfoRequest.h b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRSetAccountInfoRequest.h new file mode 100644 index 0000000..0e0e18f --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRSetAccountInfoRequest.h @@ -0,0 +1,151 @@ +/* + * 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 + +#import "FIRAuthRPCRequest.h" +#import "FIRIdentityToolkitRequest.h" + +@class FIRGetAccountInfoResponse; + +NS_ASSUME_NONNULL_BEGIN + +/** @var FIRSetAccountInfoUserAttributeEmail + @brief Constant for email attribute used in "deleteAttributes". + */ +extern NSString *const FIRSetAccountInfoUserAttributeEmail; + +/** @var FIRSetAccountInfoUserAttributeDisplayName + @brief Constant for displayName attribute used in "deleteAttributes". + */ +extern NSString *const FIRSetAccountInfoUserAttributeDisplayName; + +/** @var FIRSetAccountInfoUserAttributeProvider + @brief Constant for provider attribute used in "deleteAttributes". + */ +extern NSString *const FIRSetAccountInfoUserAttributeProvider; + +/** @var FIRSetAccountInfoUserAttributePhotoURL + @brief Constant for photoURL attribute used in "deleteAttributes". + */ +extern NSString *const FIRSetAccountInfoUserAttributePhotoURL; + +/** @var FIRSetAccountInfoUserAttributePassword + @brief Constant for password attribute used in "deleteAttributes". + */ +extern NSString *const FIRSetAccountInfoUserAttributePassword; + +/** @class FIRSetAccountInfoRequest + @brief Represents the parameters for the setAccountInfo endpoint. + @see https://developers.google.com/identity/toolkit/web/reference/relyingparty/setAccountInfo + */ +@interface FIRSetAccountInfoRequest : FIRIdentityToolkitRequest + +/** @property accessToken + @brief The STS Access Token of the authenticated user. + */ +@property(nonatomic, copy, nullable) NSString *accessToken; + +/** @property displayName + @brief The name of the user. + */ +@property(nonatomic, copy, nullable) NSString *displayName; + +/** @property localID + @brief The local ID of the user. + */ +@property(nonatomic, copy, nullable) NSString *localID; + +/** @property email + @brief The email of the user. + */ +@property(nonatomic, copy, nullable) NSString *email; + +/** @property photoURL + @brief The photoURL of the user. + */ +@property(nonatomic, copy, nullable) NSURL *photoURL; + +/** @property password + @brief The new password of the user. + */ +@property(nonatomic, copy, nullable) NSString *password; + +/** @property providers + @brief The associated identity providers of the user. + */ +@property(nonatomic, copy, nullable) NSArray *providers; + +/** @property OOBCode + @brief The out-of-band code of the change email request. + */ +@property(nonatomic, copy, nullable) NSString *OOBCode; + +/** @property emailVerified + @brief Whether to mark the email as verified or not. + */ +@property(nonatomic, assign) BOOL emailVerified; + +/** @property upgradeToFederatedLogin + @brief Whether to mark the user to upgrade to federated login. + */ +@property(nonatomic, assign) BOOL upgradeToFederatedLogin; + +/** @property captchaChallenge + @brief The captcha challenge. + */ +@property(nonatomic, copy, nullable) NSString *captchaChallenge; + +/** @property captchaResponse + @brief Response to the captcha. + */ +@property(nonatomic, copy, nullable) NSString *captchaResponse; + +/** @property deleteAttributes + @brief The list of user attributes to delete. + @remarks Every element of the list must be one of the predefined constant starts with + "FIRSetAccountInfoUserAttribute". + */ +@property(nonatomic, copy, nullable) NSArray *deleteAttributes; + +/** @property deleteProviders + @brief The list of identity providers to delete. + */ +@property(nonatomic, copy, nullable) NSArray *deleteProviders; + +/** @property returnSecureToken + @brief Whether the response should return access token and refresh token directly. + @remarks The default value is @c YES . + */ +@property(nonatomic, assign) BOOL returnSecureToken; + +/** @fn initWithEndpoint:requestConfiguration: + @brief Please use initWithAPIKey:email:password:displayName:requestConfiguration instead. + */ +- (nullable instancetype)initWithEndpoint:(NSString *)endpoint + requestConfiguration:(FIRAuthRequestConfiguration *)requestConfiguration + NS_UNAVAILABLE; + +/** @fn initWithRequestConfiguration: + @brief Designated initializer. + @param requestConfiguration An object containing configurations to be added to the request. + */ +- (nullable instancetype)initWithRequestConfiguration: + (FIRAuthRequestConfiguration *)requestConfiguration NS_DESIGNATED_INITIALIZER; + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRSetAccountInfoRequest.m b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRSetAccountInfoRequest.m new file mode 100644 index 0000000..ef06d2b --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRSetAccountInfoRequest.m @@ -0,0 +1,180 @@ +/* + * 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 "FIRSetAccountInfoRequest.h" + +#import "FIRAuthErrorUtils.h" +#import "FIRAuth_Internal.h" +#import "FIRGetAccountInfoResponse.h" + +NS_ASSUME_NONNULL_BEGIN + +NSString *const FIRSetAccountInfoUserAttributeEmail = @"EMAIL"; + +NSString *const FIRSetAccountInfoUserAttributeDisplayName = @"DISPLAY_NAME"; + +NSString *const FIRSetAccountInfoUserAttributeProvider = @"PROVIDER"; + +NSString *const FIRSetAccountInfoUserAttributePhotoURL = @"PHOTO_URL"; + +NSString *const FIRSetAccountInfoUserAttributePassword = @"PASSWORD"; + +/** @var kCreateAuthURIEndpoint + @brief The "setAccountInfo" endpoint. + */ +static NSString *const kSetAccountInfoEndpoint = @"setAccountInfo"; + +/** @var kIDTokenKey + @brief The key for the "idToken" value in the request. This is actually the STS Access Token, + despite it's confusing (backwards compatiable) parameter name. + */ +static NSString *const kIDTokenKey = @"idToken"; + +/** @var kDisplayNameKey + @brief The key for the "displayName" value in the request. + */ +static NSString *const kDisplayNameKey = @"displayName"; + +/** @var kLocalIDKey + @brief The key for the "localID" value in the request. + */ +static NSString *const kLocalIDKey = @"localId"; + +/** @var kEmailKey + @brief The key for the "email" value in the request. + */ +static NSString *const kEmailKey = @"email"; + +/** @var kPasswordKey + @brief The key for the "password" value in the request. + */ +static NSString *const kPasswordKey = @"password"; + +/** @var kPhotoURLKey + @brief The key for the "photoURL" value in the request. + */ +static NSString *const kPhotoURLKey = @"photoUrl"; + +/** @var kProvidersKey + @brief The key for the "providers" value in the request. + */ +static NSString *const kProvidersKey = @"provider"; + +/** @var kOOBCodeKey + @brief The key for the "OOBCode" value in the request. + */ +static NSString *const kOOBCodeKey = @"oobCode"; + +/** @var kEmailVerifiedKey + @brief The key for the "emailVerified" value in the request. + */ +static NSString *const kEmailVerifiedKey = @"emailVerified"; + +/** @var kUpgradeToFederatedLoginKey + @brief The key for the "upgradeToFederatedLogin" value in the request. + */ +static NSString *const kUpgradeToFederatedLoginKey = @"upgradeToFederatedLogin"; + +/** @var kCaptchaChallengeKey + @brief The key for the "captchaChallenge" value in the request. + */ +static NSString *const kCaptchaChallengeKey = @"captchaChallenge"; + +/** @var kCaptchaResponseKey + @brief The key for the "captchaResponse" value in the request. + */ +static NSString *const kCaptchaResponseKey = @"captchaResponse"; + +/** @var kDeleteAttributesKey + @brief The key for the "deleteAttribute" value in the request. + */ +static NSString *const kDeleteAttributesKey = @"deleteAttribute"; + +/** @var kDeleteProvidersKey + @brief The key for the "deleteProvider" value in the request. + */ +static NSString *const kDeleteProvidersKey = @"deleteProvider"; + +/** @var kReturnSecureTokenKey + @brief The key for the "returnSecureToken" value in the request. + */ +static NSString *const kReturnSecureTokenKey = @"returnSecureToken"; + +@implementation FIRSetAccountInfoRequest + +- (nullable instancetype)initWithRequestConfiguration: + (FIRAuthRequestConfiguration *)requestConfiguration { + self = [super initWithEndpoint:kSetAccountInfoEndpoint requestConfiguration:requestConfiguration]; + if (self) { + _returnSecureToken = YES; + } + return self; +} + +- (nullable id)unencodedHTTPRequestBodyWithError:(NSError *_Nullable *_Nullable)error { + NSMutableDictionary *postBody = [NSMutableDictionary dictionary]; + if (_accessToken) { + postBody[kIDTokenKey] = _accessToken; + } + if (_displayName) { + postBody[kDisplayNameKey] = _displayName; + } + if (_localID) { + postBody[kLocalIDKey] = _localID; + } + if (_email) { + postBody[kEmailKey] = _email; + } + if (_password) { + postBody[kPasswordKey] = _password; + } + if (_photoURL) { + postBody[kPhotoURLKey] = _photoURL.absoluteString; + } + if (_providers) { + postBody[kProvidersKey] = _providers; + } + if (_OOBCode) { + postBody[kOOBCodeKey] = _OOBCode; + } + if (_emailVerified) { + postBody[kEmailVerifiedKey] = @YES; + } + if (_upgradeToFederatedLogin) { + postBody[kUpgradeToFederatedLoginKey] = @YES; + } + if (_captchaChallenge) { + postBody[kCaptchaChallengeKey] = _captchaChallenge; + } + if (_captchaResponse) { + postBody[kCaptchaResponseKey] = _captchaResponse; + } + if (_deleteAttributes) { + postBody[kDeleteAttributesKey] = _deleteAttributes; + } + if (_deleteProviders) { + postBody[kDeleteProvidersKey] = _deleteProviders; + } + if (_returnSecureToken) { + postBody[kReturnSecureTokenKey] = @YES; + } + return postBody; +} + +@end + +NS_ASSUME_NONNULL_END + diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRSetAccountInfoResponse.h b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRSetAccountInfoResponse.h new file mode 100644 index 0000000..92895c0 --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRSetAccountInfoResponse.h @@ -0,0 +1,98 @@ +/* + * 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 + +#import "FIRAuthRPCResponse.h" + +NS_ASSUME_NONNULL_BEGIN + +/** @class FIRSetAccountInfoResponseProviderUserInfo + @brief Represents the provider user info part of the response from the setAccountInfo endpoint. + @see https://developers.google.com/identity/toolkit/web/reference/relyingparty/setAccountInfo + */ +@interface FIRSetAccountInfoResponseProviderUserInfo : NSObject + +/** @property providerID + @brief The ID of the identity provider. + */ +@property(nonatomic, strong, readonly, nullable) NSString *providerID; + +/** @property displayName + @brief The user's display name at the identity provider. + */ +@property(nonatomic, strong, readonly, nullable) NSString *displayName; + +/** @property photoURL + @brief The user's photo URL at the identity provider. + */ +@property(nonatomic, strong, readonly, nullable) NSURL *photoURL; + +/** @fn init + @brief Please use initWithDictionary: + */ +- (instancetype)init NS_UNAVAILABLE; + +/** @fn initWithAPIKey: + @brief Designated initializer. + @param dictionary The provider user info data from endpoint. + */ +- (instancetype)initWithDictionary:(NSDictionary *)dictionary NS_DESIGNATED_INITIALIZER; + +@end + +/** @class FIRSetAccountInfoResponse + @brief Represents the response from the setAccountInfo endpoint. + @see https://developers.google.com/identity/toolkit/web/reference/relyingparty/setAccountInfo + */ +@interface FIRSetAccountInfoResponse : NSObject + +/** @property email + @brief The email or the user. + */ +@property(nonatomic, strong, readonly, nullable) NSString *email; + +/** @property displayName + @brief The display name of the user. + */ +@property(nonatomic, strong, readonly, nullable) NSString *displayName; + +/** @property providerUserInfo + @brief The user's profiles at the associated identity providers. + */ +@property(nonatomic, strong, readonly, nullable) + NSArray *providerUserInfo; + +/** @property IDToken + @brief Either an authorization code suitable for performing an STS token exchange, or the + access token from Secure Token Service, depending on whether @c returnSecureToken is set + on the request. + */ +@property(nonatomic, strong, readonly, nullable) NSString *IDToken; + +/** @property approximateExpirationDate + @brief The approximate expiration date of the access token. + */ +@property(nonatomic, copy, readonly, nullable) NSDate *approximateExpirationDate; + +/** @property refreshToken + @brief The refresh token from Secure Token Service. + */ +@property(nonatomic, strong, readonly, nullable) NSString *refreshToken; + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRSetAccountInfoResponse.m b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRSetAccountInfoResponse.m new file mode 100644 index 0000000..7054a44 --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRSetAccountInfoResponse.m @@ -0,0 +1,63 @@ +/* + * 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 "FIRSetAccountInfoResponse.h" + +NS_ASSUME_NONNULL_BEGIN + +@implementation FIRSetAccountInfoResponseProviderUserInfo + +- (instancetype)initWithDictionary:(NSDictionary *)dictionary { + self = [super init]; + if (self) { + _providerID = [dictionary[@"providerId"] copy]; + _displayName = [dictionary[@"displayName"] copy]; + NSString *photoURL = dictionary[@"photoUrl"]; + if (photoURL) { + _photoURL = [NSURL URLWithString:photoURL]; + } + } + return self; +} + +@end + +@implementation FIRSetAccountInfoResponse + +- (BOOL)setWithDictionary:(NSDictionary *)dictionary + error:(NSError *_Nullable *_Nullable)error { + _email = [dictionary[@"email"] copy]; + _displayName = [dictionary[@"displayName"] copy]; + _IDToken = [dictionary[@"idToken"] copy]; + _approximateExpirationDate = [dictionary[@"expiresIn"] isKindOfClass:[NSString class]] ? + [NSDate dateWithTimeIntervalSinceNow:[dictionary[@"expiresIn"] doubleValue]] : nil; + _refreshToken = [dictionary[@"refreshToken"] copy]; + NSArray *providerUserInfoData = dictionary[@"providerUserInfo"]; + if (providerUserInfoData) { + NSMutableArray *providerUserInfoArray = + [NSMutableArray arrayWithCapacity:providerUserInfoData.count]; + for (NSDictionary *dictionary in providerUserInfoData) { + [providerUserInfoArray addObject: + [[FIRSetAccountInfoResponseProviderUserInfo alloc] initWithDictionary:dictionary]]; + } + _providerUserInfo = [providerUserInfoArray copy]; + } + return YES; +} + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRSignInWithGameCenterRequest.h b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRSignInWithGameCenterRequest.h new file mode 100644 index 0000000..52720cb --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRSignInWithGameCenterRequest.h @@ -0,0 +1,91 @@ +/* + * 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 + +#import "FIRAuthRPCRequest.h" +#import "FIRIdentityToolkitRequest.h" + +NS_ASSUME_NONNULL_BEGIN + +/** @class FIRSignInWithGameCenterRequest + @brief The request to sign in with Game Center account + */ +@interface FIRSignInWithGameCenterRequest : FIRIdentityToolkitRequest + +/** @property playerID + @brief The playerID to verify. + */ +@property(nonatomic, copy) NSString *playerID; + +/** @property publicKeyURL + @brief The URL for the public encryption key. + */ +@property(nonatomic, copy) NSURL *publicKeyURL; + +/** @property signature + @brief The verification signature data generated by Game Center. + */ +@property(nonatomic, copy) NSData *signature; + +/** @property salt + @brief A random strong used to compute the hash and keep it randomized. + */ +@property(nonatomic, copy) NSData *salt; + +/** @property timestamp + @brief The date and time that the signature was created. + */ +@property(nonatomic, assign) uint64_t timestamp; + +/** @property accessToken + @brief The STS Access Token for the authenticated user, only needed for linking the user. + */ +@property(nonatomic, copy, nullable) NSString *accessToken; + +/** @property displayName + @brief The display name of the local Game Center player. + */ +@property(nonatomic, copy, nullable) NSString *displayName; + +/** @fn initWithEndpoint:requestConfiguration: + @brief Please use initWithPlayerID:publicKeyURL:signature:salt:timestamp:requestConfiguration:. + */ +- (nullable instancetype)initWithEndpoint:(NSString *)endpoint + requestConfiguration:(FIRAuthRequestConfiguration *)requestConfiguration + NS_UNAVAILABLE; + +/** @fn initWithPlayerID:publicKeyURL:signature:salt:timestamp:displayName:requestConfiguration: + @brief Designated initializer. + @param playerID The ID of the Game Center player. + @param publicKeyURL The URL for the public encryption key. + @param signature The verification signature generated. + @param salt A random string used to compute the hash and keep it randomized. + @param timestamp The date and time that the signature was created. + @param displayName The display name of the Game Center player. + */ +- (nullable instancetype)initWithPlayerID:(NSString *)playerID + publicKeyURL:(NSURL *)publicKeyURL + signature:(NSData *)signature + salt:(NSData *)salt + timestamp:(uint64_t)timestamp + displayName:(NSString *)displayName + requestConfiguration:(FIRAuthRequestConfiguration *)requestConfiguration + NS_DESIGNATED_INITIALIZER; + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRSignInWithGameCenterRequest.m b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRSignInWithGameCenterRequest.m new file mode 100644 index 0000000..35fb754 --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRSignInWithGameCenterRequest.m @@ -0,0 +1,80 @@ +/* + * 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 "FIRSignInWithGameCenterRequest.h" + +#import "NSData+FIRBase64.h" + +NS_ASSUME_NONNULL_BEGIN + +/** @var kSignInWithGameCenterEndPoint + @brief The "SignInWithGameCenter" endpoint. + */ +static NSString *const kSignInWithGameCenterEndPoint = @"signInWithGameCenter"; + +@implementation FIRSignInWithGameCenterRequest + +- (nullable instancetype)initWithPlayerID:(NSString *)playerID + publicKeyURL:(NSURL *)publicKeyURL + signature:(NSData *)signature + salt:(NSData *)salt + timestamp:(uint64_t)timestamp + displayName:(NSString *)displayName + requestConfiguration:(FIRAuthRequestConfiguration *)requestConfiguration { + self = [super initWithEndpoint:kSignInWithGameCenterEndPoint + requestConfiguration:requestConfiguration]; + if (self) { + _playerID = playerID; + _publicKeyURL = [publicKeyURL copy]; + _signature = [signature copy]; + _salt = [salt copy]; + _timestamp = timestamp; + _displayName = displayName; + } + return self; +} + +#pragma mark - FIRAuthRPCRequest + +- (nullable id)unencodedHTTPRequestBodyWithError:(NSError *__autoreleasing _Nullable *)error { + NSMutableDictionary *postBody = [NSMutableDictionary dictionary]; + if (_playerID) { + postBody[@"playerId"] = _playerID; + } + if (_publicKeyURL) { + postBody[@"publicKeyUrl"] = _publicKeyURL.absoluteString; + } + if (_signature) { + postBody[@"signature"] = [_signature fir_base64URLEncodedStringWithOptions:0]; + } + if (_salt) { + postBody[@"salt"] = [_salt fir_base64URLEncodedStringWithOptions:0]; + } + if (_timestamp != 0) { + postBody[@"timestamp"] = [NSNumber numberWithUnsignedLongLong:_timestamp]; + } + if (_accessToken) { + postBody[@"idToken"] = _accessToken; + } + if (_displayName) { + postBody[@"displayName"] = _displayName; + } + return postBody; +} + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRSignInWithGameCenterResponse.h b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRSignInWithGameCenterResponse.h new file mode 100644 index 0000000..75dbd75 --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRSignInWithGameCenterResponse.h @@ -0,0 +1,64 @@ +/* + * 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 + +#import "FIRAuthRPCResponse.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface FIRSignInWithGameCenterResponse : NSObject + +/** @property IDToken + @breif Either an authorization code suitable for performing an STS token exchange, or the access + token from Secure Token Service, depending on whether @c returnSecureToken is set on the + request. + */ +@property(nonatomic, copy, readonly, nullable) NSString *IDToken; + +/** @property refreshToken + @breif @breif The refresh token from Secure Token Service. + */ +@property(nonatomic, copy, readonly, nullable) NSString *refreshToken; + +/** @property localID + @breif @breif The Firebase Auth user ID. + */ +@property(nonatomic, copy, readonly, nullable) NSString *localID; + +/** @property playerID + @breif @breif The verified player ID. + */ +@property(nonatomic, copy, readonly, nullable) NSString *playerID; + +/** @property approximateExpirationDate + @breif The approximate expiration date of the access token. + */ +@property(nonatomic, copy, readonly, nullable) NSDate *approximateExpirationDate; + +/** @property isNewUser + @breif Flag indicating that the user signing in is a new user and not a returning user. + */ +@property(nonatomic, assign) BOOL isNewUser; + +/** @property displayName + @breif The user's Game Center display name. + */ +@property(nonatomic, copy, readonly, nullable) NSString *displayName; + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRSignInWithGameCenterResponse.m b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRSignInWithGameCenterResponse.m new file mode 100644 index 0000000..7cd1b9a --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRSignInWithGameCenterResponse.m @@ -0,0 +1,40 @@ +/* + * 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 "FIRSignInWithGameCenterResponse.h" + +NS_ASSUME_NONNULL_BEGIN + +@implementation FIRSignInWithGameCenterResponse + +- (BOOL)setWithDictionary:(NSDictionary *)dictionary + error:(NSError *_Nullable *_Nullable)error { + _IDToken = [dictionary[@"idToken"] copy]; + _refreshToken = [dictionary[@"refreshToken"] copy]; + _localID = [dictionary[@"localId"] copy]; + _approximateExpirationDate = nil; + if ([dictionary[@"expiresIn"] isKindOfClass:[NSString class]]) { + _approximateExpirationDate = [NSDate dateWithTimeIntervalSinceNow:[dictionary[@"expiresIn"] integerValue]]; + } + _playerID = [dictionary[@"playerId"] copy]; + _isNewUser = [dictionary[@"isNewUser"] boolValue]; + _displayName = [dictionary[@"displayName"] copy]; + return YES; +} + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRSignUpNewUserRequest.h b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRSignUpNewUserRequest.h new file mode 100644 index 0000000..06d2cfe --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRSignUpNewUserRequest.h @@ -0,0 +1,72 @@ +/* + * 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 + +#import "FIRAuthRPCRequest.h" +#import "FIRIdentityToolkitRequest.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface FIRSignUpNewUserRequest : FIRIdentityToolkitRequest + +/** @property email + @brief The email of the user. + */ +@property(nonatomic, copy, nullable) NSString *email; + +/** @property password + @brief The password inputed by the user. + */ +@property(nonatomic, copy, nullable) NSString *password; + +/** @property displayName + @brief The password inputed by the user. + */ +@property(nonatomic, copy, nullable) NSString *displayName; + +/** @property returnSecureToken + @brief Whether the response should return access token and refresh token directly. + @remarks The default value is @c YES . + */ +@property(nonatomic, assign) BOOL returnSecureToken; + +/** @fn initWithEndpoint:requestConfiguration: + @brief Please use initWithAPIKey:email:password:displayName:requestConfiguration instead. + */ +- (nullable instancetype)initWithEndpoint:(NSString *)endpoint + requestConfiguration:(FIRAuthRequestConfiguration *)requestConfiguration + NS_UNAVAILABLE; + +/** @fn initWithEndpoint:requestConfiguration: + @brief initializer for anonymous sign-in. + */ +- (nullable instancetype)initWithRequestConfiguration: + (FIRAuthRequestConfiguration *)requestConfiguration; + +/** @fn initWithAPIKey:email:password:displayName:requestConfiguration + @brief Designated initializer. + @param requestConfiguration An object containing configurations to be added to the request. + */ +- (nullable instancetype)initWithEmail:(nullable NSString *)email + password:(nullable NSString *)password + displayName:(nullable NSString *)displayName + requestConfiguration:(FIRAuthRequestConfiguration *)requestConfiguration + NS_DESIGNATED_INITIALIZER; + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRSignUpNewUserRequest.m b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRSignUpNewUserRequest.m new file mode 100644 index 0000000..5d50e0a --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRSignUpNewUserRequest.m @@ -0,0 +1,90 @@ +/* + * 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 "FIRSignUpNewUserRequest.h" + +NS_ASSUME_NONNULL_BEGIN + +/** @var kSignupNewUserEndpoint + @brief The "SingupNewUserEndpoint" endpoint. + */ +static NSString *const kSignupNewUserEndpoint = @"signupNewUser"; + +/** @var kEmailKey + @brief The key for the "email" value in the request. + */ +static NSString *const kEmailKey = @"email"; + +/** @var kPasswordKey + @brief The key for the "password" value in the request. + */ +static NSString *const kPasswordKey = @"password"; + +/** @var kDisplayNameKey + @brief The key for the "kDisplayName" value in the request. + */ +static NSString *const kDisplayNameKey = @"displayName"; + +/** @var kReturnSecureTokenKey + @brief The key for the "returnSecureToken" value in the request. + */ +static NSString *const kReturnSecureTokenKey = @"returnSecureToken"; + +@implementation FIRSignUpNewUserRequest + +- (nullable instancetype)initWithEmail:(nullable NSString *)email + password:(nullable NSString *)password + displayName:(nullable NSString *)displayName + requestConfiguration:(FIRAuthRequestConfiguration *)requestConfiguration { + self = [super initWithEndpoint:kSignupNewUserEndpoint requestConfiguration:requestConfiguration]; + if (self) { + _email = [email copy]; + _password = [password copy]; + _displayName = [displayName copy]; + _returnSecureToken = YES; + } + return self; +} + +- (nullable instancetype)initWithRequestConfiguration: + (FIRAuthRequestConfiguration *)requestConfiguration { + self = [self initWithEmail:nil + password:nil + displayName:nil + requestConfiguration:requestConfiguration]; + return self; +} + +- (nullable id)unencodedHTTPRequestBodyWithError:(NSError *_Nullable *_Nullable)error { + NSMutableDictionary *postBody = [NSMutableDictionary dictionary]; + if (_email) { + postBody[kEmailKey] = _email; + } + if (_password) { + postBody[kPasswordKey] = _password; + } + if (_displayName) { + postBody[kDisplayNameKey] = _displayName; + } + if (_returnSecureToken) { + postBody[kReturnSecureTokenKey] = @YES; + } + return postBody; +} + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRSignUpNewUserResponse.h b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRSignUpNewUserResponse.h new file mode 100644 index 0000000..0d55939 --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRSignUpNewUserResponse.h @@ -0,0 +1,44 @@ +/* + * 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 + +#import "FIRAuthRPCResponse.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface FIRSignUpNewUserResponse : NSObject + +/** @property IDToken + @brief Either an authorization code suitable for performing an STS token exchange, or the + access token from Secure Token Service, depending on whether @c returnSecureToken is set + on the request. + */ +@property(nonatomic, strong, readonly, nullable) NSString *IDToken; + +/** @property approximateExpirationDate + @brief The approximate expiration date of the access token. + */ +@property(nonatomic, copy, readonly, nullable) NSDate *approximateExpirationDate; + +/** @property refreshToken + @brief The refresh token from Secure Token Service. + */ +@property(nonatomic, strong, readonly, nullable) NSString *refreshToken; + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRSignUpNewUserResponse.m b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRSignUpNewUserResponse.m new file mode 100644 index 0000000..03d0616 --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRSignUpNewUserResponse.m @@ -0,0 +1,34 @@ +/* + * 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 "FIRSignUpNewUserResponse.h" + +NS_ASSUME_NONNULL_BEGIN + +@implementation FIRSignUpNewUserResponse + +- (BOOL)setWithDictionary:(NSDictionary *)dictionary + error:(NSError *_Nullable *_Nullable)error { + _IDToken = [dictionary[@"idToken"] copy]; + _approximateExpirationDate = [dictionary[@"expiresIn"] isKindOfClass:[NSString class]] ? + [NSDate dateWithTimeIntervalSinceNow:[dictionary[@"expiresIn"] doubleValue]] : nil; + _refreshToken = [dictionary[@"refreshToken"] copy]; + return YES; +} + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRVerifyAssertionRequest.h b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRVerifyAssertionRequest.h new file mode 100644 index 0000000..595ee9b --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRVerifyAssertionRequest.h @@ -0,0 +1,113 @@ +/* + * 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 + +#import "FIRAuthRPCRequest.h" +#import "FIRIdentityToolkitRequest.h" + +NS_ASSUME_NONNULL_BEGIN + +/** @class FIRVerifyAssertionRequest + @brief Represents the parameters for the verifyAssertion endpoint. + @see https://developers.google.com/identity/toolkit/web/reference/relyingparty/verifyAssertion + */ +@interface FIRVerifyAssertionRequest : FIRIdentityToolkitRequest + +/** @property requestURI + @brief The URI to which the IDP redirects the user back. It may contain federated login result + params added by the IDP. + */ +@property(nonatomic, copy, nullable) NSString *requestURI; + +/** @property pendingToken + @brief The Firebase ID Token for the IDP pending to be confirmed by the user. + */ +@property(nonatomic, copy, nullable) NSString *pendingToken; + +/** @property accessToken + @brief The STS Access Token for the authenticated user, only needed for linking the user. + */ +@property(nonatomic, copy, nullable) NSString *accessToken; + +/** @property returnSecureToken + @brief Whether the response should return access token and refresh token directly. + @remarks The default value is @c YES . + */ +@property(nonatomic, assign) BOOL returnSecureToken; + +#pragma mark - Components of "postBody" + +/** @property providerID + @brief The ID of the IDP whose credentials are being presented to the endpoint. + */ +@property(nonatomic, copy, readonly) NSString *providerID; + +/** @property providerAccessToken + @brief An access token from the IDP. + */ +@property(nonatomic, copy, nullable) NSString *providerAccessToken; + +/** @property providerIDToken + @brief An ID Token from the IDP. + */ +@property(nonatomic, copy, nullable) NSString *providerIDToken; + +/** @property returnIDPCredential + @brief Whether the response should return the IDP credential directly. + */ +@property(nonatomic, assign) BOOL returnIDPCredential; + +/** @property providerOAuthTokenSecret + @brief A session ID used to map this request to a headful-lite flow. + */ +@property(nonatomic, copy, nullable) NSString *sessionID; + +/** @property providerOAuthTokenSecret + @brief An OAuth client secret from the IDP. + */ +@property(nonatomic, copy, nullable) NSString *providerOAuthTokenSecret; + +/** @property inputEmail + @brief The originally entered email in the UI. + */ +@property(nonatomic, copy, nullable) NSString *inputEmail; + +/** @property autoCreate + @brief A flag that indicates whether or not the user should be automatically created. + */ +@property(nonatomic, assign) BOOL autoCreate; + +/** @fn initWithEndpoint:requestConfiguration: + @brief Please use initWithProviderID:requestConfifuration instead. + */ +- (nullable instancetype)initWithEndpoint:(NSString *)endpoint + requestConfiguration:(FIRAuthRequestConfiguration *)requestConfiguration + NS_UNAVAILABLE; + +/** @fn initWithProviderID:requestConfifuration + @brief Designated initializer. + @param providerID The auth provider's ID. + @param requestConfiguration An object containing configurations to be added to the request. + + */ +- (nullable instancetype)initWithProviderID:(NSString *)providerID + requestConfiguration:(FIRAuthRequestConfiguration *)requestConfiguration + NS_DESIGNATED_INITIALIZER; + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRVerifyAssertionRequest.m b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRVerifyAssertionRequest.m new file mode 100644 index 0000000..3a819d7 --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRVerifyAssertionRequest.m @@ -0,0 +1,168 @@ +/* + * 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 "FIRVerifyAssertionRequest.h" + +NS_ASSUME_NONNULL_BEGIN + +/** @var kVerifyAssertionEndpoint + @brief The "verifyAssertion" endpoint. + */ +static NSString *const kVerifyAssertionEndpoint = @"verifyAssertion"; + +/** @var kProviderIDKey + @brief The key for the "providerId" value in the request. + */ +static NSString *const kProviderIDKey = @"providerId"; + +/** @var kProviderIDTokenKey + @brief The key for the "id_token" value in the request. + */ +static NSString *const kProviderIDTokenKey = @"id_token"; + +/** @var kProviderAccessTokenKey + @brief The key for the "access_token" value in the request. + */ +static NSString *const kProviderAccessTokenKey = @"access_token"; + +/** @var kProviderOAuthTokenSecretKey + @brief The key for the "oauth_token_secret" value in the request. + */ +static NSString *const kProviderOAuthTokenSecretKey = @"oauth_token_secret"; + +/** @var kIdentifierKey + @brief The key for the "identifier" value in the request. + */ +static NSString *const kIdentifierKey = @"identifier"; + +/** @var kRequestURIKey + @brief The key for the "requestUri" value in the request. + */ +static NSString *const kRequestURIKey = @"requestUri"; + +/** @var kPostBodyKey + @brief The key for the "postBody" value in the request. + */ +static NSString *const kPostBodyKey = @"postBody"; + +/** @var kPendingTokenKey + @brief The key for the "pendingToken" value in the request. + */ +static NSString *const kPendingTokenKey = @"pendingToken"; + +/** @var kAutoCreateKey + @brief The key for the "autoCreate" value in the request. + */ +static NSString *const kAutoCreateKey = @"autoCreate"; + +/** @var kIDTokenKey + @brief The key for the "idToken" value in the request. This is actually the STS Access Token, + despite it's confusing (backwards compatiable) parameter name. + */ +static NSString *const kIDTokenKey = @"idToken"; + +/** @var kReturnSecureTokenKey + @brief The key for the "returnSecureToken" value in the request. + */ +static NSString *const kReturnSecureTokenKey = @"returnSecureToken"; + +/** @var kReturnIDPCredentialKey + @brief The key for the "returnIdpCredential" value in the request. + */ +static NSString *const kReturnIDPCredentialKey = @"returnIdpCredential"; + +/** @var kSessionIDKey + @brief The key for the "sessionID" value in the request. + */ +static NSString *const kSessionIDKey = @"sessionId"; + +@implementation FIRVerifyAssertionRequest + +- (nullable instancetype)initWithProviderID:(NSString *)providerID + requestConfiguration:(FIRAuthRequestConfiguration *)requestConfiguration { + self = [super initWithEndpoint:kVerifyAssertionEndpoint + requestConfiguration:requestConfiguration]; + if (self) { + _providerID = providerID; + _returnSecureToken = YES; + _autoCreate = YES; + _returnIDPCredential = YES; + } + return self; +} + +- (nullable id)unencodedHTTPRequestBodyWithError:(NSError *_Nullable *_Nullable)error { + NSURLComponents *components = [[NSURLComponents alloc] init]; + NSMutableArray *queryItems = [@[[NSURLQueryItem queryItemWithName:kProviderIDKey + value:_providerID]] + mutableCopy]; + + if (_providerIDToken) { + [queryItems addObject:[NSURLQueryItem queryItemWithName:kProviderIDTokenKey + value:_providerIDToken]]; + } + + if (_providerAccessToken) { + [queryItems addObject:[NSURLQueryItem queryItemWithName:kProviderAccessTokenKey + value:_providerAccessToken]]; + } + + if (!_providerIDToken && !_providerAccessToken && !_pendingToken && !_requestURI) { + [NSException raise:NSInvalidArgumentException + format:@"One of IDToken, accessToken, pendingToken, or requestURI must be supplied."]; + } + + if (_providerOAuthTokenSecret) { + [queryItems addObject:[NSURLQueryItem queryItemWithName:kProviderOAuthTokenSecretKey + value:_providerOAuthTokenSecret]]; + } + + if (_inputEmail) { + [queryItems addObject:[NSURLQueryItem queryItemWithName:kIdentifierKey + value:_inputEmail]]; + } + [components setQueryItems:queryItems]; + NSMutableDictionary *body = [@{ + kRequestURIKey : _requestURI ?: @"http://localhost", // Unused by server, but required + kPostBodyKey : [components query] + } mutableCopy]; + + if (_pendingToken) { + body[kPendingTokenKey] = _pendingToken; + } + if (_accessToken) { + body[kIDTokenKey] = _accessToken; + } + if (_returnSecureToken) { + body[kReturnSecureTokenKey] = @YES; + } + + if (_returnIDPCredential) { + body[kReturnIDPCredentialKey] = @YES; + } + + if (_sessionID) { + body[kSessionIDKey] = _sessionID; + } + + body[kAutoCreateKey] = @(_autoCreate); + + return body; +} + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRVerifyAssertionResponse.h b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRVerifyAssertionResponse.h new file mode 100644 index 0000000..295e2ff --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRVerifyAssertionResponse.h @@ -0,0 +1,211 @@ +/* + * 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 + +#import "FIRAuthRPCResponse.h" + +NS_ASSUME_NONNULL_BEGIN + +/** @class FIRVerifyAssertionResponse + @brief Represents the response from the verifyAssertion endpoint. + @see https://developers.google.com/identity/toolkit/web/reference/relyingparty/verifyAssertion + */ +@interface FIRVerifyAssertionResponse : NSObject + +/** @property federatedID + @brief The unique ID identifies the IdP account. + */ +@property(nonatomic, strong, readonly, nullable) NSString *federatedID; + +/** @property providerID + @brief The IdP ID. For white listed IdPs it's a short domain name e.g. google.com, aol.com, + live.net and yahoo.com. If the "providerId" param is set to OpenID OP identifer other than + the whilte listed IdPs the OP identifier is returned. If the "identifier" param is federated + ID in the createAuthUri request. The domain part of the federated ID is returned. + */ +@property(nonatomic, strong, readonly, nullable) NSString *providerID; + +/** @property localID + @brief The RP local ID if it's already been mapped to the IdP account identified by the + federated ID. + */ +@property(nonatomic, strong, readonly, nullable) NSString *localID; + +/** @property email + @brief The email returned by the IdP. NOTE: The federated login user may not own the email. + */ +@property(nonatomic, strong, readonly, nullable) NSString *email; + +/** @property inputEmail + @brief It's the identifier param in the createAuthUri request if the identifier is an email. It + can be used to check whether the user input email is different from the asserted email. + */ +@property(nonatomic, strong, readonly, nullable) NSString *inputEmail; + +/** @property originalEmail + @brief The original email stored in the mapping storage. It's returned when the federated ID is + associated to a different email. + */ +@property(nonatomic, strong, readonly, nullable) NSString *originalEmail; + +/** @property oauthRequestToken + @brief The user approved request token for the OpenID OAuth extension. + */ +@property(nonatomic, strong, readonly, nullable) NSString *oauthRequestToken; + +/** @property oauthScope + @brief The scope for the OpenID OAuth extension. + */ +@property(nonatomic, strong, readonly, nullable) NSString *oauthScope; + +/** @property firstName + @brief The first name of the user. + */ +@property(nonatomic, strong, readonly, nullable) NSString *firstName; + +/** @property lastName + @brief The last name of the user. + */ +@property(nonatomic, strong, readonly, nullable) NSString *lastName; + +/** @property fullName + @brief The full name of the user. + */ +@property(nonatomic, strong, readonly, nullable) NSString *fullName; + +/** @property nickName + @brief The nick name of the user. + */ +@property(nonatomic, strong, readonly, nullable) NSString *nickName; + +/** @property displayName + @brief The display name of the user. + */ +@property(nonatomic, strong, readonly, nullable) NSString *displayName; + +/** @property IDToken + @brief Either an authorization code suitable for performing an STS token exchange, or the + access token from Secure Token Service, depending on whether @c returnSecureToken is set + on the request. + */ +@property(nonatomic, strong, readonly, nullable) NSString *IDToken; + +/** @property approximateExpirationDate + @brief The approximate expiration date of the access token. + */ +@property(nonatomic, copy, readonly, nullable) NSDate *approximateExpirationDate; + +/** @property refreshToken + @brief The refresh token from Secure Token Service. + */ +@property(nonatomic, strong, readonly, nullable) NSString *refreshToken; + +/** @property action + @brief The action code. + */ +@property(nonatomic, strong, readonly, nullable) NSString *action; + +/** @property language + @brief The language preference of the user. + */ +@property(nonatomic, strong, readonly, nullable) NSString *language; + +/** @property timeZone + @brief The timezone of the user. + */ +@property(nonatomic, strong, readonly, nullable) NSString *timeZone; + +/** @property photoURL + @brief The URI of the public accessible profile picture. + */ +@property(nonatomic, strong, readonly, nullable) NSURL *photoURL; + +/** @property dateOfBirth + @brief The birth date of the IdP account. + */ +@property(nonatomic, strong, readonly, nullable) NSString *dateOfBirth; + +/** @property context + @brief The opaque value used by the client to maintain context info between the authentication + request and the IDP callback. + */ +@property(nonatomic, strong, readonly, nullable) NSString *context; + +/** @property verifiedProvider + @brief When action is 'map', contains the idps which can be used for confirmation. + */ +@property(nonatomic, strong, readonly, nullable) NSArray *verifiedProvider; + +/** @property needConfirmation + @brief Whether the assertion is from a non-trusted IDP and need account linking confirmation. + */ +@property(nonatomic, assign) BOOL needConfirmation; + +/** @property emailRecycled + @brief It's true if the email is recycled. + */ +@property(nonatomic, assign) BOOL emailRecycled; + +/** @property emailVerified + @brief The value is true if the IDP is also the email provider. It means the user owns the + email. + */ +@property(nonatomic, assign) BOOL emailVerified; + +/** @property isNewUser + @brief Flag indicating that the user signing in is a new user and not a returning user. + */ +@property(nonatomic, assign) BOOL isNewUser; + +/** @property profile + @brief Dictionary containing the additional IdP specific information. + */ +@property(nonatomic, readonly, nullable) NSDictionary *profile; + +/** @property username + @brief The name of the user. + */ +@property(nonatomic, strong, readonly, nullable) NSString *username; + +/** @property oauthIDToken + @brief The ID token for the OpenID OAuth extension. + */ +@property(nonatomic, strong, readonly, nullable) NSString *oauthIDToken; + +/** @property oauthExpirationDate + @brief The approximate expiration date of the oauth access token. + */ +@property(nonatomic, copy, readonly, nullable) NSDate *oauthExpirationDate; + +/** @property oauthAccessToken + @brief The access token for the OpenID OAuth extension. + */ +@property(nonatomic, strong, readonly, nullable) NSString *oauthAccessToken; + +/** @property oauthSecretToken + @brief The secret for the OpenID OAuth extention. + */ +@property(nonatomic, readonly, nullable) NSString *oauthSecretToken; + +/** @property pendingToken + @brief The pending ID Token string. + */ +@property(nonatomic, copy, nullable) NSString *pendingToken; + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRVerifyAssertionResponse.m b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRVerifyAssertionResponse.m new file mode 100644 index 0000000..a5f23d5 --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRVerifyAssertionResponse.m @@ -0,0 +1,86 @@ +/* + * 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 "FIRVerifyAssertionResponse.h" + +NS_ASSUME_NONNULL_BEGIN + +@implementation FIRVerifyAssertionResponse + +- (BOOL)setWithDictionary:(NSDictionary *)dictionary + error:(NSError *_Nullable *_Nullable)error { + _federatedID = [dictionary[@"federatedId"] copy]; + _providerID = [dictionary[@"providerId"] copy]; + _localID = [dictionary[@"localId"] copy]; + _emailRecycled = [dictionary[@"emailRecycled"] boolValue]; + _emailVerified = [dictionary[@"emailVerified"] boolValue]; + _email = [dictionary[@"email"] copy]; + _inputEmail = [dictionary[@"inputEmail"] copy]; + _originalEmail = [dictionary[@"originalEmail"] copy]; + _oauthRequestToken = [dictionary[@"oauthRequestToken"] copy]; + _oauthScope = [dictionary[@"oauthScope"] copy]; + _firstName = [dictionary[@"firstName"] copy]; + _lastName = [dictionary[@"lastName"] copy]; + _fullName = [dictionary[@"fullName"] copy]; + _nickName = [dictionary[@"nickName"] copy]; + _displayName = [dictionary[@"displayName"] copy]; + _IDToken = [dictionary[@"idToken"] copy]; + _approximateExpirationDate = [dictionary[@"expiresIn"] isKindOfClass:[NSString class]] ? + [NSDate dateWithTimeIntervalSinceNow:[dictionary[@"expiresIn"] doubleValue]] : nil; + _refreshToken = [dictionary[@"refreshToken"] copy]; + _isNewUser = [dictionary[@"isNewUser"] boolValue]; + id rawUserInfo = dictionary[@"rawUserInfo"]; + if ([rawUserInfo isKindOfClass:[NSString class]]) { + NSData *data = [rawUserInfo dataUsingEncoding:NSUTF8StringEncoding]; + rawUserInfo = [NSJSONSerialization JSONObjectWithData:data + options:NSJSONReadingMutableLeaves + error:nil]; + } + if ([rawUserInfo isKindOfClass:[NSDictionary class]]) { + _profile = [[NSDictionary alloc] initWithDictionary:rawUserInfo + copyItems:YES]; + } + _username = [dictionary[@"username"] copy]; + _action = [dictionary[@"action"] copy]; + _language = [dictionary[@"language"] copy]; + _timeZone = [dictionary[@"timeZone"] copy]; + _photoURL = dictionary[@"photoUrl"] ? [NSURL URLWithString:dictionary[@"photoUrl"]] : nil; + _dateOfBirth = [dictionary[@"dateOfBirth"] copy]; + _context = [dictionary[@"context"] copy]; + _needConfirmation = [dictionary[@"needConfirmation"] boolValue]; + id verifiedProvider = dictionary[@"verifiedProvider"]; + if ([verifiedProvider isKindOfClass:[NSString class]]) { + NSData *data = [verifiedProvider dataUsingEncoding:NSUTF8StringEncoding]; + verifiedProvider = [NSJSONSerialization JSONObjectWithData:data + options:NSJSONReadingMutableLeaves + error:nil]; + } + if ([verifiedProvider isKindOfClass:[NSArray class]]) { + _verifiedProvider = [[NSArray alloc] initWithArray:verifiedProvider + copyItems:YES]; + } + _oauthIDToken = [dictionary[@"oauthIdToken"] copy]; + _oauthExpirationDate = [dictionary[@"oauthExpireIn"] isKindOfClass:[NSString class]] ? + [NSDate dateWithTimeIntervalSinceNow:[dictionary[@"oauthExpireIn"] doubleValue]] : nil; + _oauthAccessToken = [dictionary[@"oauthAccessToken"] copy]; + _oauthSecretToken = [dictionary[@"oauthTokenSecret"] copy]; + _pendingToken = [dictionary[@"pendingToken"] copy]; + return YES; +} + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRVerifyClientRequest.h b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRVerifyClientRequest.h new file mode 100644 index 0000000..a235788 --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRVerifyClientRequest.h @@ -0,0 +1,56 @@ +/* + * 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 "FIRIdentityToolkitRequest.h" + +#import "FIRAuthRPCRequest.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface FIRVerifyClientRequest : FIRIdentityToolkitRequest + +/** @property appToken + @brief The APNS device token. + */ +@property(nonatomic, readonly, nullable) NSString *appToken; + +/** @property isSandbox + @brief The flag that denotes if the appToken pertains to Sandbox or Production. + */ +@property(nonatomic, assign, readonly) BOOL isSandbox; + +/** @fn initWithEndpoint:requestConfiguration: + @brief Please use initWithToken:requestConfiguration: instead. + */ +- (nullable instancetype)initWithEndpoint:(NSString *)endpoint + requestConfiguration:(FIRAuthRequestConfiguration *)requestConfiguration + NS_UNAVAILABLE; + +/** @fn initWithAppToken:isSandbox:requestConfiguration: + @brief Designated initializer. + @param appToken The APNS device token. + @param isSandbox The flag indicating whether or not the app token provided is for Sandbox or + Production. + @param requestConfiguration An object containing configurations to be added to the request. + */ +- (nullable instancetype)initWithAppToken:(nullable NSString *)appToken + isSandbox:(BOOL)isSandbox + requestConfiguration:(FIRAuthRequestConfiguration *)requestConfiguration + NS_DESIGNATED_INITIALIZER; + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRVerifyClientRequest.m b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRVerifyClientRequest.m new file mode 100644 index 0000000..101f4ef --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRVerifyClientRequest.m @@ -0,0 +1,63 @@ +/* + * 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 "FIRVerifyClientRequest.h" + + +NS_ASSUME_NONNULL_BEGIN + +/** @var kVerifyClientEndpoint + @brief The endpoint for the verifyClient request. + */ +static NSString *const kVerifyClientEndpoint = @"verifyClient"; + +/** @var kAppTokenKey + @brief The key for the appToken request paramenter. + */ +static NSString *const kAPPTokenKey = @"appToken"; + +/** @var kIsSandboxKey + @brief The key for the isSandbox request parameter + */ +static NSString *const kIsSandboxKey = @"isSandbox"; + +@implementation FIRVerifyClientRequest + +- (nullable instancetype)initWithAppToken:(nullable NSString *)appToken + isSandbox:(BOOL)isSandbox + requestConfiguration:(FIRAuthRequestConfiguration *)requestConfiguration { + self = [super initWithEndpoint:kVerifyClientEndpoint requestConfiguration:requestConfiguration]; + if (self) { + _appToken = appToken; + _isSandbox = isSandbox; + } + return self; +} + +- (nullable id)unencodedHTTPRequestBodyWithError:(NSError *__autoreleasing _Nullable *)error { + NSMutableDictionary *postBody = [NSMutableDictionary dictionary]; + if (_appToken) { + postBody[kAPPTokenKey] = _appToken; + } + if (_isSandbox) { + postBody[kIsSandboxKey] = @YES; + } + return postBody; +} + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRVerifyClientResponse.h b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRVerifyClientResponse.h new file mode 100644 index 0000000..794256a --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRVerifyClientResponse.h @@ -0,0 +1,38 @@ +/* + * 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 + +#import "FIRAuthRPCResponse.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface FIRVerifyClientResponse : NSObject + +/** @property receipt + @brief Receipt that the APNS token was successfully validated with APNS. + */ +@property(nonatomic, copy, readonly, nullable) NSString *receipt; + +/** @property suggestedTimeOut + @brief The date after which delivery of the silent push notification is considered to have + failed. + */ +@property(nonatomic, copy, readonly, nullable) NSDate *suggestedTimeOutDate; + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRVerifyClientResponse.m b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRVerifyClientResponse.m new file mode 100644 index 0000000..c2477d2 --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRVerifyClientResponse.m @@ -0,0 +1,33 @@ +/* + * 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 "FIRVerifyClientResponse.h" + +NS_ASSUME_NONNULL_BEGIN + +@implementation FIRVerifyClientResponse + +- (BOOL)setWithDictionary:(NSDictionary *)dictionary + error:(NSError *_Nullable *_Nullable)error { + _receipt = dictionary[@"receipt"]; + _suggestedTimeOutDate = [dictionary[@"suggestedTimeout"] isKindOfClass:[NSString class]] ? + [NSDate dateWithTimeIntervalSinceNow:[dictionary[@"suggestedTimeout"] doubleValue]] : nil; + return YES; +} + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRVerifyCustomTokenRequest.h b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRVerifyCustomTokenRequest.h new file mode 100644 index 0000000..84bad05 --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRVerifyCustomTokenRequest.h @@ -0,0 +1,57 @@ +/* + * 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 + +#import "FIRAuthRPCRequest.h" +#import "FIRIdentityToolkitRequest.h" + +NS_ASSUME_NONNULL_BEGIN + +/** @class FIRVerifyCustomTokenRequest + @brief Represents the parameters for the verifyCustomToken endpoint. + */ +@interface FIRVerifyCustomTokenRequest : FIRIdentityToolkitRequest + +/** @property token + @brief The self-signed token from the client's BYOAuth server. + */ +@property(nonatomic, copy, readonly) NSString *token; + +/** @property returnSecureToken + @brief Whether the response should return access token and refresh token directly. + @remarks The default value is @c YES . + */ +@property(nonatomic, assign) BOOL returnSecureToken; + +/** @fn initWithEndpoint:requestConfiguration: + @brief Please use initWithToken:requestConfiguration: instead. + */ +- (nullable instancetype)initWithEndpoint:(NSString *)endpoint requestConfiguration: + (FIRAuthRequestConfiguration *)requestConfiguration NS_UNAVAILABLE; + +/** @fn initWithToken:requestConfiguration: + @brief Designated initializer. + @param token The self-signed token from the client's BYOAuth server. + @param requestConfiguration An object containing configurations to be added to the request. + */ +- (nullable instancetype)initWithToken:(NSString *)token + requestConfiguration:(FIRAuthRequestConfiguration *)requestConfiguration + NS_DESIGNATED_INITIALIZER; + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRVerifyCustomTokenRequest.m b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRVerifyCustomTokenRequest.m new file mode 100644 index 0000000..9ad46a0 --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRVerifyCustomTokenRequest.m @@ -0,0 +1,61 @@ +/* + * 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 "FIRVerifyCustomTokenRequest.h" + +NS_ASSUME_NONNULL_BEGIN + +/** @var kVerifyCustomTokenEndpoint + @brief The "verifyPassword" endpoint. + */ +static NSString *const kVerifyCustomTokenEndpoint = @"verifyCustomToken"; + +/** @var kTokenKey + @brief The key for the "token" value in the request. + */ +static NSString *const kTokenKey = @"token"; + +/** @var kReturnSecureTokenKey + @brief The key for the "returnSecureToken" value in the request. + */ +static NSString *const kReturnSecureTokenKey = @"returnSecureToken"; + +@implementation FIRVerifyCustomTokenRequest + +- (nullable instancetype)initWithToken:(NSString *)token + requestConfiguration:(FIRAuthRequestConfiguration *)requestConfiguration { + self = [super initWithEndpoint:kVerifyCustomTokenEndpoint + requestConfiguration:requestConfiguration]; + if (self) { + _token = [token copy]; + _returnSecureToken = YES; + } + return self; +} + +- (nullable id)unencodedHTTPRequestBodyWithError:(NSError *_Nullable *_Nullable)error { + NSMutableDictionary *body = [@{ + kTokenKey : _token + } mutableCopy]; + if (_returnSecureToken) { + body[kReturnSecureTokenKey] = @YES; + } + return body; +} + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRVerifyCustomTokenResponse.h b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRVerifyCustomTokenResponse.h new file mode 100644 index 0000000..6957bf3 --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRVerifyCustomTokenResponse.h @@ -0,0 +1,52 @@ +/* + * 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 + +#import "FIRAuthRPCResponse.h" + +NS_ASSUME_NONNULL_BEGIN + +/** @class FIRVerifyCustomTokenResponse + @brief Represents the response from the verifyCustomToken endpoint. + */ +@interface FIRVerifyCustomTokenResponse : NSObject + +/** @property IDToken + @brief Either an authorization code suitable for performing an STS token exchange, or the + access token from Secure Token Service, depending on whether @c returnSecureToken is set + on the request. + */ +@property(nonatomic, strong, readonly, nullable) NSString *IDToken; + +/** @property approximateExpirationDate + @brief The approximate expiration date of the access token. + */ +@property(nonatomic, copy, readonly, nullable) NSDate *approximateExpirationDate; + +/** @property refreshToken + @brief The refresh token from Secure Token Service. + */ +@property(nonatomic, strong, readonly, nullable) NSString *refreshToken; + +/** @property isNewUser + @brief Flag indicating that the user signing in is a new user and not a returning user. + */ +@property(nonatomic, assign) BOOL isNewUser; + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRVerifyCustomTokenResponse.m b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRVerifyCustomTokenResponse.m new file mode 100644 index 0000000..8b67360 --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRVerifyCustomTokenResponse.m @@ -0,0 +1,35 @@ +/* + * 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 "FIRVerifyCustomTokenResponse.h" + +NS_ASSUME_NONNULL_BEGIN + +@implementation FIRVerifyCustomTokenResponse + +- (BOOL)setWithDictionary:(NSDictionary *)dictionary + error:(NSError *_Nullable *_Nullable)error { + _IDToken = [dictionary[@"idToken"] copy]; + _approximateExpirationDate = [dictionary[@"expiresIn"] isKindOfClass:[NSString class]] ? + [NSDate dateWithTimeIntervalSinceNow:[dictionary[@"expiresIn"] doubleValue]] : nil; + _refreshToken = [dictionary[@"refreshToken"] copy]; + _isNewUser = [dictionary[@"isNewUser"] boolValue]; + return YES; +} + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRVerifyPasswordRequest.h b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRVerifyPasswordRequest.h new file mode 100644 index 0000000..39eb388 --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRVerifyPasswordRequest.h @@ -0,0 +1,81 @@ +/* + * 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 + +#import "FIRAuthRPCRequest.h" +#import "FIRIdentityToolkitRequest.h" + +NS_ASSUME_NONNULL_BEGIN + +/** @class FIRVerifyPasswordRequest + @brief Represents the parameters for the verifyPassword endpoint. + @see https://developers.google.com/identity/toolkit/web/reference/relyingparty/verifyPassword + */ +@interface FIRVerifyPasswordRequest : FIRIdentityToolkitRequest + +/** @property email + @brief The email of the user. + */ +@property(nonatomic, copy) NSString *email; + +/** @property password + @brief The password inputed by the user. + */ +@property(nonatomic, copy) NSString *password; + +/** @property pendingIDToken + @brief The GITKit token for the non-trusted IDP, which is to be confirmed by the user. + */ +@property(nonatomic, copy, nullable) NSString *pendingIDToken; + +/** @property captchaChallenge + @brief The captcha challenge. + */ +@property(nonatomic, copy, nullable) NSString *captchaChallenge; + +/** @property captchaResponse + @brief Response to the captcha. + */ +@property(nonatomic, copy, nullable) NSString *captchaResponse; + +/** @property returnSecureToken + @brief Whether the response should return access token and refresh token directly. + @remarks The default value is @c YES . + */ +@property(nonatomic, assign) BOOL returnSecureToken; + +/** @fn initWithEndpoint:requestConfiguration: + @brief Please use initWithEmail:password:requestConfiguration: + */ +- (nullable instancetype)initWithEndpoint:(NSString *)endpoint + requestConfiguration:(FIRAuthRequestConfiguration *)requestConfiguration + NS_UNAVAILABLE; + +/** @fn initWithEmail:password:requestConfiguration: + @brief Designated initializer. + @param email The email of the user. + @param password The password inputed by the user. + @param requestConfiguration The configu + */ +- (nullable instancetype)initWithEmail:(NSString *)email + password:(NSString *)password + requestConfiguration:(FIRAuthRequestConfiguration *)requestConfiguration + NS_DESIGNATED_INITIALIZER; + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRVerifyPasswordRequest.m b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRVerifyPasswordRequest.m new file mode 100644 index 0000000..5849da6 --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRVerifyPasswordRequest.m @@ -0,0 +1,96 @@ +/* + * 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 "FIRVerifyPasswordRequest.h" + +NS_ASSUME_NONNULL_BEGIN + +/** @var kVerifyPasswordEndpoint + @brief The "verifyPassword" endpoint. + */ +static NSString *const kVerifyPasswordEndpoint = @"verifyPassword"; + +/** @var kEmailKey + @brief The key for the "email" value in the request. + */ +static NSString *const kEmailKey = @"email"; + +/** @var kPasswordKey + @brief The key for the "password" value in the request. + */ +static NSString *const kPasswordKey = @"password"; + +/** @var kPendingIDTokenKey + @brief The key for the "pendingIdToken" value in the request. + */ +static NSString *const kPendingIDTokenKey = @"pendingIdToken"; + +/** @var kCaptchaChallengeKey + @brief The key for the "captchaChallenge" value in the request. + */ +static NSString *const kCaptchaChallengeKey = @"captchaChallenge"; + +/** @var kCaptchaResponseKey + @brief The key for the "captchaResponse" value in the request. + */ +static NSString *const kCaptchaResponseKey = @"captchaResponse"; + +/** @var kReturnSecureTokenKey + @brief The key for the "returnSecureToken" value in the request. + */ +static NSString *const kReturnSecureTokenKey = @"returnSecureToken"; + +@implementation FIRVerifyPasswordRequest + +- (nullable instancetype)initWithEmail:(NSString *)email + password:(NSString *)password + requestConfiguration:(nonnull FIRAuthRequestConfiguration *)requestConfiguration { + self = [super initWithEndpoint:kVerifyPasswordEndpoint + requestConfiguration:requestConfiguration]; + if (self) { + _email = [email copy]; + _password = [password copy]; + _returnSecureToken = YES; + } + return self; +} + +- (nullable id)unencodedHTTPRequestBodyWithError:(NSError *_Nullable *_Nullable)error { + NSMutableDictionary *postBody = [NSMutableDictionary dictionary]; + if (_email) { + postBody[kEmailKey] = _email; + } + if (_password) { + postBody[kPasswordKey] = _password; + } + if (_pendingIDToken) { + postBody[kPendingIDTokenKey] = _pendingIDToken; + } + if (_captchaChallenge) { + postBody[kCaptchaChallengeKey] = _captchaChallenge; + } + if (_captchaResponse) { + postBody[kCaptchaResponseKey] = _captchaResponse; + } + if (_returnSecureToken) { + postBody[kReturnSecureTokenKey] = @YES; + } + return postBody; +} + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRVerifyPasswordResponse.h b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRVerifyPasswordResponse.h new file mode 100644 index 0000000..bed13be --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRVerifyPasswordResponse.h @@ -0,0 +1,72 @@ +/* + * 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 + +#import "FIRAuthRPCResponse.h" + +NS_ASSUME_NONNULL_BEGIN + +/** @class FIRVerifyPasswordResponse + @brief Represents the response from the verifyPassword endpoint. + @remarks Possible error codes: + - FIRAuthInternalErrorCodeUserDisabled + - FIRAuthInternalErrorCodeEmailNotFound + @see https://developers.google.com/identity/toolkit/web/reference/relyingparty/verifyPassword + */ +@interface FIRVerifyPasswordResponse : NSObject + +/** @property localID + @brief The RP local ID if it's already been mapped to the IdP account identified by the + federated ID. + */ +@property(nonatomic, strong, readonly, nullable) NSString *localID; + +/** @property email + @brief The email returned by the IdP. NOTE: The federated login user may not own the email. + */ +@property(nonatomic, strong, readonly, nullable) NSString *email; + +/** @property displayName + @brief The display name of the user. + */ +@property(nonatomic, strong, readonly, nullable) NSString *displayName; + +/** @property IDToken + @brief Either an authorization code suitable for performing an STS token exchange, or the + access token from Secure Token Service, depending on whether @c returnSecureToken is set + on the request. + */ +@property(nonatomic, strong, readonly, nullable) NSString *IDToken; + +/** @property approximateExpirationDate + @brief The approximate expiration date of the access token. + */ +@property(nonatomic, copy, readonly, nullable) NSDate *approximateExpirationDate; + +/** @property refreshToken + @brief The refresh token from Secure Token Service. + */ +@property(nonatomic, strong, readonly, nullable) NSString *refreshToken; + +/** @property photoURL + @brief The URI of the public accessible profile picture. + */ +@property(nonatomic, strong, readonly, nullable) NSURL *photoURL; + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRVerifyPasswordResponse.m b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRVerifyPasswordResponse.m new file mode 100644 index 0000000..b42a371 --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRVerifyPasswordResponse.m @@ -0,0 +1,38 @@ +/* + * 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 "FIRVerifyPasswordResponse.h" + +NS_ASSUME_NONNULL_BEGIN + +@implementation FIRVerifyPasswordResponse + +- (BOOL)setWithDictionary:(NSDictionary *)dictionary + error:(NSError *_Nullable *_Nullable)error { + _localID = [dictionary[@"localId"] copy]; + _email = [dictionary[@"email"] copy]; + _displayName = [dictionary[@"displayName"] copy]; + _IDToken = [dictionary[@"idToken"] copy]; + _approximateExpirationDate = [dictionary[@"expiresIn"] isKindOfClass:[NSString class]] ? + [NSDate dateWithTimeIntervalSinceNow:[dictionary[@"expiresIn"] doubleValue]] : nil; + _refreshToken = [dictionary[@"refreshToken"] copy]; + _photoURL = dictionary[@"photoUrl"] ? [NSURL URLWithString:dictionary[@"photoUrl"]] : nil; + return YES; +} + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRVerifyPhoneNumberRequest.h b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRVerifyPhoneNumberRequest.h new file mode 100644 index 0000000..07988f1 --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRVerifyPhoneNumberRequest.h @@ -0,0 +1,91 @@ +/* + * 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 "FIRIdentityToolkitRequest.h" + +#import "FIRAuthOperationType.h" +#import "FIRAuthRPCRequest.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface FIRVerifyPhoneNumberRequest : FIRIdentityToolkitRequest + +/** @property verificationID + @brief The verification ID obtained from the response of @c sendVerificationCode. +*/ +@property(nonatomic, readonly, nullable) NSString *verificationID; + +/** @property verificationCode + @brief The verification code provided by the user. +*/ +@property(nonatomic, readonly, nullable) NSString *verificationCode; + +/** @property accessToken + @brief The STS Access Token for the authenticated user. + */ +@property(nonatomic, copy, nullable) NSString *accessToken; + +/** @var temporaryProof + @brief The temporary proof code, previously returned from the backend. + */ +@property(nonatomic, readonly, nonnull) NSString *temporaryProof; + +/** @var phoneNumber + @brief The phone number to be verified in the request. + */ +@property(nonatomic, readonly, nonnull) NSString *phoneNumber; + +/** @var operation + @brief The type of operation triggering this verify phone number request. + */ +@property(nonatomic, assign, readonly) FIRAuthOperationType operation; + +/** @fn initWithEndpoint:requestConfiguration: + @brief Please use initWithVerificationID:verificationCode:requestConfiguration + */ +- (nullable instancetype)initWithEndpoint:(NSString *)endpoint + requestConfiguration:(FIRAuthRequestConfiguration *)requestConfiguration + NS_UNAVAILABLE; + +/** @fn initWithTemporaryProof:phoneNumberAPIKey + @brief Designated initializer. + @param temporaryProof The temporary proof sent by the backed. + @param phoneNumber The phone number associated with the credential to be signed in. + @param operation Indicates what operation triggered the verify phone number request. + @param requestConfiguration An object containing configurations to be added to the request. + */ +- (nullable instancetype)initWithTemporaryProof:(NSString *)temporaryProof + phoneNumber:(NSString *)phoneNumber + operation:(FIRAuthOperationType)operation + requestConfiguration:(FIRAuthRequestConfiguration *)requestConfiguration + NS_DESIGNATED_INITIALIZER; + +/** @fn initWithVerificationID:verificationCode:requestConfiguration + @brief Designated initializer. + @param verificationID The verification ID obtained from the response of @c sendVerificationCode. + @param verificationCode The verification code provided by the user. + @param operation Indicates what operation triggered the verify phone number request. + @param requestConfiguration An object containing configurations to be added to the request. + */ +- (nullable instancetype)initWithVerificationID:(NSString *)verificationID + verificationCode:(NSString *)verificationCode + operation:(FIRAuthOperationType)operation + requestConfiguration:(FIRAuthRequestConfiguration *)requestConfiguration + NS_DESIGNATED_INITIALIZER; + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRVerifyPhoneNumberRequest.m b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRVerifyPhoneNumberRequest.m new file mode 100644 index 0000000..022ab9e --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRVerifyPhoneNumberRequest.m @@ -0,0 +1,133 @@ +/* + * 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 "FIRVerifyPhoneNumberRequest.h" + +NS_ASSUME_NONNULL_BEGIN + +/** @var kVerifyPhoneNumberEndPoint + @brief The "verifyPhoneNumber" endpoint. + */ +static NSString *const kVerifyPhoneNumberEndPoint = @"verifyPhoneNumber"; + +/** @var kVerificationIDKey + @brief The key for the verification ID parameter in the request. + */ +static NSString *const kVerificationIDKey = @"sessionInfo"; + +/** @var kVerificationCodeKey + @brief The key for the verification code parameter in the request. + */ +static NSString *const kVerificationCodeKey = @"code"; + +/** @var kIDTokenKey + @brief The key for the "ID Token" value in the request. + */ +static NSString *const kIDTokenKey = @"idToken"; + +/** @var kTemporaryProofKey + @brief The key for the temporary proof value in the request. + */ +static NSString *const kTemporaryProofKey = @"temporaryProof"; + +/** @var kPhoneNumberKey + @brief The key for the phone number value in the request. + */ +static NSString *const kPhoneNumberKey = @"phoneNumber"; + +/** @var kOperationKey + @brief The key for the operation value in the request. + */ +static NSString *const kOperationKey = @"operation"; + +@implementation FIRVerifyPhoneNumberRequest + +- (nullable instancetype)initWithTemporaryProof:(NSString *)temporaryProof + phoneNumber:(NSString *)phoneNumber + operation:(FIRAuthOperationType)operation + requestConfiguration: + (FIRAuthRequestConfiguration *)requestConfiguration { + self = [super initWithEndpoint:kVerifyPhoneNumberEndPoint + requestConfiguration:requestConfiguration]; + if (self) { + _temporaryProof = [temporaryProof copy]; + _phoneNumber = [phoneNumber copy]; + _operation = operation; + } + return self; +} + +- (nullable instancetype)initWithVerificationID:(NSString *)verificationID + verificationCode:(NSString *)verificationCode + operation:(FIRAuthOperationType)operation + requestConfiguration: + (FIRAuthRequestConfiguration *)requestConfiguration { + self = [super initWithEndpoint:kVerifyPhoneNumberEndPoint + requestConfiguration:requestConfiguration]; + if (self) { + _verificationID = verificationID; + _verificationCode = verificationCode; + _operation = operation; + } + return self; +} + +/** @fn FIRAuthOperationString + @brief Returns a string object corresponding to the provided FIRAuthOperationType value. + @param operationType The value of the FIRAuthOperationType enum which will be translated to its + corresponding string value. + @return The string value corresponding to the FIRAuthOperationType argument. + */ +NSString *const FIRAuthOperationString(FIRAuthOperationType operationType) { + switch(operationType){ + case FIRAuthOperationTypeUnspecified: + return @"VERIFY_OP_UNSPECIFIED"; + case FIRAuthOperationTypeSignUpOrSignIn: + return @"SIGN_UP_OR_IN"; + case FIRAuthOperationTypeReauth: + return @"REAUTH"; + case FIRAuthOperationTypeLink: + return @"LINK"; + case FIRAuthOperationTypeUpdate: + return @"UPDATE"; + } +} + +- (nullable id)unencodedHTTPRequestBodyWithError:(NSError *__autoreleasing _Nullable *)error { + NSMutableDictionary *postBody = [NSMutableDictionary dictionary]; + if (_verificationID) { + postBody[kVerificationIDKey] = _verificationID; + } + if (_verificationCode) { + postBody[kVerificationCodeKey] = _verificationCode; + } + if (_accessToken) { + postBody[kIDTokenKey] = _accessToken; + } + if (_temporaryProof) { + postBody[kTemporaryProofKey] = _temporaryProof; + } + if (_phoneNumber) { + postBody[kPhoneNumberKey] = _phoneNumber; + } + NSString *operation = FIRAuthOperationString(_operation); + postBody[kOperationKey] = operation; + return postBody; +} + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRVerifyPhoneNumberResponse.h b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRVerifyPhoneNumberResponse.h new file mode 100644 index 0000000..b0ba5dd --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRVerifyPhoneNumberResponse.h @@ -0,0 +1,64 @@ +/* + * 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 + +#import "FIRAuthRPCResponse.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface FIRVerifyPhoneNumberResponse : NSObject + +/** @property IDToken + @brief Either an authorization code suitable for performing an STS token exchange, or the + access token from Secure Token Service, depending on whether @c returnSecureToken is set + on the request. + */ +@property(nonatomic, strong, readonly, nullable) NSString *IDToken; + +/** @property refreshToken + @brief The refresh token from Secure Token Service. + */ +@property(nonatomic, strong, readonly, nullable) NSString *refreshToken; + +/** @property localID + @brief The Firebase Auth user ID. + */ +@property(nonatomic, strong, readonly, nullable) NSString *localID; + +/** @property phoneNumber + @brief The verified phone number. + */ +@property(nonatomic, strong, readonly, nullable) NSString *phoneNumber; + +/** @property temporaryProof + @brief The temporary proof code returned by the backend. + */ +@property(nonatomic, strong, readonly, nullable) NSString *temporaryProof; + +/** @property isNewUser + @brief Flag indicating that the user signing in is a new user and not a returning user. + */ +@property(nonatomic, assign) BOOL isNewUser; + +/** @property approximateExpirationDate + @brief The approximate expiration date of the access token. + */ +@property(nonatomic, copy, readonly, nullable) NSDate *approximateExpirationDate; + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRVerifyPhoneNumberResponse.m b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRVerifyPhoneNumberResponse.m new file mode 100644 index 0000000..acba2c2 --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Backend/RPC/FIRVerifyPhoneNumberResponse.m @@ -0,0 +1,42 @@ +/* + * 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 "FIRVerifyPhoneNumberResponse.h" + +NS_ASSUME_NONNULL_BEGIN + +@implementation FIRVerifyPhoneNumberResponse + +- (nullable NSString *)expectedKind { + return nil; +} + +- (BOOL)setWithDictionary:(NSDictionary *)dictionary + error:(NSError *_Nullable *_Nullable)error { + _IDToken = [dictionary[@"idToken"] copy]; + _refreshToken = [dictionary[@"refreshToken"] copy]; + _isNewUser = [dictionary[@"isNewUser"] boolValue]; + _localID = [dictionary[@"localId"] copy]; + _phoneNumber = [dictionary[@"phoneNumber"] copy]; + _temporaryProof = [dictionary[@"temporaryProof"] copy]; + _approximateExpirationDate = [dictionary[@"expiresIn"] isKindOfClass:[NSString class]] ? + [NSDate dateWithTimeIntervalSinceNow:[dictionary[@"expiresIn"] doubleValue]] : nil; + return YES; +} + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/FirebaseAuthVersion.m b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/FirebaseAuthVersion.m new file mode 100644 index 0000000..4893018 --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/FirebaseAuthVersion.m @@ -0,0 +1,25 @@ +/* + * 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 "FirebaseAuthVersion.h" + +// Convert the macro to a string +#define STR(x) STR_EXPAND(x) +#define STR_EXPAND(x) #x + +const double FirebaseAuthVersionNum = FIRAuth_MINOR_VERSION; + +const char *const FirebaseAuthVersionStr = (const char *const)STR(FIRAuth_VERSION); diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Public/FIRActionCodeSettings.h b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Public/FIRActionCodeSettings.h new file mode 100644 index 0000000..cb7528c --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Public/FIRActionCodeSettings.h @@ -0,0 +1,89 @@ +/* + * 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/LICENSE2.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 + + NS_ASSUME_NONNULL_BEGIN + + /** @class FIRActionCodeSettings + @brief Used to set and retrieve settings related to handling action codes. + */ + NS_SWIFT_NAME(ActionCodeSettings) + @interface FIRActionCodeSettings : NSObject + + /** @property URL + @brief This URL represents the state/Continue URL in the form of a universal link. + @remarks This URL can should be contructed as a universal link that would either directly open + the app where the action code would be handled or continue to the app after the action code + is handled by Firebase. + */ + @property(nonatomic, copy, nullable) NSURL *URL; + + /** @property handleCodeInApp + @brief Indicates whether the action code link will open the app directly or after being + redirected from a Firebase owned web widget. + */ + @property(assign, nonatomic) BOOL handleCodeInApp; + + /** @property iOSBundleID + @brief The iOS bundle ID, if available. The default value is the current app's bundle ID. + */ + @property(copy, nonatomic, readonly, nullable) NSString *iOSBundleID; + + /** @property androidPackageName + @brief The Android package name, if available. + */ + @property(nonatomic, copy, readonly, nullable) NSString *androidPackageName; + + /** @property androidMinimumVersion + @brief The minimum Android version supported, if available. + */ + @property(nonatomic, copy, readonly, nullable) NSString *androidMinimumVersion; + + /** @property androidInstallIfNotAvailable + @brief Indicates whether the Android app should be installed on a device where it is not + available. + */ + @property(nonatomic, assign, readonly) BOOL androidInstallIfNotAvailable; + + /** @property dynamicLinkDomain + @brief The Firebase Dynamic Link domain used for out of band code flow. + */ + @property(copy, nonatomic, nullable) NSString *dynamicLinkDomain; + + /** @fn setIOSBundleID + @brief Sets the iOS bundle Id. + @param iOSBundleID The iOS bundle ID. + */ + - (void)setIOSBundleID:(NSString *)iOSBundleID; + + /** @fn setAndroidPackageName:installIfNotAvailable:minimumVersion: + @brief Sets the Android package name, the flag to indicate whether or not to install the app + and the minimum Android version supported. + @param androidPackageName The Android package name. + @param installIfNotAvailable Indicates whether or not the app should be installed if not + available. + @param minimumVersion The minimum version of Android supported. + @remarks If installIfNotAvailable is set to YES and the link is opened on an android device, it + will try to install the app if not already available. Otherwise the web URL is used. + */ + - (void)setAndroidPackageName:(NSString *)androidPackageName + installIfNotAvailable:(BOOL)installIfNotAvailable + minimumVersion:(nullable NSString *)minimumVersion; + + @end + + NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Public/FIRAdditionalUserInfo.h b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Public/FIRAdditionalUserInfo.h new file mode 100644 index 0000000..4f6947a --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Public/FIRAdditionalUserInfo.h @@ -0,0 +1,57 @@ +/* + * 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 + +@class FIRVerifyAssertionResponse; + +NS_ASSUME_NONNULL_BEGIN + +/** @class FIRAdditionalUserInfo + @brief Represents additional user data returned from an identity provider. + */ +NS_SWIFT_NAME(AdditionalUserInfo) +@interface FIRAdditionalUserInfo : NSObject + +/** @fn init + @brief This class should not be initialized manually. `FIRAdditionalUserInfo` can be retrieved + from from an instance of `FIRAuthDataResult`. + */ +- (instancetype)init NS_UNAVAILABLE; + +/** @property providerID + @brief The provider identifier. + */ +@property(nonatomic, readonly) NSString *providerID; + +/** @property profile + @brief Dictionary containing the additional IdP specific information. + */ +@property(nonatomic, readonly, nullable) NSDictionary *profile; + +/** @property username + @brief username The name of the user. + */ +@property(nonatomic, readonly, nullable) NSString *username; + +/** @property newUser + @brief Indicates whether or not the current user was signed in for the first time. + */ +@property(nonatomic, readonly, getter=isNewUser) BOOL newUser; + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Public/FIRAuth.h b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Public/FIRAuth.h new file mode 100644 index 0000000..79b02b3 --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Public/FIRAuth.h @@ -0,0 +1,826 @@ +/* + * 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 +#import + +#import "FIRAuthErrors.h" + +#if TARGET_OS_IOS +#import "FIRAuthAPNSTokenType.h" +#endif + +@class FIRActionCodeSettings; +@class FIRApp; +@class FIRAuth; +@class FIRAuthCredential; +@class FIRAuthDataResult; +@class FIRAuthSettings; +@class FIRUser; +@protocol FIRAuthStateListener; +@protocol FIRAuthUIDelegate; +@protocol FIRFederatedAuthProvider; + +NS_ASSUME_NONNULL_BEGIN + +/** @typedef FIRUserUpdateCallback + @brief The type of block invoked when a request to update the current user is completed. + */ +typedef void (^FIRUserUpdateCallback)(NSError *_Nullable error) + NS_SWIFT_NAME(UserUpdateCallback); + +/** @typedef FIRAuthStateDidChangeListenerHandle + @brief The type of handle returned by `FIRAuth.addAuthStateDidChangeListener:`. + */ +typedef id FIRAuthStateDidChangeListenerHandle + NS_SWIFT_NAME(AuthStateDidChangeListenerHandle); + +/** @typedef FIRAuthStateDidChangeListenerBlock + @brief The type of block which can be registered as a listener for auth state did change events. + + @param auth The FIRAuth object on which state changes occurred. + @param user Optionally; the current signed in user, if any. + */ +typedef void(^FIRAuthStateDidChangeListenerBlock)(FIRAuth *auth, FIRUser *_Nullable user) + NS_SWIFT_NAME(AuthStateDidChangeListenerBlock); + +/** @typedef FIRIDTokenDidChangeListenerHandle + @brief The type of handle returned by `FIRAuth.addIDTokenDidChangeListener:`. + */ +typedef id FIRIDTokenDidChangeListenerHandle + NS_SWIFT_NAME(IDTokenDidChangeListenerHandle); + +/** @typedef FIRIDTokenDidChangeListenerBlock + @brief The type of block which can be registered as a listener for ID token did change events. + + @param auth The FIRAuth object on which ID token changes occurred. + @param user Optionally; the current signed in user, if any. + */ +typedef void(^FIRIDTokenDidChangeListenerBlock)(FIRAuth *auth, FIRUser *_Nullable user) + NS_SWIFT_NAME(IDTokenDidChangeListenerBlock); + +/** @typedef FIRAuthDataResultCallback + @brief The type of block invoked when sign-in related events complete. + + @param authResult Optionally; Result of sign-in request containing both the user and + the additional user info associated with the user. + @param error Optionally; the error which occurred - or nil if the request was successful. + */ +typedef void (^FIRAuthDataResultCallback)(FIRAuthDataResult *_Nullable authResult, + NSError *_Nullable error) + NS_SWIFT_NAME(AuthDataResultCallback); + +#if defined(__IPHONE_10_0) && __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_10_0 +/** + @brief The name of the `NSNotificationCenter` notification which is posted when the auth state + changes (for example, a new token has been produced, a user signs in or signs out). The + object parameter of the notification is the sender `FIRAuth` instance. + */ +extern const NSNotificationName FIRAuthStateDidChangeNotification + NS_SWIFT_NAME(AuthStateDidChange); +#else +/** + @brief The name of the `NSNotificationCenter` notification which is posted when the auth state + changes (for example, a new token has been produced, a user signs in or signs out). The + object parameter of the notification is the sender `FIRAuth` instance. + */ +extern NSString *const FIRAuthStateDidChangeNotification + NS_SWIFT_NAME(AuthStateDidChangeNotification); +#endif // defined(__IPHONE_10_0) && __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_10_0 + +/** @typedef FIRAuthResultCallback + @brief The type of block invoked when sign-in related events complete. + + @param user Optionally; the signed in user, if any. + @param error Optionally; if an error occurs, this is the NSError object that describes the + problem. Set to nil otherwise. + */ +typedef void (^FIRAuthResultCallback)(FIRUser *_Nullable user, NSError *_Nullable error) + NS_SWIFT_NAME(AuthResultCallback); + +/** @typedef FIRProviderQueryCallback + @brief The type of block invoked when a list of identity providers for a given email address is + requested. + + @param providers Optionally; a list of provider identifiers, if any. + @see FIRGoogleAuthProviderID etc. + @param error Optionally; if an error occurs, this is the NSError object that describes the + problem. Set to nil otherwise. + */ +typedef void (^FIRProviderQueryCallback)(NSArray *_Nullable providers, + NSError *_Nullable error) + NS_SWIFT_NAME(ProviderQueryCallback); + +/** @typedef FIRSignInMethodQueryCallback + @brief The type of block invoked when a list of sign-in methods for a given email address is + requested. + */ +typedef void (^FIRSignInMethodQueryCallback)(NSArray *_Nullable, + NSError *_Nullable) + NS_SWIFT_NAME(SignInMethodQueryCallback); + +/** @typedef FIRSendPasswordResetCallback + @brief The type of block invoked when sending a password reset email. + + @param error Optionally; if an error occurs, this is the NSError object that describes the + problem. Set to nil otherwise. + */ +typedef void (^FIRSendPasswordResetCallback)(NSError *_Nullable error) + NS_SWIFT_NAME(SendPasswordResetCallback); + +/** @typedef FIRSendSignInLinkToEmailCallback + @brief The type of block invoked when sending an email sign-in link email. + */ +typedef void (^FIRSendSignInLinkToEmailCallback)(NSError *_Nullable error) + NS_SWIFT_NAME(SendSignInLinkToEmailCallback); + +/** @typedef FIRConfirmPasswordResetCallback + @brief The type of block invoked when performing a password reset. + + @param error Optionally; if an error occurs, this is the NSError object that describes the + problem. Set to nil otherwise. + */ +typedef void (^FIRConfirmPasswordResetCallback)(NSError *_Nullable error) + NS_SWIFT_NAME(ConfirmPasswordResetCallback); + +/** @typedef FIRVerifyPasswordResetCodeCallback + @brief The type of block invoked when verifying that an out of band code should be used to + perform password reset. + + @param email Optionally; the email address of the user for which the out of band code applies. + @param error Optionally; if an error occurs, this is the NSError object that describes the + problem. Set to nil otherwise. + */ +typedef void (^FIRVerifyPasswordResetCodeCallback)(NSString *_Nullable email, + NSError *_Nullable error) + NS_SWIFT_NAME(VerifyPasswordResetCodeCallback); + +/** @typedef FIRApplyActionCodeCallback + @brief The type of block invoked when applying an action code. + + @param error Optionally; if an error occurs, this is the NSError object that describes the + problem. Set to nil otherwise. + */ +typedef void (^FIRApplyActionCodeCallback)(NSError *_Nullable error) + NS_SWIFT_NAME(ApplyActionCodeCallback); + +/** + @brief Keys used to retrieve operation data from a `FIRActionCodeInfo` object by the + `dataForKey` method. + */ +typedef NS_ENUM(NSInteger, FIRActionDataKey) { + /** + * The email address to which the code was sent. + * For FIRActionCodeOperationRecoverEmail, the new email address for the account. + */ + FIRActionCodeEmailKey = 0, + + /** For FIRActionCodeOperationRecoverEmail, the current email address for the account. */ + FIRActionCodeFromEmailKey = 1 +} NS_SWIFT_NAME(ActionDataKey); + +/** @class FIRActionCodeInfo + @brief Manages information regarding action codes. + */ +NS_SWIFT_NAME(ActionCodeInfo) +@interface FIRActionCodeInfo : NSObject + +/** + @brief Operations which can be performed with action codes. + */ +typedef NS_ENUM(NSInteger, FIRActionCodeOperation) { + /** Action code for unknown operation. */ + FIRActionCodeOperationUnknown = 0, + + /** Action code for password reset operation. */ + FIRActionCodeOperationPasswordReset = 1, + + /** Action code for verify email operation. */ + FIRActionCodeOperationVerifyEmail = 2, + + /** Action code for recover email operation. */ + FIRActionCodeOperationRecoverEmail = 3, + + /** Action code for email link operation. */ + FIRActionCodeOperationEmailLink = 4, + + +} NS_SWIFT_NAME(ActionCodeOperation); + +/** + @brief The operation being performed. + */ +@property(nonatomic, readonly) FIRActionCodeOperation operation; + +/** @fn dataForKey: + @brief The operation being performed. + + @param key The FIRActionDataKey value used to retrieve the operation data. + + @return The operation data pertaining to the provided action code key. + */ +- (NSString *)dataForKey:(FIRActionDataKey)key; + +/** @fn init + @brief please use initWithOperation: instead. + */ +- (instancetype)init NS_UNAVAILABLE; + +@end + +/** @typedef FIRCheckActionCodeCallBack + @brief The type of block invoked when performing a check action code operation. + + @param info Metadata corresponding to the action code. + @param error Optionally; if an error occurs, this is the NSError object that describes the + problem. Set to nil otherwise. + */ +typedef void (^FIRCheckActionCodeCallBack)(FIRActionCodeInfo *_Nullable info, + NSError *_Nullable error) + NS_SWIFT_NAME(CheckActionCodeCallback); + +/** @class FIRAuth + @brief Manages authentication for Firebase apps. + @remarks This class is thread-safe. + */ +NS_SWIFT_NAME(Auth) +@interface FIRAuth : NSObject + +/** @fn auth + @brief Gets the auth object for the default Firebase app. + @remarks The default Firebase app must have already been configured or an exception will be + raised. + */ ++ (FIRAuth *)auth NS_SWIFT_NAME(auth()); + +/** @fn authWithApp: + @brief Gets the auth object for a `FIRApp`. + + @param app The FIRApp for which to retrieve the associated FIRAuth instance. + @return The FIRAuth instance associated with the given FIRApp. + */ ++ (FIRAuth *)authWithApp:(FIRApp *)app NS_SWIFT_NAME(auth(app:)); + +/** @property app + @brief Gets the `FIRApp` object that this auth object is connected to. + */ +@property(nonatomic, weak, readonly, nullable) FIRApp *app; + +/** @property currentUser + @brief Synchronously gets the cached current user, or null if there is none. + */ +@property(nonatomic, strong, readonly, nullable) FIRUser *currentUser; + +/** @property languageCode + @brief The current user language code. This property can be set to the app's current language by + calling `useAppLanguage`. + + @remarks The string used to set this property must be a language code that follows BCP 47. + */ +@property(nonatomic, copy, nullable) NSString *languageCode; + +/** @property settings + @brief Contains settings related to the auth object. + */ +@property(nonatomic, copy, nullable) FIRAuthSettings *settings; + +/** @property userAccessGroup + @brief The current user access group that the Auth instance is using. Default is nil. + */ +@property(readonly, nonatomic, copy, nullable) NSString *userAccessGroup; + +#if TARGET_OS_IOS +/** @property APNSToken + @brief The APNs token used for phone number authentication. The type of the token (production + or sandbox) will be attempted to be automatcially detected. + @remarks If swizzling is disabled, the APNs Token must be set for phone number auth to work, + by either setting this property or by calling `setAPNSToken:type:` + */ +@property(nonatomic, strong, nullable) NSData *APNSToken; +#endif + +/** @fn init + @brief Please access auth instances using `FIRAuth.auth` and `FIRAuth.authForApp:`. + */ +- (instancetype)init NS_UNAVAILABLE; + +/** @fn updateCurrentUser:completion: + @brief Sets the currentUser on the calling Auth instance to the provided user object. + @param user The user object to be set as the current user of the calling Auth instance. + @param completion Optionally; a block invoked after the user of the calling Auth instance has + been updated or an error was encountered. + */ +- (void)updateCurrentUser:(FIRUser *)user completion:(nullable FIRUserUpdateCallback)completion; + +/** @fn fetchProvidersForEmail:completion: + @brief Please use fetchSignInMethodsForEmail:completion: for Objective-C or + fetchSignInMethods(forEmail:completion:) for Swift instead. + */ +- (void)fetchProvidersForEmail:(NSString *)email + completion:(nullable FIRProviderQueryCallback)completion +DEPRECATED_MSG_ATTRIBUTE("Please use fetchSignInMethodsForEmail:completion: for Objective-C or " + "fetchSignInMethods(forEmail:completion:) for Swift instead."); + +/** @fn fetchSignInMethodsForEmail:completion: + @brief Fetches the list of all sign-in methods previously used for the provided email address. + + @param email The email address for which to obtain a list of sign-in methods. + @param completion Optionally; a block which is invoked when the list of sign in methods for the + specified email address is ready or an error was encountered. Invoked asynchronously on the + main thread in the future. + + @remarks Possible error codes: + + + `FIRAuthErrorCodeInvalidEmail` - Indicates the email address is malformed. + + @remarks See @c FIRAuthErrors for a list of error codes that are common to all API methods. + */ + +- (void)fetchSignInMethodsForEmail:(NSString *)email + completion:(nullable FIRSignInMethodQueryCallback)completion; + +/** @fn signInWithEmail:password:completion: + @brief Signs in using an email address and password. + + @param email The user's email address. + @param password The user's password. + @param completion Optionally; a block which is invoked when the sign in flow finishes, or is + canceled. Invoked asynchronously on the main thread in the future. + + @remarks Possible error codes: + + + `FIRAuthErrorCodeOperationNotAllowed` - Indicates that email and password + accounts are not enabled. Enable them in the Auth section of the + Firebase console. + + `FIRAuthErrorCodeUserDisabled` - Indicates the user's account is disabled. + + `FIRAuthErrorCodeWrongPassword` - Indicates the user attempted + sign in with an incorrect password. + + `FIRAuthErrorCodeInvalidEmail` - Indicates the email address is malformed. + + + @remarks See `FIRAuthErrors` for a list of error codes that are common to all API methods. + */ +- (void)signInWithEmail:(NSString *)email + password:(NSString *)password + completion:(nullable FIRAuthDataResultCallback)completion; + +/** @fn signInWithEmail:link:completion: + @brief Signs in using an email address and email sign-in link. + + @param email The user's email address. + @param link The email sign-in link. + @param completion Optionally; a block which is invoked when the sign in flow finishes, or is + canceled. Invoked asynchronously on the main thread in the future. + + @remarks Possible error codes: + + + `FIRAuthErrorCodeOperationNotAllowed` - Indicates that email and email sign-in link + accounts are not enabled. Enable them in the Auth section of the + Firebase console. + + `FIRAuthErrorCodeUserDisabled` - Indicates the user's account is disabled. + + `FIRAuthErrorCodeInvalidEmail` - Indicates the email address is invalid. + + + @remarks See `FIRAuthErrors` for a list of error codes that are common to all API methods. + */ + +- (void)signInWithEmail:(NSString *)email + link:(NSString *)link + completion:(nullable FIRAuthDataResultCallback)completion; + +/** @fn signInWithProvider:UIDelegate:completion: + @brief Signs in using the provided auth provider instance. + + @param provider An instance of an auth provider used to initiate the sign-in flow. + @param UIDelegate Optionally an instance of a class conforming to the FIRAuthUIDelegate + protocol, this is used for presenting the web context. If nil, a default FIRAuthUIDelegate + will be used. + @param completion Optionally; a block which is invoked when the sign in flow finishes, or is + canceled. Invoked asynchronously on the main thread in the future. + + @remarks Possible error codes: +
    +
  • @c FIRAuthErrorCodeOperationNotAllowed - Indicates that email and password + accounts are not enabled. Enable them in the Auth section of the + Firebase console. +
  • +
  • @c FIRAuthErrorCodeUserDisabled - Indicates the user's account is disabled. +
  • +
  • @c FIRAuthErrorCodeWebNetworkRequestFailed - Indicates that a network request within a + SFSafariViewController or UIWebview failed. +
  • +
  • @c FIRAuthErrorCodeWebInternalError - Indicates that an internal error occurred within a + SFSafariViewController or UIWebview. +
  • +
  • @c FIRAuthErrorCodeWebSignInUserInteractionFailure - Indicates a general failure during + a web sign-in flow. +
  • +
  • @c FIRAuthErrorCodeWebContextAlreadyPresented - Indicates that an attempt was made to + present a new web context while one was already being presented. +
  • +
  • @c FIRAuthErrorCodeWebContextCancelled - Indicates that the URL presentation was + cancelled prematurely by the user. +
  • +
  • @c FIRAuthErrorCodeAccountExistsWithDifferentCredential - Indicates the email asserted + by the credential (e.g. the email in a Facebook access token) is already in use by an + existing account, that cannot be authenticated with this sign-in method. Call + fetchProvidersForEmail for this user’s email and then prompt them to sign in with any of + the sign-in providers returned. This error will only be thrown if the "One account per + email address" setting is enabled in the Firebase console, under Auth settings. +
  • +
+ + @remarks See @c FIRAuthErrors for a list of error codes that are common to all API methods. + */ +- (void)signInWithProvider:(id)provider + UIDelegate:(nullable id)UIDelegate + completion:(nullable FIRAuthDataResultCallback)completion; + +/** @fn signInAndRetrieveDataWithCredential:completion: + @brief Please use signInWithCredential:completion: for Objective-C or " + "signIn(with:completion:) for Swift instead. + */ +- (void)signInAndRetrieveDataWithCredential:(FIRAuthCredential *)credential + completion:(nullable FIRAuthDataResultCallback)completion +DEPRECATED_MSG_ATTRIBUTE("Please use signInWithCredential:completion: for Objective-C or " + "signIn(with:completion:) for Swift instead."); + +/** @fn signInWithCredential:completion: + @brief Asynchronously signs in to Firebase with the given 3rd-party credentials (e.g. a Facebook + login Access Token, a Google ID Token/Access Token pair, etc.) and returns additional + identity provider data. + + @param credential The credential supplied by the IdP. + @param completion Optionally; a block which is invoked when the sign in flow finishes, or is + canceled. Invoked asynchronously on the main thread in the future. + + @remarks Possible error codes: + + + `FIRAuthErrorCodeInvalidCredential` - Indicates the supplied credential is invalid. + This could happen if it has expired or it is malformed. + + `FIRAuthErrorCodeOperationNotAllowed` - Indicates that accounts + with the identity provider represented by the credential are not enabled. + Enable them in the Auth section of the Firebase console. + + `FIRAuthErrorCodeAccountExistsWithDifferentCredential` - Indicates the email asserted + by the credential (e.g. the email in a Facebook access token) is already in use by an + existing account, that cannot be authenticated with this sign-in method. Call + fetchProvidersForEmail for this user’s email and then prompt them to sign in with any of + the sign-in providers returned. This error will only be thrown if the "One account per + email address" setting is enabled in the Firebase console, under Auth settings. + + `FIRAuthErrorCodeUserDisabled` - Indicates the user's account is disabled. + + `FIRAuthErrorCodeWrongPassword` - Indicates the user attempted sign in with an + incorrect password, if credential is of the type EmailPasswordAuthCredential. + + `FIRAuthErrorCodeInvalidEmail` - Indicates the email address is malformed. + + `FIRAuthErrorCodeMissingVerificationID` - Indicates that the phone auth credential was + created with an empty verification ID. + + `FIRAuthErrorCodeMissingVerificationCode` - Indicates that the phone auth credential + was created with an empty verification code. + + `FIRAuthErrorCodeInvalidVerificationCode` - Indicates that the phone auth credential + was created with an invalid verification Code. + + `FIRAuthErrorCodeInvalidVerificationID` - Indicates that the phone auth credential was + created with an invalid verification ID. + + `FIRAuthErrorCodeSessionExpired` - Indicates that the SMS code has expired. + + @remarks See `FIRAuthErrors` for a list of error codes that are common to all API methods +*/ +- (void)signInWithCredential:(FIRAuthCredential *)credential + completion:(nullable FIRAuthDataResultCallback)completion; + +/** @fn signInAnonymouslyWithCompletion: + @brief Asynchronously creates and becomes an anonymous user. + @param completion Optionally; a block which is invoked when the sign in finishes, or is + canceled. Invoked asynchronously on the main thread in the future. + + @remarks If there is already an anonymous user signed in, that user will be returned instead. + If there is any other existing user signed in, that user will be signed out. + + @remarks Possible error codes: + + + `FIRAuthErrorCodeOperationNotAllowed` - Indicates that anonymous accounts are + not enabled. Enable them in the Auth section of the Firebase console. + + @remarks See `FIRAuthErrors` for a list of error codes that are common to all API methods. + */ +- (void)signInAnonymouslyWithCompletion:(nullable FIRAuthDataResultCallback)completion; + +/** @fn signInWithCustomToken:completion: + @brief Asynchronously signs in to Firebase with the given Auth token. + + @param token A self-signed custom auth token. + @param completion Optionally; a block which is invoked when the sign in finishes, or is + canceled. Invoked asynchronously on the main thread in the future. + + @remarks Possible error codes: + + + `FIRAuthErrorCodeInvalidCustomToken` - Indicates a validation error with + the custom token. + + `FIRAuthErrorCodeCustomTokenMismatch` - Indicates the service account and the API key + belong to different projects. + + @remarks See `FIRAuthErrors` for a list of error codes that are common to all API methods. + */ +- (void)signInWithCustomToken:(NSString *)token + completion:(nullable FIRAuthDataResultCallback)completion; + +/** @fn createUserWithEmail:password:completion: + @brief Creates and, on success, signs in a user with the given email address and password. + + @param email The user's email address. + @param password The user's desired password. + @param completion Optionally; a block which is invoked when the sign up flow finishes, or is + canceled. Invoked asynchronously on the main thread in the future. + + @remarks Possible error codes: + + + `FIRAuthErrorCodeInvalidEmail` - Indicates the email address is malformed. + + `FIRAuthErrorCodeEmailAlreadyInUse` - Indicates the email used to attempt sign up + already exists. Call fetchProvidersForEmail to check which sign-in mechanisms the user + used, and prompt the user to sign in with one of those. + + `FIRAuthErrorCodeOperationNotAllowed` - Indicates that email and password accounts + are not enabled. Enable them in the Auth section of the Firebase console. + + `FIRAuthErrorCodeWeakPassword` - Indicates an attempt to set a password that is + considered too weak. The NSLocalizedFailureReasonErrorKey field in the NSError.userInfo + dictionary object will contain more detailed explanation that can be shown to the user. + + @remarks See `FIRAuthErrors` for a list of error codes that are common to all API methods. + */ +- (void)createUserWithEmail:(NSString *)email + password:(NSString *)password + completion:(nullable FIRAuthDataResultCallback)completion; + +/** @fn confirmPasswordResetWithCode:newPassword:completion: + @brief Resets the password given a code sent to the user outside of the app and a new password + for the user. + + @param newPassword The new password. + @param completion Optionally; a block which is invoked when the request finishes. Invoked + asynchronously on the main thread in the future. + + @remarks Possible error codes: + + + `FIRAuthErrorCodeWeakPassword` - Indicates an attempt to set a password that is + considered too weak. + + `FIRAuthErrorCodeOperationNotAllowed` - Indicates the administrator disabled sign + in with the specified identity provider. + + `FIRAuthErrorCodeExpiredActionCode` - Indicates the OOB code is expired. + + `FIRAuthErrorCodeInvalidActionCode` - Indicates the OOB code is invalid. + + @remarks See `FIRAuthErrors` for a list of error codes that are common to all API methods. + */ +- (void)confirmPasswordResetWithCode:(NSString *)code + newPassword:(NSString *)newPassword + completion:(FIRConfirmPasswordResetCallback)completion; + +/** @fn checkActionCode:completion: + @brief Checks the validity of an out of band code. + + @param code The out of band code to check validity. + @param completion Optionally; a block which is invoked when the request finishes. Invoked + asynchronously on the main thread in the future. + */ +- (void)checkActionCode:(NSString *)code completion:(FIRCheckActionCodeCallBack)completion; + +/** @fn verifyPasswordResetCode:completion: + @brief Checks the validity of a verify password reset code. + + @param code The password reset code to be verified. + @param completion Optionally; a block which is invoked when the request finishes. Invoked + asynchronously on the main thread in the future. + */ +- (void)verifyPasswordResetCode:(NSString *)code + completion:(FIRVerifyPasswordResetCodeCallback)completion; + +/** @fn applyActionCode:completion: + @brief Applies out of band code. + + @param code The out of band code to be applied. + @param completion Optionally; a block which is invoked when the request finishes. Invoked + asynchronously on the main thread in the future. + + @remarks This method will not work for out of band codes which require an additional parameter, + such as password reset code. + */ +- (void)applyActionCode:(NSString *)code + completion:(FIRApplyActionCodeCallback)completion; + +/** @fn sendPasswordResetWithEmail:completion: + @brief Initiates a password reset for the given email address. + + @param email The email address of the user. + @param completion Optionally; a block which is invoked when the request finishes. Invoked + asynchronously on the main thread in the future. + + @remarks Possible error codes: + + + `FIRAuthErrorCodeInvalidRecipientEmail` - Indicates an invalid recipient email was + sent in the request. + + `FIRAuthErrorCodeInvalidSender` - Indicates an invalid sender email is set in + the console for this action. + + `FIRAuthErrorCodeInvalidMessagePayload` - Indicates an invalid email template for + sending update email. + + + */ +- (void)sendPasswordResetWithEmail:(NSString *)email + completion:(nullable FIRSendPasswordResetCallback)completion; + +/** @fn sendPasswordResetWithEmail:actionCodeSetting:completion: + @brief Initiates a password reset for the given email address and @FIRActionCodeSettings object. + + @param email The email address of the user. + @param actionCodeSettings An `FIRActionCodeSettings` object containing settings related to + handling action codes. + @param completion Optionally; a block which is invoked when the request finishes. Invoked + asynchronously on the main thread in the future. + + @remarks Possible error codes: + + + `FIRAuthErrorCodeInvalidRecipientEmail` - Indicates an invalid recipient email was + sent in the request. + + `FIRAuthErrorCodeInvalidSender` - Indicates an invalid sender email is set in + the console for this action. + + `FIRAuthErrorCodeInvalidMessagePayload` - Indicates an invalid email template for + sending update email. + + `FIRAuthErrorCodeMissingIosBundleID` - Indicates that the iOS bundle ID is missing when + `handleCodeInApp` is set to YES. + + `FIRAuthErrorCodeMissingAndroidPackageName` - Indicates that the android package name + is missing when the `androidInstallApp` flag is set to true. + + `FIRAuthErrorCodeUnauthorizedDomain` - Indicates that the domain specified in the + continue URL is not whitelisted in the Firebase console. + + `FIRAuthErrorCodeInvalidContinueURI` - Indicates that the domain specified in the + continue URI is not valid. + + + */ + - (void)sendPasswordResetWithEmail:(NSString *)email + actionCodeSettings:(FIRActionCodeSettings *)actionCodeSettings + completion:(nullable FIRSendPasswordResetCallback)completion; + +/** @fn sendSignInLinkToEmail:actionCodeSettings:completion: + @brief Sends a sign in with email link to provided email address. + + @param email The email address of the user. + @param actionCodeSettings An `FIRActionCodeSettings` object containing settings related to + handling action codes. + @param completion Optionally; a block which is invoked when the request finishes. Invoked + asynchronously on the main thread in the future. + */ +- (void)sendSignInLinkToEmail:(NSString *)email + actionCodeSettings:(FIRActionCodeSettings *)actionCodeSettings + completion:(nullable FIRSendSignInLinkToEmailCallback)completion; + +/** @fn signOut: + @brief Signs out the current user. + + @param error Optionally; if an error occurs, upon return contains an NSError object that + describes the problem; is nil otherwise. + @return @YES when the sign out request was successful. @NO otherwise. + + @remarks Possible error codes: + + + `FIRAuthErrorCodeKeychainError` - Indicates an error occurred when accessing the + keychain. The `NSLocalizedFailureReasonErrorKey` field in the `NSError.userInfo` + dictionary will contain more information about the error encountered. + + + + */ +- (BOOL)signOut:(NSError *_Nullable *_Nullable)error; + +/** @fn isSignInWithEmailLink + @brief Checks if link is an email sign-in link. + + @param link The email sign-in link. + @return @YES when the link passed matches the expected format of an email sign-in link. + */ +- (BOOL)isSignInWithEmailLink:(NSString *)link; + +/** @fn addAuthStateDidChangeListener: + @brief Registers a block as an "auth state did change" listener. To be invoked when: + + + The block is registered as a listener, + + A user with a different UID from the current user has signed in, or + + The current user has signed out. + + @param listener The block to be invoked. The block is always invoked asynchronously on the main + thread, even for it's initial invocation after having been added as a listener. + + @remarks The block is invoked immediately after adding it according to it's standard invocation + semantics, asynchronously on the main thread. Users should pay special attention to + making sure the block does not inadvertently retain objects which should not be retained by + the long-lived block. The block itself will be retained by `FIRAuth` until it is + unregistered or until the `FIRAuth` instance is otherwise deallocated. + + @return A handle useful for manually unregistering the block as a listener. + */ +- (FIRAuthStateDidChangeListenerHandle)addAuthStateDidChangeListener: + (FIRAuthStateDidChangeListenerBlock)listener; + +/** @fn removeAuthStateDidChangeListener: + @brief Unregisters a block as an "auth state did change" listener. + + @param listenerHandle The handle for the listener. + */ +- (void)removeAuthStateDidChangeListener:(FIRAuthStateDidChangeListenerHandle)listenerHandle; + +/** @fn addIDTokenDidChangeListener: + @brief Registers a block as an "ID token did change" listener. To be invoked when: + + + The block is registered as a listener, + + A user with a different UID from the current user has signed in, + + The ID token of the current user has been refreshed, or + + The current user has signed out. + + @param listener The block to be invoked. The block is always invoked asynchronously on the main + thread, even for it's initial invocation after having been added as a listener. + + @remarks The block is invoked immediately after adding it according to it's standard invocation + semantics, asynchronously on the main thread. Users should pay special attention to + making sure the block does not inadvertently retain objects which should not be retained by + the long-lived block. The block itself will be retained by `FIRAuth` until it is + unregistered or until the `FIRAuth` instance is otherwise deallocated. + + @return A handle useful for manually unregistering the block as a listener. + */ +- (FIRIDTokenDidChangeListenerHandle)addIDTokenDidChangeListener: + (FIRIDTokenDidChangeListenerBlock)listener; + +/** @fn removeIDTokenDidChangeListener: + @brief Unregisters a block as an "ID token did change" listener. + + @param listenerHandle The handle for the listener. + */ +- (void)removeIDTokenDidChangeListener:(FIRIDTokenDidChangeListenerHandle)listenerHandle; + +/** @fn useAppLanguage + @brief Sets `languageCode` to the app's current language. + */ +- (void)useAppLanguage; + +#if TARGET_OS_IOS + +/** @fn canHandleURL: + @brief Whether the specific URL is handled by `FIRAuth` . + @param URL The URL received by the application delegate from any of the openURL method. + @return Whether or the URL is handled. YES means the URL is for Firebase Auth + so the caller should ignore the URL from further processing, and NO means the + the URL is for the app (or another libaray) so the caller should continue handling + this URL as usual. + @remarks If swizzling is disabled, URLs received by the application delegate must be forwarded + to this method for phone number auth to work. + */ +- (BOOL)canHandleURL:(nonnull NSURL *)URL; + +/** @fn setAPNSToken:type: + @brief Sets the APNs token along with its type. + @remarks If swizzling is disabled, the APNs Token must be set for phone number auth to work, + by either setting calling this method or by setting the `APNSToken` property. + */ +- (void)setAPNSToken:(NSData *)token type:(FIRAuthAPNSTokenType)type; + +/** @fn canHandleNotification: + @brief Whether the specific remote notification is handled by `FIRAuth` . + @param userInfo A dictionary that contains information related to the + notification in question. + @return Whether or the notification is handled. YES means the notification is for Firebase Auth + so the caller should ignore the notification from further processing, and NO means the + the notification is for the app (or another libaray) so the caller should continue handling + this notification as usual. + @remarks If swizzling is disabled, related remote notifications must be forwarded to this method + for phone number auth to work. + */ +- (BOOL)canHandleNotification:(NSDictionary *)userInfo; + +#endif // TARGET_OS_IOS + +#pragma mark - User sharing + +/** @fn useUserAccessGroup:error: + @brief Switch userAccessGroup and current user to the given accessGroup and the user stored in + it. + */ +- (BOOL)useUserAccessGroup:(NSString *_Nullable)accessGroup + error:(NSError *_Nullable *_Nullable)outError; + +/** @fn getStoredUserForAccessGroup:error: + @brief Get the stored user in the given accessGroup. + */ +- (nullable FIRUser *)getStoredUserForAccessGroup:(NSString *_Nullable)accessGroup + error:(NSError *_Nullable *_Nullable)outError; + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Public/FIRAuthAPNSTokenType.h b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Public/FIRAuthAPNSTokenType.h new file mode 100644 index 0000000..4f3c9f6 --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Public/FIRAuthAPNSTokenType.h @@ -0,0 +1,40 @@ +/* + * 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 + +NS_ASSUME_NONNULL_BEGIN + +/** + * @brief The APNs token type for the app. + */ +typedef NS_ENUM(NSInteger, FIRAuthAPNSTokenType) { + + /** Unknown token type. + The actual token type will be detected from the provisioning profile in the app's bundle. + */ + FIRAuthAPNSTokenTypeUnknown, + + /** Sandbox token type. + */ + FIRAuthAPNSTokenTypeSandbox, + + /** Production token type. + */ + FIRAuthAPNSTokenTypeProd, +} NS_SWIFT_NAME(AuthAPNSTokenType); + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Public/FIRAuthCredential.h b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Public/FIRAuthCredential.h new file mode 100644 index 0000000..106d844 --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Public/FIRAuthCredential.h @@ -0,0 +1,41 @@ +/* + * 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 + +NS_ASSUME_NONNULL_BEGIN + +/** @class FIRAuthCredential + @brief Represents a credential. + */ +NS_SWIFT_NAME(AuthCredential) +@interface FIRAuthCredential : NSObject + +/** @property provider + @brief Gets the name of the identity provider for the credential. + */ +@property(nonatomic, copy, readonly) NSString *provider; + +/** @fn init + @brief This is an abstract base class. Concrete instances should be created via factory + methods available in the various authentication provider libraries (like the Facebook + provider or the Google provider libraries.) + */ +- (instancetype)init NS_UNAVAILABLE; + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Public/FIRAuthDataResult.h b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Public/FIRAuthDataResult.h new file mode 100644 index 0000000..93c8b3b --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Public/FIRAuthDataResult.h @@ -0,0 +1,57 @@ +/* + * 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 + +@class FIRAdditionalUserInfo; +@class FIRAuthCredential; +@class FIRUser; + +NS_ASSUME_NONNULL_BEGIN + +/** @class FIRAuthDataResult + @brief Helper object that contains the result of a successful sign-in, link and reauthenticate + action. It contains references to a FIRUser instance and a FIRAdditionalUserInfo instance. + */ +NS_SWIFT_NAME(AuthDataResult) +@interface FIRAuthDataResult : NSObject + +/** @fn init + @brief This class should not be initialized manually. `FIRAuthDataResult` instance is + returned as part of `FIRAuthDataResultCallback`. + */ +- (instancetype)init NS_UNAVAILABLE; + +/** @property user + @brief The signed in user. + */ +@property(nonatomic, readonly) FIRUser *user; + +/** @property additionalUserInfo + @brief If available contains the additional IdP specific information about signed in user. + */ +@property(nonatomic, readonly, nullable) FIRAdditionalUserInfo *additionalUserInfo; + +/** @property credential + @brief This property will be non-nil after a successful headful-lite sign-in via + signInWithProvider:UIDelegate:. May be used to obtain the accessToken and/or IDToken + pertaining to a recently signed-in user. + */ +@property(nonatomic, readonly, nullable) FIRAuthCredential *credential; + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Public/FIRAuthErrors.h b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Public/FIRAuthErrors.h new file mode 100644 index 0000000..8874fb6 --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Public/FIRAuthErrors.h @@ -0,0 +1,358 @@ +/* + * 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 + +NS_ASSUME_NONNULL_BEGIN + +/** @class FIRAuthErrors + @remarks Error Codes common to all API Methods: + + + `FIRAuthErrorCodeNetworkError` + + `FIRAuthErrorCodeUserNotFound` + + `FIRAuthErrorCodeUserTokenExpired` + + `FIRAuthErrorCodeTooManyRequests` + + `FIRAuthErrorCodeInvalidAPIKey` + + `FIRAuthErrorCodeAppNotAuthorized` + + `FIRAuthErrorCodeKeychainError` + + `FIRAuthErrorCodeInternalError` + + @remarks Common error codes for `FIRUser` operations: + + + `FIRAuthErrorCodeInvalidUserToken` + + `FIRAuthErrorCodeUserDisabled` + + */ +NS_SWIFT_NAME(AuthErrors) +@interface FIRAuthErrors + +/** + @brief The Firebase Auth error domain. + */ +extern NSString *const FIRAuthErrorDomain NS_SWIFT_NAME(AuthErrorDomain); + +/** + @brief The name of the key for the error short string of an error code. + */ +extern NSString *const FIRAuthErrorUserInfoNameKey NS_SWIFT_NAME(AuthErrorUserInfoNameKey); + +/** + @brief Errors with one of the following three codes: + - `FIRAuthErrorCodeAccountExistsWithDifferentCredential` + - `FIRAuthErrorCodeCredentialAlreadyInUse` + - `FIRAuthErrorCodeEmailAlreadyInUse` + may contain an `NSError.userInfo` dictinary object which contains this key. The value + associated with this key is an NSString of the email address of the account that already + exists. + */ +extern NSString *const FIRAuthErrorUserInfoEmailKey NS_SWIFT_NAME(AuthErrorUserInfoEmailKey); + +/** + @brief The key used to read the updated Auth credential from the userInfo dictionary of the + NSError object returned. This is the updated auth credential the developer should use for + recovery if applicable. + */ +extern NSString *const FIRAuthErrorUserInfoUpdatedCredentialKey + NS_SWIFT_NAME(AuthErrorUserInfoUpdatedCredentialKey); + +/** + @brief Error codes used by Firebase Auth. + */ +typedef NS_ENUM(NSInteger, FIRAuthErrorCode) { + /** Indicates a validation error with the custom token. + */ + FIRAuthErrorCodeInvalidCustomToken = 17000, + + /** Indicates the service account and the API key belong to different projects. + */ + FIRAuthErrorCodeCustomTokenMismatch = 17002, + + /** Indicates the IDP token or requestUri is invalid. + */ + FIRAuthErrorCodeInvalidCredential = 17004, + + /** Indicates the user's account is disabled on the server. + */ + FIRAuthErrorCodeUserDisabled = 17005, + + /** Indicates the administrator disabled sign in with the specified identity provider. + */ + FIRAuthErrorCodeOperationNotAllowed = 17006, + + /** Indicates the email used to attempt a sign up is already in use. + */ + FIRAuthErrorCodeEmailAlreadyInUse = 17007, + + /** Indicates the email is invalid. + */ + FIRAuthErrorCodeInvalidEmail = 17008, + + /** Indicates the user attempted sign in with a wrong password. + */ + FIRAuthErrorCodeWrongPassword = 17009, + + /** Indicates that too many requests were made to a server method. + */ + FIRAuthErrorCodeTooManyRequests = 17010, + + /** Indicates the user account was not found. + */ + FIRAuthErrorCodeUserNotFound = 17011, + + /** Indicates account linking is required. + */ + FIRAuthErrorCodeAccountExistsWithDifferentCredential = 17012, + + /** Indicates the user has attemped to change email or password more than 5 minutes after + signing in. + */ + FIRAuthErrorCodeRequiresRecentLogin = 17014, + + /** Indicates an attempt to link a provider to which the account is already linked. + */ + FIRAuthErrorCodeProviderAlreadyLinked = 17015, + + /** Indicates an attempt to unlink a provider that is not linked. + */ + FIRAuthErrorCodeNoSuchProvider = 17016, + + /** Indicates user's saved auth credential is invalid, the user needs to sign in again. + */ + FIRAuthErrorCodeInvalidUserToken = 17017, + + /** Indicates a network error occurred (such as a timeout, interrupted connection, or + unreachable host). These types of errors are often recoverable with a retry. The + `NSUnderlyingError` field in the `NSError.userInfo` dictionary will contain the error + encountered. + */ + FIRAuthErrorCodeNetworkError = 17020, + + /** Indicates the saved token has expired, for example, the user may have changed account + password on another device. The user needs to sign in again on the device that made this + request. + */ + FIRAuthErrorCodeUserTokenExpired = 17021, + + /** Indicates an invalid API key was supplied in the request. + */ + FIRAuthErrorCodeInvalidAPIKey = 17023, + + /** Indicates that an attempt was made to reauthenticate with a user which is not the current + user. + */ + FIRAuthErrorCodeUserMismatch = 17024, + + /** Indicates an attempt to link with a credential that has already been linked with a + different Firebase account + */ + FIRAuthErrorCodeCredentialAlreadyInUse = 17025, + + /** Indicates an attempt to set a password that is considered too weak. + */ + FIRAuthErrorCodeWeakPassword = 17026, + + /** Indicates the App is not authorized to use Firebase Authentication with the + provided API Key. + */ + FIRAuthErrorCodeAppNotAuthorized = 17028, + + /** Indicates the OOB code is expired. + */ + FIRAuthErrorCodeExpiredActionCode = 17029, + + /** Indicates the OOB code is invalid. + */ + FIRAuthErrorCodeInvalidActionCode = 17030, + + /** Indicates that there are invalid parameters in the payload during a "send password reset + * email" attempt. + */ + FIRAuthErrorCodeInvalidMessagePayload = 17031, + + /** Indicates that the sender email is invalid during a "send password reset email" attempt. + */ + FIRAuthErrorCodeInvalidSender = 17032, + + /** Indicates that the recipient email is invalid. + */ + FIRAuthErrorCodeInvalidRecipientEmail = 17033, + + /** Indicates that an email address was expected but one was not provided. + */ + FIRAuthErrorCodeMissingEmail = 17034, + + // The enum values 17035 is reserved and should NOT be used for new error codes. + + /** Indicates that the iOS bundle ID is missing when a iOS App Store ID is provided. + */ + FIRAuthErrorCodeMissingIosBundleID = 17036, + + /** Indicates that the android package name is missing when the `androidInstallApp` flag is set + to true. + */ + FIRAuthErrorCodeMissingAndroidPackageName = 17037, + + /** Indicates that the domain specified in the continue URL is not whitelisted in the Firebase + console. + */ + FIRAuthErrorCodeUnauthorizedDomain = 17038, + + /** Indicates that the domain specified in the continue URI is not valid. + */ + FIRAuthErrorCodeInvalidContinueURI = 17039, + + /** Indicates that a continue URI was not provided in a request to the backend which requires + one. + */ + FIRAuthErrorCodeMissingContinueURI = 17040, + + /** Indicates that a phone number was not provided in a call to + `verifyPhoneNumber:completion:`. + */ + FIRAuthErrorCodeMissingPhoneNumber = 17041, + + /** Indicates that an invalid phone number was provided in a call to + `verifyPhoneNumber:completion:`. + */ + FIRAuthErrorCodeInvalidPhoneNumber = 17042, + + /** Indicates that the phone auth credential was created with an empty verification code. + */ + FIRAuthErrorCodeMissingVerificationCode = 17043, + + /** Indicates that an invalid verification code was used in the verifyPhoneNumber request. + */ + FIRAuthErrorCodeInvalidVerificationCode = 17044, + + /** Indicates that the phone auth credential was created with an empty verification ID. + */ + FIRAuthErrorCodeMissingVerificationID = 17045, + + /** Indicates that an invalid verification ID was used in the verifyPhoneNumber request. + */ + FIRAuthErrorCodeInvalidVerificationID = 17046, + + /** Indicates that the APNS device token is missing in the verifyClient request. + */ + FIRAuthErrorCodeMissingAppCredential = 17047, + + /** Indicates that an invalid APNS device token was used in the verifyClient request. + */ + FIRAuthErrorCodeInvalidAppCredential = 17048, + + // The enum values between 17048 and 17051 are reserved and should NOT be used for new error + // codes. + + /** Indicates that the SMS code has expired. + */ + FIRAuthErrorCodeSessionExpired = 17051, + + /** Indicates that the quota of SMS messages for a given project has been exceeded. + */ + FIRAuthErrorCodeQuotaExceeded = 17052, + + /** Indicates that the APNs device token could not be obtained. The app may not have set up + remote notification correctly, or may fail to forward the APNs device token to FIRAuth + if app delegate swizzling is disabled. + */ + FIRAuthErrorCodeMissingAppToken = 17053, + + /** Indicates that the app fails to forward remote notification to FIRAuth. + */ + FIRAuthErrorCodeNotificationNotForwarded = 17054, + + /** Indicates that the app could not be verified by Firebase during phone number authentication. + */ + FIRAuthErrorCodeAppNotVerified = 17055, + + /** Indicates that the reCAPTCHA token is not valid. + */ + FIRAuthErrorCodeCaptchaCheckFailed = 17056, + + /** Indicates that an attempt was made to present a new web context while one was already being + presented. + */ + FIRAuthErrorCodeWebContextAlreadyPresented = 17057, + + /** Indicates that the URL presentation was cancelled prematurely by the user. + */ + FIRAuthErrorCodeWebContextCancelled = 17058, + + /** Indicates a general failure during the app verification flow. + */ + FIRAuthErrorCodeAppVerificationUserInteractionFailure = 17059, + + /** Indicates that the clientID used to invoke a web flow is invalid. + */ + FIRAuthErrorCodeInvalidClientID = 17060, + + /** Indicates that a network request within a SFSafariViewController or UIWebview failed. + */ + FIRAuthErrorCodeWebNetworkRequestFailed = 17061, + + /** Indicates that an internal error occurred within a SFSafariViewController or UIWebview. + */ + FIRAuthErrorCodeWebInternalError = 17062, + + /** Indicates a general failure during a web sign-in flow. + */ + FIRAuthErrorCodeWebSignInUserInteractionFailure = 17063, + + /** Indicates that the local player was not authenticated prior to attempting Game Center + signin. + */ + FIRAuthErrorCodeLocalPlayerNotAuthenticated = 17066, + + /** Indicates that a non-null user was expected as an argmument to the operation but a null + user was provided. + */ + FIRAuthErrorCodeNullUser = 17067, + + /** + * Represents the error code for when the given provider id for a web operation is invalid. + */ + FIRAuthErrorCodeInvalidProviderID = 17071, + + /** Indicates that the Firebase Dynamic Link domain used is either not configured or is + unauthorized for the current project. + */ + FIRAuthErrorCodeInvalidDynamicLinkDomain = 17074, + + /** Indicates that the GameKit framework is not linked prior to attempting Game Center signin. + */ + FIRAuthErrorCodeGameKitNotLinked = 17076, + + /** Indicates an error for when the client identifier is missing. + */ + FIRAuthErrorCodeMissingClientIdentifier = 17993, + + /** Indicates an error occurred while attempting to access the keychain. + */ + FIRAuthErrorCodeKeychainError = 17995, + + /** Indicates an internal error occurred. + */ + FIRAuthErrorCodeInternalError = 17999, + + /** Raised when a JWT fails to parse correctly. May be accompanied by an underlying error + describing which step of the JWT parsing process failed. + */ + FIRAuthErrorCodeMalformedJWT = 18000, +} NS_SWIFT_NAME(AuthErrorCode); + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Public/FIRAuthSettings.h b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Public/FIRAuthSettings.h new file mode 100644 index 0000000..4ac7ce8 --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Public/FIRAuthSettings.h @@ -0,0 +1,35 @@ +/* + * 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 + +NS_ASSUME_NONNULL_BEGIN + +/** @class FIRAuthSettings + @brief Determines settings related to an auth object. + */ +NS_SWIFT_NAME(AuthSettings) +@interface FIRAuthSettings : NSObject + +/** @property appVerificationDisabledForTesting + @brief Flag to determine whether app verification should be disabled for testing or not. + */ +@property(nonatomic, assign, getter=isAppVerificationDisabledForTesting) BOOL + appVerificationDisabledForTesting; + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Public/FIRAuthTokenResult.h b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Public/FIRAuthTokenResult.h new file mode 100644 index 0000000..515aa60 --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Public/FIRAuthTokenResult.h @@ -0,0 +1,66 @@ +/* + * 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 + +NS_ASSUME_NONNULL_BEGIN + +/** @class FIRAuthTokenResult + @brief A data class containing the ID token JWT string and other properties associated with the + token including the decoded payload claims. + */ +NS_SWIFT_NAME(AuthTokenResult) +@interface FIRAuthTokenResult : NSObject + +/** @property token + @brief Stores the JWT string of the ID token. + */ +@property(nonatomic, readonly) NSString *token; + +/** @property expirationDate + @brief Stores the ID token's expiration date. + */ +@property(nonatomic, readonly) NSDate *expirationDate; + +/** @property authDate + @brief Stores the ID token's authentication date. + @remarks This is the date the user was signed in and NOT the date the token was refreshed. + */ +@property(nonatomic, readonly) NSDate *authDate; + +/** @property issuedAtDate + @brief Stores the date that the ID token was issued. + @remarks This is the date last refreshed and NOT the last authentication date. + */ +@property(nonatomic, readonly) NSDate *issuedAtDate; + +/** @property signInProvider + @brief Stores sign-in provider through which the token was obtained. + @remarks This does not necessarily map to provider IDs. + */ +@property(nonatomic, readonly) NSString *signInProvider; + +/** @property claims + @brief Stores the entire payload of claims found on the ID token. This includes the standard + reserved claims as well as custom claims set by the developer via the Admin SDK. + */ +@property(nonatomic, readonly) NSDictionary *claims; + + + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Public/FIRAuthUIDelegate.h b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Public/FIRAuthUIDelegate.h new file mode 100644 index 0000000..9df4f6e --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Public/FIRAuthUIDelegate.h @@ -0,0 +1,53 @@ +/* + * 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 + +@class UIViewController; + +NS_ASSUME_NONNULL_BEGIN + +/** @protocol FIRAuthUIDelegate + @brief A protocol to handle user interface interactions for Firebase Auth. + */ +NS_SWIFT_NAME(AuthUIDelegate) +@protocol FIRAuthUIDelegate + +/** @fn presentViewController:animated:completion: + @brief If implemented, this method will be invoked when Firebase Auth needs to display a view + controller. + @param viewControllerToPresent The view controller to be presented. + @param flag Decides whether the view controller presentation should be animated or not. + @param completion The block to execute after the presentation finishes. This block has no return + value and takes no parameters. +*/ +- (void)presentViewController:(UIViewController *)viewControllerToPresent + animated:(BOOL)flag + completion:(void (^ _Nullable)(void))completion; + +/** @fn dismissViewControllerAnimated:completion: + @brief If implemented, this method will be invoked when Firebase Auth needs to display a view + controller. + @param flag Decides whether removing the view controller should be animated or not. + @param completion The block to execute after the presentation finishes. This block has no return + value and takes no parameters. +*/ +- (void)dismissViewControllerAnimated:(BOOL)flag completion:(void (^ _Nullable)(void))completion + NS_SWIFT_NAME(dismiss(animated:completion:)); + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Public/FIREmailAuthProvider.h b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Public/FIREmailAuthProvider.h new file mode 100644 index 0000000..aac0bf0 --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Public/FIREmailAuthProvider.h @@ -0,0 +1,70 @@ +/* + * 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 + +@class FIRAuthCredential; + +NS_ASSUME_NONNULL_BEGIN + +/** + @brief A string constant identifying the email & password identity provider. + */ +extern NSString *const FIREmailAuthProviderID NS_SWIFT_NAME(EmailAuthProviderID); + +/** + @brief A string constant identifying the email-link sign-in method. + */ +extern NSString *const FIREmailLinkAuthSignInMethod NS_SWIFT_NAME(EmailLinkAuthSignInMethod); + +/** + @brief A string constant identifying the email & password sign-in method. + */ +extern NSString *const FIREmailPasswordAuthSignInMethod + NS_SWIFT_NAME(EmailPasswordAuthSignInMethod); + +/** @class FIREmailAuthProvider + @brief A concrete implementation of `FIRAuthProvider` for Email & Password Sign In. + */ +NS_SWIFT_NAME(EmailAuthProvider) +@interface FIREmailAuthProvider : NSObject + +/** @fn credentialWithEmail:password: + @brief Creates an `FIRAuthCredential` for an email & password sign in. + + @param email The user's email address. + @param password The user's password. + @return A FIRAuthCredential containing the email & password credential. + */ ++ (FIRAuthCredential *)credentialWithEmail:(NSString *)email password:(NSString *)password; + +/** @fn credentialWithEmail:Link: + @brief Creates an `FIRAuthCredential` for an email & link sign in. + + @param email The user's email address. + @param link The email sign-in link. + @return A FIRAuthCredential containing the email & link credential. + */ ++ (FIRAuthCredential *)credentialWithEmail:(NSString *)email link:(NSString *)link; + +/** @fn init + @brief This class is not meant to be initialized. + */ +- (instancetype)init NS_UNAVAILABLE; + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Public/FIRFacebookAuthProvider.h b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Public/FIRFacebookAuthProvider.h new file mode 100644 index 0000000..75efe13 --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Public/FIRFacebookAuthProvider.h @@ -0,0 +1,54 @@ +/* + * 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 + +@class FIRAuthCredential; + +NS_ASSUME_NONNULL_BEGIN + +/** + @brief A string constant identifying the Facebook identity provider. + */ +extern NSString *const FIRFacebookAuthProviderID NS_SWIFT_NAME(FacebookAuthProviderID); + +/** + @brief A string constant identifying the Facebook sign-in method. + */ +extern NSString *const _Nonnull FIRFacebookAuthSignInMethod NS_SWIFT_NAME(FacebookAuthSignInMethod); + +/** @class FIRFacebookAuthProvider + @brief Utility class for constructing Facebook credentials. + */ +NS_SWIFT_NAME(FacebookAuthProvider) +@interface FIRFacebookAuthProvider : NSObject + +/** @fn credentialWithAccessToken: + @brief Creates an `FIRAuthCredential` for a Facebook sign in. + + @param accessToken The Access Token from Facebook. + @return A FIRAuthCredential containing the Facebook credentials. + */ ++ (FIRAuthCredential *)credentialWithAccessToken:(NSString *)accessToken; + +/** @fn init + @brief This class should not be initialized. + */ +- (instancetype)init NS_UNAVAILABLE; + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Public/FIRFederatedAuthProvider.h b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Public/FIRFederatedAuthProvider.h new file mode 100644 index 0000000..51190e2 --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Public/FIRFederatedAuthProvider.h @@ -0,0 +1,52 @@ +/* + * 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 + +#if TARGET_OS_IOS +#import "FIRAuthUIDelegate.h" +#endif // TARGET_OS_IOS + +@class FIRAuthCredential; + +NS_ASSUME_NONNULL_BEGIN + +NS_SWIFT_NAME(FederatedAuthProvider) +@protocol FIRFederatedAuthProvider + +/** @typedef FIRAuthCredentialCallback + @brief The type of block invoked when obtaining an auth credential. + @param credential The credential obtained. + @param error The error that occurred if any. + */ +typedef void(^FIRAuthCredentialCallback)(FIRAuthCredential *_Nullable credential, + NSError *_Nullable error) + NS_SWIFT_NAME(AuthCredentialCallback); + +#if TARGET_OS_IOS +/** @fn getCredentialWithUIDelegate:completion: + @brief Used to obtain an auth credential via a mobile web flow. + @param UIDelegate An optional UI delegate used to presenet the mobile web flow. + @param completion Optionally; a block which is invoked asynchronously on the main thread when + the mobile web flow is completed. + */ +- (void)getCredentialWithUIDelegate:(nullable id)UIDelegate + completion:(nullable FIRAuthCredentialCallback)completion; +#endif // TARGET_OS_IOS + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Public/FIRGameCenterAuthProvider.h b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Public/FIRGameCenterAuthProvider.h new file mode 100644 index 0000000..5e59404 --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Public/FIRGameCenterAuthProvider.h @@ -0,0 +1,62 @@ +/* + * 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 + +@class FIRAuthCredential; + +NS_ASSUME_NONNULL_BEGIN + +/** + @brief A string constant identifying the Game Center identity provider. + */ +extern NSString *const FIRGameCenterAuthProviderID NS_SWIFT_NAME(GameCenterAuthProviderID); + +/** + @brief A string constant identifying the Game Center sign-in method. + */ +extern NSString *const _Nonnull FIRGameCenterAuthSignInMethod +NS_SWIFT_NAME(GameCenterAuthSignInMethod); + +/** @typedef FIRGameCenterCredentialCallback + @brief The type of block invoked when the Game Center credential code has finished. + @param credential On success, the credential will be provided, nil otherwise. + @param error On error, the error that occurred, nil otherwise. + */ +typedef void (^FIRGameCenterCredentialCallback)(FIRAuthCredential *_Nullable credential, + NSError *_Nullable error) +NS_SWIFT_NAME(GameCenterCredentialCallback); + +/** @class FIRGameCenterAuthProvider + @brief A concrete implementation of @c FIRAuthProvider for Game Center Sign In. + */ +NS_SWIFT_NAME(GameCenterAuthProvider) +@interface FIRGameCenterAuthProvider : NSObject + +/** @fn getCredentialWithCompletion: + @brief Creates a @c FIRAuthCredential for a Game Center sign in. + */ ++ (void)getCredentialWithCompletion:(FIRGameCenterCredentialCallback)completion +NS_SWIFT_NAME(getCredential(completion:)); + +/** @fn init + @brief This class is not meant to be initialized. + */ +- (instancetype)init NS_UNAVAILABLE; + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Public/FIRGitHubAuthProvider.h b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Public/FIRGitHubAuthProvider.h new file mode 100644 index 0000000..0610427 --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Public/FIRGitHubAuthProvider.h @@ -0,0 +1,55 @@ +/* + * 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 + +@class FIRAuthCredential; + +NS_ASSUME_NONNULL_BEGIN + +/** + @brief A string constant identifying the GitHub identity provider. + */ +extern NSString *const FIRGitHubAuthProviderID NS_SWIFT_NAME(GitHubAuthProviderID); + +/** + @brief A string constant identifying the GitHub sign-in method. + */ +extern NSString *const _Nonnull FIRGitHubAuthSignInMethod NS_SWIFT_NAME(GitHubAuthSignInMethod); + + +/** @class FIRGitHubAuthProvider + @brief Utility class for constructing GitHub credentials. + */ +NS_SWIFT_NAME(GitHubAuthProvider) +@interface FIRGitHubAuthProvider : NSObject + +/** @fn credentialWithToken: + @brief Creates an `FIRAuthCredential` for a GitHub sign in. + + @param token The GitHub OAuth access token. + @return A FIRAuthCredential containing the GitHub credential. + */ ++ (FIRAuthCredential *)credentialWithToken:(NSString *)token; + +/** @fn init + @brief This class is not meant to be initialized. + */ +- (instancetype)init NS_UNAVAILABLE; + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Public/FIRGoogleAuthProvider.h b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Public/FIRGoogleAuthProvider.h new file mode 100644 index 0000000..7d6fa22 --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Public/FIRGoogleAuthProvider.h @@ -0,0 +1,56 @@ +/* + * 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 + +@class FIRAuthCredential; + +NS_ASSUME_NONNULL_BEGIN + +/** + @brief A string constant identifying the Google identity provider. + */ +extern NSString *const FIRGoogleAuthProviderID NS_SWIFT_NAME(GoogleAuthProviderID); + +/** + @brief A string constant identifying the Google sign-in method. + */ +extern NSString *const _Nonnull FIRGoogleAuthSignInMethod NS_SWIFT_NAME(GoogleAuthSignInMethod); + +/** @class FIRGoogleAuthProvider + @brief Utility class for constructing Google Sign In credentials. + */ +NS_SWIFT_NAME(GoogleAuthProvider) +@interface FIRGoogleAuthProvider : NSObject + +/** @fn credentialWithIDToken:accessToken: + @brief Creates an `FIRAuthCredential` for a Google sign in. + + @param IDToken The ID Token from Google. + @param accessToken The Access Token from Google. + @return A FIRAuthCredential containing the Google credentials. + */ ++ (FIRAuthCredential *)credentialWithIDToken:(NSString *)IDToken + accessToken:(NSString *)accessToken; + +/** @fn init + @brief This class should not be initialized. + */ +- (instancetype)init NS_UNAVAILABLE; + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Public/FIROAuthCredential.h b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Public/FIROAuthCredential.h new file mode 100644 index 0000000..94abe4f --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Public/FIROAuthCredential.h @@ -0,0 +1,53 @@ +/* + * 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 + +#import "FIRAuthCredential.h" + +NS_ASSUME_NONNULL_BEGIN + +/** @class FIROAuthCredential + @brief Internal implementation of FIRAuthCredential for generic credentials. + */ +NS_SWIFT_NAME(OAuthCredential) +@interface FIROAuthCredential : FIRAuthCredential + +/** @property IDToken + @brief The ID Token associated with this credential. + */ +@property(nonatomic, readonly, nullable) NSString *IDToken; + +/** @property accessToken + @brief The access token associated with this credential. + */ +@property(nonatomic, readonly, nullable) NSString *accessToken; + +/** @property secret + @brief The secret associated with this credential. This will be nil for OAuth 2.0 providers. + @detail OAuthCredential already exposes a providerId getter. This will help the developer + determine whether an access token/secret pair is needed. + */ +@property(nonatomic, readonly, nullable) NSString *secret; + +/** @fn init + @brief This class is not supposed to be instantiated directly. + */ +- (instancetype)init NS_UNAVAILABLE; + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Public/FIROAuthProvider.h b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Public/FIROAuthProvider.h new file mode 100644 index 0000000..57635e9 --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Public/FIROAuthProvider.h @@ -0,0 +1,95 @@ +/* + * 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 + +#import "FIRFederatedAuthProvider.h" + +@class FIRAuth; +@class FIROAuthCredential; + +NS_ASSUME_NONNULL_BEGIN + +/** @class FIROAuthProvider + @brief A concrete implementation of `FIRAuthProvider` for generic OAuth Providers. + */ +NS_SWIFT_NAME(OAuthProvider) +@interface FIROAuthProvider : NSObject + +/** @property scopes + @brief Array used to configure the OAuth scopes. + */ +@property(nonatomic, copy, nullable) NSArray *scopes; + +/** @property customParameters + @brief Dictionary used to configure the OAuth custom parameters. + */ +@property(nonatomic, copy, nullable) NSDictionary *customParameters; + +/** @property providerID + @brief The provider ID indicating the specific OAuth provider this OAuthProvider instance + represents. + */ +@property(nonatomic, copy, readonly) NSString *providerID; + +/** @fn providerWithProviderID: + @param providerID The provider ID of the IDP for which this auth provider instance will be + configured. + @return An instance of FIROAuthProvider corresponding to the specified provider ID. + */ ++ (FIROAuthProvider *)providerWithProviderID:(NSString *)providerID; + +/** @fn providerWithProviderID:auth: + @param providerID The provider ID of the IDP for which this auth provider instance will be + configured. + @param auth The auth instance to be associated with the FIROAuthProvider instance. + @return An instance of FIROAuthProvider corresponding to the specified provider ID. + */ ++ (FIROAuthProvider *)providerWithProviderID:(NSString *)providerID auth:(FIRAuth *)auth; + +/** @fn credentialWithProviderID:IDToken:accessToken: + @brief Creates an `FIRAuthCredential` for that OAuth 2 provider identified by providerID, ID + token and access token. + + @param providerID The provider ID associated with the Auth credential being created. + @param IDToken The IDToken associated with the Auth credential being created. + @param accessToken The accessstoken associated with the Auth credential be created, if + available. + @return A FIRAuthCredential for the specified provider ID, ID token and access token. + */ ++ (FIROAuthCredential *)credentialWithProviderID:(NSString *)providerID + IDToken:(NSString *)IDToken + accessToken:(nullable NSString *)accessToken; + +/** @fn credentialWithProviderID:accessToken: + @brief Creates an `FIRAuthCredential` for that OAuth 2 provider identified by providerID using + an ID token. + + @param providerID The provider ID associated with the Auth credential being created. + @param accessToken The accessstoken associated with the Auth credential be created + @return A FIRAuthCredential. + */ ++ (FIROAuthCredential *)credentialWithProviderID:(NSString *)providerID + accessToken:(NSString *)accessToken; + +/** @fn init + @brief This class is not meant to be initialized. + */ +- (instancetype)init NS_UNAVAILABLE; + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Public/FIRPhoneAuthCredential.h b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Public/FIRPhoneAuthCredential.h new file mode 100644 index 0000000..9f5f596 --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Public/FIRPhoneAuthCredential.h @@ -0,0 +1,36 @@ +/* + * 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 + +#import "FIRAuthCredential.h" + +NS_ASSUME_NONNULL_BEGIN + +/** @class FIRPhoneAuthCredential + @brief Implementation of FIRAuthCredential for Phone Auth credentials. + */ +NS_SWIFT_NAME(PhoneAuthCredential) +@interface FIRPhoneAuthCredential : FIRAuthCredential + +/** @fn init + @brief This class is not supposed to be instantiated directly. + */ +- (instancetype)init NS_UNAVAILABLE; + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Public/FIRPhoneAuthProvider.h b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Public/FIRPhoneAuthProvider.h new file mode 100644 index 0000000..a4301c1 --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Public/FIRPhoneAuthProvider.h @@ -0,0 +1,105 @@ +/* + * 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 + +@class FIRAuth; +@class FIRPhoneAuthCredential; +@protocol FIRAuthUIDelegate; + +NS_ASSUME_NONNULL_BEGIN + +/** @var FIRPhoneAuthProviderID + @brief A string constant identifying the phone identity provider. + */ +extern NSString *const FIRPhoneAuthProviderID NS_SWIFT_NAME(PhoneAuthProviderID); + +/** @var FIRPhoneAuthProviderID + @brief A string constant identifying the phone sign-in method. + */ +extern NSString *const _Nonnull FIRPhoneAuthSignInMethod NS_SWIFT_NAME(PhoneAuthSignInMethod); + +/** @typedef FIRVerificationResultCallback + @brief The type of block invoked when a request to send a verification code has finished. + + @param verificationID On success, the verification ID provided, nil otherwise. + @param error On error, the error that occurred, nil otherwise. + */ +typedef void (^FIRVerificationResultCallback) + (NSString *_Nullable verificationID, NSError *_Nullable error) + NS_SWIFT_NAME(VerificationResultCallback); + +/** @class FIRPhoneAuthProvider + @brief A concrete implementation of `FIRAuthProvider` for phone auth providers. + */ +NS_SWIFT_NAME(PhoneAuthProvider) +@interface FIRPhoneAuthProvider : NSObject + +/** @fn provider + @brief Returns an instance of `FIRPhoneAuthProvider` for the default `FIRAuth` object. + */ ++ (instancetype)provider NS_SWIFT_NAME(provider()); + +/** @fn providerWithAuth: + @brief Returns an instance of `FIRPhoneAuthProvider` for the provided `FIRAuth` object. + + @param auth The auth object to associate with the phone auth provider instance. + */ ++ (instancetype)providerWithAuth:(FIRAuth *)auth NS_SWIFT_NAME(provider(auth:)); + +/** @fn verifyPhoneNumber:UIDelegate:completion: + @brief Starts the phone number authentication flow by sending a verification code to the + specified phone number. + @param phoneNumber The phone number to be verified. + @param UIDelegate An object used to present the SFSafariViewController. The object is retained + by this method until the completion block is executed. + @param completion The callback to be invoked when the verification flow is finished. + @remarks Possible error codes: + + + `FIRAuthErrorCodeCaptchaCheckFailed` - Indicates that the reCAPTCHA token obtained by + the Firebase Auth is invalid or has expired. + + `FIRAuthErrorCodeQuotaExceeded` - Indicates that the phone verification quota for this + project has been exceeded. + + `FIRAuthErrorCodeInvalidPhoneNumber` - Indicates that the phone number provided is + invalid. + + `FIRAuthErrorCodeMissingPhoneNumber` - Indicates that a phone number was not provided. + */ +- (void)verifyPhoneNumber:(NSString *)phoneNumber + UIDelegate:(nullable id)UIDelegate + completion:(nullable FIRVerificationResultCallback)completion; + +/** @fn credentialWithVerificationID:verificationCode: + @brief Creates an `FIRAuthCredential` for the phone number provider identified by the + verification ID and verification code. + + @param verificationID The verification ID obtained from invoking + verifyPhoneNumber:completion: + @param verificationCode The verification code obtained from the user. + @return The corresponding phone auth credential for the verification ID and verification code + provided. + */ +- (FIRPhoneAuthCredential *)credentialWithVerificationID:(NSString *)verificationID + verificationCode:(NSString *)verificationCode; + +/** @fn init + @brief Please use the `provider` or `providerWithAuth:` methods to obtain an instance of + `FIRPhoneAuthProvider`. + */ +- (instancetype)init NS_UNAVAILABLE; + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Public/FIRTwitterAuthProvider.h b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Public/FIRTwitterAuthProvider.h new file mode 100644 index 0000000..0f1b28d --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Public/FIRTwitterAuthProvider.h @@ -0,0 +1,54 @@ +/* + * 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 + +@class FIRAuthCredential; + +NS_ASSUME_NONNULL_BEGIN + +/** + @brief A string constant identifying the Twitter identity provider. + */ +extern NSString *const FIRTwitterAuthProviderID NS_SWIFT_NAME(TwitterAuthProviderID); +/** + @brief A string constant identifying the Twitter sign-in method. + */ +extern NSString *const _Nonnull FIRTwitterAuthSignInMethod NS_SWIFT_NAME(TwitterAuthSignInMethod); + +/** @class FIRTwitterAuthProvider + @brief Utility class for constructing Twitter credentials. + */ +NS_SWIFT_NAME(TwitterAuthProvider) +@interface FIRTwitterAuthProvider : NSObject + +/** @fn credentialWithToken:secret: + @brief Creates an `FIRAuthCredential` for a Twitter sign in. + + @param token The Twitter OAuth token. + @param secret The Twitter OAuth secret. + @return A FIRAuthCredential containing the Twitter credential. + */ ++ (FIRAuthCredential *)credentialWithToken:(NSString *)token secret:(NSString *)secret; + +/** @fn init + @brief This class is not meant to be initialized. + */ +- (instancetype)init NS_UNAVAILABLE; + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Public/FIRUser.h b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Public/FIRUser.h new file mode 100644 index 0000000..5055ea6 --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Public/FIRUser.h @@ -0,0 +1,490 @@ +/* + * 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 + +#import "FIRAuth.h" +#import "FIRAuthDataResult.h" +#import "FIRUserInfo.h" + +@class FIRAuthTokenResult; +@class FIRPhoneAuthCredential; +@class FIRUserProfileChangeRequest; +@class FIRUserMetadata; + +NS_ASSUME_NONNULL_BEGIN + +/** @typedef FIRAuthTokenCallback + @brief The type of block called when a token is ready for use. + @see FIRUser.getIDTokenWithCompletion: + @see FIRUser.getIDTokenForcingRefresh:withCompletion: + + @param token Optionally; an access token if the request was successful. + @param error Optionally; the error which occurred - or nil if the request was successful. + + @remarks One of: `token` or `error` will always be non-nil. + */ +typedef void (^FIRAuthTokenCallback)(NSString *_Nullable token, NSError *_Nullable error) + NS_SWIFT_NAME(AuthTokenCallback); + +/** @typedef FIRAuthTokenResultCallback + @brief The type of block called when a token is ready for use. + @see FIRUser.getIDTokenResultWithCompletion: + @see FIRUser.getIDTokenResultForcingRefresh:withCompletion: + + @param tokenResult Optionally; an object containing the raw access token string as well as other + useful data pertaining to the token. + @param error Optionally; the error which occurred - or nil if the request was successful. + + @remarks One of: `token` or `error` will always be non-nil. + */ +typedef void (^FIRAuthTokenResultCallback)(FIRAuthTokenResult *_Nullable tokenResult, + NSError *_Nullable error) + NS_SWIFT_NAME(AuthTokenResultCallback); + +/** @typedef FIRUserProfileChangeCallback + @brief The type of block called when a user profile change has finished. + + @param error Optionally; the error which occurred - or nil if the request was successful. + */ +typedef void (^FIRUserProfileChangeCallback)(NSError *_Nullable error) + NS_SWIFT_NAME(UserProfileChangeCallback); + +/** @typedef FIRSendEmailVerificationCallback + @brief The type of block called when a request to send an email verification has finished. + + @param error Optionally; the error which occurred - or nil if the request was successful. + */ +typedef void (^FIRSendEmailVerificationCallback)(NSError *_Nullable error) + NS_SWIFT_NAME(SendEmailVerificationCallback); + +/** @class FIRUser + @brief Represents a user. Firebase Auth does not attempt to validate users + when loading them from the keychain. Invalidated users (such as those + whose passwords have been changed on another client) are automatically + logged out when an auth-dependent operation is attempted or when the + ID token is automatically refreshed. + @remarks This class is thread-safe. + */ +NS_SWIFT_NAME(User) +@interface FIRUser : NSObject + +/** @property anonymous + @brief Indicates the user represents an anonymous user. + */ +@property(nonatomic, readonly, getter=isAnonymous) BOOL anonymous; + +/** @property emailVerified + @brief Indicates the email address associated with this user has been verified. + */ +@property(nonatomic, readonly, getter=isEmailVerified) BOOL emailVerified; + +/** @property refreshToken + @brief A refresh token; useful for obtaining new access tokens independently. + @remarks This property should only be used for advanced scenarios, and is not typically needed. + */ +@property(nonatomic, readonly, nullable) NSString *refreshToken; + +/** @property providerData + @brief Profile data for each identity provider, if any. + @remarks This data is cached on sign-in and updated when linking or unlinking. + */ +@property(nonatomic, readonly, nonnull) NSArray> *providerData; + +/** @property metadata + @brief Metadata associated with the Firebase user in question. + */ +@property(nonatomic, readonly, nonnull) FIRUserMetadata *metadata; + +/** @fn init + @brief This class should not be instantiated. + @remarks To retrieve the current user, use `FIRAuth.currentUser`. To sign a user + in or out, use the methods on `FIRAuth`. + */ +- (instancetype)init NS_UNAVAILABLE; + +/** @fn updateEmail:completion: + @brief Updates the email address for the user. On success, the cached user profile data is + updated. + @remarks May fail if there is already an account with this email address that was created using + email and password authentication. + + @param email The email address for the user. + @param completion Optionally; the block invoked when the user profile change has finished. + Invoked asynchronously on the main thread in the future. + + @remarks Possible error codes: + + + `FIRAuthErrorCodeInvalidRecipientEmail` - Indicates an invalid recipient email was + sent in the request. + + `FIRAuthErrorCodeInvalidSender` - Indicates an invalid sender email is set in + the console for this action. + + `FIRAuthErrorCodeInvalidMessagePayload` - Indicates an invalid email template for + sending update email. + + `FIRAuthErrorCodeEmailAlreadyInUse` - Indicates the email is already in use by another + account. + + `FIRAuthErrorCodeInvalidEmail` - Indicates the email address is malformed. + + `FIRAuthErrorCodeRequiresRecentLogin` - Updating a user’s email is a security + sensitive operation that requires a recent login from the user. This error indicates + the user has not signed in recently enough. To resolve, reauthenticate the user by + invoking reauthenticateWithCredential:completion: on FIRUser. + + @remarks See `FIRAuthErrors` for a list of error codes that are common to all FIRUser methods. + */ +- (void)updateEmail:(NSString *)email completion:(nullable FIRUserProfileChangeCallback)completion + NS_SWIFT_NAME(updateEmail(to:completion:)); + +/** @fn updatePassword:completion: + @brief Updates the password for the user. On success, the cached user profile data is updated. + + @param password The new password for the user. + @param completion Optionally; the block invoked when the user profile change has finished. + Invoked asynchronously on the main thread in the future. + + @remarks Possible error codes: + + + `FIRAuthErrorCodeOperationNotAllowed` - Indicates the administrator disabled + sign in with the specified identity provider. + + `FIRAuthErrorCodeRequiresRecentLogin` - Updating a user’s password is a security + sensitive operation that requires a recent login from the user. This error indicates + the user has not signed in recently enough. To resolve, reauthenticate the user by + invoking reauthenticateWithCredential:completion: on FIRUser. + + `FIRAuthErrorCodeWeakPassword` - Indicates an attempt to set a password that is + considered too weak. The NSLocalizedFailureReasonErrorKey field in the NSError.userInfo + dictionary object will contain more detailed explanation that can be shown to the user. + + @remarks See `FIRAuthErrors` for a list of error codes that are common to all FIRUser methods. + */ +- (void)updatePassword:(NSString *)password + completion:(nullable FIRUserProfileChangeCallback)completion + NS_SWIFT_NAME(updatePassword(to:completion:)); + +#if TARGET_OS_IOS +/** @fn updatePhoneNumberCredential:completion: + @brief Updates the phone number for the user. On success, the cached user profile data is + updated. + + @param phoneNumberCredential The new phone number credential corresponding to the phone number + to be added to the Firebase account, if a phone number is already linked to the account this + new phone number will replace it. + @param completion Optionally; the block invoked when the user profile change has finished. + Invoked asynchronously on the main thread in the future. + + @remarks Possible error codes: + + + `FIRAuthErrorCodeRequiresRecentLogin` - Updating a user’s phone number is a security + sensitive operation that requires a recent login from the user. This error indicates + the user has not signed in recently enough. To resolve, reauthenticate the user by + invoking reauthenticateWithCredential:completion: on FIRUser. + + @remarks See `FIRAuthErrors` for a list of error codes that are common to all FIRUser methods. + */ +- (void)updatePhoneNumberCredential:(FIRPhoneAuthCredential *)phoneNumberCredential + completion:(nullable FIRUserProfileChangeCallback)completion; +#endif + +/** @fn profileChangeRequest + @brief Creates an object which may be used to change the user's profile data. + + @remarks Set the properties of the returned object, then call + `FIRUserProfileChangeRequest.commitChangesWithCallback:` to perform the updates atomically. + + @return An object which may be used to change the user's profile data atomically. + */ +- (FIRUserProfileChangeRequest *)profileChangeRequest NS_SWIFT_NAME(createProfileChangeRequest()); + +/** @fn reloadWithCompletion: + @brief Reloads the user's profile data from the server. + + @param completion Optionally; the block invoked when the reload has finished. Invoked + asynchronously on the main thread in the future. + + @remarks May fail with a `FIRAuthErrorCodeRequiresRecentLogin` error code. In this case + you should call `FIRUser.reauthenticateWithCredential:completion:` before re-invoking + `FIRUser.updateEmail:completion:`. + + @remarks See `FIRAuthErrors` for a list of error codes that are common to all API methods. + */ +- (void)reloadWithCompletion:(nullable FIRUserProfileChangeCallback)completion; + +/** @fn reauthenticateWithCredential:completion: + @brief Renews the user's authentication tokens by validating a fresh set of credentials supplied + by the user and returns additional identity provider data. + + @param credential A user-supplied credential, which will be validated by the server. This can be + a successful third-party identity provider sign-in, or an email address and password. + @param completion Optionally; the block invoked when the re-authentication operation has + finished. Invoked asynchronously on the main thread in the future. + + @remarks If the user associated with the supplied credential is different from the current user, + or if the validation of the supplied credentials fails; an error is returned and the current + user remains signed in. + + @remarks Possible error codes: + + + `FIRAuthErrorCodeInvalidCredential` - Indicates the supplied credential is invalid. + This could happen if it has expired or it is malformed. + + `FIRAuthErrorCodeOperationNotAllowed` - Indicates that accounts with the + identity provider represented by the credential are not enabled. Enable them in the + Auth section of the Firebase console. + + `FIRAuthErrorCodeEmailAlreadyInUse` - Indicates the email asserted by the credential + (e.g. the email in a Facebook access token) is already in use by an existing account, + that cannot be authenticated with this method. Call fetchProvidersForEmail for + this user’s email and then prompt them to sign in with any of the sign-in providers + returned. This error will only be thrown if the "One account per email address" + setting is enabled in the Firebase console, under Auth settings. Please note that the + error code raised in this specific situation may not be the same on Web and Android. + + `FIRAuthErrorCodeUserDisabled` - Indicates the user's account is disabled. + + `FIRAuthErrorCodeWrongPassword` - Indicates the user attempted reauthentication with + an incorrect password, if credential is of the type EmailPasswordAuthCredential. + + `FIRAuthErrorCodeUserMismatch` - Indicates that an attempt was made to + reauthenticate with a user which is not the current user. + + `FIRAuthErrorCodeInvalidEmail` - Indicates the email address is malformed. + + @remarks See `FIRAuthErrors` for a list of error codes that are common to all API methods. + */ +- (void)reauthenticateWithCredential:(FIRAuthCredential *)credential + completion:(nullable FIRAuthDataResultCallback)completion; + +/** @fn reauthenticateAndRetrieveDataWithCredential:completion: + @brief Please use linkWithCredential:completion: for Objective-C + or link(withCredential:completion:) for Swift instead. + */ +- (void)reauthenticateAndRetrieveDataWithCredential:(FIRAuthCredential *)credential + completion:(nullable FIRAuthDataResultCallback)completion +DEPRECATED_MSG_ATTRIBUTE( "Please use reauthenticateWithCredential:completion: for" + " Objective-C or reauthenticate(withCredential:completion:)" + " for Swift instead."); + +/** @fn getIDTokenResultWithCompletion: + @brief Retrieves the Firebase authentication token, possibly refreshing it if it has expired. + + @param completion Optionally; the block invoked when the token is available. Invoked + asynchronously on the main thread in the future. + + @remarks See `FIRAuthErrors` for a list of error codes that are common to all API methods. + */ +- (void)getIDTokenResultWithCompletion:(nullable FIRAuthTokenResultCallback)completion + NS_SWIFT_NAME(getIDTokenResult(completion:)); + +/** @fn getIDTokenResultForcingRefresh:completion: + @brief Retrieves the Firebase authentication token, possibly refreshing it if it has expired. + + @param forceRefresh Forces a token refresh. Useful if the token becomes invalid for some reason + other than an expiration. + @param completion Optionally; the block invoked when the token is available. Invoked + asynchronously on the main thread in the future. + + @remarks The authentication token will be refreshed (by making a network request) if it has + expired, or if `forceRefresh` is YES. + + @remarks See `FIRAuthErrors` for a list of error codes that are common to all API methods. + */ +- (void)getIDTokenResultForcingRefresh:(BOOL)forceRefresh + completion:(nullable FIRAuthTokenResultCallback)completion + NS_SWIFT_NAME(getIDTokenResult(forcingRefresh:completion:)); + +/** @fn getIDTokenWithCompletion: + @brief Retrieves the Firebase authentication token, possibly refreshing it if it has expired. + + @param completion Optionally; the block invoked when the token is available. Invoked + asynchronously on the main thread in the future. + + @remarks See `FIRAuthErrors` for a list of error codes that are common to all API methods. + */ +- (void)getIDTokenWithCompletion:(nullable FIRAuthTokenCallback)completion + NS_SWIFT_NAME(getIDToken(completion:)); + +/** @fn getIDTokenForcingRefresh:completion: + @brief Retrieves the Firebase authentication token, possibly refreshing it if it has expired. + + @param forceRefresh Forces a token refresh. Useful if the token becomes invalid for some reason + other than an expiration. + @param completion Optionally; the block invoked when the token is available. Invoked + asynchronously on the main thread in the future. + + @remarks The authentication token will be refreshed (by making a network request) if it has + expired, or if `forceRefresh` is YES. + + @remarks See `FIRAuthErrors` for a list of error codes that are common to all API methods. + */ +- (void)getIDTokenForcingRefresh:(BOOL)forceRefresh + completion:(nullable FIRAuthTokenCallback)completion; + +/** @fn linkAndRetrieveDataWithCredential:completion: + @brief Please use linkWithCredential:completion: for Objective-C + or link(withCredential:completion:) for Swift instead. + */ +- (void)linkAndRetrieveDataWithCredential:(FIRAuthCredential *)credential + completion:(nullable FIRAuthDataResultCallback)completion +DEPRECATED_MSG_ATTRIBUTE("Please use linkWithCredential:completion: for Objective-C " + "or link(withCredential:completion:) for Swift instead."); + +/** @fn linkWithCredential:completion: + @brief Associates a user account from a third-party identity provider with this user and + returns additional identity provider data. + + @param credential The credential for the identity provider. + @param completion Optionally; the block invoked when the unlinking is complete, or fails. + Invoked asynchronously on the main thread in the future. + + @remarks Possible error codes: + + + `FIRAuthErrorCodeProviderAlreadyLinked` - Indicates an attempt to link a provider of a + type already linked to this account. + + `FIRAuthErrorCodeCredentialAlreadyInUse` - Indicates an attempt to link with a + credential that has already been linked with a different Firebase account. + + `FIRAuthErrorCodeOperationNotAllowed` - Indicates that accounts with the identity + provider represented by the credential are not enabled. Enable them in the Auth section + of the Firebase console. + + @remarks This method may also return error codes associated with updateEmail:completion: and + updatePassword:completion: on FIRUser. + + @remarks See `FIRAuthErrors` for a list of error codes that are common to all FIRUser methods. + */ +- (void)linkWithCredential:(FIRAuthCredential *)credential + completion:(nullable FIRAuthDataResultCallback)completion; + +/** @fn unlinkFromProvider:completion: + @brief Disassociates a user account from a third-party identity provider with this user. + + @param provider The provider ID of the provider to unlink. + @param completion Optionally; the block invoked when the unlinking is complete, or fails. + Invoked asynchronously on the main thread in the future. + + @remarks Possible error codes: + + + `FIRAuthErrorCodeNoSuchProvider` - Indicates an attempt to unlink a provider + that is not linked to the account. + + `FIRAuthErrorCodeRequiresRecentLogin` - Updating email is a security sensitive + operation that requires a recent login from the user. This error indicates the user + has not signed in recently enough. To resolve, reauthenticate the user by invoking + reauthenticateWithCredential:completion: on FIRUser. + + @remarks See `FIRAuthErrors` for a list of error codes that are common to all FIRUser methods. + */ +- (void)unlinkFromProvider:(NSString *)provider + completion:(nullable FIRAuthResultCallback)completion; + +/** @fn sendEmailVerificationWithCompletion: + @brief Initiates email verification for the user. + + @param completion Optionally; the block invoked when the request to send an email verification + is complete, or fails. Invoked asynchronously on the main thread in the future. + + @remarks Possible error codes: + + + `FIRAuthErrorCodeInvalidRecipientEmail` - Indicates an invalid recipient email was + sent in the request. + + `FIRAuthErrorCodeInvalidSender` - Indicates an invalid sender email is set in + the console for this action. + + `FIRAuthErrorCodeInvalidMessagePayload` - Indicates an invalid email template for + sending update email. + + `FIRAuthErrorCodeUserNotFound` - Indicates the user account was not found. + + @remarks See `FIRAuthErrors` for a list of error codes that are common to all FIRUser methods. + */ +- (void)sendEmailVerificationWithCompletion:(nullable FIRSendEmailVerificationCallback)completion; + +/** @fn sendEmailVerificationWithActionCodeSettings:completion: + @brief Initiates email verification for the user. + + @param actionCodeSettings An `FIRActionCodeSettings` object containing settings related to + handling action codes. + + @remarks Possible error codes: + + + `FIRAuthErrorCodeInvalidRecipientEmail` - Indicates an invalid recipient email was + sent in the request. + + `FIRAuthErrorCodeInvalidSender` - Indicates an invalid sender email is set in + the console for this action. + + `FIRAuthErrorCodeInvalidMessagePayload` - Indicates an invalid email template for + sending update email. + + `FIRAuthErrorCodeUserNotFound` - Indicates the user account was not found. + + `FIRAuthErrorCodeMissingIosBundleID` - Indicates that the iOS bundle ID is missing when + a iOS App Store ID is provided. + + `FIRAuthErrorCodeMissingAndroidPackageName` - Indicates that the android package name + is missing when the `androidInstallApp` flag is set to true. + + `FIRAuthErrorCodeUnauthorizedDomain` - Indicates that the domain specified in the + continue URL is not whitelisted in the Firebase console. + + `FIRAuthErrorCodeInvalidContinueURI` - Indicates that the domain specified in the + continue URI is not valid. + */ +- (void)sendEmailVerificationWithActionCodeSettings:(FIRActionCodeSettings *)actionCodeSettings + completion:(nullable FIRSendEmailVerificationCallback) + completion; + +/** @fn deleteWithCompletion: + @brief Deletes the user account (also signs out the user, if this was the current user). + + @param completion Optionally; the block invoked when the request to delete the account is + complete, or fails. Invoked asynchronously on the main thread in the future. + + @remarks Possible error codes: + + + `FIRAuthErrorCodeRequiresRecentLogin` - Updating email is a security sensitive + operation that requires a recent login from the user. This error indicates the user + has not signed in recently enough. To resolve, reauthenticate the user by invoking + reauthenticateWithCredential:completion: on FIRUser. + + @remarks See `FIRAuthErrors` for a list of error codes that are common to all FIRUser methods. + + */ +- (void)deleteWithCompletion:(nullable FIRUserProfileChangeCallback)completion; + +@end + +/** @class FIRUserProfileChangeRequest + @brief Represents an object capable of updating a user's profile data. + @remarks Properties are marked as being part of a profile update when they are set. Setting a + property value to nil is not the same as leaving the property unassigned. + */ +NS_SWIFT_NAME(UserProfileChangeRequest) +@interface FIRUserProfileChangeRequest : NSObject + +/** @fn init + @brief Please use `FIRUser.profileChangeRequest` + */ +- (instancetype)init NS_UNAVAILABLE; + +/** @property displayName + @brief The user's display name. + @remarks It is an error to set this property after calling + `FIRUserProfileChangeRequest.commitChangesWithCallback:` + */ +@property(nonatomic, copy, nullable) NSString *displayName; + +/** @property photoURL + @brief The user's photo URL. + @remarks It is an error to set this property after calling + `FIRUserProfileChangeRequest.commitChangesWithCallback:` + */ +@property(nonatomic, copy, nullable) NSURL *photoURL; + +/** @fn commitChangesWithCompletion: + @brief Commits any pending changes. + @remarks This method should only be called once. Once called, property values should not be + changed. + + @param completion Optionally; the block invoked when the user profile change has been applied. + Invoked asynchronously on the main thread in the future. + */ +- (void)commitChangesWithCompletion:(nullable FIRUserProfileChangeCallback)completion; + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Public/FIRUserInfo.h b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Public/FIRUserInfo.h new file mode 100644 index 0000000..04eca49 --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Public/FIRUserInfo.h @@ -0,0 +1,60 @@ +/* + * 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 + +NS_ASSUME_NONNULL_BEGIN + +/** + @brief Represents user data returned from an identity provider. + */ +NS_SWIFT_NAME(UserInfo) +@protocol FIRUserInfo + +/** @property providerID + @brief The provider identifier. + */ +@property(nonatomic, copy, readonly) NSString *providerID; + +/** @property uid + @brief The provider's user ID for the user. + */ +@property(nonatomic, copy, readonly) NSString *uid; + +/** @property displayName + @brief The name of the user. + */ +@property(nonatomic, copy, readonly, nullable) NSString *displayName; + +/** @property photoURL + @brief The URL of the user's profile photo. + */ +@property(nonatomic, copy, readonly, nullable) NSURL *photoURL; + +/** @property email + @brief The user's email address. + */ +@property(nonatomic, copy, readonly, nullable) NSString *email; + +/** @property phoneNumber + @brief A phone number associated with the user. + @remarks This property is only available for users authenticated via phone number auth. + */ +@property(nonatomic, readonly, nullable) NSString *phoneNumber; + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Public/FIRUserMetadata.h b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Public/FIRUserMetadata.h new file mode 100644 index 0000000..3ceae38 --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Public/FIRUserMetadata.h @@ -0,0 +1,45 @@ +/* + * 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 + +NS_ASSUME_NONNULL_BEGIN + +/** @class FIRUserMetadata + @brief A data class representing the metadata corresponding to a Firebase user. + */ +NS_SWIFT_NAME(UserMetadata) +@interface FIRUserMetadata : NSObject + +/** @property lastSignInDate + @brief Stores the last sign in date for the corresponding Firebase user. + */ +@property(copy, nonatomic, readonly, nullable) NSDate *lastSignInDate; + +/** @property creationDate + @brief Stores the creation date for the corresponding Firebase user. + */ +@property(copy, nonatomic, readonly, nullable) NSDate *creationDate; + +/** @fn init + @brief This class should not be initialized manually, an instance of this class can be obtained + from a Firebase user object. + */ +- (instancetype)init NS_UNAVAILABLE; + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Public/FirebaseAuth.h b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Public/FirebaseAuth.h new file mode 100644 index 0000000..462d2ec --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Public/FirebaseAuth.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 + +#import "FIRActionCodeSettings.h" +#import "FIRAdditionalUserInfo.h" +#import "FIRAuth.h" +#import "FIRAuthCredential.h" +#import "FIRAuthDataResult.h" +#import "FIRAuthErrors.h" +#import "FIRAuthTokenResult.h" +#import "FirebaseAuthVersion.h" +#import "FIREmailAuthProvider.h" +#import "FIRFacebookAuthProvider.h" +#import "FIRFederatedAuthProvider.h" +#import "FIRGameCenterAuthProvider.h" +#import "FIRGitHubAuthProvider.h" +#import "FIRGoogleAuthProvider.h" +#import "FIROAuthCredential.h" +#import "FIROAuthProvider.h" +#import "FIRTwitterAuthProvider.h" +#import "FIRUser.h" +#import "FIRUserInfo.h" +#import "FIRUserMetadata.h" + +#if TARGET_OS_IOS +#import "FIRAuthUIDelegate.h" +#import "FIRPhoneAuthCredential.h" +#import "FIRPhoneAuthProvider.h" +#import "FIRAuthAPNSTokenType.h" +#import "FIRAuthSettings.h" +#endif diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Public/FirebaseAuthVersion.h b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Public/FirebaseAuthVersion.h new file mode 100644 index 0000000..7b4b94e --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Public/FirebaseAuthVersion.h @@ -0,0 +1,27 @@ +/* + * 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 + +/** + Version number for FirebaseAuth. + */ +extern const double FirebaseAuthVersionNum; + +/** + Version string for FirebaseAuth. + */ +extern const char *const FirebaseAuthVersionStr; diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Storage/FIRAuthKeychain.h b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Storage/FIRAuthKeychain.h new file mode 100644 index 0000000..15e5771 --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Storage/FIRAuthKeychain.h @@ -0,0 +1,98 @@ +/* + * 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 + +NS_ASSUME_NONNULL_BEGIN + +/** + @brief The protocol for permanant data storage. + */ +@protocol FIRAuthStorage + +/** @fn initWithService: + @brief Initialize a @c FIRAuthStorage instance. + @param service The name of the storage service to use. + @return An initialized @c FIRAuthStorage instance for the specified service. + */ +- (id)initWithService:(NSString *)service; + +/** @fn dataForKey:error: + @brief Gets the data for @c key in the storage. The key is set for the attribute + @c kSecAttrAccount of a generic password query. + @param key The key to use. + @param error The address to store any error that occurs during the process, if not NULL. + If the operation was successful, its content is set to @c nil . + @return The data stored in the storage for @c key, if any. + */ +- (nullable NSData *)dataForKey:(NSString *)key error:(NSError **_Nullable)error; + +/** @fn setData:forKey:error: + @brief Sets the data for @c key in the storage. The key is set for the attribute + @c kSecAttrAccount of a generic password query. + @param data The data to store. + @param key The key to use. + @param error The address to store any error that occurs during the process, if not NULL. + @return Whether the operation succeeded or not. + */ +- (BOOL)setData:(NSData *)data forKey:(NSString *)key error:(NSError **_Nullable)error; + +/** @fn removeDataForKey:error: + @brief Removes the data for @c key in the storage. The key is set for the attribute + @c kSecAttrAccount of a generic password query. + @param key The key to use. + @param error The address to store any error that occurs during the process, if not NULL. + @return Whether the operation succeeded or not. + */ +- (BOOL)removeDataForKey:(NSString *)key error:(NSError **_Nullable)error; + +@end + +/** @class FIRAuthKeychain + @brief The utility class to manipulate data in iOS Keychain. + */ +@interface FIRAuthKeychain : NSObject + +/** @fn getItemWithQuery:error: + @brief Get the item from keychain by given query. + @param query The query to query the keychain. + @param outError The address to store any error that occurs during the process, if not nil. + @return The item of the given query. nil if not exsit. + */ +- (nullable NSData *)getItemWithQuery:(NSDictionary *)query + error:(NSError *_Nullable *_Nullable)outError; + +/** @fn setItem:withQuery:error: + @brief Set the item into keychain with given query. + @param item The item to be added into keychain. + @param query The query to query the keychain. + @param outError The address to store any error that occurs during the process, if not nil. + @return Whether the operation succeed. + */ +- (BOOL)setItem:(NSData *)item withQuery:(NSDictionary *)query + error:(NSError *_Nullable *_Nullable)outError; + +/** @fn getItemWithQuery:error: + @brief Remove the item with given queryfrom keychain. + @param query The query to query the keychain. + @param outError The address to store any error that occurs during the process, if not nil. + @return Whether the operation succeed. + */ +- (BOOL)removeItemWithQuery:(NSDictionary *)query error:(NSError *_Nullable *_Nullable)outError; + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Storage/FIRAuthKeychain.m b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Storage/FIRAuthKeychain.m new file mode 100644 index 0000000..64e145d --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Storage/FIRAuthKeychain.m @@ -0,0 +1,327 @@ +/* + * 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 "FIRAuthKeychain.h" + +#import + +#import "FIRAuthErrorUtils.h" +#import "FIRAuthUserDefaultsStorage.h" + +/** @var kAccountPrefix + @brief The prefix string for keychain item account attribute before the key. + @remarks A number "1" is encoded in the prefix in case we need to upgrade the scheme in future. + */ +static NSString *const kAccountPrefix = @"firebase_auth_1_"; + +NS_ASSUME_NONNULL_BEGIN + +@implementation FIRAuthKeychain { + /** @var _service + @brief The name of the keychain service. + */ + NSString *_service; + + /** @var _legacyItemDeletedForKey + @brief Indicates whether or not this class knows that the legacy item for a particular key has + been deleted. + @remarks This dictionary is to avoid unecessary keychain operations against legacy items. + */ + NSMutableDictionary *_legacyEntryDeletedForKey; +} + +- (id)initWithService:(NSString *)service { + + self = [super init]; + if (self) { + _service = [service copy]; + _legacyEntryDeletedForKey = [[NSMutableDictionary alloc] init]; + } + return self; +} + +- (nullable NSData *)dataForKey:(NSString *)key error:(NSError **_Nullable)error { + if (!key.length) { + [NSException raise:NSInvalidArgumentException + format:@"%@", @"The key cannot be nil or empty."]; + return nil; + } + NSData *data = [self itemWithQuery:[self genericPasswordQueryWithKey:key] error:error]; + if (error && *error) { + return nil; + } + if (data) { + return data; + } + // Check for legacy form. + if (_legacyEntryDeletedForKey[key]) { + return nil; + } + data = [self itemWithQuery:[self legacyGenericPasswordQueryWithKey:key] error:error]; + if (error && *error) { + return nil; + } + if (!data) { + // Mark legacy data as non-existing so we don't have to query it again. + _legacyEntryDeletedForKey[key] = @YES; + return nil; + } + // Move the data to current form. + if (![self setData:data forKey:key error:error]) { + return nil; + } + [self deleteLegacyItemWithKey:key]; + return data; +} + +- (BOOL)setData:(NSData *)data forKey:(NSString *)key error:(NSError **_Nullable)error { + if (!key.length) { + [NSException raise:NSInvalidArgumentException + format:@"%@", @"The key cannot be nil or empty."]; + return NO; + } + NSDictionary *attributes = @{ + (__bridge id)kSecValueData : data, + (__bridge id)kSecAttrAccessible : (__bridge id)kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly, + }; + return [self setItemWithQuery:[self genericPasswordQueryWithKey:key] + attributes:attributes + error:error]; +} + +- (BOOL)removeDataForKey:(NSString *)key error:(NSError **_Nullable)error { + if (!key.length) { + [NSException raise:NSInvalidArgumentException + format:@"%@", @"The key cannot be nil or empty."]; + return NO; + } + if (![self deleteItemWithQuery:[self genericPasswordQueryWithKey:key] error:error]) { + return NO; + } + // Legacy form item, if exists, also needs to be removed, otherwise it will be exposed when + // current form item is removed, leading to incorrect semantics. + [self deleteLegacyItemWithKey:key]; + return YES; +} + +#pragma mark - Private methods for non-sharing keychain operations + +- (nullable NSData *)itemWithQuery:(NSDictionary *)query error:(NSError **_Nullable)error { + NSMutableDictionary *returningQuery = [query mutableCopy]; + returningQuery[(__bridge id)kSecReturnData] = @YES; + returningQuery[(__bridge id)kSecReturnAttributes] = @YES; + // Using a match limit of 2 means that we can check whether there is more than one item. + // If we used a match limit of 1 we would never find out. + returningQuery[(__bridge id)kSecMatchLimit] = @2; + + CFArrayRef result = NULL; + OSStatus status = SecItemCopyMatching((__bridge CFDictionaryRef)returningQuery, + (CFTypeRef *)&result); + + if (status == noErr && result != NULL) { + NSArray *items = (__bridge_transfer NSArray *)result; + if (items.count != 1) { + if (error) { + *error = [FIRAuthErrorUtils keychainErrorWithFunction:@"SecItemCopyMatching" + status:status]; + } + return nil; + } + + if (error) { + *error = nil; + } + NSDictionary *item = items[0]; + return item[(__bridge id)kSecValueData]; + } + + if (status == errSecItemNotFound) { + if (error) { + *error = nil; + } + } else { + if (error) { + *error = [FIRAuthErrorUtils keychainErrorWithFunction:@"SecItemCopyMatching" status:status]; + } + } + return nil; +} + +- (BOOL)setItemWithQuery:(NSDictionary *)query + attributes:(NSDictionary *)attributes + error:(NSError **_Nullable)error { + NSMutableDictionary *combined = [attributes mutableCopy]; + [combined addEntriesFromDictionary:query]; + BOOL hasItem = NO; + OSStatus status = SecItemAdd((__bridge CFDictionaryRef)combined, NULL); + + if (status == errSecDuplicateItem) { + hasItem = YES; + status = SecItemUpdate((__bridge CFDictionaryRef)query, (__bridge CFDictionaryRef)attributes); + } + + if (status == noErr) { + return YES; + } + if (error) { + NSString *function = hasItem ? @"SecItemUpdate" : @"SecItemAdd"; + *error = [FIRAuthErrorUtils keychainErrorWithFunction:function status:status]; + } + return NO; +} + +- (BOOL)deleteItemWithQuery:(NSDictionary *)query error:(NSError **_Nullable)error { + OSStatus status = SecItemDelete((__bridge CFDictionaryRef)query); + if (status == noErr || status == errSecItemNotFound) { + return YES; + } + if (error) { + *error = [FIRAuthErrorUtils keychainErrorWithFunction:@"SecItemDelete" status:status]; + } + return NO; +} + +/** @fn deleteLegacyItemsWithKey: + @brief Deletes legacy item from the keychain if it is not already known to be deleted. + @param key The key for the item. + */ +- (void)deleteLegacyItemWithKey:(NSString *)key { + if (_legacyEntryDeletedForKey[key]) { + return; + } + NSDictionary *query = [self legacyGenericPasswordQueryWithKey:key]; + SecItemDelete((__bridge CFDictionaryRef)query); + _legacyEntryDeletedForKey[key] = @YES; +} + +/** @fn genericPasswordQueryWithKey: + @brief Returns a keychain query of generic password to be used to manipulate key'ed value. + @param key The key for the value being manipulated, used as the account field in the query. + */ +- (NSDictionary *)genericPasswordQueryWithKey:(NSString *)key { + return @{ + (__bridge id)kSecClass : (__bridge id)kSecClassGenericPassword, + (__bridge id)kSecAttrAccount : [kAccountPrefix stringByAppendingString:key], + (__bridge id)kSecAttrService : _service, + }; +} + +/** @fn legacyGenericPasswordQueryWithKey: + @brief Returns a keychain query of generic password without service field, which is used by + previous version of this class. + @param key The key for the value being manipulated, used as the account field in the query. + */ +- (NSDictionary *)legacyGenericPasswordQueryWithKey:(NSString *)key { + return @{ + (__bridge id)kSecClass : (__bridge id)kSecClassGenericPassword, + (__bridge id)kSecAttrAccount : key, + }; +} + +#pragma mark - Private methods for shared keychain operations + +- (nullable NSData *)getItemWithQuery:(NSDictionary *)query + error:(NSError *_Nullable *_Nullable)outError { + NSMutableDictionary *mutableQuery = [query mutableCopy]; + + mutableQuery[(__bridge id)kSecReturnData] = @YES; + mutableQuery[(__bridge id)kSecReturnAttributes] = @YES; + mutableQuery[(__bridge id)kSecMatchLimit] = @2; + + CFArrayRef result = NULL; + OSStatus status = SecItemCopyMatching((__bridge CFDictionaryRef)mutableQuery, + (CFTypeRef *)&result); + + if (status == noErr && result != NULL) { + NSArray *items = (__bridge_transfer NSArray *)result; + if (items.count != 1) { + if (outError) { + *outError = [FIRAuthErrorUtils keychainErrorWithFunction:@"SecItemCopyMatching" + status:status]; + } + return nil; + } + + if (outError) { + *outError = nil; + } + NSDictionary *item = items[0]; + return item[(__bridge id)kSecValueData]; + } + + if (status == errSecItemNotFound) { + if (outError) { + *outError = nil; + } + } else { + if (outError) { + *outError = [FIRAuthErrorUtils keychainErrorWithFunction:@"SecItemCopyMatching" status:status]; + } + } + return nil; +} + +- (BOOL)setItem:(NSData *)item + withQuery:(NSDictionary *)query + error:(NSError *_Nullable *_Nullable)outError { + NSData *existingItem = [self getItemWithQuery:query error:outError]; + if (outError && *outError) { + return NO; + } + + OSStatus status; + if (!existingItem) { + NSMutableDictionary *queryWithItem = [query mutableCopy]; + [queryWithItem setObject:item forKey:(__bridge id)kSecValueData]; + status = SecItemAdd((__bridge CFDictionaryRef)queryWithItem, NULL); + } else { + NSDictionary *attributes = @{(__bridge id)kSecValueData: item}; + status = SecItemUpdate((__bridge CFDictionaryRef)query, (__bridge CFDictionaryRef)attributes); + } + + if (status == noErr) { + if (outError) { + *outError = nil; + } + return YES; + } + + NSString *function = existingItem ? @"SecItemUpdate" : @"SecItemAdd"; + if (outError) { + *outError = [FIRAuthErrorUtils keychainErrorWithFunction:function status:status]; + } + return NO; +} + +- (BOOL)removeItemWithQuery:(NSDictionary *)query error:(NSError *_Nullable *_Nullable)outError { + OSStatus status = SecItemDelete((__bridge CFDictionaryRef)query); + + if (status == noErr || status == errSecItemNotFound) { + if (outError) { + *outError = nil; + } + return YES; + } + + if (outError) { + *outError = [FIRAuthErrorUtils keychainErrorWithFunction:@"SecItemDelete" status:status]; + } + return NO; +} + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Storage/FIRAuthUserDefaultsStorage.h b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Storage/FIRAuthUserDefaultsStorage.h new file mode 100644 index 0000000..7fa2bec --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Storage/FIRAuthUserDefaultsStorage.h @@ -0,0 +1,36 @@ +/* + * 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 + +#import "FIRAuthKeychain.h" + +NS_ASSUME_NONNULL_BEGIN + +/** @class FIRAuthUserDefaultsStorage + @brief The utility class to storage data in NSUserDefaults. + */ +@interface FIRAuthUserDefaultsStorage : NSObject + +/** @fn clear + @brief Clears all data from the storage. + @remarks This method is only supposed to be called from tests. + */ +- (void)clear; + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Storage/FIRAuthUserDefaultsStorage.m b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Storage/FIRAuthUserDefaultsStorage.m new file mode 100644 index 0000000..52806d9 --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Storage/FIRAuthUserDefaultsStorage.m @@ -0,0 +1,74 @@ +/* + * 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 "FIRAuthUserDefaultsStorage.h" + +NS_ASSUME_NONNULL_BEGIN + +static NSString *const kPersistentDomainNamePrefix = @"com.google.Firebase.Auth."; + +@implementation FIRAuthUserDefaultsStorage { + /** @var _persistentDomainName + @brief The name of the persistent domain in user defaults. + */ + NSString *_persistentDomainName; + + /** @var _storage + @brief The backing NSUserDefaults storage for this instance. + */ + NSUserDefaults *_storage; +} + +- (id)initWithService:(NSString *)service { + self = [super init]; + if (self) { + _persistentDomainName = [kPersistentDomainNamePrefix stringByAppendingString:service]; + _storage = [[NSUserDefaults alloc] init]; + } + return self; +} + +- (nullable NSData *)dataForKey:(NSString *)key error:(NSError **_Nullable)error { + if (error) { + *error = nil; + } + NSDictionary *allData = [_storage persistentDomainForName:_persistentDomainName]; + return allData[key]; +} + +- (BOOL)setData:(NSData *)data forKey:(NSString *)key error:(NSError **_Nullable)error { + NSMutableDictionary *allData = + [([_storage persistentDomainForName:_persistentDomainName] ?: @{}) mutableCopy]; + allData[key] = data; + [_storage setPersistentDomain:allData forName:_persistentDomainName]; + return YES; +} + +- (BOOL)removeDataForKey:(NSString *)key error:(NSError **_Nullable)error { + NSMutableDictionary *allData = + [[_storage persistentDomainForName:_persistentDomainName] mutableCopy]; + [allData removeObjectForKey:key]; + [_storage setPersistentDomain:allData forName:_persistentDomainName]; + return YES; +} + +- (void)clear { + [_storage setPersistentDomain:@{} forName:_persistentDomainName]; +} + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/SystemService/FIRAuthAPNSToken.h b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/SystemService/FIRAuthAPNSToken.h new file mode 100644 index 0000000..dc07442 --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/SystemService/FIRAuthAPNSToken.h @@ -0,0 +1,59 @@ +/* + * 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 + +#import "FIRAuthAPNSTokenType.h" + +NS_ASSUME_NONNULL_BEGIN + +/** @class FIRAuthAPNSToken + @brief A data structure for an APNs token. + */ +@interface FIRAuthAPNSToken : NSObject + +/** @property data + @brief The APNs token data. + */ +@property(nonatomic, strong, readonly) NSData *data; + +/** @property string + @brief The uppercase hexadecimal string form of the APNs token data. + */ +@property(nonatomic, strong, readonly) NSString *string; + +/** @property type + @brief The APNs token type. + */ +@property(nonatomic, assign, readonly) FIRAuthAPNSTokenType type; + +/** @fn initWithData:type: + @brief Initializes the instance. + @param data The APNs token data. + @param type The APNs token type. + @return The initialized instance. + */ +- (instancetype)initWithData:(NSData *)data type:(FIRAuthAPNSTokenType)type + NS_DESIGNATED_INITIALIZER; + +/** @fn init + @brief Call @c initWithData:type: to get an instance of this class. + */ +- (instancetype)init NS_UNAVAILABLE; + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/SystemService/FIRAuthAPNSToken.m b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/SystemService/FIRAuthAPNSToken.m new file mode 100644 index 0000000..db3f96d --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/SystemService/FIRAuthAPNSToken.m @@ -0,0 +1,52 @@ +/* + * 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 "FIRAuthAPNSToken.h" + +NS_ASSUME_NONNULL_BEGIN + +@implementation FIRAuthAPNSToken { + /** @var _string + @brief The lazy-initialized string form of the token data. + */ + NSString *_string; +} + +- (instancetype)initWithData:(NSData *)data type:(FIRAuthAPNSTokenType)type { + self = [super init]; + if (self) { + _data = [data copy]; + _type = type; + } + return self; +} + +- (NSString *)string { + if (!_string) { + NSUInteger capacity = _data.length * 2; + NSMutableString *tokenString = [NSMutableString stringWithCapacity:capacity]; + const unsigned char *tokenData = _data.bytes; + for (int idx = 0; idx < _data.length; ++idx) { + [tokenString appendFormat:@"%02X", (int)tokenData[idx]]; + } + _string = tokenString; + } + return _string; +} + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/SystemService/FIRAuthAPNSTokenManager.h b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/SystemService/FIRAuthAPNSTokenManager.h new file mode 100644 index 0000000..566780f --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/SystemService/FIRAuthAPNSTokenManager.h @@ -0,0 +1,78 @@ +/* + * 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 +#import + +@class FIRAuthAPNSToken; + +NS_ASSUME_NONNULL_BEGIN + +/** @typedef FIRAuthAPNSTokenCallback + @brief The type of block to receive an APNs token. + @param token The APNs token if one is available. + @param error The error happened if any. + @remarks Both `token` and `error` being `nil` means the request timed-out. + */ +typedef void (^FIRAuthAPNSTokenCallback)(FIRAuthAPNSToken *_Nullable token, + NSError *_Nullable error); + +/** @class FIRAuthAPNSTokenManager + @brief A class to manage APNs token in memory. + */ +@interface FIRAuthAPNSTokenManager : NSObject + +/** @property token + @brief The APNs token, if one is available. + @remarks Setting a token with FIRAuthAPNSTokenTypeUnknown will automatically converts it to + a token with the automatically detected type. + */ +@property(nonatomic, strong, nullable) FIRAuthAPNSToken *token; + +/** @property timeout + @brief The timeout for registering for remote notification. + @remarks Only tests should access this property. + */ +@property(nonatomic, assign) NSTimeInterval timeout; + +/** @fn init + @brief Call @c initWithApplication: to initialize an instance of this class. + */ +- (instancetype)init NS_UNAVAILABLE; + +/** @fn initWithApplication:bundle + @brief Initializes the instance. + @param application The @c UIApplication to request the token from. + @return The initialized instance. + */ +- (instancetype)initWithApplication:(UIApplication *)application NS_DESIGNATED_INITIALIZER; + +/** @fn getTokenWithCallback: + @brief Attempts to get the APNs token. + @param callback The block to be called either immediately or in future, either when a token + becomes available, or when timeout occurs, whichever happens earlier. + */ +- (void)getTokenWithCallback:(FIRAuthAPNSTokenCallback)callback; + +/** @fn cancelWithError: + @brief Cancels any pending `getTokenWithCallback:` request. + @param error The error to return. + */ +- (void)cancelWithError:(NSError *)error; + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/SystemService/FIRAuthAPNSTokenManager.m b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/SystemService/FIRAuthAPNSTokenManager.m new file mode 100644 index 0000000..3e8dd90 --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/SystemService/FIRAuthAPNSTokenManager.m @@ -0,0 +1,247 @@ +/* + * 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 "FIRAuthAPNSTokenManager.h" + +#import +#import + +#import "FIRAuthAPNSToken.h" +#import "FIRAuthGlobalWorkQueue.h" + +NS_ASSUME_NONNULL_BEGIN + +/** @var kRegistrationTimeout + @brief Timeout for registration for remote notification. + @remarks Once we start to handle `application:didFailToRegisterForRemoteNotificationsWithError:` + we probably don't have to use timeout at all. + */ +static const NSTimeInterval kRegistrationTimeout = 5; + +/** @var kLegacyRegistrationTimeout + @brief Timeout for registration for remote notification on iOS 7. + */ +static const NSTimeInterval kLegacyRegistrationTimeout = 30; + +@implementation FIRAuthAPNSTokenManager { + /** @var _application + @brief The @c UIApplication to request the token from. + */ + UIApplication *_application; + + /** @var _pendingCallbacks + @brief The list of all pending callbacks for the APNs token. + */ + NSMutableArray *_pendingCallbacks; +} + +- (instancetype)initWithApplication:(UIApplication *)application { + self = [super init]; + if (self) { + _application = application; + _timeout = [_application respondsToSelector:@selector(registerForRemoteNotifications)] ? + kRegistrationTimeout : kLegacyRegistrationTimeout; + } + return self; +} + +- (void)getTokenWithCallback:(FIRAuthAPNSTokenCallback)callback { + if (_token) { + callback(_token, nil); + return; + } + if (_pendingCallbacks) { + [_pendingCallbacks addObject:callback]; + return; + } + _pendingCallbacks = + [[NSMutableArray alloc] initWithObjects:callback, nil]; + dispatch_async(dispatch_get_main_queue(), ^{ + if ([self->_application respondsToSelector:@selector(registerForRemoteNotifications)]) { + [self->_application registerForRemoteNotifications]; + } else { +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" +#if TARGET_OS_IOS + [self->_application registerForRemoteNotificationTypes:UIRemoteNotificationTypeAlert]; +#endif // TARGET_OS_IOS +#pragma clang diagnostic pop + } + }); + NSArray *applicableCallbacks = _pendingCallbacks; + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(_timeout * NSEC_PER_SEC)), + FIRAuthGlobalWorkQueue(), ^{ + // Only cancel if the pending callbacks remain the same, i.e., not triggered yet. + if (applicableCallbacks == self->_pendingCallbacks) { + [self callBackWithToken:nil error:nil]; + } + }); +} + +- (void)setToken:(nullable FIRAuthAPNSToken *)token { + if (!token) { + _token = nil; + return; + } + if (token.type == FIRAuthAPNSTokenTypeUnknown) { + static FIRAuthAPNSTokenType detectedTokenType = FIRAuthAPNSTokenTypeUnknown; + if (detectedTokenType == FIRAuthAPNSTokenTypeUnknown) { + detectedTokenType = + [[self class] isProductionApp] ? FIRAuthAPNSTokenTypeProd : FIRAuthAPNSTokenTypeSandbox; + } + token = [[FIRAuthAPNSToken alloc] initWithData:token.data type:detectedTokenType]; + } + _token = token; + [self callBackWithToken:token error:nil]; +} + +- (void)cancelWithError:(NSError *)error { + [self callBackWithToken:nil error:error]; +} + +#pragma mark - Internal methods + +/** @fn callBack + @brief Calls back all pending callbacks with APNs token or error. + @param token The APNs token if one is available. + @param error The error occurred, if any. + */ +- (void)callBackWithToken:(nullable FIRAuthAPNSToken *)token error:(nullable NSError *)error { + if (!_pendingCallbacks) { + return; + } + NSArray *allCallbacks = _pendingCallbacks; + _pendingCallbacks = nil; + for (FIRAuthAPNSTokenCallback callback in allCallbacks) { + callback(token, error); + } +}; + +/** @fn isProductionApp + @brief Whether or not the app has production (versus sandbox) provisioning profile. + @remarks This method is adapted from @c FIRInstanceID . + */ ++ (BOOL)isProductionApp { + const BOOL defaultAppTypeProd = YES; + + NSError *error = nil; + + if ([GULAppEnvironmentUtil isSimulator]) { + FIRLogInfo(kFIRLoggerAuth, @"I-AUT000006", @"Assuming prod APNs token type on simulator."); + return defaultAppTypeProd; + } + + // Apps distributed via AppStore or TestFlight use the Production APNS certificates. + if ([GULAppEnvironmentUtil isFromAppStore]) { + return defaultAppTypeProd; + } + NSString *path = [[[NSBundle mainBundle] bundlePath] + stringByAppendingPathComponent:@"embedded.mobileprovision"]; + if ([GULAppEnvironmentUtil isAppStoreReceiptSandbox] && !path.length) { + // Distributed via TestFlight + return defaultAppTypeProd; + } + + NSMutableData *profileData = [NSMutableData dataWithContentsOfFile:path options:0 error:&error]; + + if (!profileData.length || error) { + FIRLogInfo(kFIRLoggerAuth, @"I-AUT000007", + @"Error while reading embedded mobileprovision %@", error); + return defaultAppTypeProd; + } + + // The "embedded.mobileprovision" sometimes contains characters with value 0, which signals the + // end of a c-string and halts the ASCII parser, or with value > 127, which violates strict 7-bit + // ASCII. Replace any 0s or invalid characters in the input. + uint8_t *profileBytes = (uint8_t *)profileData.bytes; + for (int i = 0; i < profileData.length; i++) { + uint8_t currentByte = profileBytes[i]; + if (!currentByte || currentByte > 127) { + profileBytes[i] = '.'; + } + } + + NSString *embeddedProfile = [[NSString alloc] initWithBytesNoCopy:profileBytes + length:profileData.length + encoding:NSASCIIStringEncoding + freeWhenDone:NO]; + + if (error || !embeddedProfile.length) { + FIRLogInfo(kFIRLoggerAuth, @"I-AUT000008", + @"Error while reading embedded mobileprovision %@", error); + return defaultAppTypeProd; + } + + NSScanner *scanner = [NSScanner scannerWithString:embeddedProfile]; + NSString *plistContents; + if ([scanner scanUpToString:@"" intoString:&plistContents]) { + plistContents = [plistContents stringByAppendingString:@""]; + } + } + + if (!plistContents.length) { + return defaultAppTypeProd; + } + + NSData *data = [plistContents dataUsingEncoding:NSUTF8StringEncoding]; + if (!data.length) { + FIRLogInfo(kFIRLoggerAuth, @"I-AUT000009", + @"Couldn't read plist fetched from embedded mobileprovision"); + return defaultAppTypeProd; + } + + NSError *plistMapError; + id plistData = [NSPropertyListSerialization propertyListWithData:data + options:NSPropertyListImmutable + format:nil + error:&plistMapError]; + if (plistMapError || ![plistData isKindOfClass:[NSDictionary class]]) { + FIRLogInfo(kFIRLoggerAuth, @"I-AUT000010", + @"Error while converting assumed plist to dict %@", + plistMapError.localizedDescription); + return defaultAppTypeProd; + } + NSDictionary *plistMap = (NSDictionary *)plistData; + + if ([plistMap valueForKeyPath:@"ProvisionedDevices"]) { + FIRLogInfo(kFIRLoggerAuth, @"I-AUT000011", + @"Provisioning profile has specifically provisioned devices, " + @"most likely a Dev profile."); + } + + NSString *apsEnvironment = [plistMap valueForKeyPath:@"Entitlements.aps-environment"]; + FIRLogDebug(kFIRLoggerAuth, @"I-AUT000012", + @"APNS Environment in profile: %@", apsEnvironment); + + // No aps-environment in the profile. + if (!apsEnvironment.length) { + FIRLogInfo(kFIRLoggerAuth, @"I-AUT000013", + @"No aps-environment set. If testing on a device APNS is not " + @"correctly configured. Please recheck your provisioning profiles."); + return defaultAppTypeProd; + } + + if ([apsEnvironment isEqualToString:@"development"]) { + return NO; + } + + return defaultAppTypeProd; +} + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/SystemService/FIRAuthAppCredential.h b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/SystemService/FIRAuthAppCredential.h new file mode 100644 index 0000000..57fa83a --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/SystemService/FIRAuthAppCredential.h @@ -0,0 +1,53 @@ +/* + * 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 + +NS_ASSUME_NONNULL_BEGIN + +/** @class FIRAuthAppCredential + @brief A class represents a credential that proves the identity of the app. + */ +@interface FIRAuthAppCredential : NSObject + +/** @property receipt + @brief The server acknowledgement of receiving client's claim of identity. + */ +@property(nonatomic, strong, readonly) NSString *receipt; + +/** @property secret + @brief The secret that the client received from server via a trusted channel, if ever. + */ +@property(nonatomic, strong, readonly, nullable) NSString *secret; + +/** @fn initWithReceipt:secret: + @brief Initializes the instance. + @param receipt The server acknowledgement of receiving client's claim of identity. + @param secret The secret that the client received from server via a trusted channel, if ever. + @return The initialized instance. + */ +- (instancetype)initWithReceipt:(NSString *)receipt secret:(nullable NSString *)secret + NS_DESIGNATED_INITIALIZER; + +/** @fn init + @brief Call @c initWithReceipt:secret: to get an instance of this class. + */ +- (instancetype)init NS_UNAVAILABLE; + + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/SystemService/FIRAuthAppCredential.m b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/SystemService/FIRAuthAppCredential.m new file mode 100644 index 0000000..27d4ad2 --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/SystemService/FIRAuthAppCredential.m @@ -0,0 +1,64 @@ +/* + * 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 "FIRAuthAppCredential.h" + +NS_ASSUME_NONNULL_BEGIN + +/** @var kReceiptKey + @brief The key used to encode the receipt property for NSSecureCoding. + */ +static NSString *const kReceiptKey = @"receipt"; + +/** @var kSecretKey + @brief The key used to encode the secret property for NSSecureCoding. + */ +static NSString *const kSecretKey = @"secret"; + +@implementation FIRAuthAppCredential + +- (instancetype)initWithReceipt:(NSString *)receipt secret:(nullable NSString *)secret { + self = [super init]; + if (self) { + _receipt = [receipt copy]; + _secret = [secret copy]; + } + return self; +} + +#pragma mark - NSSecureCoding + ++ (BOOL)supportsSecureCoding { + return YES; +} + +- (nullable instancetype)initWithCoder:(NSCoder *)aDecoder { + NSString *receipt = [aDecoder decodeObjectOfClass:[NSString class] forKey:kReceiptKey]; + if (!receipt) { + return nil; + } + NSString *secret = [aDecoder decodeObjectOfClass:[NSString class] forKey:kSecretKey]; + return [self initWithReceipt:receipt secret:secret]; +} + +- (void)encodeWithCoder:(NSCoder *)aCoder { + [aCoder encodeObject:_receipt forKey:kReceiptKey]; + [aCoder encodeObject:_secret forKey:kSecretKey]; +} + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/SystemService/FIRAuthAppCredentialManager.h b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/SystemService/FIRAuthAppCredentialManager.h new file mode 100644 index 0000000..21c1545 --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/SystemService/FIRAuthAppCredentialManager.h @@ -0,0 +1,85 @@ +/* + * 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 + +@class FIRAuthAppCredential; +@class FIRAuthKeychain; + +NS_ASSUME_NONNULL_BEGIN + +/** @typedef FIRAuthAppCredentialCallback + @brief The type of block to receive an app crdential. + @param credential The best available app credential at the time. + */ +typedef void (^FIRAuthAppCredentialCallback)(FIRAuthAppCredential *credential); + +/** @class FIRAuthAppCredentialManager + @brief A class to manage app credentials backed by iOS Keychain. + */ +@interface FIRAuthAppCredentialManager : NSObject + +/** @property credential + @brief The full credential (which has a secret) to be used by the app, if one is available. + */ +@property(nonatomic, strong, readonly, nullable) FIRAuthAppCredential *credential; + +/** @property maximumNumberOfPendingReceipts + @brief The maximum (but not necessarily the minimum) number of pending receipts to be kept. + @remarks Only tests should access this property. + */ +@property(nonatomic, assign, readonly) NSUInteger maximumNumberOfPendingReceipts; + +/** @fn init + @brief Call @c initWithKeychain: to initialize an instance of this class. + */ +- (instancetype)init NS_UNAVAILABLE; + +/** @fn initWithKeychain: + @brief Initializes the instance. + @param keychain The iOS Keychain storage to back up the app credential with. + @return The initialized instance. + */ +- (instancetype)initWithKeychain:(FIRAuthKeychain *)keychain NS_DESIGNATED_INITIALIZER; + +/** @fn didStartVerificationWithReceipt:timeout:callback: + @brief Notifies that the app verification process has started. + @param receipt The receipt for verification. + @param timeout The timeout value for how long the callback is waited to be called. + @param callback The block to be called in future either when the verification finishes, or + when timeout occurs, whichever happens earlier. + */ +- (void)didStartVerificationWithReceipt:(NSString *)receipt + timeout:(NSTimeInterval)timeout + callback:(FIRAuthAppCredentialCallback)callback; + +/** @fn canFinishVerificationWithReceipt: + @brief Attempts to finish verification. + @param receipt The receipt to match the original receipt obtained when verification started. + @param secret The secret to complete the verification. + @return Whether or not the receipt matches a pending verification, and finishes verification + if it does. + */ +- (BOOL)canFinishVerificationWithReceipt:(NSString *)receipt secret:(NSString *)secret; + +/** @fn clearCredential + @brief Clears the saved credential, to be used in the case that it is rejected by the server. + */ +- (void)clearCredential; + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/SystemService/FIRAuthAppCredentialManager.m b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/SystemService/FIRAuthAppCredentialManager.m new file mode 100644 index 0000000..0e251a7 --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/SystemService/FIRAuthAppCredentialManager.m @@ -0,0 +1,164 @@ +/* + * 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 "FIRAuthAppCredentialManager.h" + +#import "FIRAuthAppCredential.h" +#import "FIRAuthGlobalWorkQueue.h" +#import "FIRAuthKeychain.h" + +NS_ASSUME_NONNULL_BEGIN + +/** @var kKeychainDataKey + @brief The keychain key for the data. + */ +static NSString *const kKeychainDataKey = @"app_credentials"; + +/** @var kFullCredentialKey + @brief The data key for the full app credential. + */ +static NSString *const kFullCredentialKey = @"full_credential"; + +/** @var kPendingReceiptsKey + @brief The data key for the array of pending receipts. + */ +static NSString *const kPendingReceiptsKey = @"pending_receipts"; + +/** @var kMaximumNumberOfPendingReceipts + @brief The maximum number of partial credentials kept by this class. + */ +static const NSUInteger kMaximumNumberOfPendingReceipts = 32; + +@implementation FIRAuthAppCredentialManager { + /** @var _keychain + @brief The keychain for app credentials to load from and to save to. + */ + FIRAuthKeychain *_keychain; + + /** @var _pendingReceipts + @brief A list of pending receipts sorted in the order they were recorded. + */ + NSMutableArray *_pendingReceipts; + + /** @var _callbacksByReceipt + @brief A map from pending receipts to callbacks. + */ + NSMutableDictionary *_callbacksByReceipt; +} + +- (instancetype)initWithKeychain:(FIRAuthKeychain *)keychain { + self = [super init]; + if (self) { + _keychain = keychain; + // Load the credentials from keychain if possible. + NSError *error; + NSData *encodedData = [_keychain dataForKey:kKeychainDataKey error:&error]; + if (!error && encodedData) { + NSKeyedUnarchiver *unarchiver = + [[NSKeyedUnarchiver alloc] initForReadingWithData:encodedData]; + FIRAuthAppCredential *credential = + [unarchiver decodeObjectOfClass:[FIRAuthAppCredential class] + forKey:kFullCredentialKey]; + if ([credential isKindOfClass:[FIRAuthAppCredential class]]) { + _credential = credential; + } + NSSet *allowedClasses = + [NSSet setWithObjects:[NSArray class], [NSString class], nil]; + NSArray *pendingReceipts = + [unarchiver decodeObjectOfClasses:allowedClasses forKey:kPendingReceiptsKey]; + if ([pendingReceipts isKindOfClass:[NSArray class]]) { + _pendingReceipts = [pendingReceipts mutableCopy]; + } + } + if (!_pendingReceipts) { + _pendingReceipts = [[NSMutableArray alloc] init]; + } + _callbacksByReceipt = + [[NSMutableDictionary alloc] init]; + } + return self; +} + +- (NSUInteger)maximumNumberOfPendingReceipts { + return kMaximumNumberOfPendingReceipts; +} + +- (void)didStartVerificationWithReceipt:(NSString *)receipt + timeout:(NSTimeInterval)timeout + callback:(FIRAuthAppCredentialCallback)callback { + [_pendingReceipts removeObject:receipt]; + if (_pendingReceipts.count >= kMaximumNumberOfPendingReceipts) { + [_pendingReceipts removeObjectAtIndex:0]; + } + [_pendingReceipts addObject:receipt]; + _callbacksByReceipt[receipt] = callback; + [self saveData]; + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(timeout * NSEC_PER_SEC)), + FIRAuthGlobalWorkQueue(), ^{ + [self callBackWithReceipt:receipt]; + }); +} + +- (BOOL)canFinishVerificationWithReceipt:(NSString *)receipt secret:(NSString *)secret { + if (![_pendingReceipts containsObject:receipt]) { + return NO; + } + [_pendingReceipts removeObject:receipt]; + _credential = [[FIRAuthAppCredential alloc] initWithReceipt:receipt secret:secret]; + [self saveData]; + [self callBackWithReceipt:receipt]; + return YES; +} + +- (void)clearCredential { + _credential = nil; + [self saveData]; +} + +#pragma mark - Internal methods + +/** @fn saveData + @brief Save the data in memory to the keychain ignoring any errors. + */ +- (void)saveData { + NSMutableData *archiveData = [NSMutableData data]; + NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc] initForWritingWithMutableData:archiveData]; + [archiver encodeObject:_credential forKey:kFullCredentialKey]; + [archiver encodeObject:_pendingReceipts forKey:kPendingReceiptsKey]; + [archiver finishEncoding]; + [_keychain setData:archiveData forKey:kKeychainDataKey error:NULL]; +} + +/** @fn callBackWithReceipt: + @brief Calls the saved callback for the specifc receipt. + @param receipt The receipt associated with the callback. + */ +- (void)callBackWithReceipt:(NSString *)receipt { + FIRAuthAppCredentialCallback callback = _callbacksByReceipt[receipt]; + if (!callback) { + return; + } + [_callbacksByReceipt removeObjectForKey:receipt]; + if (_credential) { + callback(_credential); + } else { + callback([[FIRAuthAppCredential alloc] initWithReceipt:receipt secret:nil]); + } +} + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/SystemService/FIRAuthNotificationManager.h b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/SystemService/FIRAuthNotificationManager.h new file mode 100644 index 0000000..42e5db8 --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/SystemService/FIRAuthNotificationManager.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 +#import + +@class FIRAuthAppCredentialManager; + +NS_ASSUME_NONNULL_BEGIN + +/** @typedef FIRAuthNotificationForwardingCallback + @brief The type of block to receive whether or not remote notifications are being forwarded. + @param isNotificationBeingForwarded Whether or not remote notifications are being forwarded. + */ +typedef void (^FIRAuthNotificationForwardingCallback)(BOOL isNotificationBeingForwarded); + +/** @class FIRAuthNotificationManager + */ +@interface FIRAuthNotificationManager : NSObject + +/** @property timeout + @brief The timeout for checking for notification forwarding. + @remarks Only tests should access this property. + */ +@property(nonatomic, assign) NSTimeInterval timeout; + +/** @fn initWithApplication:appCredentialManager: + @brief Initializes the instance. + @param application The application. + @param appCredentialManager The object to handle app credentials delivered via notification. + @return The initialized instance. + */ +- (instancetype)initWithApplication:(UIApplication *)application + appCredentialManager:(FIRAuthAppCredentialManager *)appCredentialManager + NS_DESIGNATED_INITIALIZER; + +/** @fn init + @brief please use initWithAppCredentialManager: instead. + */ +- (instancetype)init NS_UNAVAILABLE; + +/** @fn checkNotificationForwardingWithCallback: + @brief Checks whether or not remote notifications are being forwarded to this class. + @param callback The block to be called either immediately or in future once a result + is available. + */ +- (void)checkNotificationForwardingWithCallback:(FIRAuthNotificationForwardingCallback)callback; + +/** @fn canHandleNotification: + @brief Attempts to handle the remote notification. + @param notification The notification in question. + @return Whether or the notification has been handled. + */ +- (BOOL)canHandleNotification:(NSDictionary *)notification; + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/SystemService/FIRAuthNotificationManager.m b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/SystemService/FIRAuthNotificationManager.m new file mode 100644 index 0000000..682ffcb --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/SystemService/FIRAuthNotificationManager.m @@ -0,0 +1,177 @@ +/* + * 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 "FIRAuthNotificationManager.h" + +#import +#import "FIRAuthAppCredential.h" +#import "FIRAuthAppCredentialManager.h" +#import "FIRAuthGlobalWorkQueue.h" + +NS_ASSUME_NONNULL_BEGIN + +/** @var kNotificationKey + @brief The key to locate payload data in the remote notification. + */ +static NSString *const kNotificationDataKey = @"com.google.firebase.auth"; + +/** @var kNotificationReceiptKey + @brief The key for the receipt in the remote notification payload data. + */ +static NSString *const kNotificationReceiptKey = @"receipt"; + +/** @var kNotificationSecretKey + @brief The key for the secret in the remote notification payload data. + */ +static NSString *const kNotificationSecretKey = @"secret"; + +/** @var kNotificationProberKey + @brief The key for marking the prober in the remote notification payload data. + */ +static NSString *const kNotificationProberKey = @"warning"; + +/** @var kProbingTimeout + @brief Timeout for probing whether the app delegate forwards the remote notification to us. + */ +static const NSTimeInterval kProbingTimeout = 1; + +@implementation FIRAuthNotificationManager { + /** @var _application + @brief The application. + */ + UIApplication *_application; + + /** @var _appCredentialManager + @brief The object to handle app credentials delivered via notification. + */ + FIRAuthAppCredentialManager *_appCredentialManager; + + /** @var _hasCheckedNotificationForwarding + @brief Whether notification forwarding has been checked or not. + */ + BOOL _hasCheckedNotificationForwarding; + + /** @var _isNotificationBeingForwarded + @brief Whether or not notification is being forwarded + */ + BOOL _isNotificationBeingForwarded; + + /** @var _pendingCallbacks + @brief All pending callbacks while a check is being performed. + */ + NSMutableArray *_pendingCallbacks; +} + +- (instancetype)initWithApplication:(UIApplication *)application + appCredentialManager:(FIRAuthAppCredentialManager *)appCredentialManager { + self = [super init]; + if (self) { + _application = application; + _appCredentialManager = appCredentialManager; + _timeout = kProbingTimeout; + } + return self; +} + +- (void)checkNotificationForwardingWithCallback:(FIRAuthNotificationForwardingCallback)callback { + if (_pendingCallbacks) { + [_pendingCallbacks addObject:callback]; + return; + } + if (_hasCheckedNotificationForwarding) { + callback(_isNotificationBeingForwarded); + return; + } + _hasCheckedNotificationForwarding = YES; + _pendingCallbacks = + [[NSMutableArray alloc] initWithObjects:callback, nil]; + dispatch_async(dispatch_get_main_queue(), ^{ + NSDictionary *proberNotification = @{ + kNotificationDataKey : @{ + kNotificationProberKey : @"This fake notification should be forwarded to Firebase Auth." + } + }; + if ([self->_application.delegate respondsToSelector: + @selector(application:didReceiveRemoteNotification:fetchCompletionHandler:)]) { + [self->_application.delegate application:self->_application + didReceiveRemoteNotification:proberNotification + fetchCompletionHandler:^(UIBackgroundFetchResult result) {}]; +#if !TARGET_OS_TV + } else if ([self->_application.delegate respondsToSelector: + @selector(application:didReceiveRemoteNotification:)]) { + [self->_application.delegate application:self->_application + didReceiveRemoteNotification:proberNotification]; +#endif + } else { + FIRLogWarning(kFIRLoggerAuth, @"I-AUT000015", + @"The UIApplicationDelegate must handle remote notification for phone number " + @"authentication to work."); + } + }); + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(_timeout * NSEC_PER_SEC)), + FIRAuthGlobalWorkQueue(), ^{ + [self callBack]; + }); +} + +- (BOOL)canHandleNotification:(NSDictionary *)notification { + NSDictionary *data = notification[kNotificationDataKey]; + if ([data isKindOfClass:[NSString class]]) { + // Deserialize in case the data is a JSON string. + NSData *JSONData = [((NSString *)data) dataUsingEncoding:NSUTF8StringEncoding]; + data = [NSJSONSerialization JSONObjectWithData:JSONData options:0 error:NULL]; + } + if (![data isKindOfClass:[NSDictionary class]]) { + return NO; + } + if (data[kNotificationProberKey]) { + if (!_pendingCallbacks) { + // The prober notification probably comes from another instance, so pass it along. + return NO; + } + _isNotificationBeingForwarded = YES; + [self callBack]; + return YES; + } + NSString *receipt = data[kNotificationReceiptKey]; + if (![receipt isKindOfClass:[NSString class]]) { + return NO; + } + NSString *secret = data[kNotificationSecretKey]; + if (![receipt isKindOfClass:[NSString class]]) { + return NO; + } + return [_appCredentialManager canFinishVerificationWithReceipt:receipt secret:secret]; +} + +#pragma mark - Internal methods + +/** @fn callBack + @brief Calls back all pending callbacks with the result of notification forwarding check. + */ +- (void)callBack { + if (!_pendingCallbacks) { + return; + } + NSArray *allCallbacks = _pendingCallbacks; + _pendingCallbacks = nil; + for (FIRAuthNotificationForwardingCallback callback in allCallbacks) { + callback(_isNotificationBeingForwarded); + } +}; + +@end +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/SystemService/FIRAuthStoredUserManager.h b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/SystemService/FIRAuthStoredUserManager.h new file mode 100644 index 0000000..cbb6d3e --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/SystemService/FIRAuthStoredUserManager.h @@ -0,0 +1,99 @@ +/* + * 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 + +#import "FIRUser.h" +#import "FIRAuthKeychain.h" +#import "FIRAuthUserDefaultsStorage.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface FIRAuthStoredUserManager : NSObject + +/** @property keychain + @brief The mediator object to access to the system Keychain services. + */ +@property (readonly, nonatomic, strong) FIRAuthKeychain *keychain; + +/** @property userDefaults + @brief The mediator object to access to the system User Defaults services. + */ +@property (readonly, nonatomic, strong) FIRAuthUserDefaultsStorage *userDefaults; + +/** @fn init + @brief The default initializer is disabled. + */ +- (instancetype)init NS_UNAVAILABLE; + +/** @fn initWithServiceName: + @brief The designated initializer. + @param serviceName The service name to initialize with. + */ +- (instancetype)initWithServiceName:(NSString *)serviceName NS_DESIGNATED_INITIALIZER; + +/** @fn getStoredUserAccessGroupWithError: + @brief Get the user access group stored locally. + @param outError Return value for any error which occurs. + */ +- (NSString *_Nullable)getStoredUserAccessGroupWithError:(NSError *_Nullable *_Nullable)outError; + +/** @fn setStoredUserAccessGroup:error: + @brief The setter of the user access group stored locally. + @param accessGroup The access group to be set. + @param outError Return value for any error which occurs. + */ +- (BOOL)setStoredUserAccessGroup:(NSString *_Nullable)accessGroup + error:(NSError *_Nullable *_Nullable)outError; + +/** @fn getStoredUserForAccessGroup:projectID:error: + @brief The getter of the user stored locally. + @param accessGroup The access group to retrieve the user from. + @param projectIdentifier An identifier of the project that the user associates with. Currently, + we use API KEY. + @param outError Return value for any error which occurs. + */ +- (FIRUser *)getStoredUserForAccessGroup:(NSString *)accessGroup + projectIdentifier:(NSString *)projectIdentifier + error:(NSError *_Nullable *_Nullable)outError; + +/** @fn setStoredUser:forAccessGroup:projectID:error: + @brief The setter of the user stored locally. + @param user The user to be stored. + @param accessGroup The access group to store the user in. + @param projectIdentifier An identifier of the project that the user associates with. Currently, + we use API KEY. + @param outError Return value for any error which occurs. + */ +- (BOOL)setStoredUser:(FIRUser *)user + forAccessGroup:(NSString *)accessGroup + projectIdentifier:(NSString *)projectIdentifier + error:(NSError *_Nullable *_Nullable)outError; + +/** @fn removeStoredUserForAccessGroup:projectID:error: + @brief Remove the user that stored locally. + @param accessGroup The access group to remove the user from. + @param projectIdentifier An identifier of the project that the user associates with. Currently, + we use API KEY. + @param outError Return value for any error which occurs. + */ +- (BOOL)removeStoredUserForAccessGroup:(NSString *)accessGroup + projectIdentifier:(NSString *)projectIdentifier + error:(NSError *_Nullable *_Nullable)outError; + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/SystemService/FIRAuthStoredUserManager.m b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/SystemService/FIRAuthStoredUserManager.m new file mode 100644 index 0000000..6a66e70 --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/SystemService/FIRAuthStoredUserManager.m @@ -0,0 +1,125 @@ +/* + * 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 "FIRAuthStoredUserManager.h" + +/** @var kUserAccessGroupKey + @brief Key of user access group stored in user defaults. Used for retrieve the user access + group at launch. + */ +static NSString *kStoredUserAccessGroupKey = @"firebase_auth_stored_user_access_group"; + +/** @var kSharedKeychainAccountValue + @brief Default value for kSecAttrAccount of shared keychain items. + */ +static NSString *kSharedKeychainAccountValue = @"firebase_auth_firebase_user"; + +/** @var kStoredUserCoderKey + @brief The key to encode and decode the stored user. + */ +static NSString *kStoredUserCoderKey = @"firebase_auth_stored_user_coder_key"; + +@implementation FIRAuthStoredUserManager + +#pragma mark - Initializers + +- (instancetype)initWithServiceName:(NSString *)serviceName { + self = [super init]; + if (self) { + _keychain = [[FIRAuthKeychain alloc] initWithService:serviceName]; + _userDefaults = [[FIRAuthUserDefaultsStorage alloc] initWithService:serviceName]; + } + return self; +} + +#pragma mark - User Access Group + +- (NSString *_Nullable)getStoredUserAccessGroupWithError:(NSError *_Nullable *_Nullable)outError { + NSData *data = [self.userDefaults dataForKey:kStoredUserAccessGroupKey error:outError]; + if (data) { + NSString *userAccessGroup = [NSString stringWithUTF8String:data.bytes]; + return userAccessGroup; + } else { + return nil; + } +} + +- (BOOL)setStoredUserAccessGroup:(NSString *_Nullable)accessGroup + error:(NSError *_Nullable *_Nullable)outError { + NSData *data = [accessGroup dataUsingEncoding:NSUTF8StringEncoding]; + if (!data) { + return [self.userDefaults removeDataForKey:kStoredUserAccessGroupKey error:outError]; + } else { + return [self.userDefaults setData:data forKey:kStoredUserAccessGroupKey error:outError]; + } +} + +#pragma mark - User for Access Group + +- (FIRUser *)getStoredUserForAccessGroup:(NSString *)accessGroup + projectIdentifier:(NSString *)projectIdentifier + error:(NSError *_Nullable *_Nullable)outError { + + + NSMutableDictionary *query = [[NSMutableDictionary alloc] init]; + query[(__bridge id)kSecClass] = (__bridge id)kSecClassGenericPassword; + + query[(__bridge id)kSecAttrAccessGroup] = accessGroup; + query[(__bridge id)kSecAttrService] = projectIdentifier; + query[(__bridge id)kSecAttrAccount] = kSharedKeychainAccountValue; + + NSData *data = [self.keychain getItemWithQuery:query error:outError]; + NSKeyedUnarchiver *unarchiver = [[NSKeyedUnarchiver alloc] initForReadingWithData:data]; + FIRUser *user = [unarchiver decodeObjectOfClass:[FIRUser class] forKey:kStoredUserCoderKey]; + + return user; +} + +- (BOOL)setStoredUser:(FIRUser *)user + forAccessGroup:(NSString *)accessGroup + projectIdentifier:(NSString *)projectIdentifier + error:(NSError *_Nullable *_Nullable)outError { + NSMutableDictionary *query = [[NSMutableDictionary alloc] init]; + query[(__bridge id)kSecClass] = (__bridge id)kSecClassGenericPassword; + query[(__bridge id)kSecAttrAccessible] = (__bridge id)kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly; + + query[(__bridge id)kSecAttrAccessGroup] = accessGroup; + query[(__bridge id)kSecAttrService] = projectIdentifier; + query[(__bridge id)kSecAttrAccount] = kSharedKeychainAccountValue; + + NSMutableData *data = [NSMutableData data]; + NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc] initForWritingWithMutableData:data]; + [archiver encodeObject:user forKey:kStoredUserCoderKey]; + [archiver finishEncoding]; + + return [self.keychain setItem:data withQuery:query error:outError]; +} + +- (BOOL)removeStoredUserForAccessGroup:(NSString *)accessGroup + projectIdentifier:(NSString *)projectIdentifier + error:(NSError *_Nullable *_Nullable)outError { + NSMutableDictionary *query = [[NSMutableDictionary alloc] init]; + query[(__bridge id)kSecClass] = (__bridge id)kSecClassGenericPassword; + query[(__bridge id)kSecAttrAccessible] = (__bridge id)kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly; + + query[(__bridge id)kSecAttrAccessGroup] = accessGroup; + query[(__bridge id)kSecAttrService] = projectIdentifier; + query[(__bridge id)kSecAttrAccount] = kSharedKeychainAccountValue; + + return [self.keychain removeItemWithQuery:query error:outError]; +} + +@end diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/SystemService/FIRSecureTokenService.h b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/SystemService/FIRSecureTokenService.h new file mode 100644 index 0000000..989e786 --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/SystemService/FIRSecureTokenService.h @@ -0,0 +1,99 @@ +/* + * 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 + +@class FIRAuthRequestConfiguration; + +NS_ASSUME_NONNULL_BEGIN + +/** @typedef FIRFetchAccessTokenCallback + @brief The callback used to return the value of attempting to fetch an access token. + + In the event the operation was successful @c token will be set and @c error will be @c nil. + In the event of failure @c token will be @c nil and @c error will be set. + @c tokenUpdated indicates whether either the access or the refresh token has been updated. + + The token returned should be considered ephemeral and not cached. It should be used immediately + and discarded. All operations that need this token should call fetchAccessToken and do their + work from the callback. + */ +typedef void(^FIRFetchAccessTokenCallback)(NSString *_Nullable token, + NSError *_Nullable error, + BOOL tokenUpdated); + +/** @class FIRSecureTokenService + @brief Provides services for token exchanges and refreshes. + */ +@interface FIRSecureTokenService : NSObject + +/** @property requestConfiguration + @brief The configuration for making requests to server. + */ +@property(nonatomic, strong) FIRAuthRequestConfiguration *requestConfiguration; + +/** @property rawAccessToken + @brief The cached access token. + @remarks This method is specifically for providing the access token to internal clients during + deserialization and sign-in events, and should not be used to retrieve the access token by + anyone else. + */ +@property(nonatomic, copy, readonly) NSString *rawAccessToken; + +/** @property refreshToken + @brief The refresh token for the user, or @c nil if the user has yet completed sign-in flow. + @remarks This property needs to be set manually after the instance is decoded from archive. + */ +@property(nonatomic, copy, readonly, nullable) NSString *refreshToken; + +/** @property accessTokenExpirationDate + @brief The expiration date of the cached access token. + */ +@property(nonatomic, copy, readonly, nullable) NSDate *accessTokenExpirationDate; + +/** @fn initWithRequestConfiguration:authorizationCode: + @brief Creates a @c FIRSecureTokenService with an authroization code. + @param requestConfiguration The configuration for making requests to server. + @param authorizationCode An authorization code which needs to be exchanged for STS tokens. + */ +- (instancetype)initWithRequestConfiguration:(FIRAuthRequestConfiguration *)requestConfiguration + authorizationCode:(NSString *)authorizationCode; + +/** @fn initWithRequestConfiguration:accessToken:accessTokenExpirationDate:refreshToken + @brief Creates a @c FIRSecureTokenService with access and refresh tokens. + @param requestConfiguration The configuration for making requests to server. + @param accessToken The STS access token. + @param accessTokenExpirationDate The approximate expiration date of the access token. + @param refreshToken The STS refresh token. + */ +- (instancetype)initWithRequestConfiguration:(FIRAuthRequestConfiguration *)requestConfiguration + accessToken:(nullable NSString *)accessToken + accessTokenExpirationDate:(nullable NSDate *)accessTokenExpirationDate + refreshToken:(NSString *)refreshToken; + +/** @fn fetchAccessTokenForcingRefresh:callback: + @brief Fetch a fresh ephemeral access token for the ID associated with this instance. The token + received in the callback should be considered short lived and not cached. + @param forceRefresh Forces the token to be refreshed. + @param callback Callback block that will be called to return either the token or an error. + Invoked asyncronously on the auth global work queue in the future. + */ +- (void)fetchAccessTokenForcingRefresh:(BOOL)forceRefresh + callback:(FIRFetchAccessTokenCallback)callback; + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/SystemService/FIRSecureTokenService.m b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/SystemService/FIRSecureTokenService.m new file mode 100644 index 0000000..cf625b4 --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/SystemService/FIRSecureTokenService.m @@ -0,0 +1,210 @@ +/* + * 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 "FIRSecureTokenService.h" + +#import "FIRAuth.h" +#import "FIRAuthKeychain.h" +#import "FIRAuthSerialTaskQueue.h" +#import "FIRAuthBackend.h" +#import "FIRAuthRequestConfiguration.h" +#import "FIRSecureTokenRequest.h" +#import "FIRSecureTokenResponse.h" + +NS_ASSUME_NONNULL_BEGIN + +/** @var kAPIKeyCodingKey + @brief The key used to encode the APIKey for NSSecureCoding. + */ +static NSString *const kAPIKeyCodingKey = @"APIKey"; + +/** @var kRefreshTokenKey + @brief The key used to encode the refresh token for NSSecureCoding. + */ +static NSString *const kRefreshTokenKey = @"refreshToken"; + +/** @var kAccessTokenKey + @brief The key used to encode the access token for NSSecureCoding. + */ +static NSString *const kAccessTokenKey = @"accessToken"; + +/** @var kAccessTokenExpirationDateKey + @brief The key used to encode the access token expiration date for NSSecureCoding. + */ +static NSString *const kAccessTokenExpirationDateKey = @"accessTokenExpirationDate"; + +/** @var kFiveMinutes + @brief Five minutes (in seconds.) + */ +static const NSTimeInterval kFiveMinutes = 5 * 60; + +@interface FIRSecureTokenService () +- (instancetype)init NS_DESIGNATED_INITIALIZER; +@end + +@implementation FIRSecureTokenService { + /** @var _taskQueue + @brief Used to serialize all requests for access tokens. + */ + FIRAuthSerialTaskQueue *_taskQueue; + + /** @var _authorizationCode + @brief An authorization code which needs to be exchanged for Secure Token Service tokens. + */ + NSString *_Nullable _authorizationCode; + + /** @var _accessToken + @brief The currently cached access token. Or |nil| if no token is currently cached. + */ + NSString *_Nullable _accessToken; +} + +- (instancetype)init { + self = [super init]; + if (self) { + _taskQueue = [[FIRAuthSerialTaskQueue alloc] init]; + } + return self; +} + +- (instancetype)initWithRequestConfiguration:(FIRAuthRequestConfiguration *)requestConfiguration + authorizationCode:(NSString *)authorizationCode { + self = [self init]; + if (self) { + _requestConfiguration = requestConfiguration; + _authorizationCode = [authorizationCode copy]; + } + return self; +} + +- (instancetype)initWithRequestConfiguration:(FIRAuthRequestConfiguration *)requestConfiguration + accessToken:(nullable NSString *)accessToken + accessTokenExpirationDate:(nullable NSDate *)accessTokenExpirationDate + refreshToken:(NSString *)refreshToken { + self = [self init]; + if (self) { + _requestConfiguration = requestConfiguration; + _accessToken = [accessToken copy]; + _accessTokenExpirationDate = [accessTokenExpirationDate copy]; + _refreshToken = [refreshToken copy]; + } + return self; +} + +- (void)fetchAccessTokenForcingRefresh:(BOOL)forceRefresh + callback:(FIRFetchAccessTokenCallback)callback { + [_taskQueue enqueueTask:^(FIRAuthSerialTaskCompletionBlock complete) { + if (!forceRefresh && [self hasValidAccessToken]) { + complete(); + callback(self->_accessToken, nil, NO); + } else { + [self requestAccessToken:^(NSString *_Nullable token, + NSError *_Nullable error, + BOOL tokenUpdated) { + complete(); + callback(token, error, tokenUpdated); + }]; + } + }]; +} + +- (NSString *)rawAccessToken { + return _accessToken; +} + +#pragma mark - NSSecureCoding + ++ (BOOL)supportsSecureCoding { + return YES; +} + +- (nullable instancetype)initWithCoder:(NSCoder *)aDecoder { + NSString *refreshToken = [aDecoder decodeObjectOfClass:[NSString class] forKey:kRefreshTokenKey]; + NSString *accessToken = [aDecoder decodeObjectOfClass:[NSString class] forKey:kAccessTokenKey]; + NSDate *accessTokenExpirationDate = + [aDecoder decodeObjectOfClass:[NSDate class] forKey:kAccessTokenExpirationDateKey]; + if (!refreshToken) { + return nil; + } + self = [self init]; + if (self) { + _refreshToken = refreshToken; + _accessToken = accessToken; + _accessTokenExpirationDate = accessTokenExpirationDate; + } + return self; +} + +- (void)encodeWithCoder:(NSCoder *)aCoder { + // The API key is encoded even it is not used in decoding to be compatible with previous versions + // of the library. + [aCoder encodeObject:_requestConfiguration.APIKey forKey:kAPIKeyCodingKey]; + // Authorization code is not encoded because it is not long-lived. + [aCoder encodeObject:_refreshToken forKey:kRefreshTokenKey]; + [aCoder encodeObject:_accessToken forKey:kAccessTokenKey]; + [aCoder encodeObject:_accessTokenExpirationDate forKey:kAccessTokenExpirationDateKey]; +} + +#pragma mark - Private methods + +/** @fn requestAccessToken: + @brief Makes a request to STS for an access token. + @details This handles both the case that the token has not been granted yet and that it just + needs to be refreshed. The caller is responsible for making sure that this is occurring in + a @c _taskQueue task. + @param callback Called when the fetch is complete. Invoked asynchronously on the main thread in + the future. + @remarks Because this method is guaranteed to only be called from tasks enqueued in + @c _taskQueue, we do not need any @synchronized guards around access to _accessToken/etc. + since only one of those tasks is ever running at a time, and those tasks are the only + access to and mutation of these instance variables. + */ +- (void)requestAccessToken:(FIRFetchAccessTokenCallback)callback { + FIRSecureTokenRequest *request; + if (_refreshToken.length) { + request = [FIRSecureTokenRequest refreshRequestWithRefreshToken:_refreshToken + requestConfiguration:_requestConfiguration]; + } else { + request = [FIRSecureTokenRequest authCodeRequestWithCode:_authorizationCode + requestConfiguration:_requestConfiguration]; + } + [FIRAuthBackend secureToken:request + callback:^(FIRSecureTokenResponse *_Nullable response, + NSError *_Nullable error) { + BOOL tokenUpdated = NO; + NSString *newAccessToken = response.accessToken; + if (newAccessToken.length && ![newAccessToken isEqualToString:self->_accessToken]) { + self->_accessToken = [newAccessToken copy]; + self->_accessTokenExpirationDate = response.approximateExpirationDate; + tokenUpdated = YES; + } + NSString *newRefreshToken = response.refreshToken; + if (newRefreshToken.length && + ![newRefreshToken isEqualToString:self->_refreshToken]) { + self->_refreshToken = [newRefreshToken copy]; + tokenUpdated = YES; + } + callback(newAccessToken, error, tokenUpdated); + }]; +} + +- (BOOL)hasValidAccessToken { + return _accessToken && [_accessTokenExpirationDate timeIntervalSinceNow] > kFiveMinutes; +} + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/User/FIRAdditionalUserInfo.m b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/User/FIRAdditionalUserInfo.m new file mode 100644 index 0000000..c6ba37c --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/User/FIRAdditionalUserInfo.m @@ -0,0 +1,98 @@ +/* + * 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 "FIRAdditionalUserInfo_Internal.h" + +#import "FIRVerifyAssertionResponse.h" + +NS_ASSUME_NONNULL_BEGIN + +@implementation FIRAdditionalUserInfo + +/** @var kProviderIDCodingKey + @brief The key used to encode the providerID property for NSSecureCoding. + */ +static NSString *const kProviderIDCodingKey = @"providerID"; + +/** @var kProfileCodingKey + @brief The key used to encode the profile property for NSSecureCoding. + */ +static NSString *const kProfileCodingKey = @"profile"; + +/** @var kUsernameCodingKey + @brief The key used to encode the username property for NSSecureCoding. + */ +static NSString *const kUsernameCodingKey = @"username"; + +/** @var kNewUserKey + @brief The key used to encode the newUser property for NSSecureCoding. + */ +static NSString *const kNewUserKey = @"newUser"; + ++ (nullable instancetype)userInfoWithVerifyAssertionResponse: + (FIRVerifyAssertionResponse *)verifyAssertionResponse { + return [[self alloc] initWithProviderID:verifyAssertionResponse.providerID + profile:verifyAssertionResponse.profile + username:verifyAssertionResponse.username + isNewUser:verifyAssertionResponse.isNewUser]; +} + +- (nullable instancetype)initWithProviderID:(nullable NSString *)providerID + profile:(nullable NSDictionary *)profile + username:(nullable NSString *)username + isNewUser:(BOOL)isNewUser { + self = [super init]; + if (self) { + _providerID = [providerID copy]; + if (profile) { + _profile = [[NSDictionary alloc] initWithDictionary:profile copyItems:YES]; + } + _username = [username copy]; + _newUser = isNewUser; + } + return self; +} + +#pragma mark - NSSecureCoding + ++ (BOOL)supportsSecureCoding { + return YES; +} + +- (nullable instancetype)initWithCoder:(NSCoder *)aDecoder { + NSString *providerID = + [aDecoder decodeObjectOfClass:[NSString class] forKey:kProviderIDCodingKey]; + NSDictionary *profile = + [aDecoder decodeObjectOfClass:[NSDictionary class] forKey:kProfileCodingKey]; + NSString *username = [aDecoder decodeObjectOfClass:[NSString class] forKey:kUsernameCodingKey]; + NSNumber *isNewUser = [aDecoder decodeObjectOfClass:[NSNumber class] forKey:kNewUserKey]; + + return [self initWithProviderID:providerID + profile:profile + username:username + isNewUser:isNewUser.boolValue]; +} + +- (void)encodeWithCoder:(NSCoder *)aCoder { + [aCoder encodeObject:_providerID forKey:kProviderIDCodingKey]; + [aCoder encodeObject:_profile forKey:kProfileCodingKey]; + [aCoder encodeObject:_username forKey:kUsernameCodingKey]; + [aCoder encodeObject:[NSNumber numberWithBool:_newUser] forKey:kNewUserKey]; +} + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/User/FIRAdditionalUserInfo_Internal.h b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/User/FIRAdditionalUserInfo_Internal.h new file mode 100644 index 0000000..c8e345d --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/User/FIRAdditionalUserInfo_Internal.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 "FIRAdditionalUserInfo.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface FIRAdditionalUserInfo () + +/** @fn userInfoWithVerifyAssertionResponse: + @brief A convenience factory method for constructing a @c FIRAdditionalUserInfo instance from + data returned by the verifyAssertion endpoint. + @param verifyAssertionResponse Data returned by the verifyAssertion endpoint. + @return A new instance of @c FIRAdditionalUserInfo using data from the verifyAssertion endpoint. + */ ++ (nullable instancetype)userInfoWithVerifyAssertionResponse: + (FIRVerifyAssertionResponse *)verifyAssertionResponse; + +/** @fn initWithProviderID:profile:username: + @brief Designated initializer. + @param providerID The provider identifier. + @param profile Dictionary containing the additional IdP specific information. + @param username The name of the user. + @param isNewUser Indicates whether or not the current user was signed in for the first time. + */ +- (nullable instancetype)initWithProviderID:(nullable NSString *)providerID + profile:(nullable NSDictionary *)profile + username:(nullable NSString *)username + isNewUser:(BOOL)isNewUser NS_DESIGNATED_INITIALIZER; + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/User/FIRUser.m b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/User/FIRUser.m new file mode 100644 index 0000000..b44dfd6 --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/User/FIRUser.m @@ -0,0 +1,1536 @@ +/* + * 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 "FIRUser_Internal.h" + +#import + +#import "FIRAdditionalUserInfo_Internal.h" +#import "FIRAuth.h" +#import "FIRAuthCredential_Internal.h" +#import "FIRAuthDataResult_Internal.h" +#import "FIRAuthErrorUtils.h" +#import "FIRAuthGlobalWorkQueue.h" +#import "FIRAuthSerialTaskQueue.h" +#import "FIRAuthOperationType.h" +#import "FIRAuth_Internal.h" +#import "FIRAuthBackend.h" +#import "FIRAuthRequestConfiguration.h" +#import "FIRAuthTokenResult_Internal.h" +#import "FIRAuthWebUtils.h" +#import "FIRDeleteAccountRequest.h" +#import "FIRDeleteAccountResponse.h" +#import "FIREmailAuthProvider.h" +#import "FIREmailPasswordAuthCredential.h" +#import "FIREmailLinkSignInRequest.h" +#import "FIRGameCenterAuthCredential.h" +#import "FIRGetAccountInfoRequest.h" +#import "FIRGetAccountInfoResponse.h" +#import "FIRGetOOBConfirmationCodeRequest.h" +#import "FIRGetOOBConfirmationCodeResponse.h" +#import "FIROAuthCredential_Internal.h" +#import "FIRSecureTokenService.h" +#import "FIRSetAccountInfoRequest.h" +#import "FIRSetAccountInfoResponse.h" +#import "FIRSignInWithGameCenterRequest.h" +#import "FIRSignInWithGameCenterResponse.h" +#import "FIRUserInfoImpl.h" +#import "FIRUserMetadata_Internal.h" +#import "FIRVerifyAssertionRequest.h" +#import "FIRVerifyAssertionResponse.h" +#import "FIRVerifyCustomTokenRequest.h" +#import "FIRVerifyCustomTokenResponse.h" +#import "FIRVerifyPasswordRequest.h" +#import "FIRVerifyPasswordResponse.h" +#import "FIRVerifyPhoneNumberRequest.h" +#import "FIRVerifyPhoneNumberResponse.h" + +#if TARGET_OS_IOS +#import "FIRPhoneAuthProvider.h" +#import "FIRPhoneAuthCredential_Internal.h" +#endif + +NS_ASSUME_NONNULL_BEGIN + +/** @var kUserIDCodingKey + @brief The key used to encode the user ID for NSSecureCoding. + */ +static NSString *const kUserIDCodingKey = @"userID"; + +/** @var kHasEmailPasswordCredentialCodingKey + @brief The key used to encode the hasEmailPasswordCredential property for NSSecureCoding. + */ +static NSString *const kHasEmailPasswordCredentialCodingKey = @"hasEmailPassword"; + +/** @var kAnonymousCodingKey + @brief The key used to encode the anonymous property for NSSecureCoding. + */ +static NSString *const kAnonymousCodingKey = @"anonymous"; + +/** @var kEmailCodingKey + @brief The key used to encode the email property for NSSecureCoding. + */ +static NSString *const kEmailCodingKey = @"email"; + +/** @var kPhoneNumberCodingKey + @brief The key used to encode the phoneNumber property for NSSecureCoding. + */ +static NSString *const kPhoneNumberCodingKey = @"phoneNumber"; + +/** @var kEmailVerifiedCodingKey + @brief The key used to encode the isEmailVerified property for NSSecureCoding. + */ +static NSString *const kEmailVerifiedCodingKey = @"emailVerified"; + +/** @var kDisplayNameCodingKey + @brief The key used to encode the displayName property for NSSecureCoding. + */ +static NSString *const kDisplayNameCodingKey = @"displayName"; + +/** @var kPhotoURLCodingKey + @brief The key used to encode the photoURL property for NSSecureCoding. + */ +static NSString *const kPhotoURLCodingKey = @"photoURL"; + +/** @var kProviderDataKey + @brief The key used to encode the providerData instance variable for NSSecureCoding. + */ +static NSString *const kProviderDataKey = @"providerData"; + +/** @var kAPIKeyCodingKey + @brief The key used to encode the APIKey instance variable for NSSecureCoding. + */ +static NSString *const kAPIKeyCodingKey = @"APIKey"; + +/** @var kTokenServiceCodingKey + @brief The key used to encode the tokenService instance variable for NSSecureCoding. + */ +static NSString *const kTokenServiceCodingKey = @"tokenService"; + +/** @var kMetadataCodingKey + @brief The key used to encode the metadata instance variable for NSSecureCoding. + */ +static NSString *const kMetadataCodingKey = @"metadata"; + +/** @var kMissingUsersErrorMessage + @brief The error message when there is no users array in the getAccountInfo response. + */ +static NSString *const kMissingUsersErrorMessage = @"users"; + +/** @typedef CallbackWithError + @brief The type for a callback block that only takes an error parameter. + */ +typedef void (^CallbackWithError)(NSError *_Nullable); + +/** @typedef CallbackWithUserAndError + @brief The type for a callback block that takes a user parameter and an error parameter. + */ +typedef void (^CallbackWithUserAndError)(FIRUser *_Nullable, NSError *_Nullable); + +/** @typedef CallbackWithUserAndError + @brief The type for a callback block that takes a user parameter and an error parameter. + */ +typedef void (^CallbackWithAuthDataResultAndError)(FIRAuthDataResult *_Nullable, + NSError *_Nullable); + +/** @var kMissingPasswordReason + @brief The reason why the @c FIRAuthErrorCodeWeakPassword error is thrown. + @remarks This error message will be localized in the future. + */ +static NSString *const kMissingPasswordReason = @"Missing Password"; + +/** @fn callInMainThreadWithError + @brief Calls a callback in main thread with error. + @param callback The callback to be called in main thread. + @param error The error to pass to callback. + */ +static void callInMainThreadWithError(_Nullable CallbackWithError callback, + NSError *_Nullable error) { + if (callback) { + dispatch_async(dispatch_get_main_queue(), ^{ + callback(error); + }); + } +} + +/** @fn callInMainThreadWithUserAndError + @brief Calls a callback in main thread with user and error. + @param callback The callback to be called in main thread. + @param user The user to pass to callback if there is no error. + @param error The error to pass to callback. + */ +static void callInMainThreadWithUserAndError(_Nullable CallbackWithUserAndError callback, + FIRUser *_Nonnull user, + NSError *_Nullable error) { + if (callback) { + dispatch_async(dispatch_get_main_queue(), ^{ + callback(error ? nil : user, error); + }); + } +} + +/** @fn callInMainThreadWithUserAndError + @brief Calls a callback in main thread with user and error. + @param callback The callback to be called in main thread. + @param result The result to pass to callback if there is no error. + @param error The error to pass to callback. + */ +static void callInMainThreadWithAuthDataResultAndError( + _Nullable CallbackWithAuthDataResultAndError callback, + FIRAuthDataResult *_Nullable result, + NSError *_Nullable error) { + if (callback) { + dispatch_async(dispatch_get_main_queue(), ^{ + callback(result, error); + }); + } +} + +@interface FIRUserProfileChangeRequest () + +/** @fn initWithUser: + @brief Designated initializer. + @param user The user for which we are updating profile information. + */ +- (nullable instancetype)initWithUser:(FIRUser *)user NS_DESIGNATED_INITIALIZER; + +@end + +@interface FIRUser () + +/** @property anonymous + @brief Whether the current user is anonymous. + */ +@property(nonatomic, readwrite) BOOL anonymous; + +@end + +@implementation FIRUser { + /** @var _hasEmailPasswordCredential + @brief Whether or not the user can be authenticated by using Firebase email and password. + */ + BOOL _hasEmailPasswordCredential; + + /** @var _providerData + @brief Provider specific user data. + */ + NSDictionary *_providerData; + + /** @var _taskQueue + @brief Used to serialize the update profile calls. + */ + FIRAuthSerialTaskQueue *_taskQueue; + + /** @var _tokenService + @brief A secure token service associated with this user. For performing token exchanges and + refreshing access tokens. + */ + FIRSecureTokenService *_tokenService; +} + +#pragma mark - Properties + +// Explicitly @synthesize because these properties are defined in FIRUserInfo protocol. +@synthesize uid = _userID; +@synthesize displayName = _displayName; +@synthesize photoURL = _photoURL; +@synthesize email = _email; +@synthesize phoneNumber = _phoneNumber; + +#pragma mark - + ++ (void)retrieveUserWithAuth:(FIRAuth *)auth + accessToken:(nullable NSString *)accessToken + accessTokenExpirationDate:(nullable NSDate *)accessTokenExpirationDate + refreshToken:(nullable NSString *)refreshToken + anonymous:(BOOL)anonymous + callback:(FIRRetrieveUserCallback)callback { + FIRSecureTokenService *tokenService = + [[FIRSecureTokenService alloc] initWithRequestConfiguration:auth.requestConfiguration + accessToken:accessToken + accessTokenExpirationDate:accessTokenExpirationDate + refreshToken:refreshToken]; + FIRUser *user = [[self alloc] initWithTokenService:tokenService]; + user.auth = auth; + user.requestConfiguration = auth.requestConfiguration; + [user internalGetTokenWithCallback:^(NSString *_Nullable accessToken, NSError *_Nullable error) { + if (error) { + callback(nil, error); + return; + } + FIRGetAccountInfoRequest *getAccountInfoRequest = + [[FIRGetAccountInfoRequest alloc] initWithAccessToken:accessToken + requestConfiguration:auth.requestConfiguration]; + [FIRAuthBackend getAccountInfo:getAccountInfoRequest + callback:^(FIRGetAccountInfoResponse *_Nullable response, + NSError *_Nullable error) { + if (error) { + // No need to sign out user here for errors because the user hasn't been signed in yet. + callback(nil, error); + return; + } + user.anonymous = anonymous; + [user updateWithGetAccountInfoResponse:response]; + callback(user, nil); + }]; + }]; +} + +- (instancetype)initWithTokenService:(FIRSecureTokenService *)tokenService { + self = [super init]; + if (self) { + _providerData = @{ }; + _taskQueue = [[FIRAuthSerialTaskQueue alloc] init]; + _tokenService = tokenService; + } + return self; +} + +#pragma mark - NSSecureCoding + ++ (BOOL)supportsSecureCoding { + return YES; +} + +- (nullable instancetype)initWithCoder:(NSCoder *)aDecoder { + NSString *userID = [aDecoder decodeObjectOfClass:[NSString class] forKey:kUserIDCodingKey]; + BOOL hasAnonymousKey = [aDecoder containsValueForKey:kAnonymousCodingKey]; + BOOL anonymous = [aDecoder decodeBoolForKey:kAnonymousCodingKey]; + BOOL hasEmailPasswordCredential = + [aDecoder decodeBoolForKey:kHasEmailPasswordCredentialCodingKey]; + NSString *displayName = + [aDecoder decodeObjectOfClass:[NSString class] forKey:kDisplayNameCodingKey]; + NSURL *photoURL = + [aDecoder decodeObjectOfClass:[NSURL class] forKey:kPhotoURLCodingKey]; + NSString *email = + [aDecoder decodeObjectOfClass:[NSString class] forKey:kEmailCodingKey]; + NSString *phoneNumber = + [aDecoder decodeObjectOfClass:[NSString class] forKey:kPhoneNumberCodingKey]; + BOOL emailVerified = [aDecoder decodeBoolForKey:kEmailVerifiedCodingKey]; + NSSet *providerDataClasses = [NSSet setWithArray:@[ + [NSDictionary class], + [NSString class], + [FIRUserInfoImpl class] + ]]; + NSDictionary *providerData = + [aDecoder decodeObjectOfClasses:providerDataClasses forKey:kProviderDataKey]; + FIRSecureTokenService *tokenService = + [aDecoder decodeObjectOfClass:[FIRSecureTokenService class] forKey:kTokenServiceCodingKey]; + FIRUserMetadata *metadata = + [aDecoder decodeObjectOfClass:[FIRUserMetadata class] forKey:kMetadataCodingKey]; + NSString *APIKey = + [aDecoder decodeObjectOfClass:[NSString class] forKey:kAPIKeyCodingKey]; + if (!userID || !tokenService) { + return nil; + } + self = [self initWithTokenService:tokenService]; + if (self) { + _userID = userID; + // Previous version of this code didn't save 'anonymous' bit directly but deduced it from + // 'hasEmailPasswordCredential' and 'providerData' instead, so here backward compatibility is + // provided to read old format data. + _anonymous = hasAnonymousKey ? anonymous : (!hasEmailPasswordCredential && !providerData.count); + _hasEmailPasswordCredential = hasEmailPasswordCredential; + _email = email; + _emailVerified = emailVerified; + _displayName = displayName; + _photoURL = photoURL; + _providerData = providerData; + _phoneNumber = phoneNumber; + _metadata = metadata ?: [[FIRUserMetadata alloc] initWithCreationDate:nil lastSignInDate:nil]; + _requestConfiguration = [[FIRAuthRequestConfiguration alloc] initWithAPIKey:APIKey]; + } + return self; +} + +- (void)encodeWithCoder:(NSCoder *)aCoder { + [aCoder encodeObject:_userID forKey:kUserIDCodingKey]; + [aCoder encodeBool:self.anonymous forKey:kAnonymousCodingKey]; + [aCoder encodeBool:_hasEmailPasswordCredential forKey:kHasEmailPasswordCredentialCodingKey]; + [aCoder encodeObject:_providerData forKey:kProviderDataKey]; + [aCoder encodeObject:_email forKey:kEmailCodingKey]; + [aCoder encodeObject:_phoneNumber forKey:kPhoneNumberCodingKey]; + [aCoder encodeBool:_emailVerified forKey:kEmailVerifiedCodingKey]; + [aCoder encodeObject:_photoURL forKey:kPhotoURLCodingKey]; + [aCoder encodeObject:_displayName forKey:kDisplayNameCodingKey]; + [aCoder encodeObject:_metadata forKey:kMetadataCodingKey]; + [aCoder encodeObject:_auth.requestConfiguration.APIKey forKey:kAPIKeyCodingKey]; + [aCoder encodeObject:_tokenService forKey:kTokenServiceCodingKey]; +} + +#pragma mark - + +- (void)setAuth:(nullable FIRAuth *)auth { + _auth = auth; + _tokenService.requestConfiguration = auth.requestConfiguration; +} + +- (NSString *)providerID { + return @"Firebase"; +} + +- (NSArray> *)providerData { + return _providerData.allValues; +} + +/** @fn getAccountInfoRefreshingCache: + @brief Gets the users's account data from the server, updating our local values. + @param callback Invoked when the request to getAccountInfo has completed, or when an error has + been detected. Invoked asynchronously on the auth global work queue in the future. + */ +- (void)getAccountInfoRefreshingCache:(void(^)(FIRGetAccountInfoResponseUser *_Nullable user, + NSError *_Nullable error))callback { + [self internalGetTokenWithCallback:^(NSString *_Nullable accessToken, NSError *_Nullable error) { + if (error) { + callback(nil, error); + return; + } + FIRGetAccountInfoRequest *getAccountInfoRequest = + [[FIRGetAccountInfoRequest alloc] initWithAccessToken:accessToken + requestConfiguration:self->_auth.requestConfiguration]; + [FIRAuthBackend getAccountInfo:getAccountInfoRequest + callback:^(FIRGetAccountInfoResponse *_Nullable response, + NSError *_Nullable error) { + if (error) { + [self signOutIfTokenIsInvalidWithError:error]; + callback(nil, error); + return; + } + [self updateWithGetAccountInfoResponse:response]; + if (![self updateKeychain:&error]) { + callback(nil, error); + return; + } + callback(response.users.firstObject, nil); + }]; + }]; +} + +- (void)updateWithGetAccountInfoResponse:(FIRGetAccountInfoResponse *)response { + FIRGetAccountInfoResponseUser *user = response.users.firstObject; + _userID = user.localID; + _email = user.email; + _emailVerified = user.emailVerified; + _displayName = user.displayName; + _photoURL = user.photoURL; + _phoneNumber = user.phoneNumber; + _hasEmailPasswordCredential = user.passwordHash.length > 0; + _metadata = + [[FIRUserMetadata alloc]initWithCreationDate:user.creationDate + lastSignInDate:user.lastLoginDate]; + NSMutableDictionary *providerData = + [NSMutableDictionary dictionary]; + for (FIRGetAccountInfoResponseProviderUserInfo *providerUserInfo in user.providerUserInfo) { + FIRUserInfoImpl *userInfo = + [FIRUserInfoImpl userInfoWithGetAccountInfoResponseProviderUserInfo:providerUserInfo]; + if (userInfo) { + providerData[providerUserInfo.providerID] = userInfo; + } + } + _providerData = [providerData copy]; +} + +/** @fn executeUserUpdateWithChanges:callback: + @brief Performs a setAccountInfo request by mutating the results of a getAccountInfo response, + atomically in regards to other calls to this method. + @param changeBlock A block responsible for mutating a template @c FIRSetAccountInfoRequest + @param callback A block to invoke when the change is complete. Invoked asynchronously on the + auth global work queue in the future. + */ +- (void)executeUserUpdateWithChanges:(void(^)(FIRGetAccountInfoResponseUser *, + FIRSetAccountInfoRequest *))changeBlock + callback:(nonnull FIRUserProfileChangeCallback)callback { + [_taskQueue enqueueTask:^(FIRAuthSerialTaskCompletionBlock _Nonnull complete) { + [self getAccountInfoRefreshingCache:^(FIRGetAccountInfoResponseUser *_Nullable user, + NSError *_Nullable error) { + if (error) { + complete(); + callback(error); + return; + } + [self internalGetTokenWithCallback:^(NSString *_Nullable accessToken, + NSError *_Nullable error) { + if (error) { + complete(); + callback(error); + return; + } + FIRAuthRequestConfiguration *configuration = self->_auth.requestConfiguration; + // Mutate setAccountInfoRequest in block: + FIRSetAccountInfoRequest *setAccountInfoRequest = + [[FIRSetAccountInfoRequest alloc] initWithRequestConfiguration:configuration]; + setAccountInfoRequest.accessToken = accessToken; + changeBlock(user, setAccountInfoRequest); + // Execute request: + [FIRAuthBackend setAccountInfo:setAccountInfoRequest + callback:^(FIRSetAccountInfoResponse *_Nullable response, + NSError *_Nullable error) { + if (error) { + [self signOutIfTokenIsInvalidWithError:error]; + complete(); + callback(error); + return; + } + if (response.IDToken && response.refreshToken) { + FIRSecureTokenService *tokenService = [[FIRSecureTokenService alloc] + initWithRequestConfiguration:configuration + accessToken:response.IDToken + accessTokenExpirationDate:response.approximateExpirationDate + refreshToken:response.refreshToken]; + [self setTokenService:tokenService callback:^(NSError *_Nullable error) { + complete(); + callback(error); + }]; + return; + } + complete(); + callback(nil); + }]; + }]; + }]; + }]; +} + +/** @fn updateKeychain: + @brief Updates the keychain for user token or info changes. + @param error The error if NO is returned. + @return Whether the operation is successful. + */ +- (BOOL)updateKeychain:(NSError *_Nullable *_Nullable)error { + return [_auth updateKeychainWithUser:self error:error]; +} + +/** @fn setTokenService:callback: + @brief Sets a new token service for the @c FIRUser instance. + @param tokenService The new token service object. + @param callback The block to be called in the global auth working queue once finished. + @remarks The method makes sure the token service has access and refresh token and the new tokens + are saved in the keychain before calling back. + */ +- (void)setTokenService:(FIRSecureTokenService *)tokenService + callback:(nonnull CallbackWithError)callback { + [tokenService fetchAccessTokenForcingRefresh:NO + callback:^(NSString *_Nullable token, + NSError *_Nullable error, + BOOL tokenUpdated) { + if (error) { + callback(error); + return; + } + self->_tokenService = tokenService; + if (![self updateKeychain:&error]) { + callback(error); + return; + } + callback(nil); + }]; +} + +#pragma mark - + +/** @fn updateEmail:password:callback: + @brief Updates email address and/or password for the current user. + @remarks May fail if there is already an email/password-based account for the same email + address. + @param email The email address for the user, if to be updated. + @param password The new password for the user, if to be updated. + @param callback The block called when the user profile change has finished. Invoked + asynchronously on the auth global work queue in the future. + @remarks May fail with a @c FIRAuthErrorCodeRequiresRecentLogin error code. + Call @c reauthentateWithCredential:completion: beforehand to avoid this error case. + */ +- (void)updateEmail:(nullable NSString *)email + password:(nullable NSString *)password + callback:(nonnull FIRUserProfileChangeCallback)callback { + if (password && ![password length]) { + callback([FIRAuthErrorUtils weakPasswordErrorWithServerResponseReason:kMissingPasswordReason]); + return; + } + BOOL hadEmailPasswordCredential = _hasEmailPasswordCredential; + [self executeUserUpdateWithChanges:^(FIRGetAccountInfoResponseUser *user, + FIRSetAccountInfoRequest *request) { + if (email) { + request.email = email; + } + if (password) { + request.password = password; + } + } + callback:^(NSError *error) { + if (error) { + callback(error); + return; + } + if (email) { + self->_email = [email copy]; + } + if (self->_email) { + if (!hadEmailPasswordCredential) { + // The list of providers need to be updated for the newly added email-password provider. + [self internalGetTokenWithCallback:^(NSString *_Nullable accessToken, + NSError *_Nullable error) { + if (error) { + callback(error); + return; + } + FIRAuthRequestConfiguration *requestConfiguration = self->_auth.requestConfiguration; + FIRGetAccountInfoRequest *getAccountInfoRequest = + [[FIRGetAccountInfoRequest alloc] initWithAccessToken:accessToken + requestConfiguration:requestConfiguration]; + [FIRAuthBackend getAccountInfo:getAccountInfoRequest + callback:^(FIRGetAccountInfoResponse *_Nullable response, + NSError *_Nullable error) { + if (error) { + [self signOutIfTokenIsInvalidWithError:error]; + callback(error); + return; + } + for (FIRGetAccountInfoResponseUser *userAccountInfo in response.users) { + // Set the account to non-anonymous if there are any providers, even if + // they're not email/password ones. + if (userAccountInfo.providerUserInfo.count > 0) { + self.anonymous = NO; + } + for (FIRGetAccountInfoResponseProviderUserInfo *providerUserInfo in + userAccountInfo.providerUserInfo) { + if ([providerUserInfo.providerID isEqualToString:FIREmailAuthProviderID]) { + self->_hasEmailPasswordCredential = YES; + break; + } + } + } + [self updateWithGetAccountInfoResponse:response]; + if (![self updateKeychain:&error]) { + callback(error); + return; + } + callback(nil); + }]; + }]; + return; + } + } + if (![self updateKeychain:&error]) { + callback(error); + return; + } + callback(nil); + }]; +} + +- (void)updateEmail:(NSString *)email completion:(nullable FIRUserProfileChangeCallback)completion { + dispatch_async(FIRAuthGlobalWorkQueue(), ^{ + [self updateEmail:email password:nil callback:^(NSError *_Nullable error) { + callInMainThreadWithError(completion, error); + }]; + }); +} + +- (void)updatePassword:(NSString *)password + completion:(nullable FIRUserProfileChangeCallback)completion { + dispatch_async(FIRAuthGlobalWorkQueue(), ^{ + [self updateEmail:nil password:password callback:^(NSError *_Nullable error){ + callInMainThreadWithError(completion, error); + }]; + }); +} + +#if TARGET_OS_IOS +/** @fn internalUpdateOrLinkPhoneNumberCredential:completion: + @brief Updates the phone number for the user. On success, the cached user profile data is + updated. + + @param phoneAuthCredential The new phone number credential corresponding to the phone number + to be added to the Firebase account, if a phone number is already linked to the account this + new phone number will replace it. + @param isLinkOperation Boolean value indicating whether or not this is a link operation. + @param completion Optionally; the block invoked when the user profile change has finished. + Invoked asynchronously on the global work queue in the future. + */ +- (void)internalUpdateOrLinkPhoneNumberCredential:(FIRPhoneAuthCredential *)phoneAuthCredential + isLinkOperation:(BOOL)isLinkOperation + completion:(FIRUserProfileChangeCallback)completion { + [self internalGetTokenWithCallback:^(NSString *_Nullable accessToken, + NSError *_Nullable error) { + if (error) { + completion(error); + return; + } + FIRAuthOperationType operation = + isLinkOperation ? FIRAuthOperationTypeLink : FIRAuthOperationTypeUpdate; + FIRVerifyPhoneNumberRequest *request = [[FIRVerifyPhoneNumberRequest alloc] + initWithVerificationID:phoneAuthCredential.verificationID + verificationCode:phoneAuthCredential.verificationCode + operation:operation + requestConfiguration:self->_auth.requestConfiguration]; + request.accessToken = accessToken; + [FIRAuthBackend verifyPhoneNumber:request + callback:^(FIRVerifyPhoneNumberResponse *_Nullable response, + NSError *_Nullable error) { + if (error) { + [self signOutIfTokenIsInvalidWithError:error]; + completion(error); + return; + } + // Get account info to update cached user info. + [self getAccountInfoRefreshingCache:^(FIRGetAccountInfoResponseUser *_Nullable user, + NSError *_Nullable error) { + if (error) { + [self signOutIfTokenIsInvalidWithError:error]; + completion(error); + return; + } + self.anonymous = NO; + if (![self updateKeychain:&error]) { + completion(error); + return; + } + completion(nil); + }]; + }]; + }]; +} + +- (void)updatePhoneNumberCredential:(FIRPhoneAuthCredential *)phoneAuthCredential + completion:(nullable FIRUserProfileChangeCallback)completion { + dispatch_async(FIRAuthGlobalWorkQueue(), ^{ + [self internalUpdateOrLinkPhoneNumberCredential:phoneAuthCredential + isLinkOperation:NO + completion:^(NSError *_Nullable error) { + callInMainThreadWithError(completion, error); + }]; + }); +} +#endif + +- (FIRUserProfileChangeRequest *)profileChangeRequest { + __block FIRUserProfileChangeRequest *result; + dispatch_sync(FIRAuthGlobalWorkQueue(), ^{ + result = [[FIRUserProfileChangeRequest alloc] initWithUser:self]; + }); + return result; +} + +- (void)setDisplayName:(NSString *)displayName { + _displayName = [displayName copy]; +} + +- (void)setPhotoURL:(NSURL *)photoURL { + _photoURL = [photoURL copy]; +} + +- (NSString *)rawAccessToken { + return _tokenService.rawAccessToken; +} + +- (NSDate *)accessTokenExpirationDate { + return _tokenService.accessTokenExpirationDate; +} + +#pragma mark - + +- (void)reloadWithCompletion:(nullable FIRUserProfileChangeCallback)completion { + dispatch_async(FIRAuthGlobalWorkQueue(), ^{ + [self getAccountInfoRefreshingCache:^(FIRGetAccountInfoResponseUser *_Nullable user, + NSError *_Nullable error) { + callInMainThreadWithError(completion, error); + }]; + }); +} + +#pragma mark - + +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" +- (void)reauthenticateWithCredential:(FIRAuthCredential *) credential + completion:(nullable FIRAuthDataResultCallback) completion { + [self reauthenticateAndRetrieveDataWithCredential:credential completion:completion]; +} +#pragma clang diagnostic pop + +- (void)reauthenticateAndRetrieveDataWithCredential:(FIRAuthCredential *) credential + completion:(nullable FIRAuthDataResultCallback) completion { + dispatch_async(FIRAuthGlobalWorkQueue(), ^{ + [self->_auth internalSignInAndRetrieveDataWithCredential:credential + isReauthentication:YES + callback:^(FIRAuthDataResult *_Nullable + authResult, + NSError *_Nullable error) { + if (error) { + // If "user not found" error returned by backend, translate to user mismatch error which is + // more accurate. + if (error.code == FIRAuthErrorCodeUserNotFound) { + error = [FIRAuthErrorUtils userMismatchError]; + } + callInMainThreadWithAuthDataResultAndError(completion, authResult, error); + return; + } + if (![authResult.user.uid isEqual:[self->_auth getUserID]]) { + callInMainThreadWithAuthDataResultAndError(completion, authResult, + [FIRAuthErrorUtils userMismatchError]); + return; + } + // Successful reauthenticate + [self setTokenService:authResult.user->_tokenService callback:^(NSError *_Nullable error) { + callInMainThreadWithAuthDataResultAndError(completion, authResult, error); + }]; + }]; + }); +} + +- (nullable NSString *)refreshToken { + __block NSString *result; + dispatch_sync(FIRAuthGlobalWorkQueue(), ^{ + result = self->_tokenService.refreshToken; + }); + return result; +} + +- (void)getIDTokenWithCompletion:(nullable FIRAuthTokenCallback)completion { + // |getIDTokenForcingRefresh:completion:| is also a public API so there is no need to dispatch to + // global work queue here. + [self getIDTokenForcingRefresh:NO completion:completion]; +} + +- (void)getIDTokenForcingRefresh:(BOOL)forceRefresh + completion:(nullable FIRAuthTokenCallback)completion { + [self getIDTokenResultForcingRefresh:forceRefresh + completion:^(FIRAuthTokenResult *_Nullable tokenResult, + NSError *_Nullable error) { + + if (completion) { + dispatch_async(dispatch_get_main_queue(), ^{ + completion(tokenResult.token, error); + }); + } + }]; +} + +- (void)getIDTokenResultWithCompletion:(nullable FIRAuthTokenResultCallback)completion { + [self getIDTokenResultForcingRefresh:NO + completion:^(FIRAuthTokenResult *_Nullable tokenResult, + NSError *_Nullable error) { + if (completion) { + dispatch_async(dispatch_get_main_queue(), ^{ + completion(tokenResult, error); + }); + } + }]; +} + +- (void)getIDTokenResultForcingRefresh:(BOOL)forceRefresh + completion:(nullable FIRAuthTokenResultCallback)completion { + dispatch_async(FIRAuthGlobalWorkQueue(), ^{ + [self internalGetTokenForcingRefresh:forceRefresh + callback:^(NSString *_Nullable token, NSError *_Nullable error) { + FIRAuthTokenResult *tokenResult; + if (token) { + tokenResult = [self parseIDToken:token error:&error]; + } + if (completion) { + dispatch_async(dispatch_get_main_queue(), ^{ + completion(tokenResult, error); + }); + } + }]; + }); +} + +/** @fn parseIDToken:error: + @brief Parses the provided IDToken and returns an instance of FIRAuthTokenResult containing + claims obtained from the IDToken. + + @param token The raw text of the Firebase IDToken encoded in base64. + @param error An out parameter which would contain any error that occurs during parsing. + @return An instance of FIRAuthTokenResult containing claims obtained from the IDToken. + + @remarks IDToken returned from the backend in some cases is of a length that is not a multiple + of 4. In these cases this function pads the token with as many "=" characters as needed and + then attempts to parse the token. If the token cannot be parsed an error is returned via the + "error" out parameter. + */ +- (nullable FIRAuthTokenResult *)parseIDToken:(NSString *)token error:(NSError **)error { + // Though this is an internal method, errors returned here are surfaced in user-visible + // callbacks. + if (error) { + *error = nil; + } + NSArray *tokenStringArray = [token componentsSeparatedByString:@"."]; + + // The JWT should have three parts, though we only use the second in this method. + if (tokenStringArray.count != 3) { + if (error) { + *error = [FIRAuthErrorUtils malformedJWTErrorWithToken:token underlyingError:nil]; + } + return nil; + } + + // The token payload is always the second index of the array. + NSString *idToken = tokenStringArray[1]; + + // Convert the base64URL encoded string to a base64 encoded string. + // Replace "_" with "/" + NSMutableString *tokenPayload = + [[idToken stringByReplacingOccurrencesOfString:@"_" withString:@"/"] mutableCopy]; + + // Replace "-" with "+" + [tokenPayload replaceOccurrencesOfString:@"-" + withString:@"+" + options:kNilOptions + range:NSMakeRange(0, tokenPayload.length)]; + + // Pad the token payload with "=" signs if the payload's length is not a multiple of 4. + while ((tokenPayload.length % 4) != 0) { + [tokenPayload appendFormat:@"="]; + } + NSData *decodedTokenPayloadData = + [[NSData alloc] initWithBase64EncodedString:tokenPayload + options:NSDataBase64DecodingIgnoreUnknownCharacters]; + if (!decodedTokenPayloadData) { + if (error) { + *error = [FIRAuthErrorUtils malformedJWTErrorWithToken:token underlyingError:nil]; + } + return nil; + } + NSError *jsonError = nil; + NSJSONReadingOptions options = NSJSONReadingMutableContainers|NSJSONReadingAllowFragments; + NSDictionary *tokenPayloadDictionary = + [NSJSONSerialization JSONObjectWithData:decodedTokenPayloadData + options:options + error:&jsonError]; + if (jsonError != nil) { + if (error) { + *error = [FIRAuthErrorUtils malformedJWTErrorWithToken:token underlyingError:jsonError]; + } + return nil; + } + + if (!tokenPayloadDictionary) { + if (error) { + *error = [FIRAuthErrorUtils malformedJWTErrorWithToken:token underlyingError:nil]; + } + return nil; + } + + // These are dates since 00:00:00 January 1 1970, as described by the Terminology section in + // the JWT spec. https://tools.ietf.org/html/rfc7519 + NSDate *expDate = + [NSDate dateWithTimeIntervalSince1970:[tokenPayloadDictionary[@"exp"] doubleValue]]; + NSDate *authDate = + [NSDate dateWithTimeIntervalSince1970:[tokenPayloadDictionary[@"auth_time"] doubleValue]]; + NSDate *issuedDate = + [NSDate dateWithTimeIntervalSince1970:[tokenPayloadDictionary[@"iat"] doubleValue]]; + FIRAuthTokenResult *result = + [[FIRAuthTokenResult alloc] initWithToken:token + expirationDate:expDate + authDate:authDate + issuedAtDate:issuedDate + signInProvider:tokenPayloadDictionary[@"sign_in_provider"] + claims:tokenPayloadDictionary]; + return result; +} + +/** @fn internalGetTokenForcingRefresh:callback: + @brief Retrieves the Firebase authentication token, possibly refreshing it if it has expired. + @param callback The block to invoke when the token is available. Invoked asynchronously on the + global work thread in the future. + */ +- (void)internalGetTokenWithCallback:(nonnull FIRAuthTokenCallback)callback { + [self internalGetTokenForcingRefresh:NO callback:callback]; +} + +- (void)internalGetTokenForcingRefresh:(BOOL)forceRefresh + callback:(nonnull FIRAuthTokenCallback)callback { + [_tokenService fetchAccessTokenForcingRefresh:forceRefresh + callback:^(NSString *_Nullable token, + NSError *_Nullable error, + BOOL tokenUpdated) { + if (error) { + [self signOutIfTokenIsInvalidWithError:error]; + callback(nil, error); + return; + } + if (tokenUpdated) { + if (![self updateKeychain:&error]) { + callback(nil, error); + return; + } + } + callback(token, nil); + }]; +} + +- (void)internalVerifyBeforeUpdateEmailWithNewEmail:(NSString *)newEmail + actionCodeSettings:(nullable FIRActionCodeSettings *)actionCodeSettings + completion:(FIRVerifyBeforeUpdateEmailCallback)completion { + dispatch_async(FIRAuthGlobalWorkQueue(), ^{ + [self internalGetTokenWithCallback:^(NSString *_Nullable accessToken, + NSError *_Nullable error) { + if (error) { + callInMainThreadWithError(completion, error); + return; + } + FIRAuthRequestConfiguration *configuration = self->_auth.requestConfiguration; + FIRActionCodeSettings *settings = actionCodeSettings; + FIRGetOOBConfirmationCodeRequest *request = + [FIRGetOOBConfirmationCodeRequest verifyBeforeUpdateEmailWithAccessToken:accessToken + newEmail:newEmail + actionCodeSettings:settings + requestConfiguration:configuration]; + [FIRAuthBackend getOOBConfirmationCode:request + callback:^(FIRGetOOBConfirmationCodeResponse *_Nullable + response, + NSError *_Nullable error) { + callInMainThreadWithError(completion, error); + }]; + }]; + }); +} + +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" +- (void)linkWithCredential:(FIRAuthCredential *)credential + completion:(nullable FIRAuthDataResultCallback)completion { + [self linkAndRetrieveDataWithCredential:credential completion:completion]; +} +#pragma clang diagnostic pop + +- (void)linkAndRetrieveDataWithCredential:(FIRAuthCredential *)credential + completion:(nullable FIRAuthDataResultCallback)completion { + dispatch_async(FIRAuthGlobalWorkQueue(), ^{ + if (self->_providerData[credential.provider]) { + callInMainThreadWithAuthDataResultAndError(completion, + nil, + [FIRAuthErrorUtils providerAlreadyLinkedError]); + return; + } + FIRAuthDataResult *result = + [[FIRAuthDataResult alloc] initWithUser:self additionalUserInfo:nil]; + if ([credential isKindOfClass:[FIREmailPasswordAuthCredential class]]) { + if (self->_hasEmailPasswordCredential) { + callInMainThreadWithAuthDataResultAndError(completion, + nil, + [FIRAuthErrorUtils providerAlreadyLinkedError]); + return; + } + FIREmailPasswordAuthCredential *emailPasswordCredential = + (FIREmailPasswordAuthCredential *)credential; + if (emailPasswordCredential.password) { + [self updateEmail:emailPasswordCredential.email + password:emailPasswordCredential.password + callback:^(NSError *error) { + if (error) { + callInMainThreadWithAuthDataResultAndError(completion, nil, error); + } else { + callInMainThreadWithAuthDataResultAndError(completion, result, nil); + } + }]; + } else { + [self internalGetTokenWithCallback:^(NSString *_Nullable accessToken, + NSError *_Nullable error) { + NSDictionary *queryItems = [FIRAuthWebUtils parseURL:emailPasswordCredential.link]; + if (![queryItems count]) { + NSURLComponents *urlComponents = [NSURLComponents componentsWithString:emailPasswordCredential.link]; + queryItems = [FIRAuthWebUtils parseURL:urlComponents.query]; + } + NSString *actionCode = queryItems[@"oobCode"]; + FIRAuthRequestConfiguration *requestConfiguration = self.auth.requestConfiguration; + FIREmailLinkSignInRequest *request = + [[FIREmailLinkSignInRequest alloc] initWithEmail:emailPasswordCredential.email + oobCode:actionCode + requestConfiguration:requestConfiguration]; + request.IDToken = accessToken; + [FIRAuthBackend emailLinkSignin:request + callback:^(FIREmailLinkSignInResponse *_Nullable response, + NSError *_Nullable error) { + if (error){ + callInMainThreadWithAuthDataResultAndError(completion, nil, error); + } else { + [self internalGetTokenWithCallback:^(NSString *_Nullable accessToken, + NSError *_Nullable error) { + if (error) { + callInMainThreadWithAuthDataResultAndError(completion, nil, error); + return; + } + + FIRGetAccountInfoRequest *getAccountInfoRequest = + [[FIRGetAccountInfoRequest alloc] initWithAccessToken:accessToken + requestConfiguration:requestConfiguration]; + [FIRAuthBackend getAccountInfo:getAccountInfoRequest + callback:^(FIRGetAccountInfoResponse *_Nullable response, + NSError *_Nullable error) { + if (error) { + [self signOutIfTokenIsInvalidWithError:error]; + callInMainThreadWithAuthDataResultAndError(completion, nil, error); + return; + } + self.anonymous = NO; + [self updateWithGetAccountInfoResponse:response]; + if (![self updateKeychain:&error]) { + callInMainThreadWithAuthDataResultAndError(completion, nil, error); + return; + } + callInMainThreadWithAuthDataResultAndError(completion, result, nil); + }]; + }]; + } + }]; + }]; + } + return; + } + + if ([credential isKindOfClass:[FIRGameCenterAuthCredential class]]) { + FIRGameCenterAuthCredential *gameCenterCredential = (FIRGameCenterAuthCredential *)credential; + [self internalGetTokenWithCallback:^(NSString *_Nullable accessToken, + NSError *_Nullable error) { + FIRAuthRequestConfiguration *requestConfiguration = self.auth.requestConfiguration; + FIRSignInWithGameCenterRequest *gameCenterRequest = + [[FIRSignInWithGameCenterRequest alloc] initWithPlayerID:gameCenterCredential.playerID + publicKeyURL:gameCenterCredential.publicKeyURL + signature:gameCenterCredential.signature + salt:gameCenterCredential.salt + timestamp:gameCenterCredential.timestamp + displayName:gameCenterCredential.displayName + requestConfiguration:requestConfiguration]; + gameCenterRequest.accessToken = accessToken; + + [FIRAuthBackend signInWithGameCenter:gameCenterRequest + callback:^(FIRSignInWithGameCenterResponse *_Nullable response, + NSError *_Nullable error) { + if (error){ + callInMainThreadWithAuthDataResultAndError(completion, nil, error); + } else { + [self internalGetTokenWithCallback:^(NSString *_Nullable accessToken, + NSError *_Nullable error) { + if (error) { + callInMainThreadWithAuthDataResultAndError(completion, nil, error); + return; + } + + FIRGetAccountInfoRequest *getAccountInfoRequest = + [[FIRGetAccountInfoRequest alloc] initWithAccessToken:accessToken + requestConfiguration:requestConfiguration]; + [FIRAuthBackend getAccountInfo:getAccountInfoRequest + callback:^(FIRGetAccountInfoResponse *_Nullable response, + NSError *_Nullable error) { + if (error) { + [self signOutIfTokenIsInvalidWithError:error]; + callInMainThreadWithAuthDataResultAndError(completion, nil, error); + return; + } + self.anonymous = NO; + [self updateWithGetAccountInfoResponse:response]; + if (![self updateKeychain:&error]) { + callInMainThreadWithAuthDataResultAndError(completion, nil, error); + return; + } + callInMainThreadWithAuthDataResultAndError(completion, result, nil); + }]; + }]; + } + }]; + }]; + return; + } + + #if TARGET_OS_IOS + if ([credential isKindOfClass:[FIRPhoneAuthCredential class]]) { + FIRPhoneAuthCredential *phoneAuthCredential = (FIRPhoneAuthCredential *)credential; + [self internalUpdateOrLinkPhoneNumberCredential:phoneAuthCredential + isLinkOperation:YES + completion:^(NSError *_Nullable error) { + if (error){ + callInMainThreadWithAuthDataResultAndError(completion, nil, error); + } else { + callInMainThreadWithAuthDataResultAndError(completion, result, nil); + } + }]; + return; + } + #endif + + [self->_taskQueue enqueueTask:^(FIRAuthSerialTaskCompletionBlock _Nonnull complete) { + CallbackWithAuthDataResultAndError completeWithError = + ^(FIRAuthDataResult *result, NSError *error) { + complete(); + callInMainThreadWithAuthDataResultAndError(completion, result, error); + }; + [self internalGetTokenWithCallback:^(NSString *_Nullable accessToken, + NSError *_Nullable error) { + if (error) { + completeWithError(nil, error); + return; + } + FIRAuthRequestConfiguration *requestConfiguration = self->_auth.requestConfiguration; + FIRVerifyAssertionRequest *request = + [[FIRVerifyAssertionRequest alloc] initWithProviderID:credential.provider + requestConfiguration:requestConfiguration]; + [credential prepareVerifyAssertionRequest:request]; + request.accessToken = accessToken; + [FIRAuthBackend verifyAssertion:request + callback:^(FIRVerifyAssertionResponse *response, NSError *error) { + if (error) { + [self signOutIfTokenIsInvalidWithError:error]; + completeWithError(nil, error); + return; + } + FIRAdditionalUserInfo *additionalUserInfo = + [FIRAdditionalUserInfo userInfoWithVerifyAssertionResponse:response]; + FIROAuthCredential *updatedOAuthCredential = + [[FIROAuthCredential alloc] initWithVerifyAssertionResponse:response]; + FIRAuthDataResult *result = + [[FIRAuthDataResult alloc] initWithUser:self + additionalUserInfo:additionalUserInfo + credential:updatedOAuthCredential]; + // Update the new token and refresh user info again. + self->_tokenService = [[FIRSecureTokenService alloc] + initWithRequestConfiguration:requestConfiguration + accessToken:response.IDToken + accessTokenExpirationDate:response.approximateExpirationDate + refreshToken:response.refreshToken]; + [self internalGetTokenWithCallback:^(NSString *_Nullable accessToken, + NSError *_Nullable error) { + if (error) { + completeWithError(nil, error); + return; + } + FIRGetAccountInfoRequest *getAccountInfoRequest = + [[FIRGetAccountInfoRequest alloc] initWithAccessToken:accessToken + requestConfiguration:requestConfiguration]; + [FIRAuthBackend getAccountInfo:getAccountInfoRequest + callback:^(FIRGetAccountInfoResponse *_Nullable response, + NSError *_Nullable error) { + if (error) { + [self signOutIfTokenIsInvalidWithError:error]; + completeWithError(nil, error); + return; + } + self.anonymous = NO; + [self updateWithGetAccountInfoResponse:response]; + if (![self updateKeychain:&error]) { + completeWithError(nil, error); + return; + } + completeWithError(result, nil); + }]; + }]; + }]; + }]; + }]; + }); +} + +- (void)unlinkFromProvider:(NSString *)provider + completion:(nullable FIRAuthResultCallback)completion { + [_taskQueue enqueueTask:^(FIRAuthSerialTaskCompletionBlock _Nonnull complete) { + CallbackWithError completeAndCallbackWithError = ^(NSError *error) { + complete(); + callInMainThreadWithUserAndError(completion, self, error); + }; + [self internalGetTokenWithCallback:^(NSString *_Nullable accessToken, + NSError *_Nullable error) { + if (error) { + completeAndCallbackWithError(error); + return; + } + FIRAuthRequestConfiguration *requestConfiguration = self->_auth.requestConfiguration; + FIRSetAccountInfoRequest *setAccountInfoRequest = + [[FIRSetAccountInfoRequest alloc] initWithRequestConfiguration:requestConfiguration]; + setAccountInfoRequest.accessToken = accessToken; + + if ([provider isEqualToString:FIREmailAuthProviderID]) { + if (!self->_hasEmailPasswordCredential) { + completeAndCallbackWithError([FIRAuthErrorUtils noSuchProviderError]); + return; + } + setAccountInfoRequest.deleteAttributes = @[ FIRSetAccountInfoUserAttributePassword ]; + } else { + if (!self->_providerData[provider]) { + completeAndCallbackWithError([FIRAuthErrorUtils noSuchProviderError]); + return; + } + setAccountInfoRequest.deleteProviders = @[ provider ]; + } + + [FIRAuthBackend setAccountInfo:setAccountInfoRequest + callback:^(FIRSetAccountInfoResponse *_Nullable response, + NSError *_Nullable error) { + if (error) { + [self signOutIfTokenIsInvalidWithError:error]; + completeAndCallbackWithError(error); + return; + } + + // We can't just use the provider info objects in FIRSetAccountInfoResponse because they + // don't have localID and email fields. Remove the specific provider manually. + NSMutableDictionary *mutableProviderData = [self->_providerData mutableCopy]; + [mutableProviderData removeObjectForKey:provider]; + self->_providerData = [mutableProviderData copy]; + + if ([provider isEqualToString:FIREmailAuthProviderID]) { + self->_hasEmailPasswordCredential = NO; + } + #if TARGET_OS_IOS + // After successfully unlinking a phone auth provider, remove the phone number from the + // cached user info. + if ([provider isEqualToString:FIRPhoneAuthProviderID]) { + self->_phoneNumber = nil; + } + #endif + + if (response.IDToken && response.refreshToken) { + FIRSecureTokenService *tokenService = [[FIRSecureTokenService alloc] + initWithRequestConfiguration:requestConfiguration + accessToken:response.IDToken + accessTokenExpirationDate:response.approximateExpirationDate + refreshToken:response.refreshToken]; + [self setTokenService:tokenService callback:^(NSError *_Nullable error) { + completeAndCallbackWithError(error); + }]; + return; + } + if (![self updateKeychain:&error]) { + completeAndCallbackWithError(error); + return; + } + completeAndCallbackWithError(nil); + }]; + }]; + }]; +} + +- (void)sendEmailVerificationWithCompletion:(nullable FIRSendEmailVerificationCallback)completion { + [self sendEmailVerificationWithNullableActionCodeSettings:nil completion:completion]; +} + +- (void)sendEmailVerificationWithActionCodeSettings:(FIRActionCodeSettings *)actionCodeSettings + completion:(nullable FIRSendEmailVerificationCallback) + completion { + [self sendEmailVerificationWithNullableActionCodeSettings:actionCodeSettings + completion:completion]; +} + +/** @fn sendEmailVerificationWithNullableActionCodeSettings:completion: + @brief Initiates email verification for the user. + + @param actionCodeSettings Optionally, a @c FIRActionCodeSettings object containing settings + related to the handling action codes. + */ +- (void)sendEmailVerificationWithNullableActionCodeSettings:(nullable FIRActionCodeSettings *) + actionCodeSettings + completion: + (nullable FIRSendEmailVerificationCallback) + completion { + dispatch_async(FIRAuthGlobalWorkQueue(), ^{ + [self internalGetTokenWithCallback:^(NSString *_Nullable accessToken, + NSError *_Nullable error) { + if (error) { + callInMainThreadWithError(completion, error); + return; + } + FIRAuthRequestConfiguration *configuration = self->_auth.requestConfiguration; + FIRGetOOBConfirmationCodeRequest *request = + [FIRGetOOBConfirmationCodeRequest verifyEmailRequestWithAccessToken:accessToken + actionCodeSettings:actionCodeSettings + requestConfiguration:configuration]; + [FIRAuthBackend getOOBConfirmationCode:request + callback:^(FIRGetOOBConfirmationCodeResponse *_Nullable + response, + NSError *_Nullable error) { + [self signOutIfTokenIsInvalidWithError:error]; + callInMainThreadWithError(completion, error); + }]; + }]; + }); +} + +- (void)deleteWithCompletion:(nullable FIRUserProfileChangeCallback)completion { + dispatch_async(FIRAuthGlobalWorkQueue(), ^{ + [self internalGetTokenWithCallback:^(NSString *_Nullable accessToken, + NSError *_Nullable error) { + if (error) { + callInMainThreadWithError(completion, error); + return; + } + FIRDeleteAccountRequest *deleteUserRequest = + [[FIRDeleteAccountRequest alloc] initWitLocalID:self->_userID + accessToken:accessToken + requestConfiguration:self->_auth.requestConfiguration]; + [FIRAuthBackend deleteAccount:deleteUserRequest callback:^(NSError *_Nullable error) { + if (error) { + callInMainThreadWithError(completion, error); + return; + } + if (![self->_auth signOutByForceWithUserID:self->_userID error:&error]) { + callInMainThreadWithError(completion, error); + return; + } + callInMainThreadWithError(completion, error); + }]; + }]; + }); +} + +/** @fn signOutIfTokenIsInvalidWithError: + @brief Signs out this user if the user or the token is invalid. + @param error The error from the server. + */ +- (void)signOutIfTokenIsInvalidWithError:(nullable NSError *)error { + NSInteger errorCode = error.code; + if (errorCode == FIRAuthErrorCodeUserNotFound || + errorCode == FIRAuthErrorCodeUserDisabled || + errorCode == FIRAuthErrorCodeInvalidUserToken || + errorCode == FIRAuthErrorCodeUserTokenExpired) { + FIRLogNotice(kFIRLoggerAuth, @"I-AUT000016", + @"Invalid user token detected, user is automatically signed out."); + [_auth signOutByForceWithUserID:_userID error:NULL]; + } +} + +@end + +@implementation FIRUserProfileChangeRequest { + /** @var _user + @brief The user associated with the change request. + */ + FIRUser *_user; + + /** @var _displayName + @brief The display name value to set if @c _displayNameSet is YES. + */ + NSString *_displayName; + + /** @var _displayNameSet + @brief Indicates the display name should be part of the change request. + */ + BOOL _displayNameSet; + + /** @var _photoURL + @brief The photo URL value to set if @c _displayNameSet is YES. + */ + NSURL *_photoURL; + + /** @var _photoURLSet + @brief Indicates the photo URL should be part of the change request. + */ + BOOL _photoURLSet; + + /** @var _consumed + @brief Indicates the @c commitChangesWithCallback: method has already been invoked. + */ + BOOL _consumed; +} + +- (nullable instancetype)initWithUser:(FIRUser *)user { + self = [super init]; + if (self) { + _user = user; + } + return self; +} + +- (nullable NSString *)displayName { + return _displayName; +} + +- (void)setDisplayName:(nullable NSString *)displayName { + dispatch_sync(FIRAuthGlobalWorkQueue(), ^{ + if (self->_consumed) { + [NSException raise:NSInternalInconsistencyException + format:@"%@", + @"Invalid call to setDisplayName: after commitChangesWithCallback:."]; + return; + } + self->_displayNameSet = YES; + self->_displayName = [displayName copy]; + }); +} + +- (nullable NSURL *)photoURL { + return _photoURL; +} + +- (void)setPhotoURL:(nullable NSURL *)photoURL { + dispatch_sync(FIRAuthGlobalWorkQueue(), ^{ + if (self->_consumed) { + [NSException raise:NSInternalInconsistencyException + format:@"%@", + @"Invalid call to setPhotoURL: after commitChangesWithCallback:."]; + return; + } + self->_photoURLSet = YES; + self->_photoURL = [photoURL copy]; + }); +} + +/** @fn hasUpdates + @brief Indicates at least one field has a value which needs to be committed. + */ +- (BOOL)hasUpdates { + return _displayNameSet || _photoURLSet; +} + +- (void)commitChangesWithCompletion:(nullable FIRUserProfileChangeCallback)completion { + dispatch_sync(FIRAuthGlobalWorkQueue(), ^{ + if (self->_consumed) { + [NSException raise:NSInternalInconsistencyException + format:@"%@", + @"commitChangesWithCallback: should only be called once."]; + return; + } + self->_consumed = YES; + // Return fast if there is nothing to update: + if (![self hasUpdates]) { + callInMainThreadWithError(completion, nil); + return; + } + NSString *displayName = [self->_displayName copy]; + BOOL displayNameWasSet = self->_displayNameSet; + NSURL *photoURL = [self->_photoURL copy]; + BOOL photoURLWasSet = self->_photoURLSet; + [self->_user executeUserUpdateWithChanges:^(FIRGetAccountInfoResponseUser *user, + FIRSetAccountInfoRequest *request) { + if (photoURLWasSet) { + request.photoURL = photoURL; + } + if (displayNameWasSet) { + request.displayName = displayName; + } + } + callback:^(NSError *_Nullable error) { + if (error) { + callInMainThreadWithError(completion, error); + return; + } + if (displayNameWasSet) { + [self->_user setDisplayName:displayName]; + } + if (photoURLWasSet) { + [self->_user setPhotoURL:photoURL]; + } + if (![self->_user updateKeychain:&error]) { + callInMainThreadWithError(completion, error); + return; + } + callInMainThreadWithError(completion, nil); + }]; + }); +} + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/User/FIRUserInfoImpl.h b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/User/FIRUserInfoImpl.h new file mode 100644 index 0000000..0022a68 --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/User/FIRUserInfoImpl.h @@ -0,0 +1,61 @@ +/* + * 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 + +#import "FIRUserInfo.h" + +@class FIRGetAccountInfoResponseProviderUserInfo; + +NS_ASSUME_NONNULL_BEGIN + +@interface FIRUserInfoImpl : NSObject + +/** @fn userInfoWithGetAccountInfoResponseProviderUserInfo: + @brief A convenience factory method for constructing a @c FIRUserInfo instance from data + returned by the getAccountInfo endpoint. + @param providerUserInfo Data returned by the getAccountInfo endpoint. + @return A new instance of @c FIRUserInfo using data from the getAccountInfo endpoint. + */ ++ (nullable instancetype)userInfoWithGetAccountInfoResponseProviderUserInfo: + (FIRGetAccountInfoResponseProviderUserInfo *)providerUserInfo; + +/** @fn init + @brief This class should not be initialized manually. + @see FIRUser.providerData + */ +- (instancetype)init NS_UNAVAILABLE; + +/** @fn initWithProviderID:userID:displayName:photoURL:email: + @brief Designated initializer. + @param providerID The provider identifier. + @param userID The unique user ID for the user (the value of the @c uid field in the token.) + @param displayName The name of the user. + @param photoURL The URL of the user's profile photo. + @param email The user's email address. + @param phoneNumber The user's phone number. + */ +- (nullable instancetype)initWithProviderID:(NSString *)providerID + userID:(NSString *)userID + displayName:(nullable NSString *)displayName + photoURL:(nullable NSURL *)photoURL + email:(nullable NSString *)email + phoneNumber:(nullable NSString *)phoneNumber + NS_DESIGNATED_INITIALIZER; + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/User/FIRUserInfoImpl.m b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/User/FIRUserInfoImpl.m new file mode 100644 index 0000000..2e804ab --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/User/FIRUserInfoImpl.m @@ -0,0 +1,131 @@ +/* + * 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 "FIRUserInfoImpl.h" + +#import "FIRGetAccountInfoResponse.h" + +NS_ASSUME_NONNULL_BEGIN + +/** @var kProviderIDCodingKey + @brief The key used to encode the providerID property for NSSecureCoding. + */ +static NSString *const kProviderIDCodingKey = @"providerID"; + +/** @var kUserIDCodingKey + @brief The key used to encode the userID property for NSSecureCoding. + */ +static NSString *const kUserIDCodingKey = @"userID"; + +/** @var kDisplayNameCodingKey + @brief The key used to encode the displayName property for NSSecureCoding. + */ +static NSString *const kDisplayNameCodingKey = @"displayName"; + +/** @var kProfileURLCodingKey + @brief The key used to encode the profileURL property for NSSecureCoding. + */ +static NSString *const kProfileURLCodingKey = @"profileURL"; + +/** @var kPhotoURLCodingKey + @brief The key used to encode the photoURL property for NSSecureCoding. + */ +static NSString *const kPhotoURLCodingKey = @"photoURL"; + +/** @var kEmailCodingKey + @brief The key used to encode the email property for NSSecureCoding. + */ +static NSString *const kEmailCodingKey = @"email"; + +/** @var kPhoneNumberCodingKey + @brief The key used to encode the phoneNumber property for NSSecureCoding. + */ +static NSString *const kPhoneNumberCodingKey = @"phoneNumber"; + +@implementation FIRUserInfoImpl + +@synthesize providerID = _providerID; +@synthesize uid = _userID; +@synthesize displayName = _displayName; +@synthesize photoURL = _photoURL; +@synthesize email = _email; +@synthesize phoneNumber = _phoneNumber; + ++ (nullable instancetype)userInfoWithGetAccountInfoResponseProviderUserInfo: + (FIRGetAccountInfoResponseProviderUserInfo *)providerUserInfo { + return [[self alloc] initWithProviderID:providerUserInfo.providerID + userID:providerUserInfo.federatedID + displayName:providerUserInfo.displayName + photoURL:providerUserInfo.photoURL + email:providerUserInfo.email + phoneNumber:providerUserInfo.phoneNumber]; +} + +- (nullable instancetype)initWithProviderID:(NSString *)providerID + userID:(NSString *)userID + displayName:(nullable NSString *)displayName + photoURL:(nullable NSURL *)photoURL + email:(nullable NSString *)email + phoneNumber:(nullable NSString *)phoneNumber { + self = [super init]; + if (self) { + _providerID = [providerID copy]; + _userID = [userID copy]; + _displayName = [displayName copy]; + _photoURL = [photoURL copy]; + _email = [email copy]; + _phoneNumber = [phoneNumber copy]; + } + return self; +} + +#pragma mark - NSSecureCoding + ++ (BOOL)supportsSecureCoding { + return YES; +} + +- (nullable instancetype)initWithCoder:(NSCoder *)aDecoder { + NSString *providerID = + [aDecoder decodeObjectOfClass:[NSString class] forKey:kProviderIDCodingKey]; + NSString *userID = [aDecoder decodeObjectOfClass:[NSString class] forKey:kUserIDCodingKey]; + NSString *displayName = + [aDecoder decodeObjectOfClass:[NSString class] forKey:kDisplayNameCodingKey]; + NSURL *photoURL = [aDecoder decodeObjectOfClass:[NSURL class] forKey:kPhotoURLCodingKey]; + NSString *email = [aDecoder decodeObjectOfClass:[NSString class] forKey:kEmailCodingKey]; + NSString *phoneNumber = + [aDecoder decodeObjectOfClass:[NSString class] forKey:kPhoneNumberCodingKey]; + + return [self initWithProviderID:providerID + userID:userID + displayName:displayName + photoURL:photoURL + email:email + phoneNumber:phoneNumber]; +} + +- (void)encodeWithCoder:(NSCoder *)aCoder { + [aCoder encodeObject:_providerID forKey:kProviderIDCodingKey]; + [aCoder encodeObject:_userID forKey:kUserIDCodingKey]; + [aCoder encodeObject:_displayName forKey:kDisplayNameCodingKey]; + [aCoder encodeObject:_photoURL forKey:kPhotoURLCodingKey]; + [aCoder encodeObject:_email forKey:kEmailCodingKey]; + [aCoder encodeObject:_phoneNumber forKey:kPhoneNumberCodingKey]; +} + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/User/FIRUserMetadata.m b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/User/FIRUserMetadata.m new file mode 100644 index 0000000..8fe6509 --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/User/FIRUserMetadata.m @@ -0,0 +1,64 @@ +/* + * 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 "FIRUserMetadata_Internal.h" + +NS_ASSUME_NONNULL_BEGIN + +@implementation FIRUserMetadata + +/** @var kCreationDateCodingKey + @brief The key used to encode the creationDate property for NSSecureCoding. + */ +static NSString *const kCreationDateCodingKey = @"creationDate"; + +/** @var kLastSignInDateCodingKey + @brief The key used to encode the lastSignInDate property for NSSecureCoding. + */ +static NSString *const kLastSignInDateCodingKey = @"lastSignInDate"; + +- (instancetype)initWithCreationDate:(nullable NSDate *)creationDate + lastSignInDate:(nullable NSDate *)lastSignInDate { + self = [super init]; + if (self) { + _creationDate = [creationDate copy]; + _lastSignInDate = [lastSignInDate copy]; + } + return self; +} + +#pragma mark - NSSecureCoding + ++ (BOOL)supportsSecureCoding { + return YES; +} + +- (nullable instancetype)initWithCoder:(NSCoder *)aDecoder { + NSDate *creationDate = + [aDecoder decodeObjectOfClass:[NSDate class] forKey:kCreationDateCodingKey]; + NSDate *lastSignInDate = + [aDecoder decodeObjectOfClass:[NSDate class] forKey:kLastSignInDateCodingKey]; + return [self initWithCreationDate:creationDate lastSignInDate:lastSignInDate]; +} + +- (void)encodeWithCoder:(NSCoder *)aCoder { + [aCoder encodeObject:_creationDate forKey:kCreationDateCodingKey]; + [aCoder encodeObject:_lastSignInDate forKey:kLastSignInDateCodingKey]; +} + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/User/FIRUserMetadata_Internal.h b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/User/FIRUserMetadata_Internal.h new file mode 100644 index 0000000..0b01a03 --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/User/FIRUserMetadata_Internal.h @@ -0,0 +1,38 @@ +/* + * 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 + +#import "FIRUserMetadata.h" + +NS_ASSUME_NONNULL_BEGIN + +/** @extension FIRUserMetadata + @brief An internal class used to expose internal methods of FIRUserMetadata. + */ +@interface FIRUserMetadata () + +/** @fn initWithCreationDate:lastSignInDate: + @brief Designated initializer. + @param creationDate The creation date of the corresponding user. + @param lastSignInDate The date of the last recorded sign-in of the corresponding user. + */ +- (instancetype)initWithCreationDate:(nullable NSDate *)creationDate + lastSignInDate:(nullable NSDate *)lastSignInDate NS_DESIGNATED_INITIALIZER; + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/User/FIRUser_Internal.h b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/User/FIRUser_Internal.h new file mode 100644 index 0000000..a049dde --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/User/FIRUser_Internal.h @@ -0,0 +1,108 @@ +/* + * 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 "FIRUser.h" + +@class FIRAuth; +@class FIRAuthRequestConfiguration; + +NS_ASSUME_NONNULL_BEGIN + +/** @typedef FIRRetrieveUserCallback + @brief The type of block that is invoked when the construction of a user succeeds or fails. + @param user The user that was constructed, or nil if user construction failed. + @param error The error which occurred, or nil if the request was successful. + */ +typedef void(^FIRRetrieveUserCallback)(FIRUser *_Nullable user, NSError *_Nullable error); + +/** @typedef FIRVerifyBeforeUpdateEmailCallback + @brief The type of block called when a request to verify before update email has finished. + @param error Optionally; the error which occurred - or nil if the request was successful. + */ +typedef void (^FIRVerifyBeforeUpdateEmailCallback)(NSError *_Nullable error); + +@interface FIRUser () + +/** @property rawAccessToken + @brief The cached access token. + @remarks This method is specifically for providing the access token to internal clients during + deserialization and sign-in events, and should not be used to retrieve the access token by + anyone else. + */ +@property(nonatomic, copy, readonly) NSString *rawAccessToken; + +/** @property auth + @brief A weak reference to a FIRAuth instance associated with this instance. + */ +@property(nonatomic, weak) FIRAuth *auth; + +/** @property auth + @brief A strong reference to a requestConfiguration instance associated with this user instance. + */ +@property(nonatomic, strong) FIRAuthRequestConfiguration *requestConfiguration; + +/** @var accessTokenExpirationDate + @brief The expiration date of the cached access token. + */ +@property(nonatomic, copy, readonly) NSDate *accessTokenExpirationDate; + +/** @fn retrieveUserWithAuth:accessToken:accessTokenExpirationDate:refreshToken:callback: + @brief Constructs a user with Secure Token Service tokens, and obtains user details from the + getAccountInfo endpoint. + @param auth The associated FIRAuth instance. + @param accessToken The Secure Token Service access token. + @param accessTokenExpirationDate The approximate expiration date of the access token. + @param refreshToken The Secure Token Service refresh token. + @param anonymous Whether or not the user is anonymous. + @param callback A block which is invoked when the construction succeeds or fails. Invoked + asynchronously on the auth global work queue in the future. + */ ++ (void)retrieveUserWithAuth:(FIRAuth *)auth + accessToken:(nullable NSString *)accessToken + accessTokenExpirationDate:(nullable NSDate *)accessTokenExpirationDate + refreshToken:(nullable NSString *)refreshToken + anonymous:(BOOL)anonymous + callback:(FIRRetrieveUserCallback)callback; + +/** @fn internalGetTokenForcingRefresh:callback: + @brief Retrieves the Firebase authentication token, possibly refreshing it if it has expired. + @param forceRefresh Forces a token refresh. Useful if the token becomes invalid for some reason + other than an expiration. + @param callback The block to invoke when the token is available. Invoked asynchronously on the + global work thread in the future. + */ +- (void)internalGetTokenForcingRefresh:(BOOL)forceRefresh + callback:(nonnull FIRAuthTokenCallback)callback; + + +/** @fn internalVerifyBeforeUpdateEmailWithNewEmail:actionCodeSettings:callback: + @brief Sends a verification email to newEmail. Upon redemption of the link in the email, + this user's email will be changed to newEmail and that email will be marked verified. + @param newEmail the user's new email. + @param actionCodeSettings the optional FIRActionCodeSettings object to allow linking back + to your app in the email. + @param completion The block to invoke when the call succeeds or fails. Invoked asynchronously on + the global work thread in the future. + + */ +- (void)internalVerifyBeforeUpdateEmailWithNewEmail:(NSString *)newEmail + actionCodeSettings:(nullable FIRActionCodeSettings *)actionCodeSettings + completion:(FIRVerifyBeforeUpdateEmailCallback)completion; + + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Utilities/FIRAuthDefaultUIDelegate.h b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Utilities/FIRAuthDefaultUIDelegate.h new file mode 100644 index 0000000..03cadf7 --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Utilities/FIRAuthDefaultUIDelegate.h @@ -0,0 +1,43 @@ +/* + * 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 + +#import "FIRAuthUIDelegate.h" + +NS_ASSUME_NONNULL_BEGIN + +/** @class FIRAuthDefaultUIDelegate + @brief Class responsible for providing a default FIRAuthUIDelegte. + @remarks This class should be used in the case that a UIDelegate was expected and necessary to + continue a given flow, but none was provided. + */ +@interface FIRAuthDefaultUIDelegate : NSObject + +/** @fn defaultUIDelegate + @brief Unavailable. Please use @c +defaultUIDelegate: + */ +- (instancetype)init NS_UNAVAILABLE; + +/** @fn defaultUIDelegate + @brief Returns a default FIRAuthUIDelegate object. + @return The default FIRAuthUIDelegate object. + */ ++ (id)defaultUIDelegate; + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Utilities/FIRAuthDefaultUIDelegate.m b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Utilities/FIRAuthDefaultUIDelegate.m new file mode 100644 index 0000000..f37dbe4 --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Utilities/FIRAuthDefaultUIDelegate.m @@ -0,0 +1,93 @@ +/* + * 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 "FIRAuthDefaultUIDelegate.h" + +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface FIRAuthDefaultUIDelegate () + +/** @fn initWithViewController: + @brief Initializes the instance with a view controller. + @param viewController The view controller as the presenting view controller in @c + FIRAuthUIDelegate. + @return The initialized instance. + */ +- (instancetype)initWithViewController:(nullable UIViewController *)viewController NS_DESIGNATED_INITIALIZER; + +@end + +@implementation FIRAuthDefaultUIDelegate { + /** @var _viewController + @brief The presenting view controller. + */ + UIViewController *_viewController; +} + +- (instancetype)initWithViewController:(nullable UIViewController *)viewController { + self = [super init]; + if (self) { + _viewController = viewController; + } + return self; +} + +- (void)presentViewController:(UIViewController *)viewControllerToPresent + animated:(BOOL)flag + completion:(nullable void (^)(void))completion { + [_viewController presentViewController:viewControllerToPresent + animated:flag + completion:completion]; +} + +- (void)dismissViewControllerAnimated:(BOOL)flag completion:(nullable void (^)(void))completion { + [_viewController dismissViewControllerAnimated:flag completion:completion]; +} + ++ (id)defaultUIDelegate { + // iOS App extensions should not call [UIApplication sharedApplication], even if UIApplication + // responds to it. + static Class applicationClass = nil; + if (![GULAppEnvironmentUtil isAppExtension]) { + Class cls = NSClassFromString(@"UIApplication"); + if (cls && [cls respondsToSelector:NSSelectorFromString(@"sharedApplication")]) { + applicationClass = cls; + } + } + UIApplication *application = [applicationClass sharedApplication]; + UIViewController *topViewController = application.keyWindow.rootViewController; + while (true){ + if (topViewController.presentedViewController) { + topViewController = topViewController.presentedViewController; + } else if ([topViewController isKindOfClass:[UINavigationController class]]) { + UINavigationController *nav = (UINavigationController *)topViewController; + topViewController = nav.topViewController; + } else if ([topViewController isKindOfClass:[UITabBarController class]]) { + UITabBarController *tab = (UITabBarController *)topViewController; + topViewController = tab.selectedViewController; + } else { + break; + } + } + return [[FIRAuthDefaultUIDelegate alloc] initWithViewController:topViewController]; +} + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Utilities/FIRAuthErrorUtils.h b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Utilities/FIRAuthErrorUtils.h new file mode 100644 index 0000000..1357f10 --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Utilities/FIRAuthErrorUtils.h @@ -0,0 +1,561 @@ +/* + * 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 + +@class FIRAuthCredential; + +NS_ASSUME_NONNULL_BEGIN + +/** @class FIRAuthErrorUtils + @brief Utility class used to construct @c NSError instances. + */ +@interface FIRAuthErrorUtils : NSObject + +/** @fn RPCRequestEncodingErrorWithUnderlyingError + @brief Constructs an @c NSError with the @c FIRAuthInternalErrorCodeRPCRequestEncodingError + code and a populated @c NSUnderlyingErrorKey in the @c NSError.userInfo dictionary. + @param underlyingError The value of the @c NSUnderlyingErrorKey key. + @remarks This error is used when an @c FIRAuthRPCRequest.unencodedHTTPRequestBodyWithError: + invocation returns an error. The error returned is wrapped in this internal error code. + */ ++ (NSError *)RPCRequestEncodingErrorWithUnderlyingError:(NSError *)underlyingError; + +/** @fn JSONSerializationErrorForUnencodableType + @brief Constructs an @c NSError with the @c FIRAuthErrorCodeJSONSerializationError code. + @remarks This error is used when an @c NSJSONSerialization.isValidJSONObject: check fails, not + for when an error is returned from @c NSJSONSerialization.dataWithJSONObject:options:error:. + */ ++ (NSError *)JSONSerializationErrorForUnencodableType; + +/** @fn JSONSerializationErrorWithUnderlyingError: + @brief Constructs an @c NSError with the @c FIRAuthErrorCodeJSONSerializationError code, and the + @c underlyingError as the @c NSUnderlyingErrorKey value in the @c NSError.userInfo + dictionary. + @param underlyingError The value of the @c NSUnderlyingErrorKey key. + @remarks This error is used when an invocation of + @c NSJSONSerialization.dataWithJSONObject:options:error: returns an error. + */ ++ (NSError *)JSONSerializationErrorWithUnderlyingError:(NSError *)underlyingError; + +/** @fn networkErrorWithUnderlyingError: + @brief Constructs an @c NSError with the @c FIRAuthErrorCodeNetworkError code, and the + @c underlyingError as the @c NSUnderlyingErrorKey value in the @c NSError.userInfo + dictionary. + @param underlyingError The value of the @c NSUnderlyingErrorKey key. Should be the error from + GTM. + @remarks This error is used when a network request results in an error, and no body data was + returned. + */ ++ (NSError *)networkErrorWithUnderlyingError:(NSError *)underlyingError; + +/** @fn unexpectedErrorResponseWithUnderlyingError: + @brief Constructs an @c NSError with the @c FIRAuthErrorCodeNetworkError code, and the + @c underlyingError as the @c NSUnderlyingErrorKey value. + @param data The value of the @c FIRAuthErrorUserInfoDataKey key in the @c NSError.userInfo + dictionary. + @param underlyingError The value of the @c NSUnderlyingErrorKey key in the @c NSError.userInfo + dictionary. + @remarks This error is used when a network request results in an error, and unserializable body + data was returned. + */ ++ (NSError *)unexpectedErrorResponseWithData:(NSData *)data + underlyingError:(NSError *)underlyingError; + +/** @fn unexpectedErrorResponseWithDeserializedResponse: + @brief Constructs an @c NSError with the @c FIRAuthInternalErrorCodeUnexpectedErrorResponse + code, and a populated @c FIRAuthErrorUserInfoDeserializedResponseKey key in the + @c NSError.userInfo dictionary. + @param deserializedResponse The value of the @c FIRAuthErrorUserInfoDeserializedResponseKey key. + @remarks This error is used when a network request results in an error, and the body data was + deserializable as JSON, but couldn't be decoded as an error. + */ ++ (NSError *)unexpectedErrorResponseWithDeserializedResponse:(id)deserializedResponse; + +/** @fn malformedJWTErrorWithToken:underlyingError: + @brief Constructs an @c NSError with the code set to @c FIRAuthErrorCodeMalformedJWT and + populates the userInfo dictionary with an error message, the bad token, and an underlying + error that may have occurred when parsing. + @param token The token that failed to parse. + @param underlyingError The error that caused this error. If this parameter is nil, the + NSUnderlyingErrorKey value will not be set. + @remarks This error is returned when JWT parsing fails. + @returns An @c FIRAuthErrorCodeMalformedJWT error wrapping an underlying error, if available. + */ ++ (NSError *)malformedJWTErrorWithToken:(NSString *)token + underlyingError:(NSError *_Nullable)underlyingError; + +/** @fn unexpectedResponseWithData:underlyingError: + @brief Constructs an @c NSError with the @c FIRAuthInternalErrorCodeUnexpectedResponse + code, and a populated @c FIRAuthErrorUserInfoDataKey key in the @c NSError.userInfo + dictionary. + @param data The value of the @c FIRAuthErrorUserInfoDataKey key in the @c NSError.userInfo + dictionary. + @param underlyingError The value of the @c NSUnderlyingErrorKey key in the @c NSError.userInfo + dictionary. + @remarks This error is used when a network request is apparently successful, but the body data + couldn't be deserialized as JSON. + */ ++ (NSError *)unexpectedResponseWithData:(NSData *)data + underlyingError:(NSError *)underlyingError;; + +/** @fn unexpectedResponseWithDeserializedResponse: + @brief Constructs an @c NSError with the @c FIRAuthInternalErrorCodeUnexpectedResponse + code, and a populated @c FIRAuthErrorUserInfoDeserializedResponseKey key in the + @c NSError.userInfo dictionary. + @param deserializedResponse The value of the @c FIRAuthErrorUserInfoDeserializedResponseKey key. + @remarks This error is used when a network request is apparently successful, the body data was + successfully deserialized as JSON, but the JSON wasn't a dictionary. + */ ++ (NSError *)unexpectedResponseWithDeserializedResponse:(id)deserializedResponse; + +/** @fn unexpectedResponseWithDeserializedResponse:underlyingError: + @brief Constructs an @c NSError with the @c FIRAuthInternalErrorCodeUnexpectedResponse + code, and populated @c FIRAuthErrorUserInfoDeserializedResponseKey and + @c NSUnderlyingErrorKey keys in the @c NSError.userInfo dictionary. + @param deserializedResponse The value of the @c FIRAuthErrorUserInfoDeserializedResponseKey key. + @param underlyingError The value of the @c NSUnderlyingErrorKey key. + @remarks This error is used when a network request was apparently successful, the body data was + successfully deserialized as JSON, but the data type of the response was unexpected. + */ ++ (NSError *)unexpectedResponseWithDeserializedResponse:(nullable id)deserializedResponse + underlyingError:(NSError *)underlyingError; + +/** @fn RPCResponseDecodingErrorWithDeserializedResponse:underlyingError: + @brief Constructs an @c NSError with the @c FIRAuthInternalErrorCodeRPCResponseDecodingError + code, and populated @c FIRAuthErrorUserInfoDeserializedResponseKey and + @c NSUnderlyingErrorKey keys in the @c NSError.userInfo dictionary. + @param deserializedResponse The value of the @c FIRAuthErrorUserInfoDeserializedResponseKey key. + @param underlyingError The value of the @c NSUnderlyingErrorKey key. + @remarks This error is used when an invocation of @c FIRAuthRPCResponse.setWithDictionary:error: + resulted in an error. + */ ++ (NSError *)RPCResponseDecodingErrorWithDeserializedResponse:(id)deserializedResponse + underlyingError:(NSError *)underlyingError; + +/** @fn emailAlreadyInUseErrorWithEmail: + @brief Constructs an @c NSError with the @c FIRAuthErrorCodeEmailExists code. + @param email The email address that is already in use. + @return The NSError instance associated with the given FIRAuthError. + */ ++ (NSError *)emailAlreadyInUseErrorWithEmail:(nullable NSString *)email; + +/** @fn userDisabledErrorWithMessageWithMessage: + @brief Constructs an @c NSError with the @c FIRAuthErrorCodeUserDisabled code. + @param message Error message from the backend, if any. + @return The NSError instance associated with the given FIRAuthError. + */ ++ (NSError *)userDisabledErrorWithMessage:(nullable NSString *)message; + +/** @fn wrongPasswordErrorWithMessage: + @brief Constructs an @c NSError with the @c FIRAuthErrorCodeWrongPassword code. + @param message Error message from the backend, if any. + @return The NSError instance associated with the given FIRAuthError. + */ ++ (NSError *)wrongPasswordErrorWithMessage:(nullable NSString *)message; + +/** @fn tooManyRequestsErrorWithMessage: + @brief Constructs an @c NSError with the @c FIRAuthErrorCodeTooManyRequests Code. + @param message Error message from the backend, if any. + @return The NSError instance associated with the given FIRAuthError. + */ ++ (NSError *)tooManyRequestsErrorWithMessage:(nullable NSString *)message; + +/** @fn invalidCustomTokenErrorWithMessage: + @brief Constructs an @c NSError with the @c FIRAuthErrorCodeInvalidCustomToken code. + @param message Error message from the backend, if any. + @return The NSError instance associated with the given FIRAuthError. + */ ++ (NSError *)invalidCustomTokenErrorWithMessage:(nullable NSString *)message; + +/** @fn customTokenMistmatchErrorWithMessage: + @brief Constructs an @c NSError with the @c FIRAuthErrorCodeCustomTokenMismatch code. + @param message Error message from the backend, if any. + @return The NSError instance associated with the given FIRAuthError. + */ ++ (NSError *)customTokenMistmatchErrorWithMessage:(nullable NSString *)message; + +/** @fn invalidCredentialErrorWithMessage: + @brief Constructs an @c NSError with the @c FIRAuthErrorCodeInvalidCredential code. + @param message Error message from the backend, if any. + @return The NSError instance associated with the given FIRAuthError. + */ ++ (NSError *)invalidCredentialErrorWithMessage:(nullable NSString *)message; + +/** @fn requiresRecentLoginError + @brief Constructs an @c NSError with the @c FIRAuthErrorCodeRequiresRecentLogin code. + @param message Error message from the backend, if any. + @return The NSError instance associated with the given FIRAuthError. + */ ++ (NSError *)requiresRecentLoginErrorWithMessage:(nullable NSString *)message; + +/** @fn invalidUserTokenErrorWithMessage: + @brief Constructs an @c NSError with the @c FIRAuthErrorCodeInvalidUserToken code. + @param message Error message from the backend, if any. + @return The NSError instance associated with the given FIRAuthError. + */ ++ (NSError *)invalidUserTokenErrorWithMessage:(nullable NSString *)message; + +/** @fn invalidEmailErrorWithMessage: + @brief Constructs an @c NSError with the @c FIRAuthErrorCodeInvalidEmail code. + @param message Error message from the backend, if any. + @return The NSError instance associated with the given FIRAuthError. + */ ++ (NSError *)invalidEmailErrorWithMessage:(nullable NSString *)message; + +/** @fn accountExistsWithDifferentCredentialErrorWithEmail: + @brief Constructs an @c NSError with the @c FIRAuthErrorAccountExistsWithDifferentCredential + code. + @param email The email address that is already associated with an existing account + @param updatedCredential The updated credential for the existing account + @return The NSError instance associated with the given FIRAuthError. + */ ++ (NSError *)accountExistsWithDifferentCredentialErrorWithEmail:(nullable NSString *)email + updatedCredential:(nullable FIRAuthCredential *)updatedCredential; + +/** @fn providerAlreadyLinkedErrorWithMessage: + @brief Constructs an @c NSError with the @c FIRAuthErrorCodeProviderAlreadyLinked code. + @return The NSError instance associated with the given FIRAuthError. + */ ++ (NSError *)providerAlreadyLinkedError; + +/** @fn noSuchProviderError + @brief Constructs an @c NSError with the @c FIRAuthErrorCodeNoSuchProvider code. + @return The NSError instance associated with the given FIRAuthError. + */ ++ (NSError *)noSuchProviderError; + +/** @fn userTokenExpiredErrorWithMessage: + @brief Constructs an @c NSError with the @c FIRAuthErrorCodeUserTokenExpired code. + @param message Error message from the backend, if any. + @return The NSError instance associated with the given FIRAuthError. + */ ++ (NSError *)userTokenExpiredErrorWithMessage:(nullable NSString *)message; + +/** @fn userNotFoundErrorWithMessage: + @brief Constructs an @c NSError with the @c FIRAuthErrorCodeUserNotFound code. + @param message Error message from the backend, if any. + @return The NSError instance associated with the given FIRAuthError. + */ ++ (NSError *)userNotFoundErrorWithMessage:(nullable NSString *)message; + +/** @fn invalidLocalAPIKeyErrorWithMessage: + @brief Constructs an @c NSError with the @c FIRAuthErrorCodeInvalidAPIKey code. + @return The NSError instance associated with the given FIRAuthError. + */ ++ (NSError *)invalidAPIKeyError; + +/** @fn userMismatchError + @brief Constructs an @c NSError with the @c FIRAuthErrorCodeUserMismatch code. + @return The NSError instance associated with the given FIRAuthError. + */ ++ (NSError *)userMismatchError; + +/** @fn credentialAlreadyInUseErrorWithMessage:email: + @brief Constructs an @c NSError with the @c FIRAuthErrorCodeCredentialAlreadyInUse code. + @param message Error message from the backend, if any. + @param credential Auth credential to be added to the Error User Info dictionary. + @param email Email to be added to the Error User Info dictionary. + @return The NSError instance associated with the given FIRAuthError. + */ ++ (NSError *)credentialAlreadyInUseErrorWithMessage:(nullable NSString *)message + credential:(nullable FIRAuthCredential *)credential + email:(nullable NSString *)email; +/** @fn operationNotAllowedErrorWithMessage: + @brief Constructs an @c NSError with the @c FIRAuthErrorCodeOperationNotAllowed code. + @param message Error message from the backend, if any. + @return The NSError instance associated with the given FIRAuthError. + */ ++ (NSError *)operationNotAllowedErrorWithMessage:(nullable NSString *)message; + +/** @fn weakPasswordErrorWithServerResponseReason: + @brief Constructs an @c NSError with the @c FIRAuthErrorCodeWeakPassword code. + @param serverResponseReason A more detailed explanation string from server response. + @return The NSError instance associated with the given FIRAuthError. + */ ++ (NSError *)weakPasswordErrorWithServerResponseReason:(nullable NSString *)serverResponseReason; + +/** @fn appNotAuthorizedError + @brief Constructs an @c NSError with the @c FIRAuthErrorCodeAppNotAuthorized code. + @return The NSError instance associated with the given FIRAuthError. + */ ++ (NSError *)appNotAuthorizedError; + +/** @fn expiredActionCodeErrorWithMessage: + @brief Constructs an @c NSError with the @c FIRAuthErrorCodeExpiredActionCode code. + @param message Error message from the backend, if any. + @return The NSError instance associated with the given FIRAuthError. + */ ++ (NSError *)expiredActionCodeErrorWithMessage:(nullable NSString *)message; + +/** @fn invalidActionCodeErrorWithMessage: + @brief Constructs an @c NSError with the @c FIRAuthErrorCodeInvalidActionCode code. + @param message Error message from the backend, if any. + @return The NSError instance associated with the given FIRAuthError. + */ ++ (NSError *)invalidActionCodeErrorWithMessage:(nullable NSString *)message; + +/** @fn invalidMessagePayloadError: + @brief Constructs an @c NSError with the @c FIRAuthErrorCodeInvalidMessagePayload code. + @param message Error message from the backend, if any. + @return The NSError instance associated with the given FIRAuthError. + */ ++ (NSError *)invalidMessagePayloadErrorWithMessage:(nullable NSString *)message; + +/** @fn invalidSenderErrorWithMessage: + @brief Constructs an @c NSError with the @c FIRAuthErrorCodeInvalidSender code. + @param message Error message from the backend, if any. + @return The NSError instance associated with the given FIRAuthError. + */ ++ (NSError *)invalidSenderErrorWithMessage:(nullable NSString *)message; + +/** @fn invalidRecipientEmailError: + @brief Constructs an @c NSError with the @c FIRAuthErrorCodeInvalidRecipientEmail code. + @param message Error message from the backend, if any. + @return The NSError instance associated with the given FIRAuthError. + */ ++ (NSError *)invalidRecipientEmailErrorWithMessage:(nullable NSString *)message; + +/** @fn missingIosBundleIDErrorWithMessage: + @brief Constructs an @c NSError with the @c FIRAuthErrorCodeMissingIosBundleID code. + @param message Error message from the backend, if any. + @return The NSError instance associated with the given FIRAuthError. + */ ++ (NSError *)missingIosBundleIDErrorWithMessage:(nullable NSString *)message; + +/** @fn missingAndroidPackageNameErrorWithMessage: + @brief Constructs an @c NSError with the @c FIRAuthErrorCodeMissingAndroidPackageName code. + @param message Error message from the backend, if any. + @return The NSError instance associated with the given FIRAuthError. + */ ++ (NSError *)missingAndroidPackageNameErrorWithMessage:(nullable NSString *)message; + +/** @fn unauthorizedDomainErrorWithMessage: + @brief Constructs an @c NSError with the @c FIRAuthErrorCodeUnauthorizedDomain code. + @param message Error message from the backend, if any. + @return The NSError instance associated with the given FIRAuthError. + */ ++ (NSError *)unauthorizedDomainErrorWithMessage:(nullable NSString *)message; + +/** @fn invalidContinueURIErrorWithMessage: + @brief Constructs an @c NSError with the @c FIRAuthErrorCodeInvalidContinueURI code. + @param message Error message from the backend, if any. + @return The NSError instance associated with the given FIRAuthError. + */ ++ (NSError *)invalidContinueURIErrorWithMessage:(nullable NSString *)message; + +/** @fn missingContinueURIErrorWithMessage: + @brief Constructs an @c NSError with the @c FIRAuthErrorCodeMissingContinueURI code. + @param message Error message from the backend, if any. + @return The NSError instance associated with the given FIRAuthError. + */ ++ (NSError *)missingContinueURIErrorWithMessage:(nullable NSString *)message; + +/** @fn missingEmailErrorWithMessage + @brief Constructs an @c NSError with the @c FIRAuthErrorCodeMissingEmail code. + @param message Error message from the backend, if any. + @return The NSError instance associated with the given FIRAuthError. + */ ++ (NSError *)missingEmailErrorWithMessage:(nullable NSString *)message; + +/** @fn missingPhoneNumberErrorWithMessage: + @brief Constructs an @c NSError with the @c FIRAuthErrorCodeMissingPhoneNumber code. + @param message Error message from the backend, if any. + @return The NSError instance associated with the given FIRAuthError. + */ ++ (NSError *)missingPhoneNumberErrorWithMessage:(nullable NSString *)message; + +/** @fn invalidPhoneNumberErrorWithMessage: + @brief Constructs an @c NSError with the @c FIRAuthErrorCodeInvalidPhoneNumber code. + @param message Error message from the backend, if any. + @return The NSError instance associated with the given FIRAuthError. + */ ++ (NSError *)invalidPhoneNumberErrorWithMessage:(nullable NSString *)message; + +/** @fn missingVerificationCodeErrorWithMessage: + @brief Constructs an @c NSError with the @c FIRAuthErrorCodeMissingVerificationCode code. + @param message Error message from the backend, if any. + @return The NSError instance associated with the given FIRAuthError. + */ ++ (NSError *)missingVerificationCodeErrorWithMessage:(nullable NSString *)message; + +/** @fn invalidVerificationCodeErrorWithMessage: + @brief Constructs an @c NSError with the @c FIRAuthErrorCodeInvalidVerificationCode code. + @param message Error message from the backend, if any. + @return The NSError instance associated with the given FIRAuthError. + */ ++ (NSError *)invalidVerificationCodeErrorWithMessage:(nullable NSString *)message; + +/** @fn missingVerificationIDErrorWithMessage: + @brief Constructs an @c NSError with the @c FIRAuthErrorCodeMissingVerificationID code. + @param message Error message from the backend, if any. + @return The NSError instance associated with the given FIRAuthError. + */ ++ (NSError *)missingVerificationIDErrorWithMessage:(nullable NSString *)message; + +/** @fn invalidVerificationIDErrorWithMessage: + @brief Constructs an @c NSError with the @c FIRAuthErrorCodeInvalidVerificationID code. + @param message Error message from the backend, if any. + @return The NSError instance associated with the given FIRAuthError. + */ ++ (NSError *)invalidVerificationIDErrorWithMessage:(nullable NSString *)message; + +/** @fn sessionExpiredErrorWithMessage: + @brief Constructs an @c NSError with the @c FIRAuthErrorCodeSessionExpired code. + @param message Error message from the backend, if any. + @return The NSError instance associated with the given FIRAuthError. + */ ++ (NSError *)sessionExpiredErrorWithMessage:(nullable NSString *)message; + +/** @fn missingAppCredentialWithMessage: + @brief Constructs an @c NSError with the @c FIRAuthErrorMissingCredential code. + @param message Error message from the backend, if any. + @return The NSError instance associated with the given FIRAuthError. + */ ++ (NSError *)missingAppCredentialWithMessage:(nullable NSString *)message; + +/** @fn invalidAppCredentialWithMessage: + @brief Constructs an @c NSError with the @c FIRAuthErrorInvalidCredential code. + @param message Error message from the backend, if any. + @return The NSError instance associated with the given FIRAuthError. + */ ++ (NSError *)invalidAppCredentialWithMessage:(nullable NSString *)message; + +/** @fn quotaExceededErrorWithMessage: + @brief Constructs an @c NSError with the @c FIRAuthErrorCodeQuotaExceeded code. + @param message Error message from the backend, if any. + @return The NSError instance associated with the given FIRAuthError. + */ ++ (NSError *)quotaExceededErrorWithMessage:(nullable NSString *)message; + +/** @fn missingAppTokenErrorWithUnderlyingError + @brief Constructs an @c NSError with the @c FIRAuthErrorCodeMissingAppToken code. + @param underlyingError The underlying error, if any. + @return The NSError instance associated with the given FIRAuthError. + */ ++ (NSError *)missingAppTokenErrorWithUnderlyingError:(nullable NSError *)underlyingError; + +/** @fn localPlayerNotAuthenticatedError + @brief Constructs an @c NSError with the @c FIRAuthErrorCodeLocalPlayerNotAuthenticated code. + @return The NSError instance associated with the given FIRAuthError. + */ ++ (NSError *)localPlayerNotAuthenticatedError; + +/** @fn gameKitNotLinkedError + @brief Constructs an @c NSError with the @c FIRAuthErrorCodeGameKitNotLinked code. + @return The NSError instance associated with the given FIRAuthError. + */ ++ (NSError *)gameKitNotLinkedError; + +/** @fn notificationNotForwardedError + @brief Constructs an @c NSError with the @c FIRAuthErrorCodeNotificationNotForwarded code. + @return The NSError instance associated with the given FIRAuthError. + */ ++ (NSError *)notificationNotForwardedError; + +/** @fn appNotVerifiedErrorWithMessage: + @brief Constructs an @c NSError with the @c FIRAuthErrorCodeAppNotVerified code. + @param message Error message from the backend, if any. + @return The NSError instance associated with the given FIRAuthError. + */ ++ (NSError *)appNotVerifiedErrorWithMessage:(nullable NSString *)message; + +/** @fn missingClientIdentifierErrorWithMessage: + @brief Constructs an @c NSError with the @c FIRAuthErrorCodeMissingClientIdentifier code. + @param message Error message from the backend, if any. + @return The NSError instance associated with the given FIRAuthError. + */ ++ (NSError *)missingClientIdentifierErrorWithMessage:(nullable NSString *)message; + +/** @fn captchaCheckFailedErrorWithMessage: + @brief Constructs an @c NSError with the @c FIRAuthErrorCaptchaCheckFailed code. + @param message Error message from the backend, if any. + @return The NSError instance associated with the given FIRAuthError. + */ ++ (NSError *)captchaCheckFailedErrorWithMessage:(nullable NSString *)message; + +/** @fn webContextAlreadyPresentedErrorWithMessage: + @brief Constructs an @c NSError with the @c FIRAuthErrorCodeWebContextAlreadyPresented code. + @param message Error message from the backend, if any. + @return The NSError instance associated with the given FIRAuthError. + */ ++ (NSError *)webContextAlreadyPresentedErrorWithMessage:(nullable NSString *)message; + +/** @fn webContextCancelledErrorWithMessage: + @brief Constructs an @c NSError with the @c FIRAuthErrorCodeWebContextCancelled code. + @param message Error message from the backend, if any. + @return The NSError instance associated with the given FIRAuthError. + */ ++ (NSError *)webContextCancelledErrorWithMessage:(nullable NSString *)message; + +/** @fn appVerificationUserInteractionFailureWithReason: + @brief Constructs an @c NSError with the @c + FIRAuthErrorCodeAppVerificationUserInteractionFailure code. + @param reason Reason for error, returned via URL response. + @return The NSError instance associated with the given FIRAuthError. + */ ++ (NSError *)appVerificationUserInteractionFailureWithReason:(NSString *)reason; + +/** @fn webSignInUserInteractionFailureWithReason: + @brief Constructs an @c NSError with the @c + FIRAuthErrorCodeWebSignInUserInteractionFailure code. + @param reason Reason for error, returned via URL response. + @return The NSError instance associated with the given FIRAuthError. + */ ++ (NSError *)webSignInUserInteractionFailureWithReason:(nullable NSString *)reason; + +/** @fn URLResponseErrorWithCode:message: + @brief Constructs an @c NSError with the code and message provided. + @param message Error message from the backend, if any. + @return The nullable NSError instance associated with the given error message, if one is found. + */ ++ (nullable NSError *)URLResponseErrorWithCode:(NSString *)code message:(nullable NSString *)message; + +/** @fn nullUserErrorWithMessage: + @brief Constructs an @c NSError with the code and message provided. + @param message Error message from the backend, if any. + @return The nullable NSError instance associated with the given error message, if one is found. + */ ++ (NSError *)nullUserErrorWithMessage:(nullable NSString *)message; + +/** @fn invalidProviderIDErrorWithMessage: + @brief Constructs an @c NSError with the @c FIRAuthErrorCodeInvalidProviderID code. + @param message Error message from the backend, if any. + @remarks This error indicates that the provider id given for the web operation is invalid. + */ ++ (NSError *)invalidProviderIDErrorWithMessage:(nullable NSString *)message; + +/** @fn invalidDynamicLinkDomainErrorWithMessage: + @brief Constructs an @c NSError with the code and message provided. + @param message Error message from the backend, if any. + @return The nullable NSError instance associated with the given error message, if one is found. + */ ++ (NSError *)invalidDynamicLinkDomainErrorWithMessage:(nullable NSString *)message; + +/** @fn keychainErrorWithFunction:status: + @brief Constructs an @c NSError with the @c FIRAuthErrorCodeKeychainError code. + @param keychainFunction The keychain function which was invoked and yielded an unexpected + response. The @c NSLocalizedFailureReasonErrorKey field in the @c NSError.userInfo + dictionary will contain a string partially comprised of this value. + @param status The response status from the invoked keychain function. The + @c NSLocalizedFailureReasonErrorKey field in the @c NSError.userInfo dictionary will contain + a string partially comprised of this value. + */ ++ (NSError *)keychainErrorWithFunction:(NSString *)keychainFunction status:(OSStatus)status; + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Utilities/FIRAuthErrorUtils.m b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Utilities/FIRAuthErrorUtils.m new file mode 100644 index 0000000..f87ccb8 --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Utilities/FIRAuthErrorUtils.m @@ -0,0 +1,1171 @@ +/* + * 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 "FIRAuthErrorUtils.h" + +#import "FIRAuthCredential.h" +#import "FIRAuthInternalErrors.h" + +NS_ASSUME_NONNULL_BEGIN + +NSString *const FIRAuthErrorDomain = @"FIRAuthErrorDomain"; + +NSString *const FIRAuthInternalErrorDomain = @"FIRAuthInternalErrorDomain"; + +NSString *const FIRAuthErrorUserInfoDeserializedResponseKey = + @"FIRAuthErrorUserInfoDeserializedResponseKey"; + +NSString *const FIRAuthErrorUserInfoDataKey = @"FIRAuthErrorUserInfoDataKey"; + +NSString *const FIRAuthErrorUserInfoEmailKey = @"FIRAuthErrorUserInfoEmailKey"; + +NSString *const FIRAuthErrorUserInfoUpdatedCredentialKey = + @"FIRAuthErrorUserInfoUpdatedCredentialKey"; + +NSString *const FIRAuthErrorUserInfoNameKey = @"FIRAuthErrorUserInfoNameKey"; + +/** @var kServerErrorDetailMarker + @brief This marker indicates that the server error message contains a detail error message which + should be used instead of the hardcoded client error message. + */ +static NSString *const kServerErrorDetailMarker = @" : "; + +#pragma mark - URL response error codes + +/** @var kURLResponseErrorCodeInvalidClientID + @brief Error code that indicates that the client ID provided was invalid. + */ +static NSString *const kURLResponseErrorCodeInvalidClientID = @"auth/invalid-oauth-client-id"; + +/** @var kURLResponseErrorCodeNetworkRequestFailed + @brief Error code that indicates that a network request within the SFSafariViewController or + UIWebView failed. + */ +static NSString *const kURLResponseErrorCodeNetworkRequestFailed = @"auth/network-request-failed"; + +/** @var kURLResponseErrorCodeInternalError + @brief Error code that indicates that an internal error occurred within the + SFSafariViewController or UIWebView failed. + */ +static NSString *const kURLResponseErrorCodeInternalError = @"auth/internal-error"; + +#pragma mark - Standard Error Messages + +/** @var kFIRAuthErrorMessageInvalidCustomToken + @brief Message for @c FIRAuthErrorCodeInvalidCustomToken error code. + */ +static NSString *const kFIRAuthErrorMessageInvalidCustomToken = @"The custom token format is " + "incorrect. Please check the documentation."; + +/** @var kFIRAuthErrorMessageCustomTokenMismatch + @brief Message for @c FIRAuthErrorCodeCustomTokenMismatch error code. + */ +static NSString *const kFIRAuthErrorMessageCustomTokenMismatch = @"The custom token corresponds to " + "a different audience."; + +/** @var kFIRAuthErrorMessageInvalidEmail + @brief Message for @c FIRAuthErrorCodeInvalidEmail error code. + */ +static NSString *const kFIRAuthErrorMessageInvalidEmail = @"The email address is badly formatted."; + +/** @var kFIRAuthErrorMessageInvalidCredential + @brief Message for @c FIRAuthErrorCodeInvalidCredential error code. + */ +static NSString *const kFIRAuthErrorMessageInvalidCredential = @"The supplied auth credential is " + "malformed or has expired."; + +/** @var kFIRAuthErrorMessageUserDisabled + @brief Message for @c FIRAuthErrorCodeUserDisabled error code. + */ +static NSString *const kFIRAuthErrorMessageUserDisabled = @"The user account has been disabled by " + "an administrator."; + +/** @var kFIRAuthErrorMessageEmailAlreadyInUse + @brief Message for @c FIRAuthErrorCodeEmailAlreadyInUse error code. + */ +static NSString *const kFIRAuthErrorMessageEmailAlreadyInUse = @"The email address is already in " + "use by another account."; + +/** @var kFIRAuthErrorMessageWrongPassword + @brief Message for @c FIRAuthErrorCodeWrongPassword error code. + */ +static NSString *const kFIRAuthErrorMessageWrongPassword = @"The password is invalid or the user " + "does not have a password."; + +/** @var kFIRAuthErrorMessageTooManyRequests + @brief Message for @c FIRAuthErrorCodeTooManyRequests error code. + */ +static NSString *const kFIRAuthErrorMessageTooManyRequests = @"We have blocked all requests from " + "this device due to unusual activity. Try again later."; + +/** @var kFIRAuthErrorMessageAccountExistsWithDifferentCredential + @brief Message for @c FIRAuthErrorCodeAccountExistsWithDifferentCredential error code. + */ +static NSString *const kFIRAuthErrorMessageAccountExistsWithDifferentCredential = @"An account " + "already exists with the same email address but different sign-in credentials. Sign in using a " + "provider associated with this email address."; + +/** @var kFIRAuthErrorMessageRequiresRecentLogin + @brief Message for @c FIRAuthErrorCodeRequiresRecentLogin error code. + */ +static NSString *const kFIRAuthErrorMessageRequiresRecentLogin= @"This operation is sensitive and " + "requires recent authentication. Log in again before retrying this request."; + +/** @var kFIRAuthErrorMessageProviderAlreadyLinked + @brief Message for @c FIRAuthErrorCodeProviderAlreadyExists error code. + */ +static NSString *const kFIRAuthErrorMessageProviderAlreadyLinked = + @"[ERROR_PROVIDER_ALREADY_LINKED] - User can only be linked to one identity for the given " + "provider."; + +/** @var kFIRAuthErrorMessageNoSuchProvider + @brief Message for @c FIRAuthErrorCodeNoSuchProvider error code. + */ +static NSString *const kFIRAuthErrorMessageNoSuchProvider = @"User was not linked to an account " + "with the given provider."; + +/** @var kFIRAuthErrorMessageInvalidUserToken + @brief Message for @c FIRAuthErrorCodeInvalidUserToken error code. + */ +static NSString *const kFIRAuthErrorMessageInvalidUserToken = @"This user's credential isn't valid " + "for this project. This can happen if the user's token has been tampered with, or if the user " + "doesn’t belong to the project associated with the API key used in your request."; + +/** @var kFIRAuthErrorMessageNetworkError + @brief Message for @c FIRAuthErrorCodeNetworkError error code. + */ +static NSString *const kFIRAuthErrorMessageNetworkError = @"Network error (such as timeout, " + "interrupted connection or unreachable host) has occurred."; + +/** @var kFIRAuthErrorMessageKeychainError + @brief Message for @c FIRAuthErrorCodeKeychainError error code. + */ +static NSString *const kFIRAuthErrorMessageKeychainError = @"An error occurred when accessing the " + "keychain. The @c NSLocalizedFailureReasonErrorKey field in the @c NSError.userInfo dictionary " + "will contain more information about the error encountered"; + +/** @var kFIRAuthErrorMessageMissingClientIdentifier + @brief Message for @c FIRAuthErrorCodeMissingClientIdentifier error code. + */ +static NSString *const kFIRAuthErrorMessageMissingClientIdentifier = @"The request does not contain " + "any client identifier."; + +/** @var kFIRAuthErrorMessageUserTokenExpired + @brief Message for @c FIRAuthErrorCodeTokenExpired error code. + */ +static NSString *const kFIRAuthErrorMessageUserTokenExpired = @"The user's credential is no longer " + "valid. The user must sign in again."; + +/** @var kFIRAuthErrorMessageUserNotFound + @brief Message for @c FIRAuthErrorCodeUserNotFound error code. + */ +static NSString *const kFIRAuthErrorMessageUserNotFound = @"There is no user record corresponding " + "to this identifier. The user may have been deleted."; + +/** @var kFIRAuthErrorMessageInvalidAPIKey + @brief Message for @c FIRAuthErrorCodeInvalidAPIKey error code. + @remarks This error is not thrown by the server. + */ +static NSString *const kFIRAuthErrorMessageInvalidAPIKey = @"An invalid API Key was supplied in " + "the request."; + +/** @var kFIRAuthErrorMessageUserMismatch. + @brief Message for @c FIRAuthErrorCodeInvalidAPIKey error code. + */ +static NSString *const FIRAuthErrorMessageUserMismatch = @"The supplied credentials do not " + "correspond to the previously signed in user."; + +/** @var kFIRAuthErrorMessageCredentialAlreadyInUse + @brief Message for @c FIRAuthErrorCodeCredentialAlreadyInUse error code. + */ +static NSString *const kFIRAuthErrorMessageCredentialAlreadyInUse = @"This credential is already " + "associated with a different user account."; + +/** @var kFIRAuthErrorMessageOperationNotAllowed + @brief Message for @c FIRAuthErrorCodeOperationNotAllowed error code. + */ +static NSString *const kFIRAuthErrorMessageOperationNotAllowed = @"The given sign-in provider is " + "disabled for this Firebase project. Enable it in the Firebase console, under the sign-in " + "method tab of the Auth section."; + +/** @var kFIRAuthErrorMessageWeakPassword + @brief Message for @c FIRAuthErrorCodeWeakPassword error code. + */ +static NSString *const kFIRAuthErrorMessageWeakPassword = @"The password must be 6 characters long " + "or more."; + +/** @var kFIRAuthErrorMessageAppNotAuthorized + @brief Message for @c FIRAuthErrorCodeAppNotAuthorized error code. + */ +static NSString *const kFIRAuthErrorMessageAppNotAuthorized = @"This app is not authorized to use " + "Firebase Authentication with the provided API key. Review your key configuration in the " + "Google API console and ensure that it accepts requests from your app's bundle ID."; + +/** @var kFIRAuthErrorMessageExpiredActionCode + @brief Message for @c FIRAuthErrorCodeExpiredActionCode error code. + */ +static NSString *const kFIRAuthErrorMessageExpiredActionCode = @"The action code has expired."; + +/** @var kFIRAuthErrorMessageInvalidActionCode + @brief Message for @c FIRAuthErrorCodeInvalidActionCode error code. + */ +static NSString *const kFIRAuthErrorMessageInvalidActionCode = @"The action code is invalid. This " + "can happen if the code is malformed, expired, or has already been used."; + +/** @var kFIRAuthErrorMessageInvalidMessagePayload + @brief Message for @c FIRAuthErrorCodeInvalidMessagePayload error code. + */ +static NSString *const kFIRAuthErrorMessageInvalidMessagePayload = @"The action code is invalid. " + "This can happen if the code is malformed, expired, or has already been used."; + +/** @var kFIRAuthErrorMessageInvalidSender + @brief Message for @c FIRAuthErrorCodeInvalidSender error code. + */ +static NSString *const kFIRAuthErrorMessageInvalidSender = @"The email template corresponding to " + "this action contains invalid characters in its message. Please fix by going to the Auth email " + "templates section in the Firebase Console."; + +/** @var kFIRAuthErrorMessageInvalidRecipientEmail + @brief Message for @c FIRAuthErrorCodeInvalidRecipient error code. + */ +static NSString *const kFIRAuthErrorMessageInvalidRecipientEmail = @"The action code is invalid. " + "This can happen if the code is malformed, expired, or has already been used."; + +/** @var kFIRAuthErrorMessageMissingIosBundleID + @brief Message for @c FIRAuthErrorCodeMissingIosbundleID error code. + */ +static NSString *const kFIRAuthErrorMessageMissingIosBundleID = + @"An iOS Bundle ID must be provided if an App Store ID is provided."; + +/** @var kFIRAuthErrorMessageMissingAndroidPackageName + @brief Message for @c FIRAuthErrorCodeMissingAndroidPackageName error code. + */ +static NSString *const kFIRAuthErrorMessageMissingAndroidPackageName = + @"An Android Package Name must be provided if the Android App is required to be installed."; + +/** @var kFIRAuthErrorMessageUnauthorizedDomain + @brief Message for @c FIRAuthErrorCodeUnauthorizedDomain error code. + */ +static NSString *const kFIRAuthErrorMessageUnauthorizedDomain = @"The domain of the continue URL " + "is not whitelisted. Please whitelist the domain in the Firebase console."; + +/** @var kFIRAuthErrorMessageInvalidContinueURI + @brief Message for @c FIRAuthErrorCodeInvalidContinueURI error code. + */ +static NSString *const kFIRAuthErrorMessageInvalidContinueURI = + @"The continue URL provided in the request is invalid."; + +/** @var kFIRAuthErrorMessageMissingEmail + @brief Message for @c FIRAuthErrorCodeMissingEmail error code. + */ +static NSString *const kFIRAuthErrorMessageMissingEmail = @"An email address must be provided."; + +/** @var kFIRAuthErrorMessageMissingContinueURI + @brief Message for @c FIRAuthErrorCodeMissingContinueURI error code. + */ +static NSString *const kFIRAuthErrorMessageMissingContinueURI = + @"A continue URL must be provided in the request."; + +/** @var kFIRAuthErrorMessageMissingPhoneNumber + @brief Message for @c FIRAuthErrorCodeMissingPhoneNumber error code. + */ +static NSString *const kFIRAuthErrorMessageMissingPhoneNumber = + @"To send verification codes, provide a phone number for the recipient."; + +/** @var kFIRAuthErrorMessageInvalidPhoneNumber + @brief Message for @c FIRAuthErrorCodeInvalidPhoneNumber error code. + */ +static NSString *const kFIRAuthErrorMessageInvalidPhoneNumber = + @"The format of the phone number provided is incorrect. Please enter the phone number in a " + "format that can be parsed into E.164 format. E.164 phone numbers are written in the format " + "[+][country code][subscriber number including area code]."; + +/** @var kFIRAuthErrorMessageMissingVerificationCode + @brief Message for @c FIRAuthErrorCodeMissingVerificationCode error code. + */ +static NSString *const kFIRAuthErrorMessageMissingVerificationCode = + @"The phone auth credential was created with an empty SMS verification Code."; + +/** @var kFIRAuthErrorMessageInvalidVerificationCode + @brief Message for @c FIRAuthErrorCodeInvalidVerificationCode error code. + */ +static NSString *const kFIRAuthErrorMessageInvalidVerificationCode = + @"The SMS verification code used to create the phone auth credential is invalid. Please resend " + "the verification code SMS and be sure to use the verification code provided by the user."; + +/** @var kFIRAuthErrorMessageMissingVerificationID + @brief Message for @c FIRAuthErrorCodeInvalidVerificationID error code. + */ +static NSString *const kFIRAuthErrorMessageMissingVerificationID = + @"The phone auth credential was created with an empty verification ID."; + +/** @var kFIRAuthErrorMessageInvalidVerificationID + @brief Message for @c FIRAuthErrorCodeInvalidVerificationID error code. + */ +static NSString *const kFIRAuthErrorMessageInvalidVerificationID = + @"The verification ID used to create the phone auth credential is invalid."; + +/** @var kFIRAuthErrorMessageLocalPlayerNotAuthenticated + @brief Message for @c FIRAuthErrorCodeLocalPlayerNotAuthenticated error code. + */ +static NSString *const kFIRAuthErrorMessageLocalPlayerNotAuthenticated = + @"The local player is not authenticated. Please log the local player in to Game Center."; + +/** @var kFIRAuthErrorMessageGameKitNotLinked + @brief Message for @c kFIRAuthErrorMessageGameKitNotLinked error code. + */ +static NSString *const kFIRAuthErrorMessageGameKitNotLinked = + @"The GameKit framework is not linked. Please turn on the Game Center capability."; + +/** @var kFIRAuthErrorMessageSessionExpired + @brief Message for @c FIRAuthErrorCodeSessionExpired error code. + */ +static NSString *const kFIRAuthErrorMessageSessionExpired = @"The SMS code has expired. Please " + @"re-send the verification code to try again."; + +/** @var kFIRAuthErrorMessageMissingAppCredential + @brief Message for @c FIRAuthErrorCodeMissingAppCredential error code. + */ +static NSString *const kFIRAuthErrorMessageMissingAppCredential = @"The phone verification request " + "is missing an APNs Device token. Firebase Auth automatically detects APNs Device Tokens, " + "however, if method swizzling is disabled, the APNs token must be set via the APNSToken " + "property on FIRAuth or by calling setAPNSToken:type on FIRAuth."; + +/** @var kFIRAuthErrorMessageInvalidAppCredential + @brief Message for @c FIRAuthErrorCodeInvalidAppCredential error code. + */ +static NSString *const kFIRAuthErrorMessageInvalidAppCredential = @"The APNs device token provided " + "is either incorrect or does not match the private certificate uploaded to the Firebase " + "Console."; + +/** @var kFIRAuthErrorMessageQuotaExceeded + @brief Message for @c FIRAuthErrorCodeQuotaExceeded error code. + */ +static NSString *const kFIRAuthErrorMessageQuotaExceeded = @"The phone verification quota for this " + "project has been exceeded."; + +/** @var kFIRAuthErrorMessageMissingAppToken + @brief Message for @c FIRAuthErrorCodeMissingAppToken error code. + */ +static NSString *const kFIRAuthErrorMessageMissingAppToken = @"There seems to be a problem with " + "your project's Firebase phone number authentication set-up, please make sure to follow the " + "instructions found at https://firebase.google.com/docs/auth/ios/phone-auth"; + +/** @var kFIRAuthErrorMessageMissingAppToken + @brief Message for @c FIRAuthErrorCodeMissingAppToken error code. + */ +static NSString *const kFIRAuthErrorMessageNotificationNotForwarded = @"If app delegate swizzling " + "is disabled, remote notifications received by UIApplicationDelegate need to be forwarded to " + "FIRAuth's canHandleNotificaton: method."; + +/** @var kFIRAuthErrorMessageAppNotVerified + @brief Message for @c FIRAuthErrorCodeMissingAppToken error code. + */ +static NSString *const kFIRAuthErrorMessageAppNotVerified = @"Firebase could not retrieve the " + "silent push notification and therefore could not verify your app. Ensure that you configured " + "your app correctly to receive push notifications."; + +/** @var kFIRAuthErrorMessageCaptchaCheckFailed + @brief Message for @c FIRAuthErrorCodeCaptchaCheckFailed error code. + */ +static NSString *const kFIRAuthErrorMessageCaptchaCheckFailed = @"The reCAPTCHA response token " + "provided is either invalid, expired or already"; + +/** @var kFIRAuthErrorMessageWebContextAlreadyPresented + @brief Message for @c FIRAuthErrorCodeWebContextAlreadyPresented error code. + */ +static NSString *const kFIRAuthErrorMessageWebContextAlreadyPresented = @"User interaction is " + "still ongoing, another view cannot be presented."; + +/** @var kFIRAuthErrorMessageWebContextCancelled + @brief Message for @c FIRAuthErrorCodeWebContextCancelled error code. + */ +static NSString *const kFIRAuthErrorMessageWebContextCancelled = @"The interaction was cancelled " + "by the user."; + +/** @var kFIRAuthErrorMessageInvalidClientID + @brief Message for @c FIRAuthErrorCodeInvalidClientID error code. + */ +static NSString *const kFIRAuthErrorMessageInvalidClientID = @"The OAuth client ID provided is " + "either invalid or does not match the specified API key."; + +/** @var kFIRAuthErrorMessageWebRequestFailed + @brief Message for @c FIRAuthErrorCodeWebRequestFailed error code. + */ +static NSString *const kFIRAuthErrorMessageWebRequestFailed = @"A network error (such as timeout, " + "interrupted connection, or unreachable host) has occurred within the web context."; + +/** @var kFIRAuthErrorMessageWebInternalError + @brief Message for @c FIRAuthErrorCodeWebInternalError error code. + */ +static NSString *const kFIRAuthErrorMessageWebInternalError = @"An internal error has occurred " + "within the SFSafariViewController or UIWebView."; + +/** @var kFIRAuthErrorMessageAppVerificationUserInteractionFailure + @brief Message for @c FIRAuthErrorCodeInvalidClientID error code. + */ +static NSString *const kFIRAuthErrorMessageAppVerificationUserInteractionFailure = @"The app " + "verification process has failed, print and inspect the error details for more information"; + +/** @var kFIRAuthErrorMessageNullUser + @brief Message for @c FIRAuthErrorCodeNullUser error code. + */ +static NSString *const kFIRAuthErrorMessageNullUser = @"A null user object was provided as the " + "argument for an operation which requires a non-null user object."; + +/** @var kFIRAuthErrorMessageInvalidProviderID + @brief Message for @c FIRAuthErrorCodeInvalidProviderID error code. + */ +static NSString *const kFIRAuthErrorMessageInvalidProviderID = @"The provider ID provided for the " + "attempted web operation is invalid."; + +/** @var kFIRAuthErrorMessageInvalidDynamicLinkDomain + @brief Message for @c kFIRAuthErrorMessageInvalidDynamicLinkDomain error code. + */ +static NSString *const kFIRAuthErrorMessageInvalidDynamicLinkDomain = @"The " + "Firebase Dynamic Link domain used is either not configured or is unauthorized " + "for the current project."; + +/** @var kFIRAuthErrorMessageInternalError + @brief Message for @c FIRAuthErrorCodeInternalError error code. + */ +static NSString *const kFIRAuthErrorMessageInternalError = @"An internal error has occurred, " + "print and inspect the error details for more information."; + +/** @var kFIRAuthErrorMessageMalformedJWT + @brief Error message constant describing @c FIRAuthErrorCodeMalformedJWT errors. + */ +static NSString *const kFIRAuthErrorMessageMalformedJWT = + @"Failed to parse JWT. Check the userInfo dictionary for the full token."; + +/** @var FIRAuthErrorDescription + @brief The error descrioption, based on the error code. + @remarks No default case so that we get a compiler warning if a new value was added to the enum. + */ +static NSString *FIRAuthErrorDescription(FIRAuthErrorCode code) { + switch (code) { + case FIRAuthErrorCodeInvalidCustomToken: + return kFIRAuthErrorMessageInvalidCustomToken; + case FIRAuthErrorCodeCustomTokenMismatch: + return kFIRAuthErrorMessageCustomTokenMismatch; + case FIRAuthErrorCodeInvalidEmail: + return kFIRAuthErrorMessageInvalidEmail; + case FIRAuthErrorCodeInvalidCredential: + return kFIRAuthErrorMessageInvalidCredential; + case FIRAuthErrorCodeUserDisabled: + return kFIRAuthErrorMessageUserDisabled; + case FIRAuthErrorCodeEmailAlreadyInUse: + return kFIRAuthErrorMessageEmailAlreadyInUse; + case FIRAuthErrorCodeWrongPassword: + return kFIRAuthErrorMessageWrongPassword; + case FIRAuthErrorCodeTooManyRequests: + return kFIRAuthErrorMessageTooManyRequests; + case FIRAuthErrorCodeAccountExistsWithDifferentCredential: + return kFIRAuthErrorMessageAccountExistsWithDifferentCredential; + case FIRAuthErrorCodeRequiresRecentLogin: + return kFIRAuthErrorMessageRequiresRecentLogin; + case FIRAuthErrorCodeProviderAlreadyLinked: + return kFIRAuthErrorMessageProviderAlreadyLinked; + case FIRAuthErrorCodeNoSuchProvider: + return kFIRAuthErrorMessageNoSuchProvider; + case FIRAuthErrorCodeInvalidUserToken: + return kFIRAuthErrorMessageInvalidUserToken; + case FIRAuthErrorCodeNetworkError: + return kFIRAuthErrorMessageNetworkError; + case FIRAuthErrorCodeKeychainError: + return kFIRAuthErrorMessageKeychainError; + case FIRAuthErrorCodeMissingClientIdentifier: + return kFIRAuthErrorMessageMissingClientIdentifier; + case FIRAuthErrorCodeUserTokenExpired: + return kFIRAuthErrorMessageUserTokenExpired; + case FIRAuthErrorCodeUserNotFound: + return kFIRAuthErrorMessageUserNotFound; + case FIRAuthErrorCodeInvalidAPIKey: + return kFIRAuthErrorMessageInvalidAPIKey; + case FIRAuthErrorCodeCredentialAlreadyInUse: + return kFIRAuthErrorMessageCredentialAlreadyInUse; + case FIRAuthErrorCodeInternalError: + return kFIRAuthErrorMessageInternalError; + case FIRAuthErrorCodeUserMismatch: + return FIRAuthErrorMessageUserMismatch; + case FIRAuthErrorCodeOperationNotAllowed: + return kFIRAuthErrorMessageOperationNotAllowed; + case FIRAuthErrorCodeWeakPassword: + return kFIRAuthErrorMessageWeakPassword; + case FIRAuthErrorCodeAppNotAuthorized: + return kFIRAuthErrorMessageAppNotAuthorized; + case FIRAuthErrorCodeExpiredActionCode: + return kFIRAuthErrorMessageExpiredActionCode; + case FIRAuthErrorCodeInvalidActionCode: + return kFIRAuthErrorMessageInvalidActionCode; + case FIRAuthErrorCodeInvalidSender: + return kFIRAuthErrorMessageInvalidSender; + case FIRAuthErrorCodeInvalidMessagePayload: + return kFIRAuthErrorMessageInvalidMessagePayload; + case FIRAuthErrorCodeInvalidRecipientEmail: + return kFIRAuthErrorMessageInvalidRecipientEmail; + case FIRAuthErrorCodeMissingIosBundleID: + return kFIRAuthErrorMessageMissingIosBundleID; + case FIRAuthErrorCodeMissingAndroidPackageName: + return kFIRAuthErrorMessageMissingAndroidPackageName; + case FIRAuthErrorCodeUnauthorizedDomain: + return kFIRAuthErrorMessageUnauthorizedDomain; + case FIRAuthErrorCodeInvalidContinueURI: + return kFIRAuthErrorMessageInvalidContinueURI; + case FIRAuthErrorCodeMissingContinueURI: + return kFIRAuthErrorMessageMissingContinueURI; + case FIRAuthErrorCodeMissingEmail: + return kFIRAuthErrorMessageMissingEmail; + case FIRAuthErrorCodeMissingPhoneNumber: + return kFIRAuthErrorMessageMissingPhoneNumber; + case FIRAuthErrorCodeInvalidPhoneNumber: + return kFIRAuthErrorMessageInvalidPhoneNumber; + case FIRAuthErrorCodeMissingVerificationCode: + return kFIRAuthErrorMessageMissingVerificationCode; + case FIRAuthErrorCodeInvalidVerificationCode: + return kFIRAuthErrorMessageInvalidVerificationCode; + case FIRAuthErrorCodeMissingVerificationID: + return kFIRAuthErrorMessageMissingVerificationID; + case FIRAuthErrorCodeInvalidVerificationID: + return kFIRAuthErrorMessageInvalidVerificationID; + case FIRAuthErrorCodeSessionExpired: + return kFIRAuthErrorMessageSessionExpired; + case FIRAuthErrorCodeMissingAppCredential: + return kFIRAuthErrorMessageMissingAppCredential; + case FIRAuthErrorCodeInvalidAppCredential: + return kFIRAuthErrorMessageInvalidAppCredential; + case FIRAuthErrorCodeQuotaExceeded: + return kFIRAuthErrorMessageQuotaExceeded; + case FIRAuthErrorCodeMissingAppToken: + return kFIRAuthErrorMessageMissingAppToken; + case FIRAuthErrorCodeNotificationNotForwarded: + return kFIRAuthErrorMessageNotificationNotForwarded; + case FIRAuthErrorCodeAppNotVerified: + return kFIRAuthErrorMessageAppNotVerified; + case FIRAuthErrorCodeCaptchaCheckFailed: + return kFIRAuthErrorMessageCaptchaCheckFailed; + case FIRAuthErrorCodeWebContextAlreadyPresented: + return kFIRAuthErrorMessageWebContextAlreadyPresented; + case FIRAuthErrorCodeWebContextCancelled: + return kFIRAuthErrorMessageWebContextCancelled; + case FIRAuthErrorCodeInvalidClientID: + return kFIRAuthErrorMessageInvalidClientID; + case FIRAuthErrorCodeAppVerificationUserInteractionFailure: + return kFIRAuthErrorMessageAppVerificationUserInteractionFailure; + case FIRAuthErrorCodeWebNetworkRequestFailed: + return kFIRAuthErrorMessageWebRequestFailed; + case FIRAuthErrorCodeNullUser: + return kFIRAuthErrorMessageNullUser; + case FIRAuthErrorCodeInvalidProviderID: + return kFIRAuthErrorMessageInvalidProviderID; + case FIRAuthErrorCodeInvalidDynamicLinkDomain: + return kFIRAuthErrorMessageInvalidDynamicLinkDomain; + case FIRAuthErrorCodeWebInternalError: + return kFIRAuthErrorMessageWebInternalError; + case FIRAuthErrorCodeWebSignInUserInteractionFailure: + return kFIRAuthErrorMessageAppVerificationUserInteractionFailure; + case FIRAuthErrorCodeMalformedJWT: + return kFIRAuthErrorMessageMalformedJWT; + case FIRAuthErrorCodeLocalPlayerNotAuthenticated: + return kFIRAuthErrorMessageLocalPlayerNotAuthenticated; + case FIRAuthErrorCodeGameKitNotLinked: + return kFIRAuthErrorMessageGameKitNotLinked; + } +} + +/** @var FIRAuthErrorCodeString + @brief The the error short string, based on the error code. + @remarks No default case so that we get a compiler warning if a new value was added to the enum. + */ +static NSString *const FIRAuthErrorCodeString(FIRAuthErrorCode code) { + switch (code) { + case FIRAuthErrorCodeInvalidCustomToken: + return @"ERROR_INVALID_CUSTOM_TOKEN"; + case FIRAuthErrorCodeCustomTokenMismatch: + return @"ERROR_CUSTOM_TOKEN_MISMATCH"; + case FIRAuthErrorCodeInvalidEmail: + return @"ERROR_INVALID_EMAIL"; + case FIRAuthErrorCodeInvalidCredential: + return @"ERROR_INVALID_CREDENTIAL"; + case FIRAuthErrorCodeUserDisabled: + return @"ERROR_USER_DISABLED"; + case FIRAuthErrorCodeEmailAlreadyInUse: + return @"ERROR_EMAIL_ALREADY_IN_USE"; + case FIRAuthErrorCodeWrongPassword: + return @"ERROR_WRONG_PASSWORD"; + case FIRAuthErrorCodeTooManyRequests: + return @"ERROR_TOO_MANY_REQUESTS"; + case FIRAuthErrorCodeAccountExistsWithDifferentCredential: + return @"ERROR_ACCOUNT_EXISTS_WITH_DIFFERENT_CREDENTIAL"; + case FIRAuthErrorCodeRequiresRecentLogin: + return @"ERROR_REQUIRES_RECENT_LOGIN"; + case FIRAuthErrorCodeProviderAlreadyLinked: + return @"ERROR_PROVIDER_ALREADY_LINKED"; + case FIRAuthErrorCodeNoSuchProvider: + return @"ERROR_NO_SUCH_PROVIDER"; + case FIRAuthErrorCodeInvalidUserToken: + return @"ERROR_INVALID_USER_TOKEN"; + case FIRAuthErrorCodeNetworkError: + return @"ERROR_NETWORK_REQUEST_FAILED"; + case FIRAuthErrorCodeKeychainError: + return @"ERROR_KEYCHAIN_ERROR"; + case FIRAuthErrorCodeMissingClientIdentifier: + return @"ERROR_MISSING_CLIENT_IDENTIFIER"; + case FIRAuthErrorCodeUserTokenExpired: + return @"ERROR_USER_TOKEN_EXPIRED"; + case FIRAuthErrorCodeUserNotFound: + return @"ERROR_USER_NOT_FOUND"; + case FIRAuthErrorCodeInvalidAPIKey: + return @"ERROR_INVALID_API_KEY"; + case FIRAuthErrorCodeCredentialAlreadyInUse: + return @"ERROR_CREDENTIAL_ALREADY_IN_USE"; + case FIRAuthErrorCodeInternalError: + return @"ERROR_INTERNAL_ERROR"; + case FIRAuthErrorCodeUserMismatch: + return @"ERROR_USER_MISMATCH"; + case FIRAuthErrorCodeOperationNotAllowed: + return @"ERROR_OPERATION_NOT_ALLOWED"; + case FIRAuthErrorCodeWeakPassword: + return @"ERROR_WEAK_PASSWORD"; + case FIRAuthErrorCodeAppNotAuthorized: + return @"ERROR_APP_NOT_AUTHORIZED"; + case FIRAuthErrorCodeExpiredActionCode: + return @"ERROR_EXPIRED_ACTION_CODE"; + case FIRAuthErrorCodeInvalidActionCode: + return @"ERROR_INVALID_ACTION_CODE"; + case FIRAuthErrorCodeInvalidMessagePayload: + return @"ERROR_INVALID_MESSAGE_PAYLOAD"; + case FIRAuthErrorCodeInvalidSender: + return @"ERROR_INVALID_SENDER"; + case FIRAuthErrorCodeInvalidRecipientEmail: + return @"ERROR_INVALID_RECIPIENT_EMAIL"; + case FIRAuthErrorCodeMissingIosBundleID: + return @"ERROR_MISSING_IOS_BUNDLE_ID"; + case FIRAuthErrorCodeMissingAndroidPackageName: + return @"ERROR_MISSING_ANDROID_PKG_NAME"; + case FIRAuthErrorCodeUnauthorizedDomain: + return @"ERROR_UNAUTHORIZED_DOMAIN"; + case FIRAuthErrorCodeInvalidContinueURI: + return @"ERROR_INVALID_CONTINUE_URI"; + case FIRAuthErrorCodeMissingContinueURI: + return @"ERROR_MISSING_CONTINUE_URI"; + case FIRAuthErrorCodeMissingEmail: + return @"ERROR_MISSING_EMAIL"; + case FIRAuthErrorCodeMissingPhoneNumber: + return @"ERROR_MISSING_PHONE_NUMBER"; + case FIRAuthErrorCodeInvalidPhoneNumber: + return @"ERROR_INVALID_PHONE_NUMBER"; + case FIRAuthErrorCodeMissingVerificationCode: + return @"ERROR_MISSING_VERIFICATION_CODE"; + case FIRAuthErrorCodeInvalidVerificationCode: + return @"ERROR_INVALID_VERIFICATION_CODE"; + case FIRAuthErrorCodeMissingVerificationID: + return @"ERROR_MISSING_VERIFICATION_ID"; + case FIRAuthErrorCodeInvalidVerificationID: + return @"ERROR_INVALID_VERIFICATION_ID"; + case FIRAuthErrorCodeSessionExpired: + return @"ERROR_SESSION_EXPIRED"; + case FIRAuthErrorCodeMissingAppCredential: + return @"MISSING_APP_CREDENTIAL"; + case FIRAuthErrorCodeInvalidAppCredential: + return @"INVALID_APP_CREDENTIAL"; + case FIRAuthErrorCodeQuotaExceeded: + return @"ERROR_QUOTA_EXCEEDED"; + case FIRAuthErrorCodeMissingAppToken: + return @"ERROR_MISSING_APP_TOKEN"; + case FIRAuthErrorCodeNotificationNotForwarded: + return @"ERROR_NOTIFICATION_NOT_FORWARDED"; + case FIRAuthErrorCodeAppNotVerified: + return @"ERROR_APP_NOT_VERIFIED"; + case FIRAuthErrorCodeCaptchaCheckFailed: + return @"ERROR_CAPTCHA_CHECK_FAILED"; + case FIRAuthErrorCodeWebContextAlreadyPresented: + return @"ERROR_WEB_CONTEXT_ALREADY_PRESENTED"; + case FIRAuthErrorCodeWebContextCancelled: + return @"ERROR_WEB_CONTEXT_CANCELLED"; + case FIRAuthErrorCodeInvalidClientID: + return @"ERROR_INVALID_CLIENT_ID"; + case FIRAuthErrorCodeAppVerificationUserInteractionFailure: + return @"ERROR_APP_VERIFICATION_FAILED"; + case FIRAuthErrorCodeWebNetworkRequestFailed: + return @"ERROR_WEB_NETWORK_REQUEST_FAILED"; + case FIRAuthErrorCodeNullUser: + return @"ERROR_NULL_USER"; + case FIRAuthErrorCodeInvalidProviderID: + return @"ERROR_INVALID_PROVIDER_ID"; + case FIRAuthErrorCodeInvalidDynamicLinkDomain: + return @"ERROR_INVALID_DYNAMIC_LINK_DOMAIN"; + case FIRAuthErrorCodeWebInternalError: + return @"ERROR_WEB_INTERNAL_ERROR"; + case FIRAuthErrorCodeWebSignInUserInteractionFailure: + return @"ERROR_WEB_USER_INTERACTION_FAILURE"; + case FIRAuthErrorCodeMalformedJWT: + return @"ERROR_MALFORMED_JWT"; + case FIRAuthErrorCodeLocalPlayerNotAuthenticated: + return @"ERROR_LOCAL_PLAYER_NOT_AUTHENTICATED"; + case FIRAuthErrorCodeGameKitNotLinked: + return @"ERROR_GAME_KIT_NOT_LINKED"; + } +} + +@implementation FIRAuthErrorUtils + ++ (NSError *)errorWithCode:(FIRAuthInternalErrorCode)code { + return [self errorWithCode:code message:nil]; +} + ++ (NSError *)errorWithCode:(FIRAuthInternalErrorCode)code + message:(nullable NSString *)message { + NSDictionary *userInfo = nil; + if (message.length) { + userInfo = @{ + NSLocalizedDescriptionKey : message + }; + } + return [self errorWithCode:code userInfo:userInfo]; +} + ++ (NSError *)errorWithCode:(FIRAuthInternalErrorCode)code + underlyingError:(nullable NSError *)underlyingError { + NSDictionary *errorUserInfo; + if (underlyingError) { + errorUserInfo = @{ + NSUnderlyingErrorKey : underlyingError + }; + } + return [self errorWithCode:code userInfo:errorUserInfo]; +} + ++ (NSError *)errorWithCode:(FIRAuthInternalErrorCode)code + userInfo:(nullable NSDictionary *)userInfo { + BOOL isPublic = (code & FIRAuthPublicErrorCodeFlag) == FIRAuthPublicErrorCodeFlag; + if (isPublic) { + // This is a public error. Return it as a public error and add a description. + NSInteger errorCode = code & ~FIRAuthPublicErrorCodeFlag; + NSMutableDictionary *errorUserInfo = [NSMutableDictionary dictionary]; + if (userInfo) { + [errorUserInfo addEntriesFromDictionary:userInfo]; + } + if (!errorUserInfo[NSLocalizedDescriptionKey]) { + errorUserInfo[NSLocalizedDescriptionKey] = FIRAuthErrorDescription(errorCode); + } + errorUserInfo[FIRAuthErrorUserInfoNameKey] = FIRAuthErrorCodeString(errorCode); + return [NSError errorWithDomain:FIRAuthErrorDomain code:errorCode userInfo:errorUserInfo]; + } else { + // This is an internal error. Wrap it in an internal error. + NSError *error = + [NSError errorWithDomain:FIRAuthInternalErrorDomain code:code userInfo:userInfo]; + return [self errorWithCode:FIRAuthInternalErrorCodeInternalError underlyingError:error]; + } +} + ++ (NSError *)RPCRequestEncodingErrorWithUnderlyingError:(NSError *)underlyingError { + return [self errorWithCode:FIRAuthInternalErrorCodeRPCRequestEncodingError + underlyingError:underlyingError]; +} + ++ (NSError *)JSONSerializationErrorForUnencodableType { + return [self errorWithCode:FIRAuthInternalErrorCodeJSONSerializationError]; +} + ++ (NSError *)JSONSerializationErrorWithUnderlyingError:(NSError *)underlyingError { + return [self errorWithCode:FIRAuthInternalErrorCodeJSONSerializationError + underlyingError:underlyingError]; +} + ++ (NSError *)networkErrorWithUnderlyingError:(NSError *)underlyingError { + return [self errorWithCode:FIRAuthInternalErrorCodeNetworkError + underlyingError:underlyingError]; +} + ++ (NSError *)unexpectedErrorResponseWithData:(NSData *)data + underlyingError:(NSError *)underlyingError { + NSMutableDictionary *userInfo = [NSMutableDictionary dictionary]; + if (data) { + userInfo[FIRAuthErrorUserInfoDataKey] = data; + } + if (underlyingError) { + userInfo[NSUnderlyingErrorKey] = underlyingError; + } + return [self errorWithCode:FIRAuthInternalErrorCodeUnexpectedErrorResponse + userInfo:[userInfo copy]]; +} + ++ (NSError *)unexpectedErrorResponseWithDeserializedResponse:(id)deserializedResponse { + NSDictionary *userInfo; + if (deserializedResponse) { + userInfo = @{ + FIRAuthErrorUserInfoDeserializedResponseKey : deserializedResponse, + }; + } + return [self errorWithCode:FIRAuthInternalErrorCodeUnexpectedErrorResponse userInfo:userInfo]; +} + ++ (NSError *)malformedJWTErrorWithToken:(NSString *)token + underlyingError:(NSError *_Nullable)underlyingError { + NSMutableDictionary *userInfo = + [NSMutableDictionary dictionaryWithObject:kFIRAuthErrorMessageMalformedJWT + forKey:NSLocalizedDescriptionKey]; + [userInfo setObject:token forKey:FIRAuthErrorUserInfoDataKey]; + if (underlyingError != nil) { + [userInfo setObject:underlyingError forKey:NSUnderlyingErrorKey]; + } + return [self errorWithCode:FIRAuthInternalErrorCodeMalformedJWT userInfo:[userInfo copy]]; +} + ++ (NSError *)unexpectedResponseWithData:(NSData *)data + underlyingError:(NSError *)underlyingError { + NSMutableDictionary *userInfo = [NSMutableDictionary dictionary]; + if (data) { + userInfo[FIRAuthErrorUserInfoDataKey] = data; + } + if (underlyingError) { + userInfo[NSUnderlyingErrorKey] = underlyingError; + } + return [self errorWithCode:FIRAuthInternalErrorCodeUnexpectedResponse userInfo:[userInfo copy]]; +} + ++ (NSError *)unexpectedResponseWithDeserializedResponse:(id)deserializedResponse { + NSDictionary *userInfo; + if (deserializedResponse) { + userInfo = @{ + FIRAuthErrorUserInfoDeserializedResponseKey : deserializedResponse, + }; + } + return [self errorWithCode:FIRAuthInternalErrorCodeUnexpectedResponse userInfo:userInfo]; +} + ++ (NSError *)unexpectedResponseWithDeserializedResponse:(nullable id)deserializedResponse + underlyingError:(NSError *)underlyingError { + NSMutableDictionary *userInfo = [NSMutableDictionary dictionary]; + if (deserializedResponse) { + userInfo[FIRAuthErrorUserInfoDeserializedResponseKey] = deserializedResponse; + } + if (underlyingError) { + userInfo[NSUnderlyingErrorKey] = underlyingError; + } + return [self errorWithCode:FIRAuthInternalErrorCodeUnexpectedResponse userInfo:[userInfo copy]]; +} + ++ (NSError *)RPCResponseDecodingErrorWithDeserializedResponse:(id)deserializedResponse + underlyingError:(NSError *)underlyingError { + NSMutableDictionary *userInfo = [NSMutableDictionary dictionary]; + if (deserializedResponse) { + userInfo[FIRAuthErrorUserInfoDeserializedResponseKey] = deserializedResponse; + } + if (underlyingError) { + userInfo[NSUnderlyingErrorKey] = underlyingError; + } + return [self errorWithCode:FIRAuthInternalErrorCodeRPCResponseDecodingError + userInfo:[userInfo copy]]; +} + ++ (NSError *)emailAlreadyInUseErrorWithEmail:(nullable NSString *)email { + NSDictionary *userInfo; + if (email.length) { + userInfo = @{ + FIRAuthErrorUserInfoEmailKey : email, + }; + } + return [self errorWithCode:FIRAuthInternalErrorCodeEmailAlreadyInUse userInfo:userInfo]; +} + ++ (NSError *)userDisabledErrorWithMessage:(nullable NSString *)message { + return [self errorWithCode:FIRAuthInternalErrorCodeUserDisabled message:message]; +} + ++ (NSError *)wrongPasswordErrorWithMessage:(nullable NSString *)message { + return [self errorWithCode:FIRAuthInternalErrorCodeWrongPassword message:message]; +} + ++ (NSError *)tooManyRequestsErrorWithMessage:(nullable NSString *)message { + return [self errorWithCode:FIRAuthInternalErrorCodeTooManyRequests message:message]; +} + ++ (NSError *)invalidCustomTokenErrorWithMessage:(nullable NSString *)message { + return [self errorWithCode:FIRAuthInternalErrorCodeInvalidCustomToken message:message]; +} + ++ (NSError *)customTokenMistmatchErrorWithMessage:(nullable NSString *)message { + return [self errorWithCode:FIRAuthInternalErrorCodeCustomTokenMismatch message:message]; +} + ++ (NSError *)invalidCredentialErrorWithMessage:(nullable NSString *)message { + return [self errorWithCode:FIRAuthInternalErrorCodeInvalidCredential message:message]; +} + ++ (NSError *)requiresRecentLoginErrorWithMessage:(nullable NSString *)message { + return [self errorWithCode:FIRAuthInternalErrorCodeRequiresRecentLogin message:message]; +} + ++ (NSError *)invalidUserTokenErrorWithMessage:(nullable NSString *)message { + return [self errorWithCode:FIRAuthInternalErrorCodeInvalidUserToken message:message]; +} + ++ (NSError *)invalidEmailErrorWithMessage:(nullable NSString *)message { + return [self errorWithCode:FIRAuthInternalErrorCodeInvalidEmail message:message]; +} + ++ (NSError *)accountExistsWithDifferentCredentialErrorWithEmail:(nullable NSString *)email + updatedCredential:(nullable FIRAuthCredential *)updatedCredential { + NSMutableDictionary *userInfo = [NSMutableDictionary dictionary]; + if (email) { + userInfo[FIRAuthErrorUserInfoEmailKey] = email; + } + if (updatedCredential) { + userInfo[FIRAuthErrorUserInfoUpdatedCredentialKey] = updatedCredential; + } + return [self errorWithCode:FIRAuthInternalErrorCodeAccountExistsWithDifferentCredential + userInfo:userInfo]; +} + ++ (NSError *)providerAlreadyLinkedError { + return [self errorWithCode:FIRAuthInternalErrorCodeProviderAlreadyLinked]; +} + ++ (NSError *)noSuchProviderError { + return [self errorWithCode:FIRAuthInternalErrorCodeNoSuchProvider]; +} + ++ (NSError *)userTokenExpiredErrorWithMessage:(nullable NSString *)message { + return [self errorWithCode:FIRAuthInternalErrorCodeUserTokenExpired message:message]; +} + ++ (NSError *)userNotFoundErrorWithMessage:(nullable NSString *)message { + return [self errorWithCode:FIRAuthInternalErrorCodeUserNotFound message:message]; +} + ++ (NSError *)invalidAPIKeyError { + return [self errorWithCode:FIRAuthInternalErrorCodeInvalidAPIKey]; +} + ++ (NSError *)userMismatchError { + return [self errorWithCode:FIRAuthInternalErrorCodeUserMismatch]; +} + ++ (NSError *)credentialAlreadyInUseErrorWithMessage:(nullable NSString *)message + credential:(nullable FIRAuthCredential *)credential + email:(nullable NSString *)email { + NSMutableDictionary *userInfo = [NSMutableDictionary dictionary]; + if (credential) { + userInfo[FIRAuthErrorUserInfoUpdatedCredentialKey] = credential; + } + if (email.length) { + userInfo[FIRAuthErrorUserInfoEmailKey] = email; + } + if (userInfo.count) { + return [self errorWithCode:FIRAuthInternalErrorCodeCredentialAlreadyInUse + userInfo:userInfo]; + } + return [self errorWithCode:FIRAuthInternalErrorCodeCredentialAlreadyInUse message:message]; +} + ++ (NSError *)operationNotAllowedErrorWithMessage:(nullable NSString *)message { + return [self errorWithCode:FIRAuthInternalErrorCodeOperationNotAllowed message:message]; +} + ++ (NSError *)weakPasswordErrorWithServerResponseReason:(nullable NSString *)reason { + NSDictionary *userInfo; + if (reason.length) { + userInfo = @{ + NSLocalizedFailureReasonErrorKey : reason, + }; + } + return [self errorWithCode:FIRAuthInternalErrorCodeWeakPassword userInfo:userInfo]; +} + ++ (NSError *)appNotAuthorizedError { + return [self errorWithCode:FIRAuthInternalErrorCodeAppNotAuthorized]; +} + ++ (NSError *)expiredActionCodeErrorWithMessage:(nullable NSString *)message { + return [self errorWithCode:FIRAuthInternalErrorCodeExpiredActionCode message:message]; +} + ++ (NSError *)invalidActionCodeErrorWithMessage:(nullable NSString *)message { + return [self errorWithCode:FIRAuthInternalErrorCodeInvalidActionCode message:message]; +} + ++ (NSError *)invalidMessagePayloadErrorWithMessage:(nullable NSString *)message { + return [self errorWithCode:FIRAuthInternalErrorCodeInvalidMessagePayload message:message]; +} + ++ (NSError *)invalidSenderErrorWithMessage:(nullable NSString *)message { + return [self errorWithCode:FIRAuthInternalErrorCodeInvalidSender message:message]; +} + ++ (NSError *)invalidRecipientEmailErrorWithMessage:(nullable NSString *)message { + return [self errorWithCode:FIRAuthInternalErrorCodeInvalidRecipientEmail message:message]; +} + ++ (NSError *)missingIosBundleIDErrorWithMessage:(nullable NSString *)message { + return [self errorWithCode:FIRAuthinternalErrorCodeMissingIosBundleID message:message]; +} + ++ (NSError *)missingAndroidPackageNameErrorWithMessage:(nullable NSString *)message { + return [self errorWithCode:FIRAuthInternalErrorCodeMissingAndroidPackageName message:message]; +} + ++ (NSError *)unauthorizedDomainErrorWithMessage:(nullable NSString *)message { + return [self errorWithCode:FIRAuthInternalErrorCodeUnauthorizedDomain message:message]; +} + ++ (NSError *)invalidContinueURIErrorWithMessage:(nullable NSString *)message { + return [self errorWithCode:FIRAuthInternalErrorCodeInvalidContinueURI message:message]; +} + ++ (NSError *)missingContinueURIErrorWithMessage:(nullable NSString *)message { + return[self errorWithCode:FIRAuthInternalErrorCodeMissingContinueURI message:message]; +} + ++ (NSError *)missingEmailErrorWithMessage:(nullable NSString *)message { + return [self errorWithCode:FIRAuthInternalErrorCodeMissingEmail message:message]; +} + ++ (NSError *)missingPhoneNumberErrorWithMessage:(nullable NSString *)message { + return [self errorWithCode:FIRAuthInternalErrorCodeMissingPhoneNumber message:message]; +} + ++ (NSError *)invalidPhoneNumberErrorWithMessage:(nullable NSString *)message { + return [self errorWithCode:FIRAuthInternalErrorCodeInvalidPhoneNumber message:message]; +} + ++ (NSError *)missingVerificationCodeErrorWithMessage:(nullable NSString *)message { + return [self errorWithCode:FIRAuthInternalErrorCodeMissingVerificationCode message:message]; +} + ++ (NSError *)invalidVerificationCodeErrorWithMessage:(nullable NSString *)message { + return [self errorWithCode:FIRAuthInternalErrorCodeInvalidVerificationCode message:message]; +} + ++ (NSError *)missingVerificationIDErrorWithMessage:(nullable NSString *)message { + return [self errorWithCode:FIRAuthInternalErrorCodeMissingVerificationID message:message]; +} + ++ (NSError *)invalidVerificationIDErrorWithMessage:(nullable NSString *)message { + return [self errorWithCode:FIRAuthInternalErrorCodeInvalidVerificationID message:message]; +} + ++ (NSError *)sessionExpiredErrorWithMessage:(nullable NSString *)message { + return [self errorWithCode:FIRAuthInternalErrorCodeSessionExpired message:message]; +} + ++ (NSError *)missingAppCredentialWithMessage:(nullable NSString *)message { + return [self errorWithCode:FIRAuthInternalErrorCodeMissingAppCredential message:message]; +} + ++ (NSError *)invalidAppCredentialWithMessage:(nullable NSString *)message { + return [self errorWithCode:FIRAuthInternalErrorCodeInvalidAppCredential message:message]; +} + ++ (NSError *)quotaExceededErrorWithMessage:(nullable NSString *)message { + return [self errorWithCode:FIRAuthInternalErrorCodeQuotaExceeded message:message]; +} + ++ (NSError *)missingAppTokenErrorWithUnderlyingError:(nullable NSError *)underlyingError { + return [self errorWithCode:FIRAuthInternalErrorCodeMissingAppToken + underlyingError:underlyingError]; +} + ++ (NSError *)localPlayerNotAuthenticatedError { + return [self errorWithCode:FIRAuthInternalErrorCodeLocalPlayerNotAuthenticated]; +} + ++ (NSError *)gameKitNotLinkedError { + return [self errorWithCode:FIRAuthInternalErrorCodeGameKitNotLinked]; +} + ++ (NSError *)notificationNotForwardedError { + return [self errorWithCode:FIRAuthInternalErrorCodeNotificationNotForwarded]; +} + ++ (NSError *)appNotVerifiedErrorWithMessage:(nullable NSString *)message { + return [self errorWithCode:FIRAuthInternalErrorCodeAppNotVerified message:message]; +} + ++ (NSError *)missingClientIdentifierErrorWithMessage:(nullable NSString *)message { + return [self errorWithCode:FIRAuthInternalErrorCodeMissingClientIdentifier message:message]; +} + ++ (NSError *)captchaCheckFailedErrorWithMessage:(nullable NSString *)message { + return [self errorWithCode:FIRAuthInternalErrorCodeCaptchaCheckFailed message:message]; +} + ++ (NSError *)webContextAlreadyPresentedErrorWithMessage:(nullable NSString *)message { + return [self errorWithCode:FIRAuthInternalErrorCodeWebContextAlreadyPresented message:message]; +} + ++ (NSError *)webContextCancelledErrorWithMessage:(nullable NSString *)message { + return [self errorWithCode:FIRAuthInternalErrorCodeWebContextCancelled message:message]; +} + ++ (NSError *)appVerificationUserInteractionFailureWithReason:(NSString *)reason { + NSDictionary *userInfo; + if (reason.length) { + userInfo = @{ + NSLocalizedFailureReasonErrorKey : reason, + }; + } + return [self errorWithCode:FIRAuthInternalErrorCodeAppVerificationUserInteractionFailure + userInfo:userInfo]; +} + ++ (NSError *)webSignInUserInteractionFailureWithReason:(nullable NSString *)reason { + NSDictionary *userInfo; + if (reason.length) { + userInfo = @{ + NSLocalizedFailureReasonErrorKey : reason, + }; + } + return [self errorWithCode:FIRAuthInternalErrorCodeWebSignInUserInteractionFailure + userInfo:userInfo]; +} + ++ (nullable NSError *)URLResponseErrorWithCode:(NSString *)code message:(nullable NSString *)message { + if ([code isEqualToString:kURLResponseErrorCodeInvalidClientID]) { + return [self errorWithCode:FIRAuthInternalErrorCodeInvalidClientID message:message]; + } + if ([code isEqualToString:kURLResponseErrorCodeNetworkRequestFailed]) { + return [self errorWithCode:FIRAuthInternalErrorCodeWebNetworkRequestFailed message:message]; + } + if ([code isEqualToString:kURLResponseErrorCodeInternalError]) { + return [self errorWithCode:FIRAuthInternalErrorCodeWebInternalError message:message]; + } + return nil; +} + ++ (NSError *)nullUserErrorWithMessage:(nullable NSString *)message { + return [self errorWithCode:FIRAuthInternalErrorCodeNullUser message:message]; +} + ++ (NSError *)invalidProviderIDErrorWithMessage:(nullable NSString *)message { + return [self errorWithCode:FIRAuthInternalErrorCodeInvalidProviderID message:message]; +} + ++ (NSError *)invalidDynamicLinkDomainErrorWithMessage:(nullable NSString *)message { + return [self errorWithCode:FIRAuthInternalErrorCodeInvalidDynamicLinkDomain message:message]; +} + ++ (NSError *)keychainErrorWithFunction:(NSString *)keychainFunction status:(OSStatus)status { + NSString *failureReason = [NSString stringWithFormat:@"%@ (%li)", keychainFunction, (long)status]; + return [self errorWithCode:FIRAuthInternalErrorCodeKeychainError userInfo:@{ + NSLocalizedFailureReasonErrorKey : failureReason, + }]; +} + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Utilities/FIRAuthExceptionUtils.h b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Utilities/FIRAuthExceptionUtils.h new file mode 100644 index 0000000..3ae9159 --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Utilities/FIRAuthExceptionUtils.h @@ -0,0 +1,41 @@ +/* + * 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 + +NS_ASSUME_NONNULL_BEGIN + +/** @class FIRAuthExceptionUtils + @brief Utility class used to raise standardized Auth related exceptions. +*/ +@interface FIRAuthExceptionUtils : NSObject + +/** @fn raiseInvalidParameterExceptionWithReason: + @brief raises the "invalid parameter" exception + @param reason string will contain a description of the error. + */ ++ (void)raiseInvalidParameterExceptionWithReason:(nullable NSString *)reason; + +/** @fn raiseMethodNotImplementedExceptionWithReason: + @brief raises the "method not implemented" exception + @param reason string will contain a description of the error. + @see FIRMethodNotImplementedException + */ ++ (void)raiseMethodNotImplementedExceptionWithReason:(nullable NSString *)reason; + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Utilities/FIRAuthExceptionUtils.m b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Utilities/FIRAuthExceptionUtils.m new file mode 100644 index 0000000..3da858f --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Utilities/FIRAuthExceptionUtils.m @@ -0,0 +1,40 @@ +/* + * 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 "FIRAuthExceptionUtils.h" + +NS_ASSUME_NONNULL_BEGIN + +/** @var FIRMethodNotImplementedException + @brief The name of the "Method Not Implemented" exception. + */ +static NSString *const FIRMethodNotImplementedException = @"FIRMethodNotImplementedException"; + +@implementation FIRAuthExceptionUtils + ++ (void)raiseInvalidParameterExceptionWithReason:(nullable NSString *)reason { + [NSException raise:NSInvalidArgumentException format:@"%@", reason]; +} + ++ (void)raiseMethodNotImplementedExceptionWithReason:(nullable NSString *)reason { + NSException *exception = + [NSException exceptionWithName:FIRMethodNotImplementedException reason:reason userInfo:nil]; + [exception raise]; +} + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Utilities/FIRAuthInternalErrors.h b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Utilities/FIRAuthInternalErrors.h new file mode 100644 index 0000000..ec4e784 --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Utilities/FIRAuthInternalErrors.h @@ -0,0 +1,479 @@ +/* + * 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 + +#import "FIRAuthErrors.h" + +NS_ASSUME_NONNULL_BEGIN + +/** @var FIRAuthPublicErrorCodeFlag + @brief Bitmask value indicating the error represents a public error code when this bit is + zeroed. Error codes which don't contain this flag will be wrapped in an @c NSError whose + code is @c FIRAuthErrorCodeInternalError. + */ +static const NSInteger FIRAuthPublicErrorCodeFlag = 1 << 20; + +/** @var FIRAuthInternalErrorDomain + @brief The Firebase Auth error domain for internal errors. + */ +extern NSString *const FIRAuthInternalErrorDomain; + +/** @var FIRAuthErrorUserInfoDeserializedResponseKey + @brief Errors with the code @c FIRAuthErrorCodeUnexpectedResponseError, + @c FIRAuthErrorCodeUnexpectedErrorResponseError, and + @c FIRAuthInternalErrorCodeRPCResponseDecodingError may contain an @c NSError.userInfo + dictionary which contains this key. The value associated with this key is an object of + unspecified contents containing the deserialized server response. + */ +extern NSString *const FIRAuthErrorUserInfoDeserializedResponseKey; + +/** @var FIRAuthErrorUserInfoDataKey + @brief Errors with the code @c FIRAuthErrorCodeUnexpectedResponseError or + @c FIRAuthErrorCodeUnexpectedErrorResponseError may contain an @c NSError.userInfo + dictionary which contains this key. The value associated with this key is an @c NSString + which represents the response from a server to an RPC which could not be deserialized. + */ +extern NSString *const FIRAuthErrorUserInfoDataKey; + + +/** @var FIRAuthInternalErrorCode + @brief Error codes used internally by Firebase Auth. + @remarks All errors are generated using an internal error code. These errors are automatically + converted to the appropriate public version of the @c NSError by the methods in + @c FIRAuthErrorUtils + */ +typedef NS_ENUM(NSInteger, FIRAuthInternalErrorCode) { + /** @var FIRAuthInternalErrorCodeNetworkError + @brief Indicates a network error occurred (such as a timeout, interrupted connection, or + unreachable host.) + @remarks These types of errors are often recoverable with a retry. + + See the @c NSUnderlyingError value in the @c NSError.userInfo dictionary for details about + the network error which occurred. + */ + FIRAuthInternalErrorCodeNetworkError = FIRAuthPublicErrorCodeFlag | FIRAuthErrorCodeNetworkError, + + /** @var FIRAuthInternalErrorCodeEmailAlreadyInUse + @brief The email used to attempt a sign-up already exists. + */ + FIRAuthInternalErrorCodeEmailAlreadyInUse = + FIRAuthPublicErrorCodeFlag | FIRAuthErrorCodeEmailAlreadyInUse, + + /** @var FIRAuthInternalErrorCodeUserDisabled + @brief Indicates the user's account is disabled on the server side. + */ + FIRAuthInternalErrorCodeUserDisabled = FIRAuthPublicErrorCodeFlag | FIRAuthErrorCodeUserDisabled, + + /** @var FIRAuthInternalErrorCodeWrongPassword + @brief Indicates the user attempted sign in with a wrong password + */ + FIRAuthInternalErrorCodeWrongPassword = + FIRAuthPublicErrorCodeFlag | FIRAuthErrorCodeWrongPassword, + + /** @var FIRAuthInternalErrorCodeKeychainError + @brief Indicates an error occurred accessing the keychain. + @remarks The @c NSLocalizedFailureReasonErrorKey field in the @c NSError.userInfo dictionary + will contain more information about the error encountered. + */ + FIRAuthInternalErrorCodeKeychainError = + FIRAuthPublicErrorCodeFlag | FIRAuthErrorCodeKeychainError, + + /** @var FIRAuthInternalErrorCodeMissingClientIdentifier + @brief Indicates an error for when the client identifier is missing. + */ + FIRAuthInternalErrorCodeMissingClientIdentifier = + FIRAuthPublicErrorCodeFlag | FIRAuthErrorCodeMissingClientIdentifier, + + /** @var FIRAuthInternalErrorCodeInternalError + @brief An internal error occurred. + @remarks This value is here for consistency. It's also used to make the implementation of + wrapping internal errors simpler. + */ + FIRAuthInternalErrorCodeInternalError = + FIRAuthPublicErrorCodeFlag | FIRAuthErrorCodeInternalError, + + /** @var FIRAuthInternalErrorCodeTooManyRequests + @brief Indicates that too many requests were made to a server method. + */ + FIRAuthInternalErrorCodeTooManyRequests = + FIRAuthPublicErrorCodeFlag | FIRAuthErrorCodeTooManyRequests, + + /** @var FIRAuthInternalErrorCodeInvalidCustomToken + @brief Indicates a validation error with the custom token. + */ + FIRAuthInternalErrorCodeInvalidCustomToken = + FIRAuthPublicErrorCodeFlag | FIRAuthErrorCodeInvalidCustomToken, + + /** @var FIRAuthInternalErrorCodeCredentialMismatch + @brief Indicates the service account and the API key belong to different projects. + */ + FIRAuthInternalErrorCodeCustomTokenMismatch = + FIRAuthPublicErrorCodeFlag | FIRAuthErrorCodeCustomTokenMismatch, + + /** @var FIRAuthInternalErrorCodeInvalidCredential + @brief Indicates the IDP token or requestUri is invalid. + */ + FIRAuthInternalErrorCodeInvalidCredential = + FIRAuthPublicErrorCodeFlag | FIRAuthErrorCodeInvalidCredential, + + /** @var FIRAuthInternalErrorCodeRequiresRecentLogin + @brief Indicates the user has attemped to change email or password more than 5 minutes after + signing in. + */ + FIRAuthInternalErrorCodeRequiresRecentLogin = + FIRAuthPublicErrorCodeFlag | FIRAuthErrorCodeRequiresRecentLogin, + + /** @var FIRAuthInternalErrorCodeInvalidUserToken + @brief Indicates user's saved auth credential is invalid, the user needs to sign in again. + */ + FIRAuthInternalErrorCodeInvalidUserToken = + FIRAuthPublicErrorCodeFlag | FIRAuthErrorCodeInvalidUserToken, + + /** @var FIRAuthInternalErrorCodeInvalidEmail + @brief Indicates the email identifier is invalid. + */ + FIRAuthInternalErrorCodeInvalidEmail = + FIRAuthPublicErrorCodeFlag | FIRAuthErrorCodeInvalidEmail, + + /** @var FIRAuthInternalErrorCodeAccountExistsWithDifferentCredential + @brief Indicates account linking is needed. + */ + FIRAuthInternalErrorCodeAccountExistsWithDifferentCredential = + FIRAuthPublicErrorCodeFlag | FIRAuthErrorCodeAccountExistsWithDifferentCredential, + + /** @var FIRAuthInternalErrorCodeProviderAlreadyLinked + @brief Indicates an attempt to link a provider to which we are already linked. + */ + FIRAuthInternalErrorCodeProviderAlreadyLinked = + FIRAuthPublicErrorCodeFlag | FIRAuthErrorCodeProviderAlreadyLinked, + + /** @var FIRAuthInternalErrorCodeNoSuchProvider + @brief Indicates an attempt to unlink a provider that is not is not linked. + */ + FIRAuthInternalErrorCodeNoSuchProvider = + FIRAuthPublicErrorCodeFlag | FIRAuthErrorCodeNoSuchProvider, + + /** @var FIRAuthInternalErrorCodeUserTokenExpired + @brief Indicates the token issue time is older than account's valid_since time. + */ + FIRAuthInternalErrorCodeUserTokenExpired = + FIRAuthPublicErrorCodeFlag | FIRAuthErrorCodeUserTokenExpired, + + /** @var FIRAuthInternalErrorCodeUserNotFound + @brief Indicates the user account was been found. + */ + FIRAuthInternalErrorCodeUserNotFound = + FIRAuthPublicErrorCodeFlag | FIRAuthErrorCodeUserNotFound, + + /** @var FIRAuthInternalErrorCodeInvalidAPIKey + @brief Indicates an invalid API Key was supplied in the request. + */ + FIRAuthInternalErrorCodeInvalidAPIKey = + FIRAuthPublicErrorCodeFlag | FIRAuthErrorCodeInvalidAPIKey, + + /** @var FIRAuthInternalErrorCodeOperationNotAllowed + @brief Indicates that admin disabled sign-in with the specified IDP. + */ + FIRAuthInternalErrorCodeOperationNotAllowed = + FIRAuthPublicErrorCodeFlag | FIRAuthErrorCodeOperationNotAllowed, + + /** @var FIRAuthInternalErrorCodeUserMismatch + @brief Indicates that user attempted to reauthenticate with a user other than the current + user. + */ + FIRAuthInternalErrorCodeUserMismatch = + FIRAuthPublicErrorCodeFlag | FIRAuthErrorCodeUserMismatch, + + /** @var FIRAuthInternalErrorCodeCredentialAlreadyInUse + @brief Indicates an attempt to link with a credential that has already been linked with a + different Firebase account. + */ + FIRAuthInternalErrorCodeCredentialAlreadyInUse = + FIRAuthPublicErrorCodeFlag | FIRAuthErrorCodeCredentialAlreadyInUse, + + /** @var FIRAuthInternalErrorCodeWeakPassword + @brief Indicates an attempt to set a password that is considered too weak. + */ + FIRAuthInternalErrorCodeWeakPassword = + FIRAuthPublicErrorCodeFlag | FIRAuthErrorCodeWeakPassword, + + /** @var FIRAuthInternalErrorCodeAppNotAuthorized + @brief Indicates the App is not authorized to use Firebase Authentication with the + provided API Key. + */ + FIRAuthInternalErrorCodeAppNotAuthorized = + FIRAuthPublicErrorCodeFlag | FIRAuthErrorCodeAppNotAuthorized, + + /** @var FIRAuthInternalErrorCodeExpiredActionCode + @brief Indicates the OOB code is expired. + */ + FIRAuthInternalErrorCodeExpiredActionCode = + FIRAuthPublicErrorCodeFlag | FIRAuthErrorCodeExpiredActionCode, + + /** @var FIRAuthInternalErrorCodeInvalidActionCode + @brief Indicates the OOB code is invalid. + */ + FIRAuthInternalErrorCodeInvalidActionCode = + FIRAuthPublicErrorCodeFlag | FIRAuthErrorCodeInvalidActionCode, + + /** Indicates that there are invalid parameters in the payload during a "send password reset email + * " attempt. + */ + FIRAuthInternalErrorCodeInvalidMessagePayload = + FIRAuthPublicErrorCodeFlag | FIRAuthErrorCodeInvalidMessagePayload, + + /** Indicates that the sender email is invalid during a "send password reset email" attempt. + */ + FIRAuthInternalErrorCodeInvalidSender = + FIRAuthPublicErrorCodeFlag | FIRAuthErrorCodeInvalidSender, + + /** Indicates that the recipient email is invalid. + */ + FIRAuthInternalErrorCodeInvalidRecipientEmail = + FIRAuthPublicErrorCodeFlag | FIRAuthErrorCodeInvalidRecipientEmail, + + /** Indicates that the iOS bundle ID is missing when a iOS App Store ID is provided. + */ + FIRAuthinternalErrorCodeMissingIosBundleID = + FIRAuthPublicErrorCodeFlag | FIRAuthErrorCodeMissingIosBundleID, + + /** Indicates that the android package name is missing when the @c androidInstallApp flag is set + to true. + */ + FIRAuthInternalErrorCodeMissingAndroidPackageName = + FIRAuthPublicErrorCodeFlag | FIRAuthErrorCodeMissingAndroidPackageName, + + /** Indicates that the domain specified in the continue URL is not whitelisted in the Firebase + console. + */ + FIRAuthInternalErrorCodeUnauthorizedDomain = + FIRAuthPublicErrorCodeFlag | FIRAuthErrorCodeUnauthorizedDomain, + + /** Indicates that the domain specified in the continue URI is not valid. + */ + FIRAuthInternalErrorCodeInvalidContinueURI = + FIRAuthPublicErrorCodeFlag | FIRAuthErrorCodeInvalidContinueURI, + + /** Indicates that a continue URI was not provided in a request to the backend which requires + one. + */ + FIRAuthInternalErrorCodeMissingContinueURI = + FIRAuthPublicErrorCodeFlag | FIRAuthErrorCodeMissingContinueURI, + + /** Indicates that an email address was expected but one was not provided. + */ + FIRAuthInternalErrorCodeMissingEmail = + FIRAuthPublicErrorCodeFlag | FIRAuthErrorCodeMissingEmail, + + /** Indicates that a phone number was not provided in a call to @c verifyPhoneNumber:completion:. + */ + FIRAuthInternalErrorCodeMissingPhoneNumber = + FIRAuthPublicErrorCodeFlag | FIRAuthErrorCodeMissingPhoneNumber, + + /** Indicates that an invalid phone number was provided in a call to @c + verifyPhoneNumber:completion:. + */ + FIRAuthInternalErrorCodeInvalidPhoneNumber = + FIRAuthPublicErrorCodeFlag | FIRAuthErrorCodeInvalidPhoneNumber, + + /** Indicates that the phone auth credential was created with an empty verification code. + */ + FIRAuthInternalErrorCodeMissingVerificationCode = + FIRAuthPublicErrorCodeFlag | FIRAuthErrorCodeMissingVerificationCode, + + /** Indicates that an invalid verification code was used in the verifyPhoneNumber request. + */ + FIRAuthInternalErrorCodeInvalidVerificationCode = + FIRAuthPublicErrorCodeFlag | FIRAuthErrorCodeInvalidVerificationCode, + + /** Indicates that the phone auth credential was created with an empty verification ID. + */ + FIRAuthInternalErrorCodeMissingVerificationID = + FIRAuthPublicErrorCodeFlag | FIRAuthErrorCodeMissingVerificationID, + + /** Indicates that the APNS device token is missing in the verifyClient request. + */ + FIRAuthInternalErrorCodeMissingAppCredential = + FIRAuthPublicErrorCodeFlag | FIRAuthErrorCodeMissingAppCredential, + + /** Indicates that an invalid APNS device token was used in the verifyClient request. + */ + FIRAuthInternalErrorCodeInvalidAppCredential = + FIRAuthPublicErrorCodeFlag | FIRAuthErrorCodeInvalidAppCredential, + + /** Indicates that the reCAPTCHA token is not valid. + */ + FIRAuthInternalErrorCodeCaptchaCheckFailed = + FIRAuthPublicErrorCodeFlag | FIRAuthErrorCodeCaptchaCheckFailed, + + /** Indicates that an invalid verification ID was used in the verifyPhoneNumber request. + */ + FIRAuthInternalErrorCodeInvalidVerificationID = + FIRAuthPublicErrorCodeFlag | FIRAuthErrorCodeInvalidVerificationID, + + /** Indicates that the quota of SMS messages for a given project has been exceeded. + */ + FIRAuthInternalErrorCodeQuotaExceeded = + FIRAuthPublicErrorCodeFlag | FIRAuthErrorCodeQuotaExceeded, + + /** Indicates that an attempt was made to present a new web context while one was already being + presented. + */ + FIRAuthInternalErrorCodeWebContextAlreadyPresented = + FIRAuthPublicErrorCodeFlag | FIRAuthErrorCodeWebContextAlreadyPresented, + + /** Indicates that the URL presentation was cancelled prematurely by the user. + */ + FIRAuthInternalErrorCodeWebContextCancelled = + FIRAuthPublicErrorCodeFlag | FIRAuthErrorCodeWebContextCancelled, + + /** Indicates a general failure during the app verification flow. + */ + FIRAuthInternalErrorCodeAppVerificationUserInteractionFailure = + FIRAuthPublicErrorCodeFlag | FIRAuthErrorCodeAppVerificationUserInteractionFailure, + + /** Indicates that the clientID used to invoke a web flow is invalid. + */ + FIRAuthInternalErrorCodeInvalidClientID = + FIRAuthPublicErrorCodeFlag | FIRAuthErrorCodeInvalidClientID, + + /** Indicates that a network request within a SFSafariViewController or UIWebview failed. + */ + FIRAuthInternalErrorCodeWebNetworkRequestFailed = + FIRAuthPublicErrorCodeFlag | FIRAuthErrorCodeWebNetworkRequestFailed, + + /** Indicates that an internal error occurred within a SFSafariViewController or UIWebview. + */ + FIRAuthInternalErrorCodeWebInternalError = + FIRAuthPublicErrorCodeFlag | FIRAuthErrorCodeWebInternalError, + + /** Indicates that an internal error occurred within a SFSafariViewController or UIWebview. + */ + FIRAuthInternalErrorCodeWebSignInUserInteractionFailure = + FIRAuthPublicErrorCodeFlag | FIRAuthErrorCodeWebSignInUserInteractionFailure, + + // The enum values between 17046 and 17051 are reserved and should NOT be used for new error + // codes. + + /** Indicates that the SMS code has expired + */ + FIRAuthInternalErrorCodeSessionExpired = + FIRAuthPublicErrorCodeFlag | FIRAuthErrorCodeSessionExpired, + + FIRAuthInternalErrorCodeMissingAppToken = + FIRAuthPublicErrorCodeFlag | FIRAuthErrorCodeMissingAppToken, + + FIRAuthInternalErrorCodeNotificationNotForwarded = + FIRAuthPublicErrorCodeFlag | FIRAuthErrorCodeNotificationNotForwarded, + + FIRAuthInternalErrorCodeAppNotVerified = + FIRAuthPublicErrorCodeFlag | FIRAuthErrorCodeAppNotVerified, + + /** Indicates that the Game Center local player was not authenticated. + */ + FIRAuthInternalErrorCodeLocalPlayerNotAuthenticated = + FIRAuthPublicErrorCodeFlag | FIRAuthErrorCodeLocalPlayerNotAuthenticated, + + /** Indicates that the Game Center local player was not authenticated. + */ + FIRAuthInternalErrorCodeGameKitNotLinked = + FIRAuthPublicErrorCodeFlag | FIRAuthErrorCodeGameKitNotLinked, + + /** Indicates that a non-null user was expected as an argmument to the operation but a null + user was provided. + */ + FIRAuthInternalErrorCodeNullUser = + FIRAuthPublicErrorCodeFlag | FIRAuthErrorCodeNullUser, + + /** Indicates that the provider id given for the web operation is invalid. + */ + FIRAuthInternalErrorCodeInvalidProviderID = + FIRAuthPublicErrorCodeFlag | FIRAuthErrorCodeInvalidProviderID, + + /** Indicates that the Firebase Dynamic Link domain used is either not configured or is unauthorized + for the current project. + */ + FIRAuthInternalErrorCodeInvalidDynamicLinkDomain = + FIRAuthPublicErrorCodeFlag | FIRAuthErrorCodeInvalidDynamicLinkDomain, + + FIRAuthInternalErrorCodeMalformedJWT = + FIRAuthPublicErrorCodeFlag | FIRAuthErrorCodeMalformedJWT, + + /** @var FIRAuthInternalErrorCodeRPCRequestEncodingError + @brief Indicates an error encoding the RPC request. + @remarks This is typically due to some sort of unexpected input value. + + See the @c NSUnderlyingError value in the @c NSError.userInfo dictionary for details. + */ + FIRAuthInternalErrorCodeRPCRequestEncodingError = 1, + + /** @var FIRAuthInternalErrorCodeJSONSerializationError + @brief Indicates an error serializing an RPC request. + @remarks This is typically due to some sort of unexpected input value. + + If an @c NSJSONSerialization.isValidJSONObject: check fails, the error will contain no + @c NSUnderlyingError key in the @c NSError.userInfo dictionary. If an error was + encountered calling @c NSJSONSerialization.dataWithJSONObject:options:error:, the + resulting error will be associated with the @c NSUnderlyingError key in the + @c NSError.userInfo dictionary. + */ + FIRAuthInternalErrorCodeJSONSerializationError = 2, + + /** @var FIRAuthInternalErrorCodeUnexpectedErrorResponse + @brief Indicates an HTTP error occurred and the data returned either couldn't be deserialized + or couldn't be decoded. + @remarks See the @c NSUnderlyingError value in the @c NSError.userInfo dictionary for details + about the HTTP error which occurred. + + If the response could be deserialized as JSON then the @c NSError.userInfo dictionary will + contain a value for the key @c FIRAuthErrorUserInfoDeserializedResponseKey which is the + deserialized response value. + + If the response could not be deserialized as JSON then the @c NSError.userInfo dictionary + will contain values for the @c NSUnderlyingErrorKey and @c FIRAuthErrorUserInfoDataKey + keys. + */ + FIRAuthInternalErrorCodeUnexpectedErrorResponse = 3, + + /** @var FIRAuthInternalErrorCodeUnexpectedResponse + @brief Indicates the HTTP response indicated the request was a successes, but the response + contains something other than a JSON-encoded dictionary, or the data type of the response + indicated it is different from the type of response we expected. + @remarks See the @c NSUnderlyingError value in the @c NSError.userInfo dictionary. + If this key is present in the dictionary, it may contain an error from + @c NSJSONSerialization error (indicating the response received was of the wrong data + type). + + See the @c FIRAuthErrorUserInfoDeserializedResponseKey value in the @c NSError.userInfo + dictionary. If the response could be deserialized, it's deserialized representation will + be associated with this key. If the @c NSUnderlyingError value in the @c NSError.userInfo + dictionary is @c nil, this indicates the JSON didn't represent a dictionary. + */ + FIRAuthInternalErrorCodeUnexpectedResponse = 4, + + /** @var FIRAuthInternalErrorCodeRPCResponseDecodingError + @brief Indicates an error decoding the RPC response. + This is typically due to some sort of unexpected response value from the server. + @remarks See the @c NSUnderlyingError value in the @c NSError.userInfo dictionary for details. + + See the @c FIRErrorUserInfoDecodedResponseKey value in the @c NSError.userInfo dictionary. + The deserialized representation of the response will be associated with this key. + */ + FIRAuthInternalErrorCodeRPCResponseDecodingError = 5, +}; + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Utilities/FIRAuthURLPresenter.h b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Utilities/FIRAuthURLPresenter.h new file mode 100644 index 0000000..a886a3e --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Utilities/FIRAuthURLPresenter.h @@ -0,0 +1,64 @@ +/* + * 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 + +NS_ASSUME_NONNULL_BEGIN + +@protocol FIRAuthUIDelegate; + +/** @typedef FIRAuthURLPresentationCompletion + @brief The type of block invoked when the URLPresentation completes. + @param callbackURL The callback URL if the presentation ends with a matching callback. + @param error The error if the presentation fails to start or ends with an error. + */ +typedef void (^FIRAuthURLPresentationCompletion)(NSURL *_Nullable callbackURL, + NSError *_Nullable error); + +/** @typedef FIRAuthCallbackMatcher + @brief The type of block invoked for checking whether a callback URL matches. + @param callbackURL The callback URL to check for match. + @return Whether or not the specific callback URL matches or not. + */ +typedef BOOL (^FIRAuthURLCallbackMatcher)(NSURL * _Nullable callbackURL); + +/** @class FIRAuthURLPresenter + @brief A Class responsible for presenting URL via SFSafariViewController or UIWebView. + */ +@interface FIRAuthURLPresenter : NSObject + +/** @fn presentURL:UIDelegate:callbackMatcher:completion: + @brief Presents an URL to interact with user. + @param URL The URL to present. + @param UIDelegate The UI delegate to present view controller. + @param completion A block to be called either synchronously if the presentation fails to start, + or asynchronously in future on an unspecified thread once the presentation finishes. + */ +- (void)presentURL:(NSURL *)URL + UIDelegate:(nullable id)UIDelegate + callbackMatcher:(FIRAuthURLCallbackMatcher)callbackMatcher + completion:(FIRAuthURLPresentationCompletion)completion; + +/** @fn canHandleURL: + @brief Determines if a URL was produced by the currently presented URL. + @param URL The URL to handle. + @return Whether the URL could be handled or not. + */ +- (BOOL)canHandleURL:(NSURL *)URL; + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Utilities/FIRAuthURLPresenter.m b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Utilities/FIRAuthURLPresenter.m new file mode 100644 index 0000000..d8e3593 --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Utilities/FIRAuthURLPresenter.m @@ -0,0 +1,190 @@ +/* + * 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 "FIRAuthURLPresenter.h" + +#import + +#import "FIRAuthDefaultUIDelegate.h" +#import "FIRAuthErrorUtils.h" +#import "FIRAuthGlobalWorkQueue.h" +#import "FIRAuthUIDelegate.h" +#import "FIRAuthWebViewController.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface FIRAuthURLPresenter () +@end + +// Disable unguarded availability warnings because SFSafariViewController is been used throughout +// the code, including as an iVar, which cannot be simply excluded by @available check. +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wunguarded-availability" + +@implementation FIRAuthURLPresenter { + /** @var _isPresenting + @brief Whether or not some web-based content is being presented. + */ + BOOL _isPresenting; + + /** @var _callbackMatcher + @brief The callback URL matcher for the current presentation, if one is active. + */ + FIRAuthURLCallbackMatcher _Nullable _callbackMatcher; + + /** @var _safariViewController + @brief The SFSafariViewController used for the current presentation, if any. + */ + SFSafariViewController *_Nullable _safariViewController; + + /** @var _webViewController + @brief The FIRAuthWebViewController used for the current presentation, if any. + */ + FIRAuthWebViewController *_Nullable _webViewController; + + /** @var _UIDelegate + @brief The UIDelegate used to present the SFSafariViewController. + */ + id _UIDelegate; + + /** @var _completion + @brief The completion handler for the current presentaion, if one is active. + @remarks This variable is also used as a flag to indicate a presentation is active. + */ + FIRAuthURLPresentationCompletion _Nullable _completion; +} + +- (void)presentURL:(NSURL *)URL + UIDelegate:(nullable id)UIDelegate + callbackMatcher:(FIRAuthURLCallbackMatcher)callbackMatcher + completion:(FIRAuthURLPresentationCompletion)completion { + if (_isPresenting) { + // Unable to start a new presentation on top of another. + _completion(nil, [FIRAuthErrorUtils webContextAlreadyPresentedErrorWithMessage:nil]); + return; + } + _isPresenting = YES; + _callbackMatcher = callbackMatcher; + _completion = completion; + dispatch_async(dispatch_get_main_queue(), ^() { + self->_UIDelegate = UIDelegate ?: [FIRAuthDefaultUIDelegate defaultUIDelegate]; + if ([SFSafariViewController class]) { + self->_safariViewController = [[SFSafariViewController alloc] initWithURL:URL]; + self->_safariViewController.delegate = self; + [self->_UIDelegate presentViewController:self->_safariViewController + animated:YES + completion:nil]; + return; + } else { + self->_webViewController = [[FIRAuthWebViewController alloc] initWithURL:URL delegate:self]; + UINavigationController *navController = + [[UINavigationController alloc] initWithRootViewController:self->_webViewController]; + [self->_UIDelegate presentViewController:navController animated:YES completion:nil]; + } + }); +} + +- (BOOL)canHandleURL:(NSURL *)URL { + if (_isPresenting && _callbackMatcher && _callbackMatcher(URL)) { + [self finishPresentationWithURL:URL error:nil]; + return YES; + } + return NO; +} + +#pragma mark - SFSafariViewControllerDelegate + +- (void)safariViewControllerDidFinish:(SFSafariViewController *)controller { + dispatch_async(FIRAuthGlobalWorkQueue(), ^() { + if (controller == self->_safariViewController) { + self->_safariViewController = nil; + //TODO:Ensure that the SFSafariViewController is actually removed from the screen before + //invoking finishPresentationWithURL:error: + [self finishPresentationWithURL:nil + error:[FIRAuthErrorUtils webContextCancelledErrorWithMessage:nil]]; + } + }); +} + +#pragma mark - FIRAuthwebViewControllerDelegate + +- (BOOL)webViewController:(FIRAuthWebViewController *)webViewController canHandleURL:(NSURL *)URL { + __block BOOL result = NO; + dispatch_sync(FIRAuthGlobalWorkQueue(), ^() { + if (webViewController == self->_webViewController) { + result = [self canHandleURL:URL]; + } + }); + return result; +} + +- (void)webViewControllerDidCancel:(FIRAuthWebViewController *)webViewController { + dispatch_async(FIRAuthGlobalWorkQueue(), ^() { + if (webViewController == self->_webViewController) { + [self finishPresentationWithURL:nil + error:[FIRAuthErrorUtils webContextCancelledErrorWithMessage:nil]]; + } + }); +} + +- (void)webViewController:(FIRAuthWebViewController *)webViewController + didFailWithError:(NSError *)error { + dispatch_async(FIRAuthGlobalWorkQueue(), ^() { + if (webViewController == self->_webViewController) { + [self finishPresentationWithURL:nil error:error]; + } + }); +} + +#pragma mark - Private methods + +/** @fn finishPresentationWithURL:error: + @brief Finishes the presentation for a given URL, if any. + @param URL The URL to finish presenting. + @param error The error with which to finish presenting, if any. + */ +- (void)finishPresentationWithURL:(nullable NSURL *)URL + error:(nullable NSError *)error { + _callbackMatcher = nil; + id UIDelegate = _UIDelegate; + _UIDelegate = nil; + FIRAuthURLPresentationCompletion completion = _completion; + _completion = nil; + void (^finishBlock)(void) = ^() { + self->_isPresenting = NO; + completion(URL, error); + }; + SFSafariViewController *safariViewController = _safariViewController; + _safariViewController = nil; + FIRAuthWebViewController *webViewController = _webViewController; + _webViewController = nil; + if (safariViewController || webViewController) { + dispatch_async(dispatch_get_main_queue(), ^() { + [UIDelegate dismissViewControllerAnimated:YES completion:^() { + dispatch_async(FIRAuthGlobalWorkQueue(), finishBlock); + }]; + }); + } else { + finishBlock(); + } +} + +#pragma clang diagnostic pop // ignored "-Wunguarded-availability" + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Utilities/FIRAuthWebUtils.h b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Utilities/FIRAuthWebUtils.h new file mode 100644 index 0000000..ebf464d --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Utilities/FIRAuthWebUtils.h @@ -0,0 +1,101 @@ +/* + * 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 + +@class FIRAuthRequestConfiguration; + +NS_ASSUME_NONNULL_BEGIN + +/** @typedef FIRFetchAuthDomainCallback + @brief The callback invoked at the end of the flow to fetch the Auth domain. + @param authDomain The Auth domain. + @param error The error that occurred while fetching the auth domain, if any. + */ +typedef void (^FIRFetchAuthDomainCallback)(NSString *_Nullable authDomain, + NSError *_Nullable error); + +/** @class FIRAuthURLUtils + @brief A utility class used to facilitate the creation of auth related URLs. + */ +@interface FIRAuthWebUtils : NSObject + +/** @fn randomStringWithLength: + @brief Generates a random string of a specified length. + */ ++ (NSString *)randomStringWithLength:(NSUInteger)length; + +/** @fn isCallbackSchemeRegisteredForCustomURLScheme: + @brief Checks whether or not the provided custom URL scheme has been registered by the app. + @param URLScheme The custom URL scheme to be checked against all custom URL schemes registered by the app. + @return whether or not the provided custom URL scheme has been registered by the app. + */ ++ (BOOL)isCallbackSchemeRegisteredForCustomURLScheme:(NSString *)URLScheme; + +/** @fn isExpectedCallbackURL:eventID:authType + @brief Parses a URL into all available query items. + @param URL The actual callback URL. + @param eventID The expected event ID. + @param authType The expected auth type. + @param callbackScheme The expected callback custom scheme. + @return Whether or not the actual callback URL matches the expected callback URL. + */ ++ (BOOL)isExpectedCallbackURL:(nullable NSURL *)URL + eventID:(NSString *)eventID + authType:(NSString *)authType + callbackScheme:(NSString *)callbackScheme; + +/** @fn fetchAuthDomainWithCompletion:completion: + @brief Fetches the auth domain associated with the Firebase Project. + @param completion The callback invoked after the auth domain has been constructed or an error + has been encountered. + */ ++ (void)fetchAuthDomainWithRequestConfiguration:(FIRAuthRequestConfiguration *)requestConfiguration + completion:(FIRFetchAuthDomainCallback)completion; + +/** @fn queryItemValue:from: + @brief Utility function to get a value from a NSURLQueryItem array. + @param name The key. + @param queryList The NSURLQueryItem array. + @return The value for the key. + */ + ++ (nullable NSString *)queryItemValue:(NSString *)name from:(NSArray *)queryList; + +/** @fn dictionaryWithHttpArgumentsString: + @brief Utility function to get a dictionary from a http argument string. + @param argString The http argument string. + @return The resulting dictionary of query arguments. + */ ++ (NSDictionary *)dictionaryWithHttpArgumentsString:(NSString *)argString; + +/** @fn stringByUnescapingFromURLArgument:from: + @brief Utility function to get a string by unescapting URL arguments. + @param argument The argument string. + @return The resulting string after unescaping URL argument. + */ ++ (NSString *)stringByUnescapingFromURLArgument:(NSString *)argument; + +/** @fn parseURL: + @brief Parses an incoming URL into all available query items. + @param urlString The url to be parsed. + @return A dictionary of available query items in the target URL. + */ ++ (NSDictionary *)parseURL:(NSString *)urlString; + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Utilities/FIRAuthWebUtils.m b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Utilities/FIRAuthWebUtils.m new file mode 100644 index 0000000..78d1df4 --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Utilities/FIRAuthWebUtils.m @@ -0,0 +1,197 @@ +/* + * 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 "FIRAuthWebUtils.h" + +#import "FIRAuthBackend.h" +#import "FIRAuthErrorUtils.h" +#import "FIRGetProjectConfigRequest.h" +#import "FIRGetProjectConfigResponse.h" + +NS_ASSUME_NONNULL_BEGIN + +@implementation FIRAuthWebUtils + ++ (NSArray *)supportedAuthDomains { + return @[@"firebaseapp.com", @"web.app"]; +} + ++ (NSString *)randomStringWithLength:(NSUInteger)length { + NSMutableString *randomString = [[NSMutableString alloc] init]; + for (int i=0; i < length; i++) { + [randomString appendString: + [NSString stringWithFormat:@"%c", 'a' + arc4random_uniform('z' - 'a' + 1)]]; + } + return randomString; +} + ++ (BOOL)isCallbackSchemeRegisteredForCustomURLScheme:(NSString *)URLScheme { + NSString *expectedCustomScheme = [URLScheme lowercaseString]; + NSArray *urlTypes = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleURLTypes"]; + for (NSDictionary *urlType in urlTypes) { + NSArray *urlTypeSchemes = urlType[@"CFBundleURLSchemes"]; + for (NSString *urlTypeScheme in urlTypeSchemes) { + if ([urlTypeScheme.lowercaseString isEqualToString:expectedCustomScheme]) { + return YES; + } + } + } + return NO; +} + ++ (BOOL)isExpectedCallbackURL:(nullable NSURL *)URL + eventID:(NSString *)eventID + authType:(NSString *)authType + callbackScheme:(NSString *)callbackScheme { + if (!URL) { + return NO; + } + NSURLComponents *actualURLComponents = + [NSURLComponents componentsWithURL:URL resolvingAgainstBaseURL:NO]; + actualURLComponents.query = nil; + actualURLComponents.fragment = nil; + + NSURLComponents *expectedURLComponents = [[NSURLComponents alloc] init]; + expectedURLComponents.scheme = callbackScheme; + expectedURLComponents.host = @"firebaseauth"; + expectedURLComponents.path = @"/link"; + + if (![expectedURLComponents.URL isEqual:actualURLComponents.URL]) { + return NO; + } + NSDictionary *URLQueryItems = + [self dictionaryWithHttpArgumentsString:URL.query]; + NSURL *deeplinkURL = [NSURL URLWithString:URLQueryItems[@"deep_link_id"]]; + NSDictionary *deeplinkQueryItems = + [self dictionaryWithHttpArgumentsString:deeplinkURL.query]; + if ([deeplinkQueryItems[@"authType"] isEqualToString:authType] && + [deeplinkQueryItems[@"eventId"] isEqualToString:eventID]) { + return YES; + } + return NO; +} + ++ (void)fetchAuthDomainWithRequestConfiguration:(FIRAuthRequestConfiguration *)requestConfiguration + completion:(FIRFetchAuthDomainCallback)completion { + FIRGetProjectConfigRequest *request = + [[FIRGetProjectConfigRequest alloc] initWithRequestConfiguration:requestConfiguration]; + + [FIRAuthBackend getProjectConfig:request + callback:^(FIRGetProjectConfigResponse *_Nullable response, + NSError *_Nullable error) { + if (error) { + completion(nil, error); + return; + } + NSString *authDomain; + for (NSString *domain in response.authorizedDomains) { + for (NSString *suportedAuthDomain in [self supportedAuthDomains]) { + NSInteger index = domain.length - suportedAuthDomain.length; + if (index >= 2) { + if ([domain hasSuffix:suportedAuthDomain] && domain.length >= suportedAuthDomain.length + 2) { + authDomain = domain; + break; + } + } + } + } + if (!authDomain.length) { + completion(nil, [FIRAuthErrorUtils unexpectedErrorResponseWithDeserializedResponse:response]); + return; + } + completion(authDomain, nil); + }]; +} + +/** @fn queryItemValue:from: + @brief Utility function to get a value from a NSURLQueryItem array. + @param name The key. + @param queryList The NSURLQueryItem array. + @return The value for the key. + */ ++ (nullable NSString *)queryItemValue:(NSString *)name from:(NSArray *)queryList { + for (NSURLQueryItem *item in queryList) { + if ([item.name isEqualToString:name]) { + return item.value; + } + } + return nil; +} + ++ (NSDictionary *)dictionaryWithHttpArgumentsString:(NSString *)argString { + NSMutableDictionary* ret = [NSMutableDictionary dictionary]; + NSArray* components = [argString componentsSeparatedByString:@"&"]; + NSString* component; + // Use reverse order so that the first occurrence of a key replaces + // those subsequent. + for (component in [components reverseObjectEnumerator]) { + if (component.length == 0) + continue; + NSRange pos = [component rangeOfString:@"="]; + NSString *key; + NSString *val; + if (pos.location == NSNotFound) { + key = [self stringByUnescapingFromURLArgument:component]; + val = @""; + } else { + key = [self stringByUnescapingFromURLArgument:[component substringToIndex:pos.location]]; + val = [self stringByUnescapingFromURLArgument: + [component substringFromIndex:pos.location + pos.length]]; + } + // returns nil on invalid UTF8 and NSMutableDictionary raises an exception when passed nil + // values. + if (!key) key = @""; + if (!val) val = @""; + [ret setObject:val forKey:key]; + } + return ret; +} + ++ (NSString *)stringByUnescapingFromURLArgument:(NSString *)argument { + NSMutableString *resultString = [NSMutableString stringWithString:argument]; + [resultString replaceOccurrencesOfString:@"+" + withString:@" " + options:NSLiteralSearch + range:NSMakeRange(0, [resultString length])]; + return [resultString stringByRemovingPercentEncoding]; +} + ++ (NSDictionary *)parseURL:(NSString *)urlString { + NSString *linkURL = [NSURLComponents componentsWithString:urlString].query; + if (!linkURL) { + return @{}; + } + NSArray *URLComponents = [linkURL componentsSeparatedByString:@"&"]; + NSMutableDictionary *queryItems = + [[NSMutableDictionary alloc] initWithCapacity:URLComponents.count]; + for (NSString *component in URLComponents) { + NSRange equalRange = [component rangeOfString:@"="]; + if (equalRange.location != NSNotFound) { + NSString *queryItemKey = + [[component substringToIndex:equalRange.location] stringByRemovingPercentEncoding]; + NSString *queryItemValue = + [[component substringFromIndex:equalRange.location + 1] stringByRemovingPercentEncoding]; + if (queryItemKey && queryItemValue) { + queryItems[queryItemKey] = queryItemValue; + } + } + } + return queryItems; +} + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Utilities/FIRAuthWebView.h b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Utilities/FIRAuthWebView.h new file mode 100644 index 0000000..28af833 --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Utilities/FIRAuthWebView.h @@ -0,0 +1,38 @@ +/* + * 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 + +NS_ASSUME_NONNULL_BEGIN + +/** @class FIRAuthWebView + @brief A class reponsible for creating a UIWebview for use within Firebase Auth. + */ +@interface FIRAuthWebView : UIView + +/** @property webView + * @brief The web view. + */ +@property(nonatomic, weak) UIWebView *webView; + +/** @property spinner + * @brief The spinner that indicates web view loading. + */ +@property(nonatomic, weak) UIActivityIndicatorView *spinner; + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Utilities/FIRAuthWebView.m b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Utilities/FIRAuthWebView.m new file mode 100644 index 0000000..80b90f0 --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Utilities/FIRAuthWebView.m @@ -0,0 +1,86 @@ +/* + * 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 "FIRAuthWebView.h" + +NS_ASSUME_NONNULL_BEGIN + +@implementation FIRAuthWebView + +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + self.backgroundColor = [UIColor whiteColor]; + [self initializeSubviews]; + } + return self; +} + +/** @fn initializeSubviews + @brief Initializes the subviews of this view. + */ +- (void)initializeSubviews { + UIWebView *webView = [self createWebView]; + UIActivityIndicatorView *spinner = [self createSpinner]; + + // The order of the following controls z-order. + [self addSubview:webView]; + [self addSubview:spinner]; + + [self layoutSubviews]; + _webView = webView; + _spinner = spinner; +} + +- (void)layoutSubviews { + CGFloat height = self.bounds.size.height; + CGFloat width = self.bounds.size.width; + _webView.frame = CGRectMake(0, 0, width, height); + _spinner.center = _webView.center; +} + +/** @fn createWebView + @brief Creates a web view to be used by this view. + @return The newly created web view. + */ +- (UIWebView *)createWebView { + UIWebView *webView = [[UIWebView alloc] initWithFrame:CGRectZero]; + // Trickery to make the web view not do weird things (like showing a black background when + // the prompt in the navigation bar animates changes.) + webView.opaque = NO; + webView.backgroundColor = [UIColor clearColor]; + webView.scrollView.opaque = NO; + webView.scrollView.backgroundColor = [UIColor clearColor]; + webView.scrollView.bounces = NO; + webView.scrollView.alwaysBounceVertical = NO; + webView.scrollView.alwaysBounceHorizontal = NO; + return webView; +} + +/** @fn createSpinner + @brief Creates a spinner to be used by this view. + @return The newly created spinner. + */ +- (UIActivityIndicatorView *)createSpinner { + UIActivityIndicatorViewStyle spinnerStyle = UIActivityIndicatorViewStyleGray; + UIActivityIndicatorView *spinner = + [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:spinnerStyle]; + return spinner; +} + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Utilities/FIRAuthWebViewController.h b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Utilities/FIRAuthWebViewController.h new file mode 100644 index 0000000..4bf9678 --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Utilities/FIRAuthWebViewController.h @@ -0,0 +1,73 @@ +/* + * 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 + +@class FIRAuthWebViewController; + +NS_ASSUME_NONNULL_BEGIN + +/** @protocol FIRAuthWebViewControllerDelegate + @brief Defines a delegate for FIRAuthWebViewController + */ +@protocol FIRAuthWebViewControllerDelegate + +/** @fn webViewController:canHandleURL: + @brief Determines if a URL should be handled by the delegate. + @param URL The URL to handle. + @return Whether the URL could be handled or not. + */ +- (BOOL)webViewController:(FIRAuthWebViewController *)webViewController canHandleURL:(NSURL *)URL; + +/** @fn webViewControllerDidCancel: + @brief Notifies the delegate that the web view controller is being cancelled by the user. + @param webViewController The web view controller in question. + */ +- (void)webViewControllerDidCancel:(FIRAuthWebViewController *)webViewController; + +/** @fn webViewController:didFailWithError: + @brief Notifies the delegate that the web view controller failed to load a page. + @param webViewController The web view controller in question. + @param error The error that has occurred. + */ +- (void)webViewController:(FIRAuthWebViewController *)webViewController + didFailWithError:(NSError *)error; + +@end + +/** @class FIRAuthWebViewController + @brief Reponsible for creating a UIViewController for presenting a FIRAutWebView. + */ +@interface FIRAuthWebViewController : UIViewController + +/** @fn initWithNibName:bundle: + * @brief Please call initWithURL:delegate: + */ +- (instancetype)initWithNibName:(nullable NSString *)nibNameOrNil + bundle:(nullable NSBundle *)nibBundleOrNil NS_UNAVAILABLE; + +/** @fn initWithCoder: + * @brief Please call initWithURL:delegate: + */ +- (instancetype)initWithCoder:(NSCoder *)aDecoder NS_UNAVAILABLE; + +- (instancetype)initWithURL:(NSURL *)URL + delegate:(__weak id)delegate + NS_DESIGNATED_INITIALIZER; + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Utilities/FIRAuthWebViewController.m b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Utilities/FIRAuthWebViewController.m new file mode 100644 index 0000000..a3ab06a --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Utilities/FIRAuthWebViewController.m @@ -0,0 +1,111 @@ +/* + * 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 "FIRAuthWebViewController.h" + +#import "FIRAuthWebView.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface FIRAuthWebViewController () +@end + +@implementation FIRAuthWebViewController { + /** @var _URL + @brief The initial URL to display. + */ + NSURL *_URL; + + /** @var _delegate + @brief The delegate to call. + */ + __weak id _delegate; + + /** @var _webView; + @brief The web view instance for easier access. + */ + __weak FIRAuthWebView *_webView; +} + +- (instancetype)initWithURL:(NSURL *)URL + delegate:(__weak id)delegate { + self = [super initWithNibName:nil bundle:nil]; + if (self) { + _URL = URL; + _delegate = delegate; + } + return self; +} + +#pragma mark - Lifecycle + +- (void)loadView { + FIRAuthWebView *webView = [[FIRAuthWebView alloc] initWithFrame:[UIScreen mainScreen].bounds]; + webView.webView.delegate = self; + self.view = webView; + _webView = webView; + self.navigationItem.leftBarButtonItem = + [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel + target:self + action:@selector(cancel)]; +} + +- (void)viewDidAppear:(BOOL)animated { + [super viewDidAppear:animated]; + + // Loads the requested URL in the web view. + [_webView.webView loadRequest:[NSURLRequest requestWithURL:_URL]]; +} + +#pragma mark - UI Targets + +- (void)cancel { + [_delegate webViewControllerDidCancel:self]; +} + +#pragma mark - UIWebViewDelegate + +- (BOOL)webView:(UIWebView *)webView + shouldStartLoadWithRequest:(NSURLRequest *)request + navigationType:(UIWebViewNavigationType)navigationType { + return ![_delegate webViewController:self canHandleURL:request.URL]; +} + +- (void)webViewDidStartLoad:(UIWebView *)webView { + // Show & animate the activity indicator. + _webView.spinner.hidden = NO; + [_webView.spinner startAnimating]; +} + +- (void)webViewDidFinishLoad:(UIWebView *)webView { + // Hide & stop the activity indicator. + _webView.spinner.hidden = YES; + [_webView.spinner stopAnimating]; +} + +- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error { + if ([error.domain isEqualToString:NSURLErrorDomain] && error.code == NSURLErrorCancelled) { + // It's okay for the page to be redirected before it is completely loaded. See b/32028062 . + return; + } + // Forward notification to our delegate. + [self webViewDidFinishLoad:webView]; + [_delegate webViewController:self didFailWithError:error]; +} + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Utilities/NSData+FIRBase64.h b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Utilities/NSData+FIRBase64.h new file mode 100644 index 0000000..114cbfd --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Utilities/NSData+FIRBase64.h @@ -0,0 +1,31 @@ +/* + * 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 + +NS_ASSUME_NONNULL_BEGIN + +@interface NSData (FIRBase64) + +/** @fn fir_base64URLEncodedStringWithOptions: + @brief Get a web safe base64 encoded string + @param options The base64 encoding options + */ +- (NSString *)fir_base64URLEncodedStringWithOptions:(NSDataBase64EncodingOptions)options; + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Utilities/NSData+FIRBase64.m b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Utilities/NSData+FIRBase64.m new file mode 100644 index 0000000..b53f053 --- /dev/null +++ b/shlack/Pods/FirebaseAuth/Firebase/Auth/Source/Utilities/NSData+FIRBase64.m @@ -0,0 +1,33 @@ +/* + * 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 "NSData+FIRBase64.h" + +NS_ASSUME_NONNULL_BEGIN + +@implementation NSData (FIRBase64) + +- (NSString *)fir_base64URLEncodedStringWithOptions:(NSDataBase64EncodingOptions)options { + NSString *string = [self base64EncodedStringWithOptions:options]; + string = [string stringByReplacingOccurrencesOfString:@"/" withString:@"_"]; + string = [string stringByReplacingOccurrencesOfString:@"+" withString:@"-"]; + string = [string stringByReplacingOccurrencesOfString:@"=" withString:@""]; + return string; +} + +@end + +NS_ASSUME_NONNULL_END diff --git a/shlack/Pods/FirebaseAuth/LICENSE b/shlack/Pods/FirebaseAuth/LICENSE new file mode 100644 index 0000000..d645695 --- /dev/null +++ b/shlack/Pods/FirebaseAuth/LICENSE @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + 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. diff --git a/shlack/Pods/FirebaseAuth/README.md b/shlack/Pods/FirebaseAuth/README.md new file mode 100644 index 0000000..bf397f0 --- /dev/null +++ b/shlack/Pods/FirebaseAuth/README.md @@ -0,0 +1,223 @@ +# Firebase iOS Open Source Development [![Build Status](https://travis-ci.org/firebase/firebase-ios-sdk.svg?branch=master)](https://travis-ci.org/firebase/firebase-ios-sdk) + +This repository contains a subset of the Firebase iOS SDK source. It currently +includes FirebaseCore, FirebaseAuth, FirebaseDatabase, FirebaseFirestore, +FirebaseFunctions, FirebaseInstanceID, FirebaseInAppMessaging, +FirebaseInAppMessagingDisplay, FirebaseMessaging and FirebaseStorage. + +The repository also includes GoogleUtilities source. The +[GoogleUtilities](GoogleUtilities/README.md) pod is +a set of utilities used by Firebase and other Google products. + +Firebase is an app development platform with tools to help you build, grow and +monetize your app. More information about Firebase can be found at +[https://firebase.google.com](https://firebase.google.com). + +## Installation + +See the three subsections for details about three different installation methods. +1. [Standard pod install](README.md#standard-pod-install) +1. [Installing from the GitHub repo](README.md#installing-from-github) +1. [Experimental Carthage](README.md#carthage-ios-only) + +### Standard pod install + +Go to +[https://firebase.google.com/docs/ios/setup](https://firebase.google.com/docs/ios/setup). + +### Installing from GitHub + +For releases starting with 5.0.0, the source for each release is also deployed +to CocoaPods master and available via standard +[CocoaPods Podfile syntax](https://guides.cocoapods.org/syntax/podfile.html#pod). + +These instructions can be used to access the Firebase repo at other branches, +tags, or commits. + +#### Background + +See +[the Podfile Syntax Reference](https://guides.cocoapods.org/syntax/podfile.html#pod) +for instructions and options about overriding pod source locations. + +#### Accessing Firebase Source Snapshots + +All of the official releases are tagged in this repo and available via CocoaPods. To access a local +source snapshot or unreleased branch, use Podfile directives like the following: + +To access FirebaseFirestore via a branch: +``` +pod 'FirebaseCore', :git => 'https://github.com/firebase/firebase-ios-sdk.git', :branch => 'master' +pod 'FirebaseFirestore', :git => 'https://github.com/firebase/firebase-ios-sdk.git', :branch => 'master' +``` + +To access FirebaseMessaging via a checked out version of the firebase-ios-sdk repo do: + +``` +pod 'FirebaseCore', :path => '/path/to/firebase-ios-sdk' +pod 'FirebaseMessaging', :path => '/path/to/firebase-ios-sdk' +``` + +### Carthage (iOS only) + +Instructions for the experimental Carthage distribution are at +[Carthage](Carthage.md). + +### Rome + +Instructions for installing binary frameworks via +[Rome](https://github.com/CocoaPods/Rome) are at [Rome](Rome.md). + +## Development + +To develop Firebase software in this repository, ensure that you have at least +the following software: + + * Xcode 10.1 (or later) + * CocoaPods 1.7.2 (or later) + +For the pod that you want to develop: + +`pod gen Firebase{name here}.podspec --local-sources=./ --auto-open` + +Firestore and Functions have self contained Xcode projects. See +[Firestore/README.md](Firestore/README.md) and +[Functions/README.md](Functions/README.md). + +### Adding a New Firebase Pod + +See [AddNewPod.md](AddNewPod.md). + +### Code Formatting + +To ensure that the code is formatted consistently, run the script +[./scripts/style.sh](https://github.com/firebase/firebase-ios-sdk/blob/master/scripts/style.sh) +before creating a PR. + +Travis will verify that any code changes are done in a style compliant way. Install +`clang-format` and `swiftformat`. +These commands will get the right versions: + +``` +brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/773cb75d360b58f32048f5964038d09825a507c8/Formula/clang-format.rb +brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/3dfea1004e0736754bbf49673cca8aaed8a94089/Formula/swiftformat.rb +``` + +Note: if you already have a newer version of these installed you may need to +`brew switch` to this version. + +### Running Unit Tests + +Select a scheme and press Command-u to build a component and run its unit tests. + +#### Viewing Code Coverage + +First, make sure that [xcov](https://github.com/nakiostudio/xcov) is installed with `gem install xcov`. + +After running the `AllUnitTests_iOS` scheme in Xcode, execute +`xcov --workspace Firebase.xcworkspace --scheme AllUnitTests_iOS --output_directory xcov_output` +at Example/ in the terminal. This will aggregate the coverage, and you can run `open xcov_output/index.html` to see the results. + +### Running Sample Apps +In order to run the sample apps and integration tests, you'll need valid +`GoogleService-Info.plist` files for those samples. The Firebase Xcode project contains dummy plist +files without real values, but can be replaced with real plist files. To get your own +`GoogleService-Info.plist` files: + +1. Go to the [Firebase Console](https://console.firebase.google.com/) +2. Create a new Firebase project, if you don't already have one +3. For each sample app you want to test, create a new Firebase app with the sample app's bundle +identifier (e.g. `com.google.Database-Example`) +4. Download the resulting `GoogleService-Info.plist` and replace the appropriate dummy plist file +(e.g. in [Example/Database/App/](Example/Database/App/)); + +Some sample apps like Firebase Messaging ([Example/Messaging/App](Example/Messaging/App)) require +special Apple capabilities, and you will have to change the sample app to use a unique bundle +identifier that you can control in your own Apple Developer account. + +## Specific Component Instructions +See the sections below for any special instructions for those components. + +### Firebase Auth + +If you're doing specific Firebase Auth development, see +[the Auth Sample README](Example/Auth/README.md) for instructions about +building and running the FirebaseAuth pod along with various samples and tests. + +### Firebase Database + +To run the Database Integration tests, make your database authentication rules +[public](https://firebase.google.com/docs/database/security/quickstart). + +### Firebase Storage + +To run the Storage Integration tests, follow the instructions in +[FIRStorageIntegrationTests.m](Example/Storage/Tests/Integration/FIRStorageIntegrationTests.m). + +#### Push Notifications + +Push notifications can only be delivered to specially provisioned App IDs in the developer portal. +In order to actually test receiving push notifications, you will need to: + +1. Change the bundle identifier of the sample app to something you own in your Apple Developer +account, and enable that App ID for push notifications. +2. You'll also need to +[upload your APNs Provider Authentication Key or certificate to the Firebase Console](https://firebase.google.com/docs/cloud-messaging/ios/certs) +at **Project Settings > Cloud Messaging > [Your Firebase App]**. +3. Ensure your iOS device is added to your Apple Developer portal as a test device. + +#### iOS Simulator + +The iOS Simulator cannot register for remote notifications, and will not receive push notifications. +In order to receive push notifications, you'll have to follow the steps above and run the app on a +physical device. + +## Community Supported Efforts + +We've seen an amazing amount of interest and contributions to improve the Firebase SDKs, and we are +very grateful! We'd like to empower as many developers as we can to be able to use Firebase and +participate in the Firebase community. + +### macOS and tvOS +Thanks to contributions from the community, FirebaseAuth, FirebaseCore, FirebaseDatabase, FirebaseMessaging, +FirebaseFirestore, FirebaseFunctions and FirebaseStorage now compile, run unit tests, and work on +macOS and tvOS. + +For tvOS, checkout the [Sample](Example/tvOSSample). + +Keep in mind that macOS and tvOS are not officially supported by Firebase, and this repository is +actively developed primarily for iOS. While we can catch basic unit test issues with Travis, there +may be some changes where the SDK no longer works as expected on macOS or tvOS. If you encounter +this, please [file an issue](https://github.com/firebase/firebase-ios-sdk/issues). + +Note that the Firebase pod is not available for macOS and tvOS. + +To install, add a subset of the following to the Podfile: + +``` +pod 'FirebaseAuth' +pod 'FirebaseCore' +pod 'FirebaseDatabase' +pod 'FirebaseFirestore' +pod 'FirebaseFunctions' +pod 'FirebaseMessaging' +pod 'FirebaseStorage' +``` + +## Roadmap + +See [Roadmap](ROADMAP.md) for more about the Firebase iOS SDK Open Source +plans and directions. + +## Contributing + +See [Contributing](CONTRIBUTING.md) for more information on contributing to the Firebase +iOS SDK. + +## License + +The contents of this repository is licensed under the +[Apache License, version 2.0](http://www.apache.org/licenses/LICENSE-2.0). + +Your use of Firebase is governed by the +[Terms of Service for Firebase Services](https://firebase.google.com/terms/). diff --git a/shlack/Pods/GTMSessionFetcher/LICENSE b/shlack/Pods/GTMSessionFetcher/LICENSE new file mode 100644 index 0000000..d645695 --- /dev/null +++ b/shlack/Pods/GTMSessionFetcher/LICENSE @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + 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. diff --git a/shlack/Pods/GTMSessionFetcher/README.md b/shlack/Pods/GTMSessionFetcher/README.md new file mode 100644 index 0000000..478efde --- /dev/null +++ b/shlack/Pods/GTMSessionFetcher/README.md @@ -0,0 +1,23 @@ +# Google Toolbox for Mac - Session Fetcher # + +**Project site**
+**Discussion group** + +[![Build Status](https://travis-ci.org/google/gtm-session-fetcher.svg?branch=master)](https://travis-ci.org/google/gtm-session-fetcher) + +`GTMSessionFetcher` makes it easy for Cocoa applications to perform http +operations. The fetcher is implemented as a wrapper on `NSURLSession`, so its +behavior is asynchronous and uses operating-system settings on iOS and Mac OS X. + +Features include: +- Simple to build; only one source/header file pair is required +- Simple to use: takes just two lines of code to fetch a request +- Supports upload and download sessions +- Flexible cookie storage +- Automatic retry on errors, with exponential backoff +- Support for generating multipart MIME upload streams +- Easy, convenient logging of http requests and responses +- Supports plug-in authentication such as with GTMAppAuth +- Easily testable; self-mocking +- Automatic rate limiting when created by the `GTMSessionFetcherService` factory class +- Fully independent of other projects diff --git a/shlack/Pods/GTMSessionFetcher/Source/GTMSessionFetcher.h b/shlack/Pods/GTMSessionFetcher/Source/GTMSessionFetcher.h new file mode 100644 index 0000000..73193f6 --- /dev/null +++ b/shlack/Pods/GTMSessionFetcher/Source/GTMSessionFetcher.h @@ -0,0 +1,1305 @@ +/* Copyright 2014 Google Inc. All rights reserved. + * + * 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. + */ + +// GTMSessionFetcher is a wrapper around NSURLSession for http operations. +// +// What does this offer on top of of NSURLSession? +// +// - Block-style callbacks for useful functionality like progress rather +// than delegate methods. +// - Out-of-process uploads and downloads using NSURLSession, including +// management of fetches after relaunch. +// - Integration with GTMAppAuth for invisible management and refresh of +// authorization tokens. +// - Pretty-printed http logging. +// - Cookies handling that does not interfere with or get interfered with +// by WebKit cookies or on Mac by Safari and other apps. +// - Credentials handling for the http operation. +// - Rate-limiting and cookie grouping when fetchers are created with +// GTMSessionFetcherService. +// +// If the bodyData or bodyFileURL property is set, then a POST request is assumed. +// +// Each fetcher is assumed to be for a one-shot fetch request; don't reuse the object +// for a second fetch. +// +// The fetcher will be self-retained as long as a connection is pending. +// +// To keep user activity private, URLs must have an https scheme (unless the property +// allowedInsecureSchemes is set to permit the scheme.) +// +// Callbacks will be released when the fetch completes or is stopped, so there is no need +// to use weak self references in the callback blocks. +// +// Sample usage: +// +// _fetcherService = [[GTMSessionFetcherService alloc] init]; +// +// GTMSessionFetcher *myFetcher = [_fetcherService fetcherWithURLString:myURLString]; +// myFetcher.retryEnabled = YES; +// myFetcher.comment = @"First profile image"; +// +// // Optionally specify a file URL or NSData for the request body to upload. +// myFetcher.bodyData = [postString dataUsingEncoding:NSUTF8StringEncoding]; +// +// [myFetcher beginFetchWithCompletionHandler:^(NSData *data, NSError *error) { +// if (error != nil) { +// // Server status code or network error. +// // +// // If the domain is kGTMSessionFetcherStatusDomain then the error code +// // is a failure status from the server. +// } else { +// // Fetch succeeded. +// } +// }]; +// +// There is also a beginFetch call that takes a pointer and selector for the completion handler; +// a pointer and selector is a better style when the callback is a substantial, separate method. +// +// NOTE: Fetches may retrieve data from the server even though the server +// returned an error, so the criteria for success is a non-nil error. +// The completion handler is called when the server status is >= 300 with an NSError +// having domain kGTMSessionFetcherStatusDomain and code set to the server status. +// +// Status codes are at +// +// +// Background session support: +// +// Out-of-process uploads and downloads may be created by setting the fetcher's +// useBackgroundSession property. Data to be uploaded should be provided via +// the uploadFileURL property; the download destination should be specified with +// the destinationFileURL. NOTE: Background upload files should be in a location +// that will be valid even after the device is restarted, so the file should not +// be uploaded from a system temporary or cache directory. +// +// Background session transfers are slower, and should typically be used only +// for very large downloads or uploads (hundreds of megabytes). +// +// When background sessions are used in iOS apps, the application delegate must +// pass through the parameters from UIApplicationDelegate's +// application:handleEventsForBackgroundURLSession:completionHandler: to the +// fetcher class. +// +// When the application has been relaunched, it may also create a new fetcher +// instance to handle completion of the transfers. +// +// - (void)application:(UIApplication *)application +// handleEventsForBackgroundURLSession:(NSString *)identifier +// completionHandler:(void (^)())completionHandler { +// // Application was re-launched on completing an out-of-process download. +// +// // Pass the URLSession info related to this re-launch to the fetcher class. +// [GTMSessionFetcher application:application +// handleEventsForBackgroundURLSession:identifier +// completionHandler:completionHandler]; +// +// // Get a fetcher related to this re-launch and re-hook up a completionHandler to it. +// GTMSessionFetcher *fetcher = [GTMSessionFetcher fetcherWithSessionIdentifier:identifier]; +// NSURL *destinationFileURL = fetcher.destinationFileURL; +// fetcher.completionHandler = ^(NSData *data, NSError *error) { +// [self downloadCompletedToFile:destinationFileURL error:error]; +// }; +// } +// +// +// Threading and queue support: +// +// Networking always happens on a background thread; there is no advantage to +// changing thread or queue to create or start a fetcher. +// +// Callbacks are run on the main thread; alternatively, the app may set the +// fetcher's callbackQueue to a dispatch queue. +// +// Once the fetcher's beginFetch method has been called, the fetcher's methods and +// properties may be accessed from any thread. +// +// Downloading to disk: +// +// To have downloaded data saved directly to disk, specify a file URL for the +// destinationFileURL property. +// +// HTTP methods and headers: +// +// Alternative HTTP methods, like PUT, and custom headers can be specified by +// creating the fetcher with an appropriate NSMutableURLRequest. +// +// +// Caching: +// +// The fetcher avoids caching. That is best for API requests, but may hurt +// repeat fetches of static data. Apps may enable a persistent disk cache by +// customizing the config: +// +// fetcher.configurationBlock = ^(GTMSessionFetcher *configFetcher, +// NSURLSessionConfiguration *config) { +// config.URLCache = [NSURLCache sharedURLCache]; +// }; +// +// Or use the standard system config to share cookie storage with web views +// and to enable disk caching: +// +// fetcher.configuration = [NSURLSessionConfiguration defaultSessionConfiguration]; +// +// +// Cookies: +// +// There are three supported mechanisms for remembering cookies between fetches. +// +// By default, a standalone GTMSessionFetcher uses a mutable array held +// statically to track cookies for all instantiated fetchers. This avoids +// cookies being set by servers for the application from interfering with +// Safari and WebKit cookie settings, and vice versa. +// The fetcher cookies are lost when the application quits. +// +// To rely instead on WebKit's global NSHTTPCookieStorage, set the fetcher's +// cookieStorage property: +// myFetcher.cookieStorage = [NSHTTPCookieStorage sharedHTTPCookieStorage]; +// +// To share cookies with other apps, use the method introduced in iOS 9/OS X 10.11: +// myFetcher.cookieStorage = +// [NSHTTPCookieStorage sharedCookieStorageForGroupContainerIdentifier:kMyCompanyContainedID]; +// +// To ignore existing cookies and only have cookies related to the single fetch +// be applied, make a temporary cookie storage object: +// myFetcher.cookieStorage = [[GTMSessionCookieStorage alloc] init]; +// +// Note: cookies set while following redirects will be sent to the server, as +// the redirects are followed by the fetcher. +// +// To completely disable cookies, similar to setting cookieStorageMethod to +// kGTMHTTPFetcherCookieStorageMethodNone, adjust the session configuration +// appropriately in the fetcher or fetcher service: +// fetcher.configurationBlock = ^(GTMSessionFetcher *configFetcher, +// NSURLSessionConfiguration *config) { +// config.HTTPCookieAcceptPolicy = NSHTTPCookieAcceptPolicyNever; +// config.HTTPShouldSetCookies = NO; +// }; +// +// If the fetcher is created from a GTMSessionFetcherService object +// then the cookie storage mechanism is set to use the cookie storage in the +// service object rather than the static storage. Disabling cookies in the +// session configuration set on a service object will disable cookies for all +// fetchers created from that GTMSessionFetcherService object, since the session +// configuration is propagated to the fetcher. +// +// +// Monitoring data transfers. +// +// The fetcher supports a variety of properties for progress monitoring +// progress with callback blocks. +// GTMSessionFetcherSendProgressBlock sendProgressBlock +// GTMSessionFetcherReceivedProgressBlock receivedProgressBlock +// GTMSessionFetcherDownloadProgressBlock downloadProgressBlock +// +// If supplied by the server, the anticipated total download size is available +// as [[myFetcher response] expectedContentLength] (and may be -1 for unknown +// download sizes.) +// +// +// Automatic retrying of fetches +// +// The fetcher can optionally create a timer and reattempt certain kinds of +// fetch failures (status codes 408, request timeout; 502, gateway failure; +// 503, service unavailable; 504, gateway timeout; networking errors +// NSURLErrorTimedOut and NSURLErrorNetworkConnectionLost.) The user may +// set a retry selector to customize the type of errors which will be retried. +// +// Retries are done in an exponential-backoff fashion (that is, after 1 second, +// 2, 4, 8, and so on.) +// +// Enabling automatic retries looks like this: +// myFetcher.retryEnabled = YES; +// +// With retries enabled, the completion callbacks are called only +// when no more retries will be attempted. Calling the fetcher's stopFetching +// method will terminate the retry timer, without the finished or failure +// selectors being invoked. +// +// Optionally, the client may set the maximum retry interval: +// myFetcher.maxRetryInterval = 60.0; // in seconds; default is 60 seconds +// // for downloads, 600 for uploads +// +// Servers should never send a 400 or 500 status for errors that are retryable +// by clients, as those values indicate permanent failures. In nearly all +// cases, the default standard retry behavior is correct for clients, and no +// custom client retry behavior is needed or appropriate. Servers that send +// non-retryable status codes and expect the client to retry the request are +// faulty. +// +// Still, the client may provide a block to determine if a status code or other +// error should be retried. The block returns YES to set the retry timer or NO +// to fail without additional fetch attempts. +// +// The retry method may return the |suggestedWillRetry| argument to get the +// default retry behavior. Server status codes are present in the +// error argument, and have the domain kGTMSessionFetcherStatusDomain. The +// user's method may look something like this: +// +// myFetcher.retryBlock = ^(BOOL suggestedWillRetry, NSError *error, +// GTMSessionFetcherRetryResponse response) { +// // Perhaps examine error.domain and error.code, or fetcher.retryCount +// // +// // Respond with YES to start the retry timer, NO to proceed to the failure +// // callback, or suggestedWillRetry to get default behavior for the +// // current error domain and code values. +// response(suggestedWillRetry); +// }; + + +#import + +#if TARGET_OS_IPHONE +#import +#endif +#if TARGET_OS_WATCH +#import +#endif + +// By default it is stripped from non DEBUG builds. Developers can override +// this in their project settings. +#ifndef STRIP_GTM_FETCH_LOGGING + #if !DEBUG + #define STRIP_GTM_FETCH_LOGGING 1 + #else + #define STRIP_GTM_FETCH_LOGGING 0 + #endif +#endif + +// Logs in debug builds. +#ifndef GTMSESSION_LOG_DEBUG + #if DEBUG + #define GTMSESSION_LOG_DEBUG(...) NSLog(__VA_ARGS__) + #else + #define GTMSESSION_LOG_DEBUG(...) do { } while (0) + #endif +#endif + +// Asserts in debug builds (or logs in debug builds if GTMSESSION_ASSERT_AS_LOG +// or NS_BLOCK_ASSERTIONS are defined.) +#ifndef GTMSESSION_ASSERT_DEBUG + #if DEBUG && !defined(NS_BLOCK_ASSERTIONS) && !GTMSESSION_ASSERT_AS_LOG + #undef GTMSESSION_ASSERT_AS_LOG + #define GTMSESSION_ASSERT_AS_LOG 1 + #endif + + #if DEBUG && !GTMSESSION_ASSERT_AS_LOG + #define GTMSESSION_ASSERT_DEBUG(...) NSAssert(__VA_ARGS__) + #elif DEBUG + #define GTMSESSION_ASSERT_DEBUG(pred, ...) if (!(pred)) { NSLog(__VA_ARGS__); } + #else + #define GTMSESSION_ASSERT_DEBUG(pred, ...) do { } while (0) + #endif +#endif + +// Asserts in debug builds, logs in release builds (or logs in debug builds if +// GTMSESSION_ASSERT_AS_LOG is defined.) +#ifndef GTMSESSION_ASSERT_DEBUG_OR_LOG + #if DEBUG && !GTMSESSION_ASSERT_AS_LOG + #define GTMSESSION_ASSERT_DEBUG_OR_LOG(...) NSAssert(__VA_ARGS__) + #else + #define GTMSESSION_ASSERT_DEBUG_OR_LOG(pred, ...) if (!(pred)) { NSLog(__VA_ARGS__); } + #endif +#endif + +// Macro useful for examining messages from NSURLSession during debugging. +#if 0 +#define GTM_LOG_SESSION_DELEGATE(...) GTMSESSION_LOG_DEBUG(__VA_ARGS__) +#else +#define GTM_LOG_SESSION_DELEGATE(...) +#endif + +#ifndef GTM_NULLABLE + #if __has_feature(nullability) // Available starting in Xcode 6.3 + #define GTM_NULLABLE_TYPE __nullable + #define GTM_NONNULL_TYPE __nonnull + #define GTM_NULLABLE nullable + #define GTM_NONNULL_DECL nonnull // GTM_NONNULL is used by GTMDefines.h + #define GTM_NULL_RESETTABLE null_resettable + + #define GTM_ASSUME_NONNULL_BEGIN NS_ASSUME_NONNULL_BEGIN + #define GTM_ASSUME_NONNULL_END NS_ASSUME_NONNULL_END + #else + #define GTM_NULLABLE_TYPE + #define GTM_NONNULL_TYPE + #define GTM_NULLABLE + #define GTM_NONNULL_DECL + #define GTM_NULL_RESETTABLE + #define GTM_ASSUME_NONNULL_BEGIN + #define GTM_ASSUME_NONNULL_END + #endif // __has_feature(nullability) +#endif // GTM_NULLABLE + +#if (TARGET_OS_TV \ + || TARGET_OS_WATCH \ + || (!TARGET_OS_IPHONE && defined(MAC_OS_X_VERSION_10_12) && MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_12) \ + || (TARGET_OS_IPHONE && defined(__IPHONE_10_0) && __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_10_0)) +#define GTMSESSION_DEPRECATE_ON_2016_SDKS(_MSG) __attribute__((deprecated("" _MSG))) +#else +#define GTMSESSION_DEPRECATE_ON_2016_SDKS(_MSG) +#endif + +#ifndef GTM_DECLARE_GENERICS + #if __has_feature(objc_generics) + #define GTM_DECLARE_GENERICS 1 + #else + #define GTM_DECLARE_GENERICS 0 + #endif +#endif + +#ifndef GTM_NSArrayOf + #if GTM_DECLARE_GENERICS + #define GTM_NSArrayOf(value) NSArray + #define GTM_NSDictionaryOf(key, value) NSDictionary + #else + #define GTM_NSArrayOf(value) NSArray + #define GTM_NSDictionaryOf(key, value) NSDictionary + #endif // __has_feature(objc_generics) +#endif // GTM_NSArrayOf + +// For iOS, the fetcher can declare itself a background task to allow fetches +// to finish when the app leaves the foreground. +// +// (This is unrelated to providing a background configuration, which allows +// out-of-process uploads and downloads.) +// +// To disallow use of background tasks during fetches, the target should define +// GTM_BACKGROUND_TASK_FETCHING to 0, or alternatively may set the +// skipBackgroundTask property to YES. +#if TARGET_OS_IPHONE && !TARGET_OS_WATCH && !defined(GTM_BACKGROUND_TASK_FETCHING) + #define GTM_BACKGROUND_TASK_FETCHING 1 +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#if (TARGET_OS_TV \ + || TARGET_OS_WATCH \ + || (!TARGET_OS_IPHONE && defined(MAC_OS_X_VERSION_10_11) && MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_11) \ + || (TARGET_OS_IPHONE && defined(__IPHONE_9_0) && __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_9_0)) + #ifndef GTM_USE_SESSION_FETCHER + #define GTM_USE_SESSION_FETCHER 1 + #endif +#endif + +#if !defined(GTMBridgeFetcher) + // These bridge macros should be identical in GTMHTTPFetcher.h and GTMSessionFetcher.h + #if GTM_USE_SESSION_FETCHER + // Macros to new fetcher class. + #define GTMBridgeFetcher GTMSessionFetcher + #define GTMBridgeFetcherService GTMSessionFetcherService + #define GTMBridgeFetcherServiceProtocol GTMSessionFetcherServiceProtocol + #define GTMBridgeAssertValidSelector GTMSessionFetcherAssertValidSelector + #define GTMBridgeCookieStorage GTMSessionCookieStorage + #define GTMBridgeCleanedUserAgentString GTMFetcherCleanedUserAgentString + #define GTMBridgeSystemVersionString GTMFetcherSystemVersionString + #define GTMBridgeApplicationIdentifier GTMFetcherApplicationIdentifier + #define kGTMBridgeFetcherStatusDomain kGTMSessionFetcherStatusDomain + #define kGTMBridgeFetcherStatusBadRequest GTMSessionFetcherStatusBadRequest + #else + // Macros to old fetcher class. + #define GTMBridgeFetcher GTMHTTPFetcher + #define GTMBridgeFetcherService GTMHTTPFetcherService + #define GTMBridgeFetcherServiceProtocol GTMHTTPFetcherServiceProtocol + #define GTMBridgeAssertValidSelector GTMAssertSelectorNilOrImplementedWithArgs + #define GTMBridgeCookieStorage GTMCookieStorage + #define GTMBridgeCleanedUserAgentString GTMCleanedUserAgentString + #define GTMBridgeSystemVersionString GTMSystemVersionString + #define GTMBridgeApplicationIdentifier GTMApplicationIdentifier + #define kGTMBridgeFetcherStatusDomain kGTMHTTPFetcherStatusDomain + #define kGTMBridgeFetcherStatusBadRequest kGTMHTTPFetcherStatusBadRequest + #endif // GTM_USE_SESSION_FETCHER +#endif + +GTM_ASSUME_NONNULL_BEGIN + +// Notifications +// +// Fetch started and stopped, and fetch retry delay started and stopped. +extern NSString *const kGTMSessionFetcherStartedNotification; +extern NSString *const kGTMSessionFetcherStoppedNotification; +extern NSString *const kGTMSessionFetcherRetryDelayStartedNotification; +extern NSString *const kGTMSessionFetcherRetryDelayStoppedNotification; + +// Completion handler notification. This is intended for use by code capturing +// and replaying fetch requests and results for testing. For fetches where +// destinationFileURL or accumulateDataBlock is set for the fetcher, the data +// will be nil for successful fetches. +// +// This notification is posted on the main thread. +extern NSString *const kGTMSessionFetcherCompletionInvokedNotification; +extern NSString *const kGTMSessionFetcherCompletionDataKey; +extern NSString *const kGTMSessionFetcherCompletionErrorKey; + +// Constants for NSErrors created by the fetcher (excluding server status errors, +// and error objects originating in the OS.) +extern NSString *const kGTMSessionFetcherErrorDomain; + +// The fetcher turns server error status values (3XX, 4XX, 5XX) into NSErrors +// with domain kGTMSessionFetcherStatusDomain. +// +// Any server response body data accompanying the status error is added to the +// userInfo dictionary with key kGTMSessionFetcherStatusDataKey. +extern NSString *const kGTMSessionFetcherStatusDomain; +extern NSString *const kGTMSessionFetcherStatusDataKey; +extern NSString *const kGTMSessionFetcherStatusDataContentTypeKey; + +// When a fetch fails with an error, these keys are included in the error userInfo +// dictionary if retries were attempted. +extern NSString *const kGTMSessionFetcherNumberOfRetriesDoneKey; +extern NSString *const kGTMSessionFetcherElapsedIntervalWithRetriesKey; + +// Background session support requires access to NSUserDefaults. +// If [NSUserDefaults standardUserDefaults] doesn't yield the correct NSUserDefaults for your usage, +// ie for an App Extension, then implement this class/method to return the correct NSUserDefaults. +// https://developer.apple.com/library/ios/documentation/General/Conceptual/ExtensibilityPG/ExtensionScenarios.html#//apple_ref/doc/uid/TP40014214-CH21-SW6 +@interface GTMSessionFetcherUserDefaultsFactory : NSObject + ++ (NSUserDefaults *)fetcherUserDefaults; + +@end + +#ifdef __cplusplus +} +#endif + +typedef NS_ENUM(NSInteger, GTMSessionFetcherError) { + GTMSessionFetcherErrorDownloadFailed = -1, + GTMSessionFetcherErrorUploadChunkUnavailable = -2, + GTMSessionFetcherErrorBackgroundExpiration = -3, + GTMSessionFetcherErrorBackgroundFetchFailed = -4, + GTMSessionFetcherErrorInsecureRequest = -5, + GTMSessionFetcherErrorTaskCreationFailed = -6, +}; + +typedef NS_ENUM(NSInteger, GTMSessionFetcherStatus) { + // Standard http status codes. + GTMSessionFetcherStatusNotModified = 304, + GTMSessionFetcherStatusBadRequest = 400, + GTMSessionFetcherStatusUnauthorized = 401, + GTMSessionFetcherStatusForbidden = 403, + GTMSessionFetcherStatusPreconditionFailed = 412 +}; + +#ifdef __cplusplus +extern "C" { +#endif + +@class GTMSessionCookieStorage; +@class GTMSessionFetcher; + +// The configuration block is for modifying the NSURLSessionConfiguration only. +// DO NOT change any fetcher properties in the configuration block. +typedef void (^GTMSessionFetcherConfigurationBlock)(GTMSessionFetcher *fetcher, + NSURLSessionConfiguration *configuration); +typedef void (^GTMSessionFetcherSystemCompletionHandler)(void); +typedef void (^GTMSessionFetcherCompletionHandler)(NSData * GTM_NULLABLE_TYPE data, + NSError * GTM_NULLABLE_TYPE error); +typedef void (^GTMSessionFetcherBodyStreamProviderResponse)(NSInputStream *bodyStream); +typedef void (^GTMSessionFetcherBodyStreamProvider)(GTMSessionFetcherBodyStreamProviderResponse response); +typedef void (^GTMSessionFetcherDidReceiveResponseDispositionBlock)(NSURLSessionResponseDisposition disposition); +typedef void (^GTMSessionFetcherDidReceiveResponseBlock)(NSURLResponse *response, + GTMSessionFetcherDidReceiveResponseDispositionBlock dispositionBlock); +typedef void (^GTMSessionFetcherChallengeDispositionBlock)(NSURLSessionAuthChallengeDisposition disposition, + NSURLCredential * GTM_NULLABLE_TYPE credential); +typedef void (^GTMSessionFetcherChallengeBlock)(GTMSessionFetcher *fetcher, + NSURLAuthenticationChallenge *challenge, + GTMSessionFetcherChallengeDispositionBlock dispositionBlock); +typedef void (^GTMSessionFetcherWillRedirectResponse)(NSURLRequest * GTM_NULLABLE_TYPE redirectedRequest); +typedef void (^GTMSessionFetcherWillRedirectBlock)(NSHTTPURLResponse *redirectResponse, + NSURLRequest *redirectRequest, + GTMSessionFetcherWillRedirectResponse response); +typedef void (^GTMSessionFetcherAccumulateDataBlock)(NSData * GTM_NULLABLE_TYPE buffer); +typedef void (^GTMSessionFetcherSimulateByteTransferBlock)(NSData * GTM_NULLABLE_TYPE buffer, + int64_t bytesWritten, + int64_t totalBytesWritten, + int64_t totalBytesExpectedToWrite); +typedef void (^GTMSessionFetcherReceivedProgressBlock)(int64_t bytesWritten, + int64_t totalBytesWritten); +typedef void (^GTMSessionFetcherDownloadProgressBlock)(int64_t bytesWritten, + int64_t totalBytesWritten, + int64_t totalBytesExpectedToWrite); +typedef void (^GTMSessionFetcherSendProgressBlock)(int64_t bytesSent, + int64_t totalBytesSent, + int64_t totalBytesExpectedToSend); +typedef void (^GTMSessionFetcherWillCacheURLResponseResponse)(NSCachedURLResponse * GTM_NULLABLE_TYPE cachedResponse); +typedef void (^GTMSessionFetcherWillCacheURLResponseBlock)(NSCachedURLResponse *proposedResponse, + GTMSessionFetcherWillCacheURLResponseResponse responseBlock); +typedef void (^GTMSessionFetcherRetryResponse)(BOOL shouldRetry); +typedef void (^GTMSessionFetcherRetryBlock)(BOOL suggestedWillRetry, + NSError * GTM_NULLABLE_TYPE error, + GTMSessionFetcherRetryResponse response); + +typedef void (^GTMSessionFetcherTestResponse)(NSHTTPURLResponse * GTM_NULLABLE_TYPE response, + NSData * GTM_NULLABLE_TYPE data, + NSError * GTM_NULLABLE_TYPE error); +typedef void (^GTMSessionFetcherTestBlock)(GTMSessionFetcher *fetcherToTest, + GTMSessionFetcherTestResponse testResponse); + +void GTMSessionFetcherAssertValidSelector(id GTM_NULLABLE_TYPE obj, SEL GTM_NULLABLE_TYPE sel, ...); + +// Utility functions for applications self-identifying to servers via a +// user-agent header + +// The "standard" user agent includes the application identifier, taken from the bundle, +// followed by a space and the system version string. Pass nil to use +mainBundle as the source +// of the bundle identifier. +// +// Applications may use this as a starting point for their own user agent strings, perhaps +// with additional sections appended. Use GTMFetcherCleanedUserAgentString() below to +// clean up any string being added to the user agent. +NSString *GTMFetcherStandardUserAgentString(NSBundle * GTM_NULLABLE_TYPE bundle); + +// Make a generic name and version for the current application, like +// com.example.MyApp/1.2.3 relying on the bundle identifier and the +// CFBundleShortVersionString or CFBundleVersion. +// +// The bundle ID may be overridden as the base identifier string by +// adding to the bundle's Info.plist a "GTMUserAgentID" key. +// +// If no bundle ID or override is available, the process name preceded +// by "proc_" is used. +NSString *GTMFetcherApplicationIdentifier(NSBundle * GTM_NULLABLE_TYPE bundle); + +// Make an identifier like "MacOSX/10.7.1" or "iPod_Touch/4.1 hw/iPod1_1" +NSString *GTMFetcherSystemVersionString(void); + +// Make a parseable user-agent identifier from the given string, replacing whitespace +// and commas with underscores, and removing other characters that may interfere +// with parsing of the full user-agent string. +// +// For example, @"[My App]" would become @"My_App" +NSString *GTMFetcherCleanedUserAgentString(NSString *str); + +// Grab the data from an input stream. Since streams cannot be assumed to be rewindable, +// this may be destructive; the caller can try to rewind the stream (by setting the +// NSStreamFileCurrentOffsetKey property) or can just use the NSData to make a new +// NSInputStream. This function is intended to facilitate testing rather than be used in +// production. +// +// This function operates synchronously on the current thread. Depending on how the +// input stream is implemented, it may be appropriate to dispatch to a different +// queue before calling this function. +// +// Failure is indicated by a returned data value of nil. +NSData * GTM_NULLABLE_TYPE GTMDataFromInputStream(NSInputStream *inputStream, NSError **outError); + +#ifdef __cplusplus +} // extern "C" +#endif + + +#if !GTM_USE_SESSION_FETCHER +@protocol GTMHTTPFetcherServiceProtocol; +#endif + +// This protocol allows abstract references to the fetcher service, primarily for +// fetchers (which may be compiled without the fetcher service class present.) +// +// Apps should not need to use this protocol. +@protocol GTMSessionFetcherServiceProtocol +// This protocol allows us to call into the service without requiring +// GTMSessionFetcherService sources in this project + +@property(atomic, strong) dispatch_queue_t callbackQueue; + +- (BOOL)fetcherShouldBeginFetching:(GTMSessionFetcher *)fetcher; +- (void)fetcherDidCreateSession:(GTMSessionFetcher *)fetcher; +- (void)fetcherDidBeginFetching:(GTMSessionFetcher *)fetcher; +- (void)fetcherDidStop:(GTMSessionFetcher *)fetcher; + +- (GTMSessionFetcher *)fetcherWithRequest:(NSURLRequest *)request; +- (BOOL)isDelayingFetcher:(GTMSessionFetcher *)fetcher; + +@property(atomic, assign) BOOL reuseSession; +- (GTM_NULLABLE NSURLSession *)session; +- (GTM_NULLABLE NSURLSession *)sessionForFetcherCreation; +- (GTM_NULLABLE id)sessionDelegate; +- (GTM_NULLABLE NSDate *)stoppedAllFetchersDate; + +// Methods for compatibility with the old GTMHTTPFetcher. +@property(atomic, readonly, strong, GTM_NULLABLE) NSOperationQueue *delegateQueue; + +@end // @protocol GTMSessionFetcherServiceProtocol + +#ifndef GTM_FETCHER_AUTHORIZATION_PROTOCOL +#define GTM_FETCHER_AUTHORIZATION_PROTOCOL 1 +@protocol GTMFetcherAuthorizationProtocol +@required +// This protocol allows us to call the authorizer without requiring its sources +// in this project. +- (void)authorizeRequest:(GTM_NULLABLE NSMutableURLRequest *)request + delegate:(id)delegate + didFinishSelector:(SEL)sel; + +- (void)stopAuthorization; + +- (void)stopAuthorizationForRequest:(NSURLRequest *)request; + +- (BOOL)isAuthorizingRequest:(NSURLRequest *)request; + +- (BOOL)isAuthorizedRequest:(NSURLRequest *)request; + +@property(atomic, strong, readonly, GTM_NULLABLE) NSString *userEmail; + +@optional + +// Indicate if authorization may be attempted. Even if this succeeds, +// authorization may fail if the user's permissions have been revoked. +@property(atomic, readonly) BOOL canAuthorize; + +// For development only, allow authorization of non-SSL requests, allowing +// transmission of the bearer token unencrypted. +@property(atomic, assign) BOOL shouldAuthorizeAllRequests; + +- (void)authorizeRequest:(GTM_NULLABLE NSMutableURLRequest *)request + completionHandler:(void (^)(NSError * GTM_NULLABLE_TYPE error))handler; + +#if GTM_USE_SESSION_FETCHER +@property(atomic, weak, GTM_NULLABLE) id fetcherService; +#else +@property(atomic, weak, GTM_NULLABLE) id fetcherService; +#endif + +- (BOOL)primeForRefresh; + +@end +#endif // GTM_FETCHER_AUTHORIZATION_PROTOCOL + +#if GTM_BACKGROUND_TASK_FETCHING +// A protocol for an alternative target for messages from GTMSessionFetcher to UIApplication. +// Set the target using +[GTMSessionFetcher setSubstituteUIApplication:] +@protocol GTMUIApplicationProtocol +- (UIBackgroundTaskIdentifier)beginBackgroundTaskWithName:(nullable NSString *)taskName + expirationHandler:(void(^ __nullable)(void))handler; +- (void)endBackgroundTask:(UIBackgroundTaskIdentifier)identifier; +@end +#endif + +#pragma mark - + +// GTMSessionFetcher objects are used for async retrieval of an http get or post +// +// See additional comments at the beginning of this file +@interface GTMSessionFetcher : NSObject + +// Create a fetcher +// +// fetcherWithRequest will return an autoreleased fetcher, but if +// the connection is successfully created, the connection should retain the +// fetcher for the life of the connection as well. So the caller doesn't have +// to retain the fetcher explicitly unless they want to be able to cancel it. ++ (instancetype)fetcherWithRequest:(GTM_NULLABLE NSURLRequest *)request; + +// Convenience methods that make a request, like +fetcherWithRequest ++ (instancetype)fetcherWithURL:(NSURL *)requestURL; ++ (instancetype)fetcherWithURLString:(NSString *)requestURLString; + +// Methods for creating fetchers to continue previous fetches. ++ (instancetype)fetcherWithDownloadResumeData:(NSData *)resumeData; ++ (GTM_NULLABLE instancetype)fetcherWithSessionIdentifier:(NSString *)sessionIdentifier; + +// Returns an array of currently active fetchers for background sessions, +// both restarted and newly created ones. ++ (GTM_NSArrayOf(GTMSessionFetcher *) *)fetchersForBackgroundSessions; + +// Designated initializer. +// +// Applications should create fetchers with a "fetcherWith..." method on a fetcher +// service or a class method, not with this initializer. +// +// The configuration should typically be nil. Applications needing to customize +// the configuration may do so by setting the configurationBlock property. +- (instancetype)initWithRequest:(GTM_NULLABLE NSURLRequest *)request + configuration:(GTM_NULLABLE NSURLSessionConfiguration *)configuration; + +// The fetcher's request. This may not be set after beginFetch has been invoked. The request +// may change due to redirects. +@property(atomic, strong, GTM_NULLABLE) NSURLRequest *request; + +// Set a header field value on the request. Header field value changes will not +// affect a fetch after the fetch has begun. +- (void)setRequestValue:(GTM_NULLABLE NSString *)value forHTTPHeaderField:(NSString *)field; + +// Data used for resuming a download task. +@property(atomic, readonly, GTM_NULLABLE) NSData *downloadResumeData; + +// The configuration; this must be set before the fetch begins. If no configuration is +// set or inherited from the fetcher service, then the fetcher uses an ephemeral config. +// +// NOTE: This property should typically be nil. Applications needing to customize +// the configuration should do so by setting the configurationBlock property. +// That allows the fetcher to pick an appropriate base configuration, with the +// application setting only the configuration properties it needs to customize. +@property(atomic, strong, GTM_NULLABLE) NSURLSessionConfiguration *configuration; + +// A block the client may use to customize the configuration used to create the session. +// +// This is called synchronously, either on the thread that begins the fetch or, during a retry, +// on the main thread. The configuration block may be called repeatedly if multiple fetchers are +// created. +// +// The configuration block is for modifying the NSURLSessionConfiguration only. +// DO NOT change any fetcher properties in the configuration block. Fetcher properties +// may be set in the fetcher service prior to fetcher creation, or on the fetcher prior +// to invoking beginFetch. +@property(atomic, copy, GTM_NULLABLE) GTMSessionFetcherConfigurationBlock configurationBlock; + +// A session is created as needed by the fetcher. A fetcher service object +// may maintain sessions for multiple fetches to the same host. +@property(atomic, strong, GTM_NULLABLE) NSURLSession *session; + +// The task in flight. +@property(atomic, readonly, GTM_NULLABLE) NSURLSessionTask *sessionTask; + +// The background session identifier. +@property(atomic, readonly, GTM_NULLABLE) NSString *sessionIdentifier; + +// Indicates a fetcher created to finish a background session task. +@property(atomic, readonly) BOOL wasCreatedFromBackgroundSession; + +// Additional user-supplied data to encode into the session identifier. Since session identifier +// length limits are unspecified, this should be kept small. Key names beginning with an underscore +// are reserved for use by the fetcher. +@property(atomic, strong, GTM_NULLABLE) GTM_NSDictionaryOf(NSString *, NSString *) *sessionUserInfo; + +// The human-readable description to be assigned to the task. +@property(atomic, copy, GTM_NULLABLE) NSString *taskDescription; + +// The priority assigned to the task, if any. Use NSURLSessionTaskPriorityLow, +// NSURLSessionTaskPriorityDefault, or NSURLSessionTaskPriorityHigh. +@property(atomic, assign) float taskPriority; + +// The fetcher encodes information used to resume a session in the session identifier. +// This method, intended for internal use returns the encoded information. The sessionUserInfo +// dictionary is stored as identifier metadata. +- (GTM_NULLABLE GTM_NSDictionaryOf(NSString *, NSString *) *)sessionIdentifierMetadata; + +#if TARGET_OS_IPHONE && !TARGET_OS_WATCH +// The app should pass to this method the completion handler passed in the app delegate method +// application:handleEventsForBackgroundURLSession:completionHandler: ++ (void)application:(UIApplication *)application + handleEventsForBackgroundURLSession:(NSString *)identifier + completionHandler:(GTMSessionFetcherSystemCompletionHandler)completionHandler; +#endif + +// Indicate that a newly created session should be a background session. +// A new session identifier will be created by the fetcher. +// +// Warning: The only thing background sessions are for is rare download +// of huge, batched files of data. And even just for those, there's a lot +// of pain and hackery needed to get transfers to actually happen reliably +// with background sessions. +// +// Don't try to upload or download in many background sessions, since the system +// will impose an exponentially increasing time penalty to prevent the app from +// getting too much background execution time. +// +// References: +// +// "Moving to Fewer, Larger Transfers" +// https://forums.developer.apple.com/thread/14853 +// +// "NSURLSession’s Resume Rate Limiter" +// https://forums.developer.apple.com/thread/14854 +// +// "Background Session Task state persistence" +// https://forums.developer.apple.com/thread/11554 +// +@property(atomic, assign) BOOL useBackgroundSession; + +// Indicates if the fetcher was started using a background session. +@property(atomic, readonly, getter=isUsingBackgroundSession) BOOL usingBackgroundSession; + +// Indicates if uploads should use an upload task. This is always set for file or stream-provider +// bodies, but may be set explicitly for NSData bodies. +@property(atomic, assign) BOOL useUploadTask; + +// Indicates that the fetcher is using a session that may be shared with other fetchers. +@property(atomic, readonly) BOOL canShareSession; + +// By default, the fetcher allows only secure (https) schemes unless this +// property is set, or the GTM_ALLOW_INSECURE_REQUESTS build flag is set. +// +// For example, during debugging when fetching from a development server that lacks SSL support, +// this may be set to @[ @"http" ], or when the fetcher is used to retrieve local files, +// this may be set to @[ @"file" ]. +// +// This should be left as nil for release builds to avoid creating the opportunity for +// leaking private user behavior and data. If a server is providing insecure URLs +// for fetching by the client app, report the problem as server security & privacy bug. +// +// For builds with the iOS 9/OS X 10.11 and later SDKs, this property is required only when +// the app specifies NSAppTransportSecurity/NSAllowsArbitraryLoads in the main bundle's Info.plist. +@property(atomic, copy, GTM_NULLABLE) GTM_NSArrayOf(NSString *) *allowedInsecureSchemes; + +// By default, the fetcher prohibits localhost requests unless this property is set, +// or the GTM_ALLOW_INSECURE_REQUESTS build flag is set. +// +// For localhost requests, the URL scheme is not checked when this property is set. +// +// For builds with the iOS 9/OS X 10.11 and later SDKs, this property is required only when +// the app specifies NSAppTransportSecurity/NSAllowsArbitraryLoads in the main bundle's Info.plist. +@property(atomic, assign) BOOL allowLocalhostRequest; + +// By default, the fetcher requires valid server certs. This may be bypassed +// temporarily for development against a test server with an invalid cert. +@property(atomic, assign) BOOL allowInvalidServerCertificates; + +// Cookie storage object for this fetcher. If nil, the fetcher will use a static cookie +// storage instance shared among fetchers. If this fetcher was created by a fetcher service +// object, it will be set to use the service object's cookie storage. See Cookies section above for +// the full discussion. +// +// Because as of Jan 2014 standalone instances of NSHTTPCookieStorage do not actually +// store any cookies (Radar 15735276) we use our own subclass, GTMSessionCookieStorage, +// to hold cookies in memory. +@property(atomic, strong, GTM_NULLABLE) NSHTTPCookieStorage *cookieStorage; + +// Setting the credential is optional; it is used if the connection receives +// an authentication challenge. +@property(atomic, strong, GTM_NULLABLE) NSURLCredential *credential; + +// Setting the proxy credential is optional; it is used if the connection +// receives an authentication challenge from a proxy. +@property(atomic, strong, GTM_NULLABLE) NSURLCredential *proxyCredential; + +// If body data, body file URL, or body stream provider is not set, then a GET request +// method is assumed. +@property(atomic, strong, GTM_NULLABLE) NSData *bodyData; + +// File to use as the request body. This forces use of an upload task. +@property(atomic, strong, GTM_NULLABLE) NSURL *bodyFileURL; + +// Length of body to send, expected or actual. +@property(atomic, readonly) int64_t bodyLength; + +// The body stream provider may be called repeatedly to provide a body. +// Setting a body stream provider forces use of an upload task. +@property(atomic, copy, GTM_NULLABLE) GTMSessionFetcherBodyStreamProvider bodyStreamProvider; + +// Object to add authorization to the request, if needed. +// +// This may not be changed once beginFetch has been invoked. +@property(atomic, strong, GTM_NULLABLE) id authorizer; + +// The service object that created and monitors this fetcher, if any. +@property(atomic, strong) id service; + +// The host, if any, used to classify this fetcher in the fetcher service. +@property(atomic, copy, GTM_NULLABLE) NSString *serviceHost; + +// The priority, if any, used for starting fetchers in the fetcher service. +// +// Lower values are higher priority; the default is 0, and values may +// be negative or positive. This priority affects only the start order of +// fetchers that are being delayed by a fetcher service when the running fetchers +// exceeds the service's maxRunningFetchersPerHost. A priority of NSIntegerMin will +// exempt this fetcher from delay. +@property(atomic, assign) NSInteger servicePriority; + +// The delegate's optional didReceiveResponse block may be used to inspect or alter +// the session task response. +// +// This is called on the callback queue. +@property(atomic, copy, GTM_NULLABLE) GTMSessionFetcherDidReceiveResponseBlock didReceiveResponseBlock; + +// The delegate's optional challenge block may be used to inspect or alter +// the session task challenge. +// +// If this block is not set, the fetcher's default behavior for the NSURLSessionTask +// didReceiveChallenge: delegate method is to use the fetcher's respondToChallenge: method +// which relies on the fetcher's credential and proxyCredential properties. +// +// Warning: This may be called repeatedly if the challenge fails. Check +// challenge.previousFailureCount to identify repeated invocations. +// +// This is called on the callback queue. +@property(atomic, copy, GTM_NULLABLE) GTMSessionFetcherChallengeBlock challengeBlock; + +// The delegate's optional willRedirect block may be used to inspect or alter +// the redirection. +// +// This is called on the callback queue. +@property(atomic, copy, GTM_NULLABLE) GTMSessionFetcherWillRedirectBlock willRedirectBlock; + +// The optional send progress block reports body bytes uploaded. +// +// This is called on the callback queue. +@property(atomic, copy, GTM_NULLABLE) GTMSessionFetcherSendProgressBlock sendProgressBlock; + +// The optional accumulate block may be set by clients wishing to accumulate data +// themselves rather than let the fetcher append each buffer to an NSData. +// +// When this is called with nil data (such as on redirect) the client +// should empty its accumulation buffer. +// +// This is called on the callback queue. +@property(atomic, copy, GTM_NULLABLE) GTMSessionFetcherAccumulateDataBlock accumulateDataBlock; + +// The optional received progress block may be used to monitor data +// received from a data task. +// +// This is called on the callback queue. +@property(atomic, copy, GTM_NULLABLE) GTMSessionFetcherReceivedProgressBlock receivedProgressBlock; + +// The delegate's optional downloadProgress block may be used to monitor download +// progress in writing to disk. +// +// This is called on the callback queue. +@property(atomic, copy, GTM_NULLABLE) GTMSessionFetcherDownloadProgressBlock downloadProgressBlock; + +// The delegate's optional willCacheURLResponse block may be used to alter the cached +// NSURLResponse. The user may prevent caching by passing nil to the block's response. +// +// This is called on the callback queue. +@property(atomic, copy, GTM_NULLABLE) GTMSessionFetcherWillCacheURLResponseBlock willCacheURLResponseBlock; + +// Enable retrying; see comments at the top of this file. Setting +// retryEnabled=YES resets the min and max retry intervals. +@property(atomic, assign, getter=isRetryEnabled) BOOL retryEnabled; + +// Retry block is optional for retries. +// +// If present, this block should call the response block with YES to cause a retry or NO to end the +// fetch. +// See comments at the top of this file. +@property(atomic, copy, GTM_NULLABLE) GTMSessionFetcherRetryBlock retryBlock; + +// Retry intervals must be strictly less than maxRetryInterval, else +// they will be limited to maxRetryInterval and no further retries will +// be attempted. Setting maxRetryInterval to 0.0 will reset it to the +// default value, 60 seconds for downloads and 600 seconds for uploads. +@property(atomic, assign) NSTimeInterval maxRetryInterval; + +// Starting retry interval. Setting minRetryInterval to 0.0 will reset it +// to a random value between 1.0 and 2.0 seconds. Clients should normally not +// set this except for unit testing. +@property(atomic, assign) NSTimeInterval minRetryInterval; + +// Multiplier used to increase the interval between retries, typically 2.0. +// Clients should not need to set this. +@property(atomic, assign) double retryFactor; + +// Number of retries attempted. +@property(atomic, readonly) NSUInteger retryCount; + +// Interval delay to precede next retry. +@property(atomic, readonly) NSTimeInterval nextRetryInterval; + +#if GTM_BACKGROUND_TASK_FETCHING +// Skip use of a UIBackgroundTask, thus requiring fetches to complete when the app is in the +// foreground. +// +// Targets should define GTM_BACKGROUND_TASK_FETCHING to 0 to avoid use of a UIBackgroundTask +// on iOS to allow fetches to complete in the background. This property is available when +// it's not practical to set the preprocessor define. +@property(atomic, assign) BOOL skipBackgroundTask; +#endif // GTM_BACKGROUND_TASK_FETCHING + +// Begin fetching the request +// +// The delegate may optionally implement the callback or pass nil for the selector or handler. +// +// The delegate and all callback blocks are retained between the beginFetch call until after the +// finish callback, or until the fetch is stopped. +// +// An error is passed to the callback for server statuses 300 or +// higher, with the status stored as the error object's code. +// +// finishedSEL has a signature like: +// - (void)fetcher:(GTMSessionFetcher *)fetcher +// finishedWithData:(NSData *)data +// error:(NSError *)error; +// +// If the application has specified a destinationFileURL or an accumulateDataBlock +// for the fetcher, the data parameter passed to the callback will be nil. + +- (void)beginFetchWithDelegate:(GTM_NULLABLE id)delegate + didFinishSelector:(GTM_NULLABLE SEL)finishedSEL; + +- (void)beginFetchWithCompletionHandler:(GTM_NULLABLE GTMSessionFetcherCompletionHandler)handler; + +// Returns YES if this fetcher is in the process of fetching a URL. +@property(atomic, readonly, getter=isFetching) BOOL fetching; + +// Cancel the fetch of the request that's currently in progress. The completion handler +// will not be called. +- (void)stopFetching; + +// A block to be called when the fetch completes. +@property(atomic, copy, GTM_NULLABLE) GTMSessionFetcherCompletionHandler completionHandler; + +// A block to be called if download resume data becomes available. +@property(atomic, strong, GTM_NULLABLE) void (^resumeDataBlock)(NSData *); + +// Return the status code from the server response. +@property(atomic, readonly) NSInteger statusCode; + +// Return the http headers from the response. +@property(atomic, strong, readonly, GTM_NULLABLE) GTM_NSDictionaryOf(NSString *, NSString *) *responseHeaders; + +// The response, once it's been received. +@property(atomic, strong, readonly, GTM_NULLABLE) NSURLResponse *response; + +// Bytes downloaded so far. +@property(atomic, readonly) int64_t downloadedLength; + +// Buffer of currently-downloaded data, if available. +@property(atomic, readonly, strong, GTM_NULLABLE) NSData *downloadedData; + +// Local path to which the downloaded file will be moved. +// +// If a file already exists at the path, it will be overwritten. +// Will create the enclosing folders if they are not present. +@property(atomic, strong, GTM_NULLABLE) NSURL *destinationFileURL; + +// The time this fetcher originally began fetching. This is useful as a time +// barrier for ignoring irrelevant fetch notifications or callbacks. +@property(atomic, strong, readonly, GTM_NULLABLE) NSDate *initialBeginFetchDate; + +// userData is retained solely for the convenience of the client. +@property(atomic, strong, GTM_NULLABLE) id userData; + +// Stored property values are retained solely for the convenience of the client. +@property(atomic, copy, GTM_NULLABLE) GTM_NSDictionaryOf(NSString *, id) *properties; + +- (void)setProperty:(GTM_NULLABLE id)obj forKey:(NSString *)key; // Pass nil for obj to remove the property. +- (GTM_NULLABLE id)propertyForKey:(NSString *)key; + +- (void)addPropertiesFromDictionary:(GTM_NSDictionaryOf(NSString *, id) *)dict; + +// Comments are useful for logging, so are strongly recommended for each fetcher. +@property(atomic, copy, GTM_NULLABLE) NSString *comment; + +- (void)setCommentWithFormat:(NSString *)format, ... NS_FORMAT_FUNCTION(1, 2); + +// Log of request and response, if logging is enabled +@property(atomic, copy, GTM_NULLABLE) NSString *log; + +// Callbacks are run on this queue. If none is supplied, the main queue is used. +@property(atomic, strong, GTM_NULL_RESETTABLE) dispatch_queue_t callbackQueue; + +// The queue used internally by the session to invoke its delegate methods in the fetcher. +// +// Application callbacks are always called by the fetcher on the callbackQueue above, +// not on this queue. Apps should generally not change this queue. +// +// The default delegate queue is the main queue. +// +// This value is ignored after the session has been created, so this +// property should be set in the fetcher service rather in the fetcher as it applies +// to a shared session. +@property(atomic, strong, GTM_NULL_RESETTABLE) NSOperationQueue *sessionDelegateQueue; + +// Spin the run loop or sleep the thread, discarding events, until the fetch has completed. +// +// This is only for use in testing or in tools without a user interface. +// +// Note: Synchronous fetches should never be used by shipping apps; they are +// sufficient reason for rejection from the app store. +// +// Returns NO if timed out. +- (BOOL)waitForCompletionWithTimeout:(NSTimeInterval)timeoutInSeconds; + +// Test block is optional for testing. +// +// If present, this block will cause the fetcher to skip starting the session, and instead +// use the test block response values when calling the completion handler and delegate code. +// +// Test code can set this on the fetcher or on the fetcher service. For testing libraries +// that use a fetcher without exposing either the fetcher or the fetcher service, the global +// method setGlobalTestBlock: will set the block for all fetchers that do not have a test +// block set. +// +// The test code can pass nil for all response parameters to indicate that the fetch +// should proceed. +// +// Applications can exclude test block support by setting GTM_DISABLE_FETCHER_TEST_BLOCK. +@property(atomic, copy, GTM_NULLABLE) GTMSessionFetcherTestBlock testBlock; + ++ (void)setGlobalTestBlock:(GTM_NULLABLE GTMSessionFetcherTestBlock)block; + +// When using the testBlock, |testBlockAccumulateDataChunkCount| is the desired number of chunks to +// divide the response data into if the client has streaming enabled. The data will be divided up to +// |testBlockAccumulateDataChunkCount| chunks; however, the exact amount may vary depending on the +// size of the response data (e.g. a 1-byte response can only be divided into one chunk). +@property(atomic, readwrite) NSUInteger testBlockAccumulateDataChunkCount; + +#if GTM_BACKGROUND_TASK_FETCHING +// For testing or to override UIApplication invocations, apps may specify an alternative +// target for messages to UIApplication. ++ (void)setSubstituteUIApplication:(nullable id)substituteUIApplication; ++ (nullable id)substituteUIApplication; +#endif // GTM_BACKGROUND_TASK_FETCHING + +// Exposed for testing. ++ (GTMSessionCookieStorage *)staticCookieStorage; ++ (BOOL)appAllowsInsecureRequests; + +#if STRIP_GTM_FETCH_LOGGING +// If logging is stripped, provide a stub for the main method +// for controlling logging. ++ (void)setLoggingEnabled:(BOOL)flag; ++ (BOOL)isLoggingEnabled; + +#else + +// These methods let an application log specific body text, such as the text description of a binary +// request or response. The application should set the fetcher to defer response body logging until +// the response has been received and the log response body has been set by the app. For example: +// +// fetcher.logRequestBody = [binaryObject stringDescription]; +// fetcher.deferResponseBodyLogging = YES; +// [fetcher beginFetchWithCompletionHandler:^(NSData *data, NSError *error) { +// if (error == nil) { +// fetcher.logResponseBody = [[[MyThing alloc] initWithData:data] stringDescription]; +// } +// fetcher.deferResponseBodyLogging = NO; +// }]; + +@property(atomic, copy, GTM_NULLABLE) NSString *logRequestBody; +@property(atomic, assign) BOOL deferResponseBodyLogging; +@property(atomic, copy, GTM_NULLABLE) NSString *logResponseBody; + +// Internal logging support. +@property(atomic, readonly) NSData *loggedStreamData; +@property(atomic, assign) BOOL hasLoggedError; +@property(atomic, strong, GTM_NULLABLE) NSURL *redirectedFromURL; +- (void)appendLoggedStreamData:(NSData *)dataToAdd; +- (void)clearLoggedStreamData; + +#endif // STRIP_GTM_FETCH_LOGGING + +@end + +@interface GTMSessionFetcher (BackwardsCompatibilityOnly) +// Clients using GTMSessionFetcher should set the cookie storage explicitly themselves. +// This method is just for compatibility with the old GTMHTTPFetcher class. +- (void)setCookieStorageMethod:(NSInteger)method; +@end + +// Until we can just instantiate NSHTTPCookieStorage for local use, we'll +// implement all the public methods ourselves. This stores cookies only in +// memory. Additional methods are provided for testing. +// +// iOS 9/OS X 10.11 added +[NSHTTPCookieStorage sharedCookieStorageForGroupContainerIdentifier:] +// which may also be used to create cookie storage. +@interface GTMSessionCookieStorage : NSHTTPCookieStorage + +// Add the array off cookies to the storage, replacing duplicates. +// Also removes expired cookies from the storage. +- (void)setCookies:(GTM_NULLABLE GTM_NSArrayOf(NSHTTPCookie *) *)cookies; + +- (void)removeAllCookies; + +@end + +// Macros to monitor synchronization blocks in debug builds. +// These report problems using GTMSessionCheckDebug. +// +// GTMSessionMonitorSynchronized Start monitoring a top-level-only +// @sync scope. +// GTMSessionMonitorRecursiveSynchronized Start monitoring a top-level or +// recursive @sync scope. +// GTMSessionCheckSynchronized Verify that the current execution +// is inside a @sync scope. +// GTMSessionCheckNotSynchronized Verify that the current execution +// is not inside a @sync scope. +// +// Example usage: +// +// - (void)myExternalMethod { +// @synchronized(self) { +// GTMSessionMonitorSynchronized(self) +// +// - (void)myInternalMethod { +// GTMSessionCheckSynchronized(self); +// +// - (void)callMyCallbacks { +// GTMSessionCheckNotSynchronized(self); +// +// GTMSessionCheckNotSynchronized is available for verifying the code isn't +// in a deadlockable @sync state when posting notifications and invoking +// callbacks. Don't use GTMSessionCheckNotSynchronized immediately before a +// @sync scope; the normal recursiveness check of GTMSessionMonitorSynchronized +// can catch those. + +#ifdef __OBJC__ +// If asserts are entirely no-ops, the synchronization monitor is just a bunch +// of counting code that doesn't report exceptional circumstances in any way. +// Only build the synchronization monitor code if NS_BLOCK_ASSERTIONS is not +// defined or asserts are being logged instead. +#if DEBUG && (!defined(NS_BLOCK_ASSERTIONS) || GTMSESSION_ASSERT_AS_LOG) + #define __GTMSessionMonitorSynchronizedVariableInner(varname, counter) \ + varname ## counter + #define __GTMSessionMonitorSynchronizedVariable(varname, counter) \ + __GTMSessionMonitorSynchronizedVariableInner(varname, counter) + + #define GTMSessionMonitorSynchronized(obj) \ + NS_VALID_UNTIL_END_OF_SCOPE id \ + __GTMSessionMonitorSynchronizedVariable(__monitor, __COUNTER__) = \ + [[GTMSessionSyncMonitorInternal alloc] initWithSynchronizationObject:obj \ + allowRecursive:NO \ + functionName:__func__] + + #define GTMSessionMonitorRecursiveSynchronized(obj) \ + NS_VALID_UNTIL_END_OF_SCOPE id \ + __GTMSessionMonitorSynchronizedVariable(__monitor, __COUNTER__) = \ + [[GTMSessionSyncMonitorInternal alloc] initWithSynchronizationObject:obj \ + allowRecursive:YES \ + functionName:__func__] + + #define GTMSessionCheckSynchronized(obj) { \ + GTMSESSION_ASSERT_DEBUG( \ + [GTMSessionSyncMonitorInternal functionsHoldingSynchronizationOnObject:obj], \ + @"GTMSessionCheckSynchronized(" #obj ") failed: not sync'd" \ + @" on " #obj " in %s. Call stack:\n%@", \ + __func__, [NSThread callStackSymbols]); \ + } + + #define GTMSessionCheckNotSynchronized(obj) { \ + GTMSESSION_ASSERT_DEBUG( \ + ![GTMSessionSyncMonitorInternal functionsHoldingSynchronizationOnObject:obj], \ + @"GTMSessionCheckNotSynchronized(" #obj ") failed: was sync'd" \ + @" on " #obj " in %s by %@. Call stack:\n%@", __func__, \ + [GTMSessionSyncMonitorInternal functionsHoldingSynchronizationOnObject:obj], \ + [NSThread callStackSymbols]); \ + } + +// GTMSessionSyncMonitorInternal is a private class that keeps track of the +// beginning and end of synchronized scopes. +// +// This class should not be used directly, but only via the +// GTMSessionMonitorSynchronized macro. +@interface GTMSessionSyncMonitorInternal : NSObject +- (instancetype)initWithSynchronizationObject:(id)object + allowRecursive:(BOOL)allowRecursive + functionName:(const char *)functionName; +// Return the names of the functions that hold sync on the object, or nil if none. ++ (NSArray *)functionsHoldingSynchronizationOnObject:(id)object; +@end + +#else + #define GTMSessionMonitorSynchronized(obj) do { } while (0) + #define GTMSessionMonitorRecursiveSynchronized(obj) do { } while (0) + #define GTMSessionCheckSynchronized(obj) do { } while (0) + #define GTMSessionCheckNotSynchronized(obj) do { } while (0) +#endif // !DEBUG +#endif // __OBJC__ + + +GTM_ASSUME_NONNULL_END diff --git a/shlack/Pods/GTMSessionFetcher/Source/GTMSessionFetcher.m b/shlack/Pods/GTMSessionFetcher/Source/GTMSessionFetcher.m new file mode 100644 index 0000000..8ba2a31 --- /dev/null +++ b/shlack/Pods/GTMSessionFetcher/Source/GTMSessionFetcher.m @@ -0,0 +1,4583 @@ +/* Copyright 2014 Google Inc. All rights reserved. + * + * 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. + */ + +#if !defined(__has_feature) || !__has_feature(objc_arc) +#error "This file requires ARC support." +#endif + +#import "GTMSessionFetcher.h" + +#import + +#ifndef STRIP_GTM_FETCH_LOGGING + #error GTMSessionFetcher headers should have defaulted this if it wasn't already defined. +#endif + +GTM_ASSUME_NONNULL_BEGIN + +NSString *const kGTMSessionFetcherStartedNotification = @"kGTMSessionFetcherStartedNotification"; +NSString *const kGTMSessionFetcherStoppedNotification = @"kGTMSessionFetcherStoppedNotification"; +NSString *const kGTMSessionFetcherRetryDelayStartedNotification = @"kGTMSessionFetcherRetryDelayStartedNotification"; +NSString *const kGTMSessionFetcherRetryDelayStoppedNotification = @"kGTMSessionFetcherRetryDelayStoppedNotification"; + +NSString *const kGTMSessionFetcherCompletionInvokedNotification = @"kGTMSessionFetcherCompletionInvokedNotification"; +NSString *const kGTMSessionFetcherCompletionDataKey = @"data"; +NSString *const kGTMSessionFetcherCompletionErrorKey = @"error"; + +NSString *const kGTMSessionFetcherErrorDomain = @"com.google.GTMSessionFetcher"; +NSString *const kGTMSessionFetcherStatusDomain = @"com.google.HTTPStatus"; +NSString *const kGTMSessionFetcherStatusDataKey = @"data"; // data returned with a kGTMSessionFetcherStatusDomain error +NSString *const kGTMSessionFetcherStatusDataContentTypeKey = @"data_content_type"; + +NSString *const kGTMSessionFetcherNumberOfRetriesDoneKey = @"kGTMSessionFetcherNumberOfRetriesDoneKey"; +NSString *const kGTMSessionFetcherElapsedIntervalWithRetriesKey = @"kGTMSessionFetcherElapsedIntervalWithRetriesKey"; + +static NSString *const kGTMSessionIdentifierPrefix = @"com.google.GTMSessionFetcher"; +static NSString *const kGTMSessionIdentifierDestinationFileURLMetadataKey = @"_destURL"; +static NSString *const kGTMSessionIdentifierBodyFileURLMetadataKey = @"_bodyURL"; + +// The default max retry interview is 10 minutes for uploads (POST/PUT/PATCH), +// 1 minute for downloads. +static const NSTimeInterval kUnsetMaxRetryInterval = -1.0; +static const NSTimeInterval kDefaultMaxDownloadRetryInterval = 60.0; +static const NSTimeInterval kDefaultMaxUploadRetryInterval = 60.0 * 10.; + +// The maximum data length that can be loaded to the error userInfo +static const int64_t kMaximumDownloadErrorDataLength = 20000; + +#ifdef GTMSESSION_PERSISTED_DESTINATION_KEY +// Projects using unique class names should also define a unique persisted destination key. +static NSString * const kGTMSessionFetcherPersistedDestinationKey = + GTMSESSION_PERSISTED_DESTINATION_KEY; +#else +static NSString * const kGTMSessionFetcherPersistedDestinationKey = + @"com.google.GTMSessionFetcher.downloads"; +#endif + +GTM_ASSUME_NONNULL_END + +// +// GTMSessionFetcher +// + +#if 0 +#define GTM_LOG_BACKGROUND_SESSION(...) GTMSESSION_LOG_DEBUG(__VA_ARGS__) +#else +#define GTM_LOG_BACKGROUND_SESSION(...) +#endif + +#ifndef GTM_TARGET_SUPPORTS_APP_TRANSPORT_SECURITY + #if (TARGET_OS_TV \ + || TARGET_OS_WATCH \ + || (!TARGET_OS_IPHONE && defined(MAC_OS_X_VERSION_10_11) && MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_11) \ + || (TARGET_OS_IPHONE && defined(__IPHONE_9_0) && __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_9_0)) + #define GTM_TARGET_SUPPORTS_APP_TRANSPORT_SECURITY 1 + #endif +#endif + +@interface GTMSessionFetcher () + +@property(atomic, strong, readwrite, GTM_NULLABLE) NSData *downloadedData; +@property(atomic, strong, readwrite, GTM_NULLABLE) NSData *downloadResumeData; + +#if GTM_BACKGROUND_TASK_FETCHING +// Should always be accessed within an @synchronized(self). +@property(assign, nonatomic) UIBackgroundTaskIdentifier backgroundTaskIdentifier; +#endif + +@property(atomic, readwrite, getter=isUsingBackgroundSession) BOOL usingBackgroundSession; + +@end + +#if !GTMSESSION_BUILD_COMBINED_SOURCES +@interface GTMSessionFetcher (GTMSessionFetcherLoggingInternal) +- (void)logFetchWithError:(NSError *)error; +- (void)logNowWithError:(GTM_NULLABLE NSError *)error; +- (NSInputStream *)loggedInputStreamForInputStream:(NSInputStream *)inputStream; +- (GTMSessionFetcherBodyStreamProvider)loggedStreamProviderForStreamProvider: + (GTMSessionFetcherBodyStreamProvider)streamProvider; +@end +#endif // !GTMSESSION_BUILD_COMBINED_SOURCES + +GTM_ASSUME_NONNULL_BEGIN + +static NSTimeInterval InitialMinRetryInterval(void) { + return 1.0 + ((double)(arc4random_uniform(0x0FFFF)) / (double) 0x0FFFF); +} + +static BOOL IsLocalhost(NSString * GTM_NULLABLE_TYPE host) { + // We check if there's host, and then make the comparisons. + if (host == nil) return NO; + return ([host caseInsensitiveCompare:@"localhost"] == NSOrderedSame + || [host isEqual:@"::1"] + || [host isEqual:@"127.0.0.1"]); +} + +static NSDictionary *GTM_NULLABLE_TYPE GTMErrorUserInfoForData( + NSData *GTM_NULLABLE_TYPE data, NSDictionary *GTM_NULLABLE_TYPE responseHeaders) { + NSMutableDictionary *userInfo = [NSMutableDictionary dictionary]; + + if (data.length > 0) { + userInfo[kGTMSessionFetcherStatusDataKey] = data; + + NSString *contentType = responseHeaders[@"Content-Type"]; + if (contentType) { + userInfo[kGTMSessionFetcherStatusDataContentTypeKey] = contentType; + } + } + + return userInfo.count > 0 ? userInfo : nil; +} + +static GTMSessionFetcherTestBlock GTM_NULLABLE_TYPE gGlobalTestBlock; + +@implementation GTMSessionFetcher { + NSMutableURLRequest *_request; // after beginFetch, changed only in delegate callbacks + BOOL _useUploadTask; // immutable after beginFetch + NSURL *_bodyFileURL; // immutable after beginFetch + GTMSessionFetcherBodyStreamProvider _bodyStreamProvider; // immutable after beginFetch + NSURLSession *_session; + BOOL _shouldInvalidateSession; // immutable after beginFetch + NSURLSession *_sessionNeedingInvalidation; + NSURLSessionConfiguration *_configuration; + NSURLSessionTask *_sessionTask; + NSString *_taskDescription; + float _taskPriority; + NSURLResponse *_response; + NSString *_sessionIdentifier; + BOOL _wasCreatedFromBackgroundSession; + BOOL _didCreateSessionIdentifier; + NSString *_sessionIdentifierUUID; + BOOL _userRequestedBackgroundSession; + BOOL _usingBackgroundSession; + NSMutableData * GTM_NULLABLE_TYPE _downloadedData; + NSError *_downloadFinishedError; + NSData *_downloadResumeData; // immutable after construction + NSData * GTM_NULLABLE_TYPE _downloadTaskErrorData; // Data for when download task fails + NSURL *_destinationFileURL; + int64_t _downloadedLength; + NSURLCredential *_credential; // username & password + NSURLCredential *_proxyCredential; // credential supplied to proxy servers + BOOL _isStopNotificationNeeded; // set when start notification has been sent + BOOL _isUsingTestBlock; // set when a test block was provided (remains set when the block is released) + id _userData; // retained, if set by caller + NSMutableDictionary *_properties; // more data retained for caller + dispatch_queue_t _callbackQueue; + dispatch_group_t _callbackGroup; // read-only after creation + NSOperationQueue *_delegateQueue; // immutable after beginFetch + + id _authorizer; // immutable after beginFetch + + // The service object that created and monitors this fetcher, if any. + id _service; // immutable; set by the fetcher service upon creation + NSString *_serviceHost; + NSInteger _servicePriority; // immutable after beginFetch + BOOL _hasStoppedFetching; // counterpart to _initialBeginFetchDate + BOOL _userStoppedFetching; + + BOOL _isRetryEnabled; // user wants auto-retry + NSTimer *_retryTimer; + NSUInteger _retryCount; + NSTimeInterval _maxRetryInterval; // default 60 (download) or 600 (upload) seconds + NSTimeInterval _minRetryInterval; // random between 1 and 2 seconds + NSTimeInterval _retryFactor; // default interval multiplier is 2 + NSTimeInterval _lastRetryInterval; + NSDate *_initialBeginFetchDate; // date that beginFetch was first invoked; immutable after initial beginFetch + NSDate *_initialRequestDate; // date of first request to the target server (ignoring auth) + BOOL _hasAttemptedAuthRefresh; // accessed only in shouldRetryNowForStatus: + + NSString *_comment; // comment for log + NSString *_log; +#if !STRIP_GTM_FETCH_LOGGING + NSMutableData *_loggedStreamData; + NSURL *_redirectedFromURL; + NSString *_logRequestBody; + NSString *_logResponseBody; + BOOL _hasLoggedError; + BOOL _deferResponseBodyLogging; +#endif +} + +#if !GTMSESSION_UNIT_TESTING ++ (void)load { + [self fetchersForBackgroundSessions]; +} +#endif + ++ (instancetype)fetcherWithRequest:(GTM_NULLABLE NSURLRequest *)request { + return [[self alloc] initWithRequest:request configuration:nil]; +} + ++ (instancetype)fetcherWithURL:(NSURL *)requestURL { + return [self fetcherWithRequest:[NSURLRequest requestWithURL:requestURL]]; +} + ++ (instancetype)fetcherWithURLString:(NSString *)requestURLString { + return [self fetcherWithURL:(NSURL *)[NSURL URLWithString:requestURLString]]; +} + ++ (instancetype)fetcherWithDownloadResumeData:(NSData *)resumeData { + GTMSessionFetcher *fetcher = [self fetcherWithRequest:nil]; + fetcher.comment = @"Resuming download"; + fetcher.downloadResumeData = resumeData; + return fetcher; +} + ++ (GTM_NULLABLE instancetype)fetcherWithSessionIdentifier:(NSString *)sessionIdentifier { + GTMSESSION_ASSERT_DEBUG(sessionIdentifier != nil, @"Invalid session identifier"); + NSMapTable *sessionIdentifierToFetcherMap = [self sessionIdentifierToFetcherMap]; + GTMSessionFetcher *fetcher = [sessionIdentifierToFetcherMap objectForKey:sessionIdentifier]; + if (!fetcher && [sessionIdentifier hasPrefix:kGTMSessionIdentifierPrefix]) { + fetcher = [self fetcherWithRequest:nil]; + [fetcher setSessionIdentifier:sessionIdentifier]; + [sessionIdentifierToFetcherMap setObject:fetcher forKey:sessionIdentifier]; + fetcher->_wasCreatedFromBackgroundSession = YES; + [fetcher setCommentWithFormat:@"Resuming %@", + fetcher && fetcher->_sessionIdentifierUUID ? fetcher->_sessionIdentifierUUID : @"?"]; + } + return fetcher; +} + ++ (NSMapTable *)sessionIdentifierToFetcherMap { + // TODO: What if a service is involved in creating the fetcher? Currently, when re-creating + // fetchers, if a service was involved, it is not re-created. Should the service maintain a map? + static NSMapTable *gSessionIdentifierToFetcherMap = nil; + + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + gSessionIdentifierToFetcherMap = [NSMapTable strongToWeakObjectsMapTable]; + }); + return gSessionIdentifierToFetcherMap; +} + +#if !GTM_ALLOW_INSECURE_REQUESTS ++ (BOOL)appAllowsInsecureRequests { + // If the main bundle Info.plist key NSAppTransportSecurity is present, and it specifies + // NSAllowsArbitraryLoads, then we need to explicitly enforce secure schemes. +#if GTM_TARGET_SUPPORTS_APP_TRANSPORT_SECURITY + static BOOL allowsInsecureRequests; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + NSBundle *mainBundle = [NSBundle mainBundle]; + NSDictionary *appTransportSecurity = + [mainBundle objectForInfoDictionaryKey:@"NSAppTransportSecurity"]; + allowsInsecureRequests = + [[appTransportSecurity objectForKey:@"NSAllowsArbitraryLoads"] boolValue]; + }); + return allowsInsecureRequests; +#else + // For builds targeting iOS 8 or 10.10 and earlier, we want to require fetcher + // security checks. + return YES; +#endif // GTM_TARGET_SUPPORTS_APP_TRANSPORT_SECURITY +} +#else // GTM_ALLOW_INSECURE_REQUESTS ++ (BOOL)appAllowsInsecureRequests { + return YES; +} +#endif // !GTM_ALLOW_INSECURE_REQUESTS + + +- (instancetype)init { + return [self initWithRequest:nil configuration:nil]; +} + +- (instancetype)initWithRequest:(NSURLRequest *)request { + return [self initWithRequest:request configuration:nil]; +} + +- (instancetype)initWithRequest:(GTM_NULLABLE NSURLRequest *)request + configuration:(GTM_NULLABLE NSURLSessionConfiguration *)configuration { + self = [super init]; + if (self) { +#if GTM_BACKGROUND_TASK_FETCHING + _backgroundTaskIdentifier = UIBackgroundTaskInvalid; +#endif + _request = [request mutableCopy]; + _configuration = configuration; + + NSData *bodyData = request.HTTPBody; + if (bodyData) { + _bodyLength = (int64_t)bodyData.length; + } else { + _bodyLength = NSURLSessionTransferSizeUnknown; + } + + _callbackQueue = dispatch_get_main_queue(); + _callbackGroup = dispatch_group_create(); + _delegateQueue = [NSOperationQueue mainQueue]; + + _minRetryInterval = InitialMinRetryInterval(); + _maxRetryInterval = kUnsetMaxRetryInterval; + + _taskPriority = -1.0f; // Valid values if set are 0.0...1.0. + + _testBlockAccumulateDataChunkCount = 1; + +#if !STRIP_GTM_FETCH_LOGGING + // Encourage developers to set the comment property or use + // setCommentWithFormat: by providing a default string. + _comment = @"(No fetcher comment set)"; +#endif + } + return self; +} + +- (id)copyWithZone:(NSZone *)zone { + // disallow use of fetchers in a copy property + [self doesNotRecognizeSelector:_cmd]; + return nil; +} + +- (NSString *)description { + NSString *requestStr = self.request.URL.description; + if (requestStr.length == 0) { + if (self.downloadResumeData.length > 0) { + requestStr = @""; + } else if (_wasCreatedFromBackgroundSession) { + requestStr = @""; + } else { + requestStr = @""; + } + } + return [NSString stringWithFormat:@"%@ %p (%@)", [self class], self, requestStr]; +} + +- (void)dealloc { + GTMSESSION_ASSERT_DEBUG(!_isStopNotificationNeeded, + @"unbalanced fetcher notification for %@", _request.URL); + [self forgetSessionIdentifierForFetcherWithoutSyncCheck]; + + // Note: if a session task or a retry timer was pending, then this instance + // would be retained by those so it wouldn't be getting dealloc'd, + // hence we don't need to stopFetch here +} + +#pragma mark - + +// Begin fetching the URL (or begin a retry fetch). The delegate is retained +// for the duration of the fetch connection. + +- (void)beginFetchWithCompletionHandler:(GTM_NULLABLE GTMSessionFetcherCompletionHandler)handler { + GTMSessionCheckNotSynchronized(self); + + _completionHandler = [handler copy]; + + // The user may have called setDelegate: earlier if they want to use other + // delegate-style callbacks during the fetch; otherwise, the delegate is nil, + // which is fine. + [self beginFetchMayDelay:YES mayAuthorize:YES]; +} + +// Begin fetching the URL for a retry fetch. The delegate and completion handler +// are already provided, and do not need to be copied. +- (void)beginFetchForRetry { + GTMSessionCheckNotSynchronized(self); + + [self beginFetchMayDelay:YES mayAuthorize:YES]; +} + +- (GTMSessionFetcherCompletionHandler)completionHandlerWithTarget:(GTM_NULLABLE_TYPE id)target + didFinishSelector:(GTM_NULLABLE_TYPE SEL)finishedSelector { + GTMSessionFetcherAssertValidSelector(target, finishedSelector, @encode(GTMSessionFetcher *), + @encode(NSData *), @encode(NSError *), 0); + GTMSessionFetcherCompletionHandler completionHandler = ^(NSData *data, NSError *error) { + if (target && finishedSelector) { + id selfArg = self; // Placate ARC. + NSMethodSignature *sig = [target methodSignatureForSelector:finishedSelector]; + NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:sig]; + [invocation setSelector:(SEL)finishedSelector]; + [invocation setTarget:target]; + [invocation setArgument:&selfArg atIndex:2]; + [invocation setArgument:&data atIndex:3]; + [invocation setArgument:&error atIndex:4]; + [invocation invoke]; + } + }; + return completionHandler; +} + +- (void)beginFetchWithDelegate:(GTM_NULLABLE_TYPE id)target + didFinishSelector:(GTM_NULLABLE_TYPE SEL)finishedSelector { + GTMSessionCheckNotSynchronized(self); + + GTMSessionFetcherCompletionHandler handler = [self completionHandlerWithTarget:target + didFinishSelector:finishedSelector]; + [self beginFetchWithCompletionHandler:handler]; +} + +- (void)beginFetchMayDelay:(BOOL)mayDelay + mayAuthorize:(BOOL)mayAuthorize { + // This is the internal entry point for re-starting fetches. + GTMSessionCheckNotSynchronized(self); + + NSMutableURLRequest *fetchRequest = _request; // The request property is now externally immutable. + NSURL *fetchRequestURL = fetchRequest.URL; + NSString *priorSessionIdentifier = self.sessionIdentifier; + + // A utility block for creating error objects when we fail to start the fetch. + NSError *(^beginFailureError)(NSInteger) = ^(NSInteger code){ + NSString *urlString = fetchRequestURL.absoluteString; + NSDictionary *userInfo = @{ + NSURLErrorFailingURLStringErrorKey : (urlString ? urlString : @"(missing URL)") + }; + return [NSError errorWithDomain:kGTMSessionFetcherErrorDomain + code:code + userInfo:userInfo]; + }; + + // Catch delegate queue maxConcurrentOperationCount values other than 1, particularly + // NSOperationQueueDefaultMaxConcurrentOperationCount (-1), to avoid the additional complexity + // of simultaneous or out-of-order delegate callbacks. + GTMSESSION_ASSERT_DEBUG(_delegateQueue.maxConcurrentOperationCount == 1, + @"delegate queue %@ should support one concurrent operation, not %ld", + _delegateQueue.name, + (long)_delegateQueue.maxConcurrentOperationCount); + + if (!_initialBeginFetchDate) { + // This ivar is set only here on the initial beginFetch so need not be synchronized. + _initialBeginFetchDate = [[NSDate alloc] init]; + } + + if (self.sessionTask != nil) { + // If cached fetcher returned through fetcherWithSessionIdentifier:, then it's + // already begun, but don't consider this a failure, since the user need not know this. + if (self.sessionIdentifier != nil) { + return; + } + GTMSESSION_ASSERT_DEBUG(NO, @"Fetch object %@ being reused; this should never happen", self); + [self failToBeginFetchWithError:beginFailureError(GTMSessionFetcherErrorDownloadFailed)]; + return; + } + + if (fetchRequestURL == nil && !_downloadResumeData && !priorSessionIdentifier) { + GTMSESSION_ASSERT_DEBUG(NO, @"Beginning a fetch requires a request with a URL"); + [self failToBeginFetchWithError:beginFailureError(GTMSessionFetcherErrorDownloadFailed)]; + return; + } + + // We'll respect the user's request for a background session (unless this is + // an upload fetcher, which does its initial request foreground.) + self.usingBackgroundSession = self.useBackgroundSession && [self canFetchWithBackgroundSession]; + + NSURL *bodyFileURL = self.bodyFileURL; + if (bodyFileURL) { + NSError *fileCheckError; + if (![bodyFileURL checkResourceIsReachableAndReturnError:&fileCheckError]) { + // This assert fires when the file being uploaded no longer exists once + // the fetcher is ready to start the upload. + GTMSESSION_ASSERT_DEBUG_OR_LOG(0, @"Body file is unreachable: %@\n %@", + bodyFileURL.path, fileCheckError); + [self failToBeginFetchWithError:fileCheckError]; + return; + } + } + + NSString *requestScheme = fetchRequestURL.scheme; + BOOL isDataRequest = [requestScheme isEqual:@"data"]; + if (isDataRequest) { + // NSURLSession does not support data URLs in background sessions. +#if DEBUG + if (priorSessionIdentifier || self.sessionIdentifier) { + GTMSESSION_LOG_DEBUG(@"Converting background to foreground session for %@", + fetchRequest); + } +#endif + [self setSessionIdentifierInternal:nil]; + self.useBackgroundSession = NO; + } + +#if GTM_ALLOW_INSECURE_REQUESTS + BOOL shouldCheckSecurity = NO; +#else + BOOL shouldCheckSecurity = (fetchRequestURL != nil + && !isDataRequest + && [[self class] appAllowsInsecureRequests]); +#endif + + if (shouldCheckSecurity) { + // Allow https only for requests, unless overridden by the client. + // + // Non-https requests may too easily be snooped, so we disallow them by default. + // + // file: and data: schemes are usually safe if they are hardcoded in the client or provided + // by a trusted source, but since it's fairly rare to need them, it's safest to make clients + // explicitly whitelist them. + BOOL isSecure = + requestScheme != nil && [requestScheme caseInsensitiveCompare:@"https"] == NSOrderedSame; + if (!isSecure) { + BOOL allowRequest = NO; + NSString *host = fetchRequestURL.host; + + // Check schemes first. A file scheme request may be allowed here, or as a localhost request. + for (NSString *allowedScheme in _allowedInsecureSchemes) { + if (requestScheme != nil && + [requestScheme caseInsensitiveCompare:allowedScheme] == NSOrderedSame) { + allowRequest = YES; + break; + } + } + if (!allowRequest) { + // Check for localhost requests. Security checks only occur for non-https requests, so + // this check won't happen for an https request to localhost. + BOOL isLocalhostRequest = (host.length == 0 && [fetchRequestURL isFileURL]) || IsLocalhost(host); + if (isLocalhostRequest) { + if (self.allowLocalhostRequest) { + allowRequest = YES; + } else { + GTMSESSION_ASSERT_DEBUG(NO, @"Fetch request for localhost but fetcher" + @" allowLocalhostRequest is not set: %@", fetchRequestURL); + } + } else { + GTMSESSION_ASSERT_DEBUG(NO, @"Insecure fetch request has a scheme (%@)" + @" not found in fetcher allowedInsecureSchemes (%@): %@", + requestScheme, _allowedInsecureSchemes ?: @" @[] ", fetchRequestURL); + } + } + + if (!allowRequest) { +#if !DEBUG + NSLog(@"Insecure fetch disallowed for %@", fetchRequestURL.description ?: @"nil request URL"); +#endif + [self failToBeginFetchWithError:beginFailureError(GTMSessionFetcherErrorInsecureRequest)]; + return; + } + } // !isSecure + } // (requestURL != nil) && !isDataRequest + + if (self.cookieStorage == nil) { + self.cookieStorage = [[self class] staticCookieStorage]; + } + + BOOL isRecreatingSession = (self.sessionIdentifier != nil) && (fetchRequest == nil); + + self.canShareSession = !isRecreatingSession && !self.usingBackgroundSession; + + if (!self.session && self.canShareSession) { + self.session = [_service sessionForFetcherCreation]; + // If _session is nil, then the service's session creation semaphore will block + // until this fetcher invokes fetcherDidCreateSession: below, so this *must* invoke + // that method, even if the session fails to be created. + } + + if (!self.session) { + // Create a session. + if (!_configuration) { + if (priorSessionIdentifier || self.usingBackgroundSession) { + NSString *sessionIdentifier = priorSessionIdentifier; + if (!sessionIdentifier) { + sessionIdentifier = [self createSessionIdentifierWithMetadata:nil]; + } + NSMapTable *sessionIdentifierToFetcherMap = [[self class] sessionIdentifierToFetcherMap]; + [sessionIdentifierToFetcherMap setObject:self forKey:self.sessionIdentifier]; + +#if (TARGET_OS_TV \ + || TARGET_OS_WATCH \ + || (!TARGET_OS_IPHONE && defined(MAC_OS_X_VERSION_10_10) && MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_10) \ + || (TARGET_OS_IPHONE && defined(__IPHONE_8_0) && __IPHONE_OS_VERSION_MIN_REQUIRED >= __IPHONE_8_0)) + // iOS 8/10.10 builds require the new backgroundSessionConfiguration method name. + _configuration = + [NSURLSessionConfiguration backgroundSessionConfigurationWithIdentifier:sessionIdentifier]; +#elif (!TARGET_OS_IPHONE && defined(MAC_OS_X_VERSION_10_10) && MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_10) \ + || (TARGET_OS_IPHONE && defined(__IPHONE_8_0) && __IPHONE_OS_VERSION_MIN_REQUIRED < __IPHONE_8_0) + // Do a runtime check to avoid a deprecation warning about using + // +backgroundSessionConfiguration: on iOS 8. + if ([NSURLSessionConfiguration respondsToSelector:@selector(backgroundSessionConfigurationWithIdentifier:)]) { + // Running on iOS 8+/OS X 10.10+. +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wunguarded-availability" +// Disable unguarded availability warning as we can't use the @availability macro until we require +// all clients to build with Xcode 9 or above. + _configuration = + [NSURLSessionConfiguration backgroundSessionConfigurationWithIdentifier:sessionIdentifier]; +#pragma clang diagnostic pop + } else { + // Running on iOS 7/OS X 10.9. + _configuration = + [NSURLSessionConfiguration backgroundSessionConfiguration:sessionIdentifier]; + } +#else + // Building with an SDK earlier than iOS 8/OS X 10.10. + _configuration = + [NSURLSessionConfiguration backgroundSessionConfiguration:sessionIdentifier]; +#endif + self.usingBackgroundSession = YES; + self.canShareSession = NO; + } else { + _configuration = [NSURLSessionConfiguration ephemeralSessionConfiguration]; + } +#if !GTM_ALLOW_INSECURE_REQUESTS + _configuration.TLSMinimumSupportedProtocol = kTLSProtocol12; +#endif + } // !_configuration + _configuration.HTTPCookieStorage = self.cookieStorage; + + if (_configurationBlock) { + _configurationBlock(self, _configuration); + } + + id delegate = [_service sessionDelegate]; + if (!delegate || !self.canShareSession) { + delegate = self; + } + self.session = [NSURLSession sessionWithConfiguration:_configuration + delegate:delegate + delegateQueue:self.sessionDelegateQueue]; + GTMSESSION_ASSERT_DEBUG(self.session, @"Couldn't create session"); + + // Tell the service about the session created by this fetcher. This also signals the + // service's semaphore to allow other fetchers to request this session. + [_service fetcherDidCreateSession:self]; + + // If this assertion fires, the client probably tried to use a session identifier that was + // already used. The solution is to make the client use a unique identifier (or better yet let + // the session fetcher assign the identifier). + GTMSESSION_ASSERT_DEBUG(self.session.delegate == delegate, @"Couldn't assign delegate."); + + if (self.session) { + BOOL isUsingSharedDelegate = (delegate != self); + if (!isUsingSharedDelegate) { + _shouldInvalidateSession = YES; + } + } + } + + if (isRecreatingSession) { + _shouldInvalidateSession = YES; + + // Let's make sure there are tasks still running or if not that we get a callback from a + // completed one; otherwise, we assume the tasks failed. + // This is the observed behavior perhaps 25% of the time within the Simulator running 7.0.3 on + // exiting the app after starting an upload and relaunching the app if we manage to relaunch + // after the task has completed, but before the system relaunches us in the background. + [self.session getTasksWithCompletionHandler:^(NSArray *dataTasks, NSArray *uploadTasks, + NSArray *downloadTasks) { + if (dataTasks.count == 0 && uploadTasks.count == 0 && downloadTasks.count == 0) { + double const kDelayInSeconds = 1.0; // We should get progress indication or completion soon + dispatch_time_t checkForFeedbackDelay = + dispatch_time(DISPATCH_TIME_NOW, (int64_t)(kDelayInSeconds * NSEC_PER_SEC)); + dispatch_after(checkForFeedbackDelay, dispatch_get_main_queue(), ^{ + if (!self.sessionTask && !fetchRequest) { + // If our task and/or request haven't been restored, then we assume task feedback lost. + [self removePersistedBackgroundSessionFromDefaults]; + NSError *sessionError = + [NSError errorWithDomain:kGTMSessionFetcherErrorDomain + code:GTMSessionFetcherErrorBackgroundFetchFailed + userInfo:nil]; + [self failToBeginFetchWithError:sessionError]; + } + }); + } + }]; + return; + } + + self.downloadedData = nil; + self.downloadedLength = 0; + + if (_servicePriority == NSIntegerMin) { + mayDelay = NO; + } + if (mayDelay && _service) { + BOOL shouldFetchNow = [_service fetcherShouldBeginFetching:self]; + if (!shouldFetchNow) { + // The fetch is deferred, but will happen later. + // + // If this session is held by the fetcher service, clear the session now so that we don't + // assume it's still valid after the fetcher is restarted. + if (self.canShareSession) { + self.session = nil; + } + return; + } + } + + NSString *effectiveHTTPMethod = [fetchRequest valueForHTTPHeaderField:@"X-HTTP-Method-Override"]; + if (effectiveHTTPMethod == nil) { + effectiveHTTPMethod = fetchRequest.HTTPMethod; + } + BOOL isEffectiveHTTPGet = (effectiveHTTPMethod == nil + || [effectiveHTTPMethod isEqual:@"GET"]); + + BOOL needsUploadTask = (self.useUploadTask || self.bodyFileURL || self.bodyStreamProvider); + if (_bodyData || self.bodyStreamProvider || fetchRequest.HTTPBodyStream) { + if (isEffectiveHTTPGet) { + fetchRequest.HTTPMethod = @"POST"; + isEffectiveHTTPGet = NO; + } + + if (_bodyData) { + if (!needsUploadTask) { + fetchRequest.HTTPBody = _bodyData; + } +#if !STRIP_GTM_FETCH_LOGGING + } else if (fetchRequest.HTTPBodyStream) { + if ([self respondsToSelector:@selector(loggedInputStreamForInputStream:)]) { + fetchRequest.HTTPBodyStream = + [self performSelector:@selector(loggedInputStreamForInputStream:) + withObject:fetchRequest.HTTPBodyStream]; + } +#endif + } + } + + // We authorize after setting up the http method and body in the request + // because OAuth 1 may need to sign the request body + if (mayAuthorize && _authorizer && !isDataRequest) { + BOOL isAuthorized = [_authorizer isAuthorizedRequest:fetchRequest]; + if (!isAuthorized) { + // Authorization needed. + // + // If this session is held by the fetcher service, clear the session now so that we don't + // assume it's still valid after authorization completes. + if (self.canShareSession) { + self.session = nil; + } + + // Authorizing the request will recursively call this beginFetch:mayDelay: + // or failToBeginFetchWithError:. + [self authorizeRequest]; + return; + } + } + + // set the default upload or download retry interval, if necessary + if ([self isRetryEnabled] && self.maxRetryInterval <= 0) { + if (isEffectiveHTTPGet || [effectiveHTTPMethod isEqual:@"HEAD"]) { + [self setMaxRetryInterval:kDefaultMaxDownloadRetryInterval]; + } else { + [self setMaxRetryInterval:kDefaultMaxUploadRetryInterval]; + } + } + + // finally, start the connection + NSURLSessionTask *newSessionTask; + BOOL needsDataAccumulator = NO; + if (_downloadResumeData) { + newSessionTask = [_session downloadTaskWithResumeData:_downloadResumeData]; + GTMSESSION_ASSERT_DEBUG_OR_LOG(newSessionTask, + @"Failed downloadTaskWithResumeData for %@, resume data %lu bytes", + _session, (unsigned long)_downloadResumeData.length); + } else if (_destinationFileURL && !isDataRequest) { + newSessionTask = [_session downloadTaskWithRequest:fetchRequest]; + GTMSESSION_ASSERT_DEBUG_OR_LOG(newSessionTask, @"Failed downloadTaskWithRequest for %@, %@", + _session, fetchRequest); + } else if (needsUploadTask) { + if (bodyFileURL) { + newSessionTask = [_session uploadTaskWithRequest:fetchRequest + fromFile:bodyFileURL]; + GTMSESSION_ASSERT_DEBUG_OR_LOG(newSessionTask, + @"Failed uploadTaskWithRequest for %@, %@, file %@", + _session, fetchRequest, bodyFileURL.path); + } else if (self.bodyStreamProvider) { + newSessionTask = [_session uploadTaskWithStreamedRequest:fetchRequest]; + GTMSESSION_ASSERT_DEBUG_OR_LOG(newSessionTask, + @"Failed uploadTaskWithStreamedRequest for %@, %@", + _session, fetchRequest); + } else { + GTMSESSION_ASSERT_DEBUG_OR_LOG(_bodyData != nil, + @"Upload task needs body data, %@", fetchRequest); + newSessionTask = [_session uploadTaskWithRequest:fetchRequest + fromData:(NSData * GTM_NONNULL_TYPE)_bodyData]; + GTMSESSION_ASSERT_DEBUG_OR_LOG(newSessionTask, + @"Failed uploadTaskWithRequest for %@, %@, body data %lu bytes", + _session, fetchRequest, (unsigned long)_bodyData.length); + } + needsDataAccumulator = YES; + } else { + newSessionTask = [_session dataTaskWithRequest:fetchRequest]; + needsDataAccumulator = YES; + GTMSESSION_ASSERT_DEBUG_OR_LOG(newSessionTask, @"Failed dataTaskWithRequest for %@, %@", + _session, fetchRequest); + } + self.sessionTask = newSessionTask; + + if (!newSessionTask) { + // We shouldn't get here; if we're here, an earlier assertion should have fired to explain + // which session task creation failed. + [self failToBeginFetchWithError:beginFailureError(GTMSessionFetcherErrorTaskCreationFailed)]; + return; + } + + if (needsDataAccumulator && _accumulateDataBlock == nil) { + self.downloadedData = [NSMutableData data]; + } + if (_taskDescription) { + newSessionTask.taskDescription = _taskDescription; + } + if (_taskPriority >= 0) { +#if TARGET_OS_TV || TARGET_OS_WATCH + BOOL hasTaskPriority = YES; +#elif (!TARGET_OS_IPHONE && defined(MAC_OS_X_VERSION_10_10) && MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_10) \ + || (TARGET_OS_IPHONE && defined(__IPHONE_8_0) && __IPHONE_OS_VERSION_MIN_REQUIRED >= __IPHONE_8_0) + BOOL hasTaskPriority = YES; +#else + BOOL hasTaskPriority = [newSessionTask respondsToSelector:@selector(setPriority:)]; +#endif + if (hasTaskPriority) { +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wunguarded-availability" +// Disable unguarded availability warning as we can't use the @availability macro until we require +// all clients to build with Xcode 9 or above. + newSessionTask.priority = _taskPriority; +#pragma clang diagnostic pop + } + } + +#if GTM_DISABLE_FETCHER_TEST_BLOCK + GTMSESSION_ASSERT_DEBUG(_testBlock == nil && gGlobalTestBlock == nil, @"test blocks disabled"); + _testBlock = nil; +#else + if (!_testBlock) { + if (gGlobalTestBlock) { + // Note that the test block may pass nil for all of its response parameters, + // indicating that the fetch should actually proceed. This is useful when the + // global test block has been set, and the app is only testing a specific + // fetcher. The block simulation code will then resume the task. + _testBlock = gGlobalTestBlock; + } + } + _isUsingTestBlock = (_testBlock != nil); +#endif // GTM_DISABLE_FETCHER_TEST_BLOCK + +#if GTM_BACKGROUND_TASK_FETCHING + id app = [[self class] fetcherUIApplication]; + // Background tasks seem to interfere with out-of-process uploads and downloads. + if (app && !self.skipBackgroundTask && !self.useBackgroundSession) { + // Tell UIApplication that we want to continue even when the app is in the + // background. +#if DEBUG + NSString *bgTaskName = [NSString stringWithFormat:@"%@-%@", + [self class], fetchRequest.URL.host]; +#else + NSString *bgTaskName = @"GTMSessionFetcher"; +#endif + __block UIBackgroundTaskIdentifier bgTaskID = [app beginBackgroundTaskWithName:bgTaskName + expirationHandler:^{ + // Background task expiration callback - this block is always invoked by + // UIApplication on the main thread. + if (bgTaskID != UIBackgroundTaskInvalid) { + @synchronized(self) { + if (bgTaskID == self.backgroundTaskIdentifier) { + self.backgroundTaskIdentifier = UIBackgroundTaskInvalid; + } + } + [app endBackgroundTask:bgTaskID]; + } + }]; + @synchronized(self) { + self.backgroundTaskIdentifier = bgTaskID; + } + } +#endif + + if (!_initialRequestDate) { + _initialRequestDate = [[NSDate alloc] init]; + } + + // We don't expect to reach here even on retry or auth until a stop notification has been sent + // for the previous task, but we should ensure that we don't unbalance that. + GTMSESSION_ASSERT_DEBUG(!_isStopNotificationNeeded, @"Start notification without a prior stop"); + [self sendStopNotificationIfNeeded]; + + [self addPersistedBackgroundSessionToDefaults]; + + [self setStopNotificationNeeded:YES]; + + [self postNotificationOnMainThreadWithName:kGTMSessionFetcherStartedNotification + userInfo:nil + requireAsync:NO]; + + // The service needs to know our task if it is serving as NSURLSession delegate. + [_service fetcherDidBeginFetching:self]; + + if (_testBlock) { +#if !GTM_DISABLE_FETCHER_TEST_BLOCK + [self simulateFetchForTestBlock]; +#endif + } else { + // We resume the session task after posting the notification since the + // delegate callbacks may happen immediately if the fetch is started off + // the main thread or the session delegate queue is on a background thread, + // and we don't want to post a start notification after a premature finish + // of the session task. + [newSessionTask resume]; + } +} + +NSData * GTM_NULLABLE_TYPE GTMDataFromInputStream(NSInputStream *inputStream, NSError **outError) { + NSMutableData *data = [NSMutableData data]; + + [inputStream open]; + NSInteger numberOfBytesRead = 0; + while ([inputStream hasBytesAvailable]) { + uint8_t buffer[512]; + numberOfBytesRead = [inputStream read:buffer maxLength:sizeof(buffer)]; + if (numberOfBytesRead > 0) { + [data appendBytes:buffer length:(NSUInteger)numberOfBytesRead]; + } else { + break; + } + } + [inputStream close]; + NSError *streamError = inputStream.streamError; + + if (streamError) { + data = nil; + } + if (outError) { + *outError = streamError; + } + return data; +} + +#if !GTM_DISABLE_FETCHER_TEST_BLOCK + +- (void)simulateFetchForTestBlock { + // This is invoked on the same thread as the beginFetch method was. + // + // Callbacks will all occur on the callback queue. + _testBlock(self, ^(NSURLResponse *response, NSData *responseData, NSError *error) { + // Callback from test block. + if (response == nil && responseData == nil && error == nil) { + // Assume the fetcher should execute rather than be tested. + self->_testBlock = nil; + self->_isUsingTestBlock = NO; + [self->_sessionTask resume]; + return; + } + + GTMSessionFetcherBodyStreamProvider bodyStreamProvider = self.bodyStreamProvider; + if (bodyStreamProvider) { + bodyStreamProvider(^(NSInputStream *bodyStream){ + // Read from the input stream into an NSData buffer. We'll drain the stream + // explicitly on a background queue. + [self invokeOnCallbackQueue:dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0) + afterUserStopped:NO + block:^{ + NSError *streamError; + NSData *streamedData = GTMDataFromInputStream(bodyStream, &streamError); + + dispatch_async(dispatch_get_main_queue(), ^{ + // Continue callbacks on the main thread, since serial behavior + // is more reliable for tests. + [self simulateDataCallbacksForTestBlockWithBodyData:streamedData + response:response + responseData:responseData + error:(error ?: streamError)]; + }); + }]; + }); + } else { + // No input stream; use the supplied data or file URL. + NSURL *bodyFileURL = self.bodyFileURL; + if (bodyFileURL) { + NSError *readError; + self->_bodyData = [NSData dataWithContentsOfURL:bodyFileURL + options:NSDataReadingMappedIfSafe + error:&readError]; + error = readError; + } + + // No stream provider. + + // In real fetches, nothing happens until the run loop spins, so apps have leeway to + // set callbacks after they call beginFetch. We'll mirror that fetcher behavior by + // delaying callbacks here at least to the next spin of the run loop. That keeps + // immediate, synchronous setting of callback blocks after beginFetch working in tests. + dispatch_async(dispatch_get_main_queue(), ^{ + [self simulateDataCallbacksForTestBlockWithBodyData:self->_bodyData + response:response + responseData:responseData + error:error]; + }); + } + }); +} + +- (void)simulateByteTransferReportWithDataLength:(int64_t)totalDataLength + block:(GTMSessionFetcherSendProgressBlock)block { + // This utility method simulates transfer progress with up to three callbacks. + // It is used to call back to any of the progress blocks. + int64_t sendReportSize = totalDataLength / 3 + 1; + int64_t totalSent = 0; + while (totalSent < totalDataLength) { + int64_t bytesRemaining = totalDataLength - totalSent; + sendReportSize = MIN(sendReportSize, bytesRemaining); + totalSent += sendReportSize; + [self invokeOnCallbackQueueUnlessStopped:^{ + block(sendReportSize, totalSent, totalDataLength); + }]; + } +} + +- (void)simulateDataCallbacksForTestBlockWithBodyData:(NSData * GTM_NULLABLE_TYPE)bodyData + response:(NSURLResponse *)response + responseData:(NSData *)suppliedData + error:(NSError *)suppliedError { + __block NSData *responseData = suppliedData; + __block NSError *responseError = suppliedError; + + // This method does the test simulation of callbacks once the upload + // and download data are known. + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + // Get copies of ivars we'll access in async invocations. This simulation assumes + // they won't change during fetcher execution. + NSURL *destinationFileURL = _destinationFileURL; + GTMSessionFetcherWillRedirectBlock willRedirectBlock = _willRedirectBlock; + GTMSessionFetcherDidReceiveResponseBlock didReceiveResponseBlock = _didReceiveResponseBlock; + GTMSessionFetcherSendProgressBlock sendProgressBlock = _sendProgressBlock; + GTMSessionFetcherDownloadProgressBlock downloadProgressBlock = _downloadProgressBlock; + GTMSessionFetcherAccumulateDataBlock accumulateDataBlock = _accumulateDataBlock; + GTMSessionFetcherReceivedProgressBlock receivedProgressBlock = _receivedProgressBlock; + GTMSessionFetcherWillCacheURLResponseBlock willCacheURLResponseBlock = + _willCacheURLResponseBlock; + + // Simulate receipt of redirection. + if (willRedirectBlock) { + [self invokeOnCallbackUnsynchronizedQueueAfterUserStopped:YES + block:^{ + willRedirectBlock((NSHTTPURLResponse *)response, self->_request, + ^(NSURLRequest *redirectRequest) { + // For simulation, we'll assume the app will just continue. + }); + }]; + } + + // If the fetcher has a challenge block, simulate a challenge. + // + // It might be nice to eventually let the user determine which testBlock + // fetches get challenged rather than always executing the supplied + // challenge block. + if (_challengeBlock) { + [self invokeOnCallbackUnsynchronizedQueueAfterUserStopped:YES + block:^{ + if (self->_challengeBlock) { + NSURL *requestURL = self->_request.URL; + NSString *host = requestURL.host; + NSURLProtectionSpace *pspace = + [[NSURLProtectionSpace alloc] initWithHost:host + port:requestURL.port.integerValue + protocol:requestURL.scheme + realm:nil + authenticationMethod:NSURLAuthenticationMethodHTTPBasic]; + id unusedSender = + (id)[NSNull null]; + NSURLAuthenticationChallenge *challenge = + [[NSURLAuthenticationChallenge alloc] initWithProtectionSpace:pspace + proposedCredential:nil + previousFailureCount:0 + failureResponse:nil + error:nil + sender:unusedSender]; + self->_challengeBlock(self, challenge, ^(NSURLSessionAuthChallengeDisposition disposition, + NSURLCredential * GTM_NULLABLE_TYPE credential){ + // We could change the responseData and responseError based on the disposition, + // but it's easier for apps to just supply the expected data and error + // directly to the test block. So this simulation ignores the disposition. + }); + } + }]; + } + + // Simulate receipt of an initial response. + if (response && didReceiveResponseBlock) { + [self invokeOnCallbackUnsynchronizedQueueAfterUserStopped:YES + block:^{ + didReceiveResponseBlock(response, ^(NSURLSessionResponseDisposition desiredDisposition) { + // For simulation, we'll assume the disposition is to continue. + }); + }]; + } + + // Simulate reporting send progress. + if (sendProgressBlock) { + [self simulateByteTransferReportWithDataLength:(int64_t)bodyData.length + block:^(int64_t bytesSent, + int64_t totalBytesSent, + int64_t totalBytesExpectedToSend) { + // This is invoked on the callback queue unless stopped. + sendProgressBlock(bytesSent, totalBytesSent, totalBytesExpectedToSend); + }]; + } + + if (destinationFileURL) { + // Simulate download to file progress. + if (downloadProgressBlock) { + [self simulateByteTransferReportWithDataLength:(int64_t)responseData.length + block:^(int64_t bytesDownloaded, + int64_t totalBytesDownloaded, + int64_t totalBytesExpectedToDownload) { + // This is invoked on the callback queue unless stopped. + downloadProgressBlock(bytesDownloaded, totalBytesDownloaded, + totalBytesExpectedToDownload); + }]; + } + + NSError *writeError; + [responseData writeToURL:destinationFileURL + options:NSDataWritingAtomic + error:&writeError]; + if (writeError) { + // Tell the test code that writing failed. + responseError = writeError; + } + } else { + // Simulate download to NSData progress. + if ((accumulateDataBlock || receivedProgressBlock) && responseData) { + [self simulateByteTransferWithData:responseData + block:^(NSData *data, + int64_t bytesReceived, + int64_t totalBytesReceived, + int64_t totalBytesExpectedToReceive) { + // This is invoked on the callback queue unless stopped. + if (accumulateDataBlock) { + accumulateDataBlock(data); + } + + if (receivedProgressBlock) { + receivedProgressBlock(bytesReceived, totalBytesReceived); + } + }]; + } + + if (!accumulateDataBlock) { + _downloadedData = [responseData mutableCopy]; + } + + if (willCacheURLResponseBlock) { + // Simulate letting the client inspect and alter the cached response. + NSData *cachedData = responseData ?: [[NSData alloc] init]; // Always have non-nil data. + NSCachedURLResponse *cachedResponse = + [[NSCachedURLResponse alloc] initWithResponse:response + data:cachedData]; + [self invokeOnCallbackUnsynchronizedQueueAfterUserStopped:YES + block:^{ + willCacheURLResponseBlock(cachedResponse, ^(NSCachedURLResponse *responseToCache){ + // The app may provide an alternative response, or nil to defeat caching. + }); + }]; + } + } + _response = response; + } // @synchronized(self) + + NSOperationQueue *queue = self.sessionDelegateQueue; + [queue addOperationWithBlock:^{ + // Rather than invoke failToBeginFetchWithError: we want to simulate completion of + // a connection that started and ended, so we'll call down to finishWithError: + NSInteger status = responseError ? responseError.code : 200; + if (status >= 200 && status <= 399) { + [self finishWithError:nil shouldRetry:NO]; + } else { + [self shouldRetryNowForStatus:status + error:responseError + forceAssumeRetry:NO + response:^(BOOL shouldRetry) { + [self finishWithError:responseError shouldRetry:shouldRetry]; + }]; + } + }]; +} + +- (void)simulateByteTransferWithData:(NSData *)responseData + block:(GTMSessionFetcherSimulateByteTransferBlock)transferBlock { + // This utility method simulates transfering data to the client. It divides the data into at most + // "chunkCount" chunks and then passes each chunk along with a progress update to transferBlock. + // This function can be used with accumulateDataBlock or receivedProgressBlock. + + NSUInteger chunkCount = MAX(self.testBlockAccumulateDataChunkCount, (NSUInteger) 1); + NSUInteger totalDataLength = responseData.length; + NSUInteger sendDataSize = totalDataLength / chunkCount + 1; + NSUInteger totalSent = 0; + while (totalSent < totalDataLength) { + NSUInteger bytesRemaining = totalDataLength - totalSent; + sendDataSize = MIN(sendDataSize, bytesRemaining); + NSData *chunkData = [responseData subdataWithRange:NSMakeRange(totalSent, sendDataSize)]; + totalSent += sendDataSize; + [self invokeOnCallbackQueueUnlessStopped:^{ + transferBlock(chunkData, + (int64_t)sendDataSize, + (int64_t)totalSent, + (int64_t)totalDataLength); + }]; + } +} + +#endif // !GTM_DISABLE_FETCHER_TEST_BLOCK + +- (void)setSessionTask:(NSURLSessionTask *)sessionTask { + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + if (_sessionTask != sessionTask) { + _sessionTask = sessionTask; + if (_sessionTask) { + // Request could be nil on restoring this fetcher from a background session. + if (!_request) { + _request = [_sessionTask.originalRequest mutableCopy]; + } + } + } + } // @synchronized(self) +} + +- (NSURLSessionTask * GTM_NULLABLE_TYPE)sessionTask { + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + return _sessionTask; + } // @synchronized(self) +} + ++ (NSUserDefaults *)fetcherUserDefaults { + static NSUserDefaults *gFetcherUserDefaults = nil; + + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + Class fetcherUserDefaultsClass = NSClassFromString(@"GTMSessionFetcherUserDefaultsFactory"); + if (fetcherUserDefaultsClass) { + gFetcherUserDefaults = [fetcherUserDefaultsClass fetcherUserDefaults]; + } else { + gFetcherUserDefaults = [NSUserDefaults standardUserDefaults]; + } + }); + return gFetcherUserDefaults; +} + +- (void)addPersistedBackgroundSessionToDefaults { + NSString *sessionIdentifier = self.sessionIdentifier; + if (!sessionIdentifier) { + return; + } + NSArray *oldBackgroundSessions = [[self class] activePersistedBackgroundSessions]; + if ([oldBackgroundSessions containsObject:_sessionIdentifier]) { + return; + } + NSMutableArray *newBackgroundSessions = + [NSMutableArray arrayWithArray:oldBackgroundSessions]; + [newBackgroundSessions addObject:sessionIdentifier]; + GTM_LOG_BACKGROUND_SESSION(@"Add to background sessions: %@", newBackgroundSessions); + + NSUserDefaults *userDefaults = [[self class] fetcherUserDefaults]; + [userDefaults setObject:newBackgroundSessions + forKey:kGTMSessionFetcherPersistedDestinationKey]; + [userDefaults synchronize]; +} + +- (void)removePersistedBackgroundSessionFromDefaults { + NSString *sessionIdentifier = self.sessionIdentifier; + if (!sessionIdentifier) return; + + NSArray *oldBackgroundSessions = [[self class] activePersistedBackgroundSessions]; + if (!oldBackgroundSessions) { + return; + } + NSMutableArray *newBackgroundSessions = + [NSMutableArray arrayWithArray:oldBackgroundSessions]; + NSUInteger sessionIndex = [newBackgroundSessions indexOfObject:sessionIdentifier]; + if (sessionIndex == NSNotFound) { + return; + } + [newBackgroundSessions removeObjectAtIndex:sessionIndex]; + GTM_LOG_BACKGROUND_SESSION(@"Remove from background sessions: %@", newBackgroundSessions); + + NSUserDefaults *userDefaults = [[self class] fetcherUserDefaults]; + if (newBackgroundSessions.count == 0) { + [userDefaults removeObjectForKey:kGTMSessionFetcherPersistedDestinationKey]; + } else { + [userDefaults setObject:newBackgroundSessions + forKey:kGTMSessionFetcherPersistedDestinationKey]; + } + [userDefaults synchronize]; +} + ++ (GTM_NULLABLE NSArray *)activePersistedBackgroundSessions { + NSUserDefaults *userDefaults = [[self class] fetcherUserDefaults]; + NSArray *oldBackgroundSessions = + [userDefaults arrayForKey:kGTMSessionFetcherPersistedDestinationKey]; + if (oldBackgroundSessions.count == 0) { + return nil; + } + NSMutableArray *activeBackgroundSessions = nil; + NSMapTable *sessionIdentifierToFetcherMap = [self sessionIdentifierToFetcherMap]; + for (NSString *sessionIdentifier in oldBackgroundSessions) { + GTMSessionFetcher *fetcher = [sessionIdentifierToFetcherMap objectForKey:sessionIdentifier]; + if (fetcher) { + if (!activeBackgroundSessions) { + activeBackgroundSessions = [[NSMutableArray alloc] init]; + } + [activeBackgroundSessions addObject:sessionIdentifier]; + } + } + return activeBackgroundSessions; +} + ++ (NSArray *)fetchersForBackgroundSessions { + NSUserDefaults *userDefaults = [[self class] fetcherUserDefaults]; + NSArray *backgroundSessions = + [userDefaults arrayForKey:kGTMSessionFetcherPersistedDestinationKey]; + NSMapTable *sessionIdentifierToFetcherMap = [self sessionIdentifierToFetcherMap]; + NSMutableArray *fetchers = [NSMutableArray array]; + for (NSString *sessionIdentifier in backgroundSessions) { + GTMSessionFetcher *fetcher = [sessionIdentifierToFetcherMap objectForKey:sessionIdentifier]; + if (!fetcher) { + fetcher = [self fetcherWithSessionIdentifier:sessionIdentifier]; + GTMSESSION_ASSERT_DEBUG(fetcher != nil, + @"Unexpected invalid session identifier: %@", sessionIdentifier); + [fetcher beginFetchWithCompletionHandler:nil]; + } + GTM_LOG_BACKGROUND_SESSION(@"%@ restoring session %@ by creating fetcher %@ %p", + [self class], sessionIdentifier, fetcher, fetcher); + if (fetcher != nil) { + [fetchers addObject:fetcher]; + } + } + return fetchers; +} + +#if TARGET_OS_IPHONE && !TARGET_OS_WATCH ++ (void)application:(UIApplication *)application + handleEventsForBackgroundURLSession:(NSString *)identifier + completionHandler:(GTMSessionFetcherSystemCompletionHandler)completionHandler { + GTMSessionFetcher *fetcher = [self fetcherWithSessionIdentifier:identifier]; + if (fetcher != nil) { + fetcher.systemCompletionHandler = completionHandler; + } else { + GTM_LOG_BACKGROUND_SESSION(@"%@ did not create background session identifier: %@", + [self class], identifier); + } +} +#endif + +- (NSString * GTM_NULLABLE_TYPE)sessionIdentifier { + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + return _sessionIdentifier; + } // @synchronized(self) +} + +- (void)setSessionIdentifier:(NSString *)sessionIdentifier { + GTMSESSION_ASSERT_DEBUG(sessionIdentifier != nil, @"Invalid session identifier"); + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + GTMSESSION_ASSERT_DEBUG(!_session, @"Unable to set session identifier after session created"); + _sessionIdentifier = [sessionIdentifier copy]; + _usingBackgroundSession = YES; + _canShareSession = NO; + [self restoreDefaultStateForSessionIdentifierMetadata]; + } // @synchronized(self) +} + +- (void)setSessionIdentifierInternal:(GTM_NULLABLE NSString *)sessionIdentifier { + // This internal method only does a synchronized set of the session identifier. + // It does not have side effects on the background session, shared session, or + // session identifier metadata. + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + _sessionIdentifier = [sessionIdentifier copy]; + } // @synchronized(self) +} + +- (NSDictionary * GTM_NULLABLE_TYPE)sessionUserInfo { + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + if (_sessionUserInfo == nil) { + // We'll return the metadata dictionary with internal keys removed. This avoids the user + // re-using the userInfo dictionary later and accidentally including the internal keys. + NSMutableDictionary *metadata = [[self sessionIdentifierMetadataUnsynchronized] mutableCopy]; + NSSet *keysToRemove = [metadata keysOfEntriesPassingTest:^BOOL(id key, id obj, BOOL *stop) { + return [key hasPrefix:@"_"]; + }]; + [metadata removeObjectsForKeys:[keysToRemove allObjects]]; + if (metadata.count > 0) { + _sessionUserInfo = metadata; + } + } + return _sessionUserInfo; + } // @synchronized(self) +} + +- (void)setSessionUserInfo:(NSDictionary * GTM_NULLABLE_TYPE)dictionary { + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + GTMSESSION_ASSERT_DEBUG(_sessionIdentifier == nil, @"Too late to assign userInfo"); + _sessionUserInfo = dictionary; + } // @synchronized(self) +} + +- (GTM_NULLABLE NSDictionary *)sessionIdentifierDefaultMetadata { + GTMSessionCheckSynchronized(self); + + NSMutableDictionary *defaultUserInfo = [[NSMutableDictionary alloc] init]; + if (_destinationFileURL) { + defaultUserInfo[kGTMSessionIdentifierDestinationFileURLMetadataKey] = + [_destinationFileURL absoluteString]; + } + if (_bodyFileURL) { + defaultUserInfo[kGTMSessionIdentifierBodyFileURLMetadataKey] = [_bodyFileURL absoluteString]; + } + return (defaultUserInfo.count > 0) ? defaultUserInfo : nil; +} + +- (void)restoreDefaultStateForSessionIdentifierMetadata { + GTMSessionCheckSynchronized(self); + + NSDictionary *metadata = [self sessionIdentifierMetadataUnsynchronized]; + NSString *destinationFileURLString = metadata[kGTMSessionIdentifierDestinationFileURLMetadataKey]; + if (destinationFileURLString) { + _destinationFileURL = [NSURL URLWithString:destinationFileURLString]; + GTM_LOG_BACKGROUND_SESSION(@"Restoring destination file URL: %@", _destinationFileURL); + } + NSString *bodyFileURLString = metadata[kGTMSessionIdentifierBodyFileURLMetadataKey]; + if (bodyFileURLString) { + _bodyFileURL = [NSURL URLWithString:bodyFileURLString]; + GTM_LOG_BACKGROUND_SESSION(@"Restoring body file URL: %@", _bodyFileURL); + } +} + +- (NSDictionary * GTM_NULLABLE_TYPE)sessionIdentifierMetadata { + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + return [self sessionIdentifierMetadataUnsynchronized]; + } +} + +- (NSDictionary * GTM_NULLABLE_TYPE)sessionIdentifierMetadataUnsynchronized { + GTMSessionCheckSynchronized(self); + + // Session Identifier format: "com.google.__ + if (!_sessionIdentifier) { + return nil; + } + NSScanner *metadataScanner = [NSScanner scannerWithString:_sessionIdentifier]; + [metadataScanner setCharactersToBeSkipped:nil]; + NSString *metadataString; + NSString *uuid; + if ([metadataScanner scanUpToString:@"_" intoString:NULL] && + [metadataScanner scanString:@"_" intoString:NULL] && + [metadataScanner scanUpToString:@"_" intoString:&uuid] && + [metadataScanner scanString:@"_" intoString:NULL] && + [metadataScanner scanUpToString:@"\n" intoString:&metadataString]) { + _sessionIdentifierUUID = uuid; + NSData *metadataData = [metadataString dataUsingEncoding:NSUTF8StringEncoding]; + NSError *error; + NSDictionary *metadataDict = + [NSJSONSerialization JSONObjectWithData:metadataData + options:0 + error:&error]; + GTM_LOG_BACKGROUND_SESSION(@"User Info from session identifier: %@ %@", + metadataDict, error ? error : @""); + return metadataDict; + } + return nil; +} + +- (NSString *)createSessionIdentifierWithMetadata:(NSDictionary * GTM_NULLABLE_TYPE)metadataToInclude { + NSString *result; + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + // Session Identifier format: "com.google.__ + GTMSESSION_ASSERT_DEBUG(!_sessionIdentifier, @"Session identifier already created"); + _sessionIdentifierUUID = [[NSUUID UUID] UUIDString]; + _sessionIdentifier = + [NSString stringWithFormat:@"%@_%@", kGTMSessionIdentifierPrefix, _sessionIdentifierUUID]; + // Start with user-supplied keys so they cannot accidentally override the fetcher's keys. + NSMutableDictionary *metadataDict = + [NSMutableDictionary dictionaryWithDictionary:(NSDictionary * GTM_NONNULL_TYPE)_sessionUserInfo]; + + if (metadataToInclude) { + [metadataDict addEntriesFromDictionary:(NSDictionary *)metadataToInclude]; + } + NSDictionary *defaultMetadataDict = [self sessionIdentifierDefaultMetadata]; + if (defaultMetadataDict) { + [metadataDict addEntriesFromDictionary:defaultMetadataDict]; + } + if (metadataDict.count > 0) { + NSData *metadataData = [NSJSONSerialization dataWithJSONObject:metadataDict + options:0 + error:NULL]; + GTMSESSION_ASSERT_DEBUG(metadataData != nil, + @"Session identifier user info failed to convert to JSON"); + if (metadataData.length > 0) { + NSString *metadataString = [[NSString alloc] initWithData:metadataData + encoding:NSUTF8StringEncoding]; + _sessionIdentifier = + [_sessionIdentifier stringByAppendingFormat:@"_%@", metadataString]; + } + } + _didCreateSessionIdentifier = YES; + result = _sessionIdentifier; + } // @synchronized(self) + return result; +} + +- (void)failToBeginFetchWithError:(NSError *)error { + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + _hasStoppedFetching = YES; + } + + if (error == nil) { + error = [NSError errorWithDomain:kGTMSessionFetcherErrorDomain + code:GTMSessionFetcherErrorDownloadFailed + userInfo:nil]; + } + + [self invokeFetchCallbacksOnCallbackQueueWithData:nil + error:error]; + [self releaseCallbacks]; + + [_service fetcherDidStop:self]; + + self.authorizer = nil; +} + ++ (GTMSessionCookieStorage *)staticCookieStorage { + static GTMSessionCookieStorage *gCookieStorage = nil; + + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + gCookieStorage = [[GTMSessionCookieStorage alloc] init]; + }); + return gCookieStorage; +} + +#if GTM_BACKGROUND_TASK_FETCHING + +- (void)endBackgroundTask { + // Whenever the connection stops or background execution expires, + // we need to tell UIApplication we're done. + UIBackgroundTaskIdentifier bgTaskID; + @synchronized(self) { + bgTaskID = self.backgroundTaskIdentifier; + if (bgTaskID != UIBackgroundTaskInvalid) { + self.backgroundTaskIdentifier = UIBackgroundTaskInvalid; + } + } + + if (bgTaskID != UIBackgroundTaskInvalid) { + id app = [[self class] fetcherUIApplication]; + [app endBackgroundTask:bgTaskID]; + } +} + +#endif // GTM_BACKGROUND_TASK_FETCHING + +- (void)authorizeRequest { + GTMSessionCheckNotSynchronized(self); + + id authorizer = self.authorizer; + SEL asyncAuthSel = @selector(authorizeRequest:delegate:didFinishSelector:); + if ([authorizer respondsToSelector:asyncAuthSel]) { + SEL callbackSel = @selector(authorizer:request:finishedWithError:); + NSMutableURLRequest *mutableRequest = [self.request mutableCopy]; + [authorizer authorizeRequest:mutableRequest + delegate:self + didFinishSelector:callbackSel]; + } else { + GTMSESSION_ASSERT_DEBUG(authorizer == nil, @"invalid authorizer for fetch"); + + // No authorizing possible, and authorizing happens only after any delay; + // just begin fetching + [self beginFetchMayDelay:NO + mayAuthorize:NO]; + } +} + +- (void)authorizer:(id)auth + request:(NSMutableURLRequest *)authorizedRequest + finishedWithError:(NSError *)error { + GTMSessionCheckNotSynchronized(self); + + if (error != nil) { + // We can't fetch without authorization + [self failToBeginFetchWithError:error]; + } else { + @synchronized(self) { + _request = authorizedRequest; + } + [self beginFetchMayDelay:NO + mayAuthorize:NO]; + } +} + + +- (BOOL)canFetchWithBackgroundSession { + // Subclasses may override. + return YES; +} + +// Returns YES if the fetcher has been started and has not yet stopped. +// +// Fetching includes waiting for authorization or for retry, waiting to be allowed by the +// service object to start the request, and actually fetching the request. +- (BOOL)isFetching { + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + return [self isFetchingUnsynchronized]; + } +} + +- (BOOL)isFetchingUnsynchronized { + GTMSessionCheckSynchronized(self); + + BOOL hasBegun = (_initialBeginFetchDate != nil); + return hasBegun && !_hasStoppedFetching; +} + +- (NSURLResponse * GTM_NULLABLE_TYPE)response { + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + NSURLResponse *response = [self responseUnsynchronized]; + return response; + } // @synchronized(self) +} + +- (NSURLResponse * GTM_NULLABLE_TYPE)responseUnsynchronized { + GTMSessionCheckSynchronized(self); + + NSURLResponse *response = _sessionTask.response; + if (!response) response = _response; + return response; +} + +- (NSInteger)statusCode { + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + NSInteger statusCode = [self statusCodeUnsynchronized]; + return statusCode; + } // @synchronized(self) +} + +- (NSInteger)statusCodeUnsynchronized { + GTMSessionCheckSynchronized(self); + + NSURLResponse *response = [self responseUnsynchronized]; + NSInteger statusCode; + + if ([response respondsToSelector:@selector(statusCode)]) { + statusCode = [(NSHTTPURLResponse *)response statusCode]; + } else { + // Default to zero, in hopes of hinting "Unknown" (we can't be + // sure that things are OK enough to use 200). + statusCode = 0; + } + return statusCode; +} + +- (NSDictionary * GTM_NULLABLE_TYPE)responseHeaders { + GTMSessionCheckNotSynchronized(self); + + NSURLResponse *response = self.response; + if ([response respondsToSelector:@selector(allHeaderFields)]) { + NSDictionary *headers = [(NSHTTPURLResponse *)response allHeaderFields]; + return headers; + } + return nil; +} + +- (NSDictionary * GTM_NULLABLE_TYPE)responseHeadersUnsynchronized { + GTMSessionCheckSynchronized(self); + + NSURLResponse *response = [self responseUnsynchronized]; + if ([response respondsToSelector:@selector(allHeaderFields)]) { + NSDictionary *headers = [(NSHTTPURLResponse *)response allHeaderFields]; + return headers; + } + return nil; +} + +- (void)releaseCallbacks { + // Avoid releasing blocks in the sync section since objects dealloc'd by + // the blocks being released may call back into the fetcher or fetcher + // service. + dispatch_queue_t NS_VALID_UNTIL_END_OF_SCOPE holdCallbackQueue; + GTMSessionFetcherCompletionHandler NS_VALID_UNTIL_END_OF_SCOPE holdCompletionHandler; + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + holdCallbackQueue = _callbackQueue; + holdCompletionHandler = _completionHandler; + + _callbackQueue = nil; + _completionHandler = nil; // Setter overridden in upload. Setter assumed to be used externally. + } + + // Set local callback pointers to nil here rather than let them release at the end of the scope + // to make any problems due to the blocks being released be a bit more obvious in a stack trace. + holdCallbackQueue = nil; + holdCompletionHandler = nil; + + self.configurationBlock = nil; + self.didReceiveResponseBlock = nil; + self.challengeBlock = nil; + self.willRedirectBlock = nil; + self.sendProgressBlock = nil; + self.receivedProgressBlock = nil; + self.downloadProgressBlock = nil; + self.accumulateDataBlock = nil; + self.willCacheURLResponseBlock = nil; + self.retryBlock = nil; + self.testBlock = nil; + self.resumeDataBlock = nil; +} + +- (void)forgetSessionIdentifierForFetcher { + GTMSessionCheckSynchronized(self); + [self forgetSessionIdentifierForFetcherWithoutSyncCheck]; +} + +- (void)forgetSessionIdentifierForFetcherWithoutSyncCheck { + // This should be called inside a @synchronized block (except during dealloc.) + if (_sessionIdentifier) { + NSMapTable *sessionIdentifierToFetcherMap = [[self class] sessionIdentifierToFetcherMap]; + [sessionIdentifierToFetcherMap removeObjectForKey:_sessionIdentifier]; + _sessionIdentifier = nil; + _didCreateSessionIdentifier = NO; + } +} + +// External stop method +- (void)stopFetching { + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + // Prevent enqueued callbacks from executing. + _userStoppedFetching = YES; + } // @synchronized(self) + [self stopFetchReleasingCallbacks:YES]; +} + +// Cancel the fetch of the URL that's currently in progress. +// +// If shouldReleaseCallbacks is NO then the fetch will be retried so the callbacks +// need to still be retained. +- (void)stopFetchReleasingCallbacks:(BOOL)shouldReleaseCallbacks { + [self removePersistedBackgroundSessionFromDefaults]; + + id service; + NSMutableURLRequest *request; + + // If the task or the retry timer is all that's retaining the fetcher, + // we want to be sure this instance survives stopping at least long enough for + // the stack to unwind. + __autoreleasing GTMSessionFetcher *holdSelf = self; + + BOOL hasCanceledTask = NO; + + [holdSelf destroyRetryTimer]; + + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + _hasStoppedFetching = YES; + + service = _service; + request = _request; + + if (_sessionTask) { + // In case cancelling the task or session calls this recursively, we want + // to ensure that we'll only release the task and delegate once, + // so first set _sessionTask to nil + // + // This may be called in a callback from the task, so use autorelease to avoid + // releasing the task in its own callback. + __autoreleasing NSURLSessionTask *oldTask = _sessionTask; + if (!_isUsingTestBlock) { + _response = _sessionTask.response; + } + _sessionTask = nil; + + if ([oldTask state] != NSURLSessionTaskStateCompleted) { + // For download tasks, when the fetch is stopped, we may provide resume data that can + // be used to create a new session. + BOOL mayResume = (_resumeDataBlock + && [oldTask respondsToSelector:@selector(cancelByProducingResumeData:)]); + if (!mayResume) { + [oldTask cancel]; + // A side effect of stopping the task is that URLSession:task:didCompleteWithError: + // will be invoked asynchronously on the delegate queue. + } else { + void (^resumeBlock)(NSData *) = _resumeDataBlock; + _resumeDataBlock = nil; + + // Save callbackQueue since releaseCallbacks clears it. + dispatch_queue_t callbackQueue = _callbackQueue; + dispatch_group_enter(_callbackGroup); + [(NSURLSessionDownloadTask *)oldTask cancelByProducingResumeData:^(NSData *resumeData) { + [self invokeOnCallbackQueue:callbackQueue + afterUserStopped:YES + block:^{ + resumeBlock(resumeData); + dispatch_group_leave(self->_callbackGroup); + }]; + }]; + } + hasCanceledTask = YES; + } + } + + // If the task was canceled, wait until the URLSession:task:didCompleteWithError: to call + // finishTasksAndInvalidate, since calling it immediately tends to crash, see radar 18471901. + if (_session) { + BOOL shouldInvalidate = _shouldInvalidateSession; +#if TARGET_OS_IPHONE + // Don't invalidate if we've got a systemCompletionHandler, since + // URLSessionDidFinishEventsForBackgroundURLSession: won't be called if invalidated. + shouldInvalidate = shouldInvalidate && !self.systemCompletionHandler; +#endif + if (shouldInvalidate) { + __autoreleasing NSURLSession *oldSession = _session; + _session = nil; + + if (!hasCanceledTask) { + [oldSession finishTasksAndInvalidate]; + } else { + _sessionNeedingInvalidation = oldSession; + } + } + } + } // @synchronized(self) + + // send the stopped notification + [self sendStopNotificationIfNeeded]; + + [_authorizer stopAuthorizationForRequest:request]; + + if (shouldReleaseCallbacks) { + [self releaseCallbacks]; + + self.authorizer = nil; + } + + [service fetcherDidStop:self]; + +#if GTM_BACKGROUND_TASK_FETCHING + [self endBackgroundTask]; +#endif +} + +- (void)setStopNotificationNeeded:(BOOL)flag { + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + _isStopNotificationNeeded = flag; + } // @synchronized(self) +} + +- (void)sendStopNotificationIfNeeded { + BOOL sendNow = NO; + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + if (_isStopNotificationNeeded) { + _isStopNotificationNeeded = NO; + sendNow = YES; + } + } // @synchronized(self) + + if (sendNow) { + [self postNotificationOnMainThreadWithName:kGTMSessionFetcherStoppedNotification + userInfo:nil + requireAsync:NO]; + } +} + +- (void)retryFetch { + [self stopFetchReleasingCallbacks:NO]; + + // A retry will need a configuration with a fresh session identifier. + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + if (_sessionIdentifier && _didCreateSessionIdentifier) { + [self forgetSessionIdentifierForFetcher]; + _configuration = nil; + } + + if (_canShareSession) { + // Force a grab of the current session from the fetcher service in case + // the service's old one has become invalid. + _session = nil; + } + } // @synchronized(self) + + [self beginFetchForRetry]; +} + +- (BOOL)waitForCompletionWithTimeout:(NSTimeInterval)timeoutInSeconds { + // Uncovered in upload fetcher testing, because the chunk fetcher is being waited on, and gets + // released by the upload code. The uploader just holds onto it with an ivar, and that gets + // nilled in the chunk fetcher callback. + // Used once in while loop just to avoid unused variable compiler warning. + __autoreleasing GTMSessionFetcher *holdSelf = self; + + NSDate *giveUpDate = [NSDate dateWithTimeIntervalSinceNow:timeoutInSeconds]; + + BOOL shouldSpinRunLoop = ([NSThread isMainThread] && + (!self.callbackQueue + || self.callbackQueue == dispatch_get_main_queue())); + BOOL expired = NO; + + // Loop until the callbacks have been called and released, and until + // the connection is no longer pending, until there are no callback dispatches + // in flight, or until the timeout has expired. + int64_t delta = (int64_t)(100 * NSEC_PER_MSEC); // 100 ms + while (1) { + BOOL isTaskInProgress = (holdSelf->_sessionTask + && [_sessionTask state] != NSURLSessionTaskStateCompleted); + BOOL needsToCallCompletion = (_completionHandler != nil); + BOOL isCallbackInProgress = (_callbackGroup + && dispatch_group_wait(_callbackGroup, dispatch_time(DISPATCH_TIME_NOW, delta))); + + if (!isTaskInProgress && !needsToCallCompletion && !isCallbackInProgress) break; + + expired = ([giveUpDate timeIntervalSinceNow] < 0); + if (expired) { + GTMSESSION_LOG_DEBUG(@"GTMSessionFetcher waitForCompletionWithTimeout:%0.1f expired -- " + @"%@%@%@", timeoutInSeconds, + isTaskInProgress ? @"taskInProgress " : @"", + needsToCallCompletion ? @"needsToCallCompletion " : @"", + isCallbackInProgress ? @"isCallbackInProgress" : @""); + break; + } + + // Run the current run loop 1/1000 of a second to give the networking + // code a chance to work + const NSTimeInterval kSpinInterval = 0.001; + if (shouldSpinRunLoop) { + NSDate *stopDate = [NSDate dateWithTimeIntervalSinceNow:kSpinInterval]; + [[NSRunLoop currentRunLoop] runUntilDate:stopDate]; + } else { + [NSThread sleepForTimeInterval:kSpinInterval]; + } + } + return !expired; +} + ++ (void)setGlobalTestBlock:(GTMSessionFetcherTestBlock GTM_NULLABLE_TYPE)block { +#if GTM_DISABLE_FETCHER_TEST_BLOCK + GTMSESSION_ASSERT_DEBUG(block == nil, @"test blocks disabled"); +#endif + gGlobalTestBlock = [block copy]; +} + +#if GTM_BACKGROUND_TASK_FETCHING + +static GTM_NULLABLE_TYPE id gSubstituteUIApp; + ++ (void)setSubstituteUIApplication:(nullable id)app { + gSubstituteUIApp = app; +} + ++ (nullable id)substituteUIApplication { + return gSubstituteUIApp; +} + ++ (nullable id)fetcherUIApplication { + id app = gSubstituteUIApp; + if (app) return app; + + // iOS App extensions should not call [UIApplication sharedApplication], even + // if UIApplication responds to it. + + static Class applicationClass = nil; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + BOOL isAppExtension = [[[NSBundle mainBundle] bundlePath] hasSuffix:@".appex"]; + if (!isAppExtension) { + Class cls = NSClassFromString(@"UIApplication"); + if (cls && [cls respondsToSelector:NSSelectorFromString(@"sharedApplication")]) { + applicationClass = cls; + } + } + }); + + if (applicationClass) { + app = (id)[applicationClass sharedApplication]; + } + return app; +} +#endif // GTM_BACKGROUND_TASK_FETCHING + +#pragma mark NSURLSession Delegate Methods + +// NSURLSession documentation indicates that redirectRequest can be passed to the handler +// but empirically redirectRequest lacks the HTTP body, so passing it will break POSTs. +// Instead, we construct a new request, a copy of the original, with overrides from the +// redirect. + +- (void)URLSession:(NSURLSession *)session + task:(NSURLSessionTask *)task +willPerformHTTPRedirection:(NSHTTPURLResponse *)redirectResponse + newRequest:(NSURLRequest *)redirectRequest + completionHandler:(void (^)(NSURLRequest * GTM_NULLABLE_TYPE))handler { + [self setSessionTask:task]; + GTM_LOG_SESSION_DELEGATE(@"%@ %p URLSession:%@ task:%@ willPerformHTTPRedirection:%@ newRequest:%@", + [self class], self, session, task, redirectResponse, redirectRequest); + + if ([self userStoppedFetching]) { + handler(nil); + return; + } + if (redirectRequest && redirectResponse) { + // Copy the original request, including the body. + NSURLRequest *originalRequest = self.request; + NSMutableURLRequest *newRequest = [originalRequest mutableCopy]; + + // The new requests's URL overrides the original's URL. + [newRequest setURL:[GTMSessionFetcher redirectURLWithOriginalRequestURL:originalRequest.URL + redirectRequestURL:redirectRequest.URL]]; + + // Any headers in the redirect override headers in the original. + NSDictionary *redirectHeaders = redirectRequest.allHTTPHeaderFields; + for (NSString *key in redirectHeaders) { + NSString *value = [redirectHeaders objectForKey:key]; + [newRequest setValue:value forHTTPHeaderField:key]; + } + + redirectRequest = newRequest; + + // Log the response we just received + [self setResponse:redirectResponse]; + [self logNowWithError:nil]; + + GTMSessionFetcherWillRedirectBlock willRedirectBlock = self.willRedirectBlock; + if (willRedirectBlock) { + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + [self invokeOnCallbackQueueAfterUserStopped:YES + block:^{ + willRedirectBlock(redirectResponse, redirectRequest, ^(NSURLRequest *clientRequest) { + + // Update the request for future logging. + [self updateMutableRequest:[clientRequest mutableCopy]]; + + handler(clientRequest); + }); + }]; + } // @synchronized(self) + return; + } + // Continues here if the client did not provide a redirect block. + + // Update the request for future logging. + [self updateMutableRequest:[redirectRequest mutableCopy]]; + } + handler(redirectRequest); +} + +- (void)URLSession:(NSURLSession *)session + dataTask:(NSURLSessionDataTask *)dataTask +didReceiveResponse:(NSURLResponse *)response + completionHandler:(void (^)(NSURLSessionResponseDisposition disposition))handler { + [self setSessionTask:dataTask]; + GTM_LOG_SESSION_DELEGATE(@"%@ %p URLSession:%@ dataTask:%@ didReceiveResponse:%@", + [self class], self, session, dataTask, response); + void (^accumulateAndFinish)(NSURLSessionResponseDisposition) = + ^(NSURLSessionResponseDisposition dispositionValue) { + // This method is called when the server has determined that it + // has enough information to create the NSURLResponse + // it can be called multiple times, for example in the case of a + // redirect, so each time we reset the data. + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + BOOL hadPreviousData = self->_downloadedLength > 0; + + [self->_downloadedData setLength:0]; + self->_downloadedLength = 0; + + if (hadPreviousData && (dispositionValue != NSURLSessionResponseCancel)) { + // Tell the accumulate block to discard prior data. + GTMSessionFetcherAccumulateDataBlock accumulateBlock = self->_accumulateDataBlock; + if (accumulateBlock) { + [self invokeOnCallbackQueueUnlessStopped:^{ + accumulateBlock(nil); + }]; + } + } + } // @synchronized(self) + handler(dispositionValue); + }; + + GTMSessionFetcherDidReceiveResponseBlock receivedResponseBlock; + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + receivedResponseBlock = _didReceiveResponseBlock; + if (receivedResponseBlock) { + // We will ultimately need to call back to NSURLSession's handler with the disposition value + // for this delegate method even if the user has stopped the fetcher. + [self invokeOnCallbackQueueAfterUserStopped:YES + block:^{ + receivedResponseBlock(response, ^(NSURLSessionResponseDisposition desiredDisposition) { + accumulateAndFinish(desiredDisposition); + }); + }]; + } + } // @synchronized(self) + + if (receivedResponseBlock == nil) { + accumulateAndFinish(NSURLSessionResponseAllow); + } +} + +- (void)URLSession:(NSURLSession *)session + dataTask:(NSURLSessionDataTask *)dataTask +didBecomeDownloadTask:(NSURLSessionDownloadTask *)downloadTask { + GTM_LOG_SESSION_DELEGATE(@"%@ %p URLSession:%@ dataTask:%@ didBecomeDownloadTask:%@", + [self class], self, session, dataTask, downloadTask); + [self setSessionTask:downloadTask]; +} + + +- (void)URLSession:(NSURLSession *)session + task:(NSURLSessionTask *)task +didReceiveChallenge:(NSURLAuthenticationChallenge *)challenge + completionHandler:(void (^)(NSURLSessionAuthChallengeDisposition disposition, + NSURLCredential * GTM_NULLABLE_TYPE credential))handler { + [self setSessionTask:task]; + GTM_LOG_SESSION_DELEGATE(@"%@ %p URLSession:%@ task:%@ didReceiveChallenge:%@", + [self class], self, session, task, challenge); + + GTMSessionFetcherChallengeBlock challengeBlock = self.challengeBlock; + if (challengeBlock) { + // The fetcher user has provided custom challenge handling. + // + // We will ultimately need to call back to NSURLSession's handler with the disposition value + // for this delegate method even if the user has stopped the fetcher. + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + [self invokeOnCallbackQueueAfterUserStopped:YES + block:^{ + challengeBlock(self, challenge, handler); + }]; + } + } else { + // No challenge block was provided by the client. + [self respondToChallenge:challenge + completionHandler:handler]; + } +} + +- (void)respondToChallenge:(NSURLAuthenticationChallenge *)challenge + completionHandler:(void (^)(NSURLSessionAuthChallengeDisposition disposition, + NSURLCredential * GTM_NULLABLE_TYPE credential))handler { + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + NSInteger previousFailureCount = [challenge previousFailureCount]; + if (previousFailureCount <= 2) { + NSURLProtectionSpace *protectionSpace = [challenge protectionSpace]; + NSString *authenticationMethod = [protectionSpace authenticationMethod]; + if ([authenticationMethod isEqual:NSURLAuthenticationMethodServerTrust]) { + // SSL. + // + // Background sessions seem to require an explicit check of the server trust object + // rather than default handling. + SecTrustRef serverTrust = challenge.protectionSpace.serverTrust; + if (serverTrust == NULL) { + // No server trust information is available. + handler(NSURLSessionAuthChallengePerformDefaultHandling, nil); + } else { + // Server trust information is available. + void (^callback)(SecTrustRef, BOOL) = ^(SecTrustRef trustRef, BOOL allow){ + if (allow) { + NSURLCredential *trustCredential = [NSURLCredential credentialForTrust:trustRef]; + handler(NSURLSessionAuthChallengeUseCredential, trustCredential); + } else { + GTMSESSION_LOG_DEBUG(@"Cancelling authentication challenge for %@", self->_request.URL); + handler(NSURLSessionAuthChallengeCancelAuthenticationChallenge, nil); + } + }; + if (_allowInvalidServerCertificates) { + callback(serverTrust, YES); + } else { + [[self class] evaluateServerTrust:serverTrust + forRequest:_request + completionHandler:callback]; + } + } + return; + } + + NSURLCredential *credential = _credential; + + if ([[challenge protectionSpace] isProxy] && _proxyCredential != nil) { + credential = _proxyCredential; + } + + if (credential) { + handler(NSURLSessionAuthChallengeUseCredential, credential); + } else { + // The credential is still nil; tell the OS to use the default handling. This is needed + // for things that can come out of the keychain (proxies, client certificates, etc.). + // + // Note: Looking up a credential with NSURLCredentialStorage's + // defaultCredentialForProtectionSpace: is *not* the same invoking the handler with + // NSURLSessionAuthChallengePerformDefaultHandling. In the case of + // NSURLAuthenticationMethodClientCertificate, you can get nil back from + // NSURLCredentialStorage, while using this code path instead works. + handler(NSURLSessionAuthChallengePerformDefaultHandling, nil); + } + + } else { + // We've failed auth 3 times. The completion handler will be called with code + // NSURLErrorCancelled. + handler(NSURLSessionAuthChallengeCancelAuthenticationChallenge, nil); + } + } // @synchronized(self) +} + +// Return redirect URL based on the original request URL and redirect request URL. +// +// Method disallows any scheme changes between the original request URL and redirect request URL +// aside from "http" to "https". If a change in scheme is detected the redirect URL inherits the +// scheme from the original request URL. ++ (GTM_NULLABLE NSURL *)redirectURLWithOriginalRequestURL:(GTM_NULLABLE NSURL *)originalRequestURL + redirectRequestURL:(GTM_NULLABLE NSURL *)redirectRequestURL { + // In the case of an NSURLSession redirect, neither URL should ever be nil; as a sanity check + // if either is nil return the other URL. + if (!redirectRequestURL) return originalRequestURL; + if (!originalRequestURL) return redirectRequestURL; + + NSString *originalScheme = originalRequestURL.scheme; + NSString *redirectScheme = redirectRequestURL.scheme; + BOOL insecureToSecureRedirect = + (originalScheme != nil && [originalScheme caseInsensitiveCompare:@"http"] == NSOrderedSame && + redirectScheme != nil && [redirectScheme caseInsensitiveCompare:@"https"] == NSOrderedSame); + + // This can't really be nil for the inputs, but to keep the analyzer happy + // for the -caseInsensitiveCompare: call below, give it a value if it were. + if (!originalScheme) originalScheme = @"https"; + + // Check for changes to the scheme and disallow any changes except for http to https. + if (!insecureToSecureRedirect && + (redirectScheme.length != originalScheme.length || + [redirectScheme caseInsensitiveCompare:originalScheme] != NSOrderedSame)) { + NSURLComponents *components = + [NSURLComponents componentsWithURL:(NSURL * _Nonnull)redirectRequestURL + resolvingAgainstBaseURL:NO]; + components.scheme = originalScheme; + return components.URL; + } + + return redirectRequestURL; +} + +// Validate the certificate chain. +// +// This may become a public method if it appears to be useful to users. ++ (void)evaluateServerTrust:(SecTrustRef)serverTrust + forRequest:(NSURLRequest *)request + completionHandler:(void (^)(SecTrustRef trustRef, BOOL allow))handler { + // Retain the trust object to avoid a SecTrustEvaluate() crash on iOS 7. + CFRetain(serverTrust); + + // Evaluate the certificate chain. + // + // The delegate queue may be the main thread. Trust evaluation could cause some + // blocking network activity, so we must evaluate async, as documented at + // https://developer.apple.com/library/ios/technotes/tn2232/ + // + // We must also avoid multiple uses of the trust object, per docs: + // "It is not safe to call this function concurrently with any other function that uses + // the same trust management object, or to re-enter this function for the same trust + // management object." + // + // SecTrustEvaluateAsync both does sync execution of Evaluate and calls back on the + // queue passed to it, according to at sources in + // http://www.opensource.apple.com/source/libsecurity_keychain/libsecurity_keychain-55050.9/lib/SecTrust.cpp + // It would require a global serial queue to ensure the evaluate happens only on a + // single thread at a time, so we'll stick with using SecTrustEvaluate on a background + // thread. + dispatch_queue_t evaluateBackgroundQueue = + dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0); + dispatch_async(evaluateBackgroundQueue, ^{ + // It looks like the implementation of SecTrustEvaluate() on Mac grabs a global lock, + // so it may be redundant for us to also lock, but it's easy to synchronize here + // anyway. + SecTrustResultType trustEval = kSecTrustResultInvalid; + BOOL shouldAllow; + OSStatus trustError; + @synchronized([GTMSessionFetcher class]) { + GTMSessionMonitorSynchronized([GTMSessionFetcher class]); + + trustError = SecTrustEvaluate(serverTrust, &trustEval); + } + if (trustError != errSecSuccess) { + GTMSESSION_LOG_DEBUG(@"Error %d evaluating trust for %@", + (int)trustError, request); + shouldAllow = NO; + } else { + // Having a trust level "unspecified" by the user is the usual result, described at + // https://developer.apple.com/library/mac/qa/qa1360 + if (trustEval == kSecTrustResultUnspecified + || trustEval == kSecTrustResultProceed) { + shouldAllow = YES; + } else { + shouldAllow = NO; + GTMSESSION_LOG_DEBUG(@"Challenge SecTrustResultType %u for %@, properties: %@", + trustEval, request.URL.host, + CFBridgingRelease(SecTrustCopyProperties(serverTrust))); + } + } + handler(serverTrust, shouldAllow); + + CFRelease(serverTrust); + }); +} + +- (void)invokeOnCallbackQueueUnlessStopped:(void (^)(void))block { + [self invokeOnCallbackQueueAfterUserStopped:NO + block:block]; +} + +- (void)invokeOnCallbackQueueAfterUserStopped:(BOOL)afterStopped + block:(void (^)(void))block { + GTMSessionCheckSynchronized(self); + + [self invokeOnCallbackUnsynchronizedQueueAfterUserStopped:afterStopped + block:block]; +} + +- (void)invokeOnCallbackUnsynchronizedQueueAfterUserStopped:(BOOL)afterStopped + block:(void (^)(void))block { + // testBlock simulation code may not be synchronizing when this is invoked. + [self invokeOnCallbackQueue:_callbackQueue + afterUserStopped:afterStopped + block:block]; +} + +- (void)invokeOnCallbackQueue:(dispatch_queue_t)callbackQueue + afterUserStopped:(BOOL)afterStopped + block:(void (^)(void))block { + if (callbackQueue) { + dispatch_group_async(_callbackGroup, callbackQueue, ^{ + if (!afterStopped) { + NSDate *serviceStoppedAllDate = [self->_service stoppedAllFetchersDate]; + + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + // Avoid a race between stopFetching and the callback. + if (self->_userStoppedFetching) { + return; + } + + // Also avoid calling back if the service has stopped all fetchers + // since this one was created. The fetcher may have stopped before + // stopAllFetchers was invoked, so _userStoppedFetching wasn't set, + // but the app still won't expect the callback to fire after + // the service's stopAllFetchers was invoked. + if (serviceStoppedAllDate + && [self->_initialBeginFetchDate compare:serviceStoppedAllDate] != NSOrderedDescending) { + // stopAllFetchers was called after this fetcher began. + return; + } + } // @synchronized(self) + } + block(); + }); + } +} + +- (void)invokeFetchCallbacksOnCallbackQueueWithData:(GTM_NULLABLE NSData *)data + error:(GTM_NULLABLE NSError *)error { + // Callbacks will be released in the method stopFetchReleasingCallbacks: + GTMSessionFetcherCompletionHandler handler; + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + handler = _completionHandler; + + if (handler) { + [self invokeOnCallbackQueueUnlessStopped:^{ + handler(data, error); + + // Post a notification, primarily to allow code to collect responses for + // testing. + // + // The observing code is not likely on the fetcher's callback + // queue, so this posts explicitly to the main queue. + NSMutableDictionary *userInfo = [NSMutableDictionary dictionary]; + if (data) { + userInfo[kGTMSessionFetcherCompletionDataKey] = data; + } + if (error) { + userInfo[kGTMSessionFetcherCompletionErrorKey] = error; + } + [self postNotificationOnMainThreadWithName:kGTMSessionFetcherCompletionInvokedNotification + userInfo:userInfo + requireAsync:NO]; + }]; + } + } // @synchronized(self) +} + +- (void)postNotificationOnMainThreadWithName:(NSString *)noteName + userInfo:(GTM_NULLABLE NSDictionary *)userInfo + requireAsync:(BOOL)requireAsync { + dispatch_block_t postBlock = ^{ + [[NSNotificationCenter defaultCenter] postNotificationName:noteName + object:self + userInfo:userInfo]; + }; + + if ([NSThread isMainThread] && !requireAsync) { + // Post synchronously for compatibility with older code using the fetcher. + + // Avoid calling out to other code from inside a sync block to avoid risk + // of a deadlock or of recursive sync. + GTMSessionCheckNotSynchronized(self); + + postBlock(); + } else { + dispatch_async(dispatch_get_main_queue(), postBlock); + } +} + +- (void)URLSession:(NSURLSession *)session + task:(NSURLSessionTask *)uploadTask + needNewBodyStream:(void (^)(NSInputStream * GTM_NULLABLE_TYPE bodyStream))completionHandler { + [self setSessionTask:uploadTask]; + GTM_LOG_SESSION_DELEGATE(@"%@ %p URLSession:%@ task:%@ needNewBodyStream:", + [self class], self, session, uploadTask); + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + GTMSessionFetcherBodyStreamProvider provider = _bodyStreamProvider; +#if !STRIP_GTM_FETCH_LOGGING + if ([self respondsToSelector:@selector(loggedStreamProviderForStreamProvider:)]) { + provider = [self performSelector:@selector(loggedStreamProviderForStreamProvider:) + withObject:provider]; + } +#endif + if (provider) { + [self invokeOnCallbackQueueUnlessStopped:^{ + provider(completionHandler); + }]; + } else { + GTMSESSION_ASSERT_DEBUG(NO, @"NSURLSession expects a stream provider"); + + completionHandler(nil); + } + } // @synchronized(self) +} + +- (void)URLSession:(NSURLSession *)session + task:(NSURLSessionTask *)task + didSendBodyData:(int64_t)bytesSent + totalBytesSent:(int64_t)totalBytesSent +totalBytesExpectedToSend:(int64_t)totalBytesExpectedToSend { + [self setSessionTask:task]; + GTM_LOG_SESSION_DELEGATE(@"%@ %p URLSession:%@ task:%@ didSendBodyData:%lld" + @" totalBytesSent:%lld totalBytesExpectedToSend:%lld", + [self class], self, session, task, bytesSent, totalBytesSent, + totalBytesExpectedToSend); + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + if (!_sendProgressBlock) { + return; + } + // We won't hold on to send progress block; it's ok to not send it if the upload finishes. + [self invokeOnCallbackQueueUnlessStopped:^{ + GTMSessionFetcherSendProgressBlock progressBlock; + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + progressBlock = self->_sendProgressBlock; + } + if (progressBlock) { + progressBlock(bytesSent, totalBytesSent, totalBytesExpectedToSend); + } + }]; + } // @synchronized(self) +} + +- (void)URLSession:(NSURLSession *)session + dataTask:(NSURLSessionDataTask *)dataTask + didReceiveData:(NSData *)data { + [self setSessionTask:dataTask]; + NSUInteger bufferLength = data.length; + GTM_LOG_SESSION_DELEGATE(@"%@ %p URLSession:%@ dataTask:%@ didReceiveData:%p (%llu bytes)", + [self class], self, session, dataTask, data, + (unsigned long long)bufferLength); + if (bufferLength == 0) { + // Observed on completing an out-of-process upload. + return; + } + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + GTMSessionFetcherAccumulateDataBlock accumulateBlock = _accumulateDataBlock; + if (accumulateBlock) { + // Let the client accumulate the data. + _downloadedLength += bufferLength; + [self invokeOnCallbackQueueUnlessStopped:^{ + accumulateBlock(data); + }]; + } else if (!_userStoppedFetching) { + // Append to the mutable data buffer unless the fetch has been cancelled. + + // Resumed upload tasks may not yet have a data buffer. + if (_downloadedData == nil) { + // Using NSClassFromString for iOS 6 compatibility. + GTMSESSION_ASSERT_DEBUG( + ![dataTask isKindOfClass:NSClassFromString(@"NSURLSessionDownloadTask")], + @"Resumed download tasks should not receive data bytes"); + _downloadedData = [[NSMutableData alloc] init]; + } + + [_downloadedData appendData:data]; + _downloadedLength = (int64_t)_downloadedData.length; + + // We won't hold on to receivedProgressBlock here; it's ok to not send + // it if the transfer finishes. + if (_receivedProgressBlock) { + [self invokeOnCallbackQueueUnlessStopped:^{ + GTMSessionFetcherReceivedProgressBlock progressBlock; + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + progressBlock = self->_receivedProgressBlock; + } + if (progressBlock) { + progressBlock((int64_t)bufferLength, self->_downloadedLength); + } + }]; + } + } + } // @synchronized(self) +} + +- (void)URLSession:(NSURLSession *)session + dataTask:(NSURLSessionDataTask *)dataTask + willCacheResponse:(NSCachedURLResponse *)proposedResponse + completionHandler:(void (^)(NSCachedURLResponse *cachedResponse))completionHandler { + GTM_LOG_SESSION_DELEGATE(@"%@ %p URLSession:%@ dataTask:%@ willCacheResponse:%@ %@", + [self class], self, session, dataTask, + proposedResponse, proposedResponse.response); + GTMSessionFetcherWillCacheURLResponseBlock callback; + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + callback = _willCacheURLResponseBlock; + + if (callback) { + [self invokeOnCallbackQueueAfterUserStopped:YES + block:^{ + callback(proposedResponse, completionHandler); + }]; + } + } // @synchronized(self) + if (!callback) { + completionHandler(proposedResponse); + } +} + + +- (void)URLSession:(NSURLSession *)session + downloadTask:(NSURLSessionDownloadTask *)downloadTask + didWriteData:(int64_t)bytesWritten + totalBytesWritten:(int64_t)totalBytesWritten +totalBytesExpectedToWrite:(int64_t)totalBytesExpectedToWrite { + GTM_LOG_SESSION_DELEGATE(@"%@ %p URLSession:%@ downloadTask:%@ didWriteData:%lld" + @" bytesWritten:%lld totalBytesExpectedToWrite:%lld", + [self class], self, session, downloadTask, bytesWritten, + totalBytesWritten, totalBytesExpectedToWrite); + [self setSessionTask:downloadTask]; + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + if ((totalBytesExpectedToWrite != NSURLSessionTransferSizeUnknown) && + (totalBytesExpectedToWrite < totalBytesWritten)) { + // Have observed cases were bytesWritten == totalBytesExpectedToWrite, + // but totalBytesWritten > totalBytesExpectedToWrite, so setting to unkown in these cases. + totalBytesExpectedToWrite = NSURLSessionTransferSizeUnknown; + } + // We won't hold on to download progress block during the enqueue; + // it's ok to not send it if the upload finishes. + + [self invokeOnCallbackQueueUnlessStopped:^{ + GTMSessionFetcherDownloadProgressBlock progressBlock; + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + progressBlock = self->_downloadProgressBlock; + } + if (progressBlock) { + progressBlock(bytesWritten, totalBytesWritten, totalBytesExpectedToWrite); + } + }]; + } // @synchronized(self) +} + +- (void)URLSession:(NSURLSession *)session + downloadTask:(NSURLSessionDownloadTask *)downloadTask + didResumeAtOffset:(int64_t)fileOffset +expectedTotalBytes:(int64_t)expectedTotalBytes { + GTM_LOG_SESSION_DELEGATE(@"%@ %p URLSession:%@ downloadTask:%@ didResumeAtOffset:%lld" + @" expectedTotalBytes:%lld", + [self class], self, session, downloadTask, fileOffset, + expectedTotalBytes); + [self setSessionTask:downloadTask]; +} + +- (void)URLSession:(NSURLSession *)session + downloadTask:(NSURLSessionDownloadTask *)downloadTask +didFinishDownloadingToURL:(NSURL *)downloadLocationURL { + // Download may have relaunched app, so update _sessionTask. + [self setSessionTask:downloadTask]; + GTM_LOG_SESSION_DELEGATE(@"%@ %p URLSession:%@ downloadTask:%@ didFinishDownloadingToURL:%@", + [self class], self, session, downloadTask, downloadLocationURL); + NSNumber *fileSizeNum; + [downloadLocationURL getResourceValue:&fileSizeNum + forKey:NSURLFileSizeKey + error:NULL]; + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + NSURL *destinationURL = _destinationFileURL; + + _downloadedLength = fileSizeNum.longLongValue; + + // Overwrite any previous file at the destination URL. + NSFileManager *fileMgr = [NSFileManager defaultManager]; + NSError *removeError; + if (![fileMgr removeItemAtURL:destinationURL error:&removeError] + && removeError.code != NSFileNoSuchFileError) { + GTMSESSION_LOG_DEBUG(@"Could not remove previous file at %@ due to %@", + downloadLocationURL.path, removeError); + } + + NSInteger statusCode = [self statusCodeUnsynchronized]; + if (statusCode < 200 || statusCode > 399) { + // In OS X 10.11, the response body is written to a file even on a server + // status error. For convenience of the fetcher client, we'll skip saving the + // downloaded body to the destination URL so that clients do not need to know + // to delete the file following fetch errors. + GTMSESSION_LOG_DEBUG(@"Abandoning download due to status %ld, file %@", + (long)statusCode, downloadLocationURL.path); + + // On error code, add the contents of the temporary file to _downloadTaskErrorData + // This way fetcher clients have access to error details possibly passed by the server. + if (_downloadedLength > 0 && _downloadedLength <= kMaximumDownloadErrorDataLength) { + _downloadTaskErrorData = [NSData dataWithContentsOfURL:downloadLocationURL]; + } else if (_downloadedLength > kMaximumDownloadErrorDataLength) { + GTMSESSION_LOG_DEBUG(@"Download error data for file %@ not passed to userInfo due to size " + @"%lld", downloadLocationURL.path, _downloadedLength); + } + } else { + NSError *moveError; + NSURL *destinationFolderURL = [destinationURL URLByDeletingLastPathComponent]; + BOOL didMoveDownload = NO; + if ([fileMgr createDirectoryAtURL:destinationFolderURL + withIntermediateDirectories:YES + attributes:nil + error:&moveError]) { + didMoveDownload = [fileMgr moveItemAtURL:downloadLocationURL + toURL:destinationURL + error:&moveError]; + } + if (!didMoveDownload) { + _downloadFinishedError = moveError; + } + GTM_LOG_BACKGROUND_SESSION(@"%@ %p Moved download from \"%@\" to \"%@\" %@", + [self class], self, + downloadLocationURL.path, destinationURL.path, + error ? error : @""); + } + } // @synchronized(self) +} + +/* Sent as the last message related to a specific task. Error may be + * nil, which implies that no error occurred and this task is complete. + */ +- (void)URLSession:(NSURLSession *)session + task:(NSURLSessionTask *)task +didCompleteWithError:(NSError *)error { + [self setSessionTask:task]; + GTM_LOG_SESSION_DELEGATE(@"%@ %p URLSession:%@ task:%@ didCompleteWithError:%@", + [self class], self, session, task, error); + + NSInteger status = self.statusCode; + BOOL forceAssumeRetry = NO; + BOOL succeeded = NO; + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + +#if !GTM_DISABLE_FETCHER_TEST_BLOCK + // The task is never resumed when a testBlock is used. When the session is destroyed, + // we should ignore the callback, since the testBlock support code itself invokes + // shouldRetryNowForStatus: and finishWithError:shouldRetry: + if (_isUsingTestBlock) return; +#endif + + if (error == nil) { + error = _downloadFinishedError; + } + succeeded = (error == nil && status >= 0 && status < 300); + if (succeeded) { + // Succeeded. + _bodyLength = task.countOfBytesSent; + } + } // @synchronized(self) + + if (succeeded) { + [self finishWithError:nil shouldRetry:NO]; + return; + } + // For background redirects, no delegate method is called, so we cannot restore a stripped + // Authorization header, so if a 403 ("Forbidden") was generated due to a missing OAuth 2 header, + // set the current request's URL to the redirected URL, so we in effect restore the Authorization + // header. + if ((status == 403) && self.usingBackgroundSession) { + NSURL *redirectURL = self.response.URL; + NSURLRequest *request = self.request; + if (![request.URL isEqual:redirectURL]) { + NSString *authorizationHeader = [request.allHTTPHeaderFields objectForKey:@"Authorization"]; + if (authorizationHeader != nil) { + NSMutableURLRequest *mutableRequest = [request mutableCopy]; + mutableRequest.URL = redirectURL; + [self updateMutableRequest:mutableRequest]; + // Avoid assuming the session is still valid. + self.session = nil; + forceAssumeRetry = YES; + } + } + } + + // If invalidating the session was deferred in stopFetchReleasingCallbacks: then do it now. + NSURLSession *oldSession = self.sessionNeedingInvalidation; + if (oldSession) { + [self setSessionNeedingInvalidation:NULL]; + [oldSession finishTasksAndInvalidate]; + } + + // Failed. + [self shouldRetryNowForStatus:status + error:error + forceAssumeRetry:forceAssumeRetry + response:^(BOOL shouldRetry) { + [self finishWithError:error shouldRetry:shouldRetry]; + }]; +} + +#if TARGET_OS_IPHONE +- (void)URLSessionDidFinishEventsForBackgroundURLSession:(NSURLSession *)session { + GTM_LOG_SESSION_DELEGATE(@"%@ %p URLSessionDidFinishEventsForBackgroundURLSession:%@", + [self class], self, session); + [self removePersistedBackgroundSessionFromDefaults]; + + GTMSessionFetcherSystemCompletionHandler handler; + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + handler = self.systemCompletionHandler; + self.systemCompletionHandler = nil; + } // @synchronized(self) + if (handler) { + GTM_LOG_BACKGROUND_SESSION(@"%@ %p Calling system completionHandler", [self class], self); + handler(); + + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + NSURLSession *oldSession = _session; + _session = nil; + if (_shouldInvalidateSession) { + [oldSession finishTasksAndInvalidate]; + } + } // @synchronized(self) + } +} +#endif + +- (void)URLSession:(NSURLSession *)session didBecomeInvalidWithError:(GTM_NULLABLE NSError *)error { + // This may happen repeatedly for retries. On authentication callbacks, the retry + // may begin before the prior session sends the didBecomeInvalid delegate message. + GTM_LOG_SESSION_DELEGATE(@"%@ %p URLSession:%@ didBecomeInvalidWithError:%@", + [self class], self, session, error); + if (session == (NSURLSession *)self.session) { + GTM_LOG_SESSION_DELEGATE(@" Unexpected retained invalid session: %@", session); + self.session = nil; + } +} + +- (void)finishWithError:(GTM_NULLABLE NSError *)error shouldRetry:(BOOL)shouldRetry { + [self removePersistedBackgroundSessionFromDefaults]; + + BOOL shouldStopFetching = YES; + NSData *downloadedData = nil; +#if !STRIP_GTM_FETCH_LOGGING + BOOL shouldDeferLogging = NO; +#endif + BOOL shouldBeginRetryTimer = NO; + NSInteger status = [self statusCode]; + NSURL *destinationURL = self.destinationFileURL; + + BOOL fetchSucceeded = (error == nil && status >= 0 && status < 300); + +#if !STRIP_GTM_FETCH_LOGGING + if (!fetchSucceeded) { + if (!shouldDeferLogging && !self.hasLoggedError) { + [self logNowWithError:error]; + self.hasLoggedError = YES; + } + } +#endif // !STRIP_GTM_FETCH_LOGGING + + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + +#if !STRIP_GTM_FETCH_LOGGING + shouldDeferLogging = _deferResponseBodyLogging; +#endif + if (fetchSucceeded) { + // Success + if ((_downloadedData.length > 0) && (destinationURL != nil)) { + // Overwrite any previous file at the destination URL. + NSFileManager *fileMgr = [NSFileManager defaultManager]; + [fileMgr removeItemAtURL:destinationURL + error:NULL]; + NSURL *destinationFolderURL = [destinationURL URLByDeletingLastPathComponent]; + BOOL didMoveDownload = NO; + if ([fileMgr createDirectoryAtURL:destinationFolderURL + withIntermediateDirectories:YES + attributes:nil + error:&error]) { + didMoveDownload = [_downloadedData writeToURL:destinationURL + options:NSDataWritingAtomic + error:&error]; + } + if (didMoveDownload) { + _downloadedData = nil; + } else { + _downloadFinishedError = error; + } + } + downloadedData = _downloadedData; + } else { + // Unsuccessful with error or status over 300. Retry or notify the delegate of failure + if (shouldRetry) { + // Retrying. + shouldBeginRetryTimer = YES; + shouldStopFetching = NO; + } else { + if (error == nil) { + // Create an error. + NSDictionary *userInfo = GTMErrorUserInfoForData( + _downloadedData.length > 0 ? _downloadedData : _downloadTaskErrorData, + [self responseHeadersUnsynchronized]); + + error = [NSError errorWithDomain:kGTMSessionFetcherStatusDomain + code:status + userInfo:userInfo]; + } else { + // If the error had resume data, and the client supplied a resume block, pass the + // data to the client. + void (^resumeBlock)(NSData *) = _resumeDataBlock; + _resumeDataBlock = nil; + if (resumeBlock) { + NSData *resumeData = [error.userInfo objectForKey:NSURLSessionDownloadTaskResumeData]; + if (resumeData) { + [self invokeOnCallbackQueueAfterUserStopped:YES block:^{ + resumeBlock(resumeData); + }]; + } + } + } + if (_downloadedData.length > 0) { + downloadedData = _downloadedData; + } + // If the error occurred after retries, report the number and duration of the + // retries. This provides a clue to a developer looking at the error description + // that the fetcher did retry before failing with this error. + if (_retryCount > 0) { + NSMutableDictionary *userInfoWithRetries = + [NSMutableDictionary dictionaryWithDictionary:(NSDictionary *)error.userInfo]; + NSTimeInterval timeSinceInitialRequest = -[_initialRequestDate timeIntervalSinceNow]; + [userInfoWithRetries setObject:@(timeSinceInitialRequest) + forKey:kGTMSessionFetcherElapsedIntervalWithRetriesKey]; + [userInfoWithRetries setObject:@(_retryCount) + forKey:kGTMSessionFetcherNumberOfRetriesDoneKey]; + error = [NSError errorWithDomain:(NSString *)error.domain + code:error.code + userInfo:userInfoWithRetries]; + } + } + } + } // @synchronized(self) + + if (shouldBeginRetryTimer) { + [self beginRetryTimer]; + } + + // We want to send the stop notification before calling the delegate's + // callback selector, since the callback selector may release all of + // the fetcher properties that the client is using to track the fetches. + // + // We'll also stop now so that, to any observers watching the notifications, + // it doesn't look like our wait for a retry (which may be long, + // 30 seconds or more) is part of the network activity. + [self sendStopNotificationIfNeeded]; + + if (shouldStopFetching) { + [self invokeFetchCallbacksOnCallbackQueueWithData:downloadedData + error:error]; + // The upload subclass doesn't want to release callbacks until upload chunks have completed. + BOOL shouldRelease = [self shouldReleaseCallbacksUponCompletion]; + [self stopFetchReleasingCallbacks:shouldRelease]; + } + +#if !STRIP_GTM_FETCH_LOGGING + // _hasLoggedError is only set by this method + if (!shouldDeferLogging && !_hasLoggedError) { + [self logNowWithError:error]; + } +#endif +} + +- (BOOL)shouldReleaseCallbacksUponCompletion { + // A subclass can override this to keep callbacks around after the + // connection has finished successfully + return YES; +} + +- (void)logNowWithError:(GTM_NULLABLE NSError *)error { + GTMSessionCheckNotSynchronized(self); + + // If the logging category is available, then log the current request, + // response, data, and error + if ([self respondsToSelector:@selector(logFetchWithError:)]) { + [self performSelector:@selector(logFetchWithError:) withObject:error]; + } +} + +#pragma mark Retries + +- (BOOL)isRetryError:(NSError *)error { + struct RetryRecord { + __unsafe_unretained NSString *const domain; + NSInteger code; + }; + + struct RetryRecord retries[] = { + { kGTMSessionFetcherStatusDomain, 408 }, // request timeout + { kGTMSessionFetcherStatusDomain, 502 }, // failure gatewaying to another server + { kGTMSessionFetcherStatusDomain, 503 }, // service unavailable + { kGTMSessionFetcherStatusDomain, 504 }, // request timeout + { NSURLErrorDomain, NSURLErrorTimedOut }, + { NSURLErrorDomain, NSURLErrorNetworkConnectionLost }, + { nil, 0 } + }; + + // NSError's isEqual always returns false for equal but distinct instances + // of NSError, so we have to compare the domain and code values explicitly + NSString *domain = error.domain; + NSInteger code = error.code; + for (int idx = 0; retries[idx].domain != nil; idx++) { + if (code == retries[idx].code && [domain isEqual:retries[idx].domain]) { + return YES; + } + } + return NO; +} + +// shouldRetryNowForStatus:error: responds with YES if the user has enabled retries +// and the status or error is one that is suitable for retrying. "Suitable" +// means either the isRetryError:'s list contains the status or error, or the +// user's retry block is present and returns YES when called, or the +// authorizer may be able to fix. +- (void)shouldRetryNowForStatus:(NSInteger)status + error:(NSError *)error + forceAssumeRetry:(BOOL)forceAssumeRetry + response:(GTMSessionFetcherRetryResponse)response { + // Determine if a refreshed authorizer may avoid an authorization error + BOOL willRetry = NO; + + // We assume _authorizer is immutable after beginFetch, and _hasAttemptedAuthRefresh is modified + // only in this method, and this method is invoked on the serial delegate queue. + // + // We want to avoid calling the authorizer from inside a sync block. + BOOL isFirstAuthError = (_authorizer != nil + && !_hasAttemptedAuthRefresh + && status == GTMSessionFetcherStatusUnauthorized); // 401 + + BOOL hasPrimed = NO; + if (isFirstAuthError) { + if ([_authorizer respondsToSelector:@selector(primeForRefresh)]) { + hasPrimed = [_authorizer primeForRefresh]; + } + } + + BOOL shouldRetryForAuthRefresh = NO; + if (hasPrimed) { + shouldRetryForAuthRefresh = YES; + _hasAttemptedAuthRefresh = YES; + [self updateRequestValue:nil forHTTPHeaderField:@"Authorization"]; + } + + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + BOOL shouldDoRetry = [self isRetryEnabledUnsynchronized]; + if (shouldDoRetry && ![self hasRetryAfterInterval]) { + + // Determine if we're doing exponential backoff retries + shouldDoRetry = [self nextRetryIntervalUnsynchronized] < _maxRetryInterval; + + if (shouldDoRetry) { + // If an explicit max retry interval was set, we expect repeated backoffs to take + // up to roughly twice that for repeated fast failures. If the initial attempt is + // already more than 3 times the max retry interval, then failures have taken a long time + // (such as from network timeouts) so don't retry again to avoid the app becoming + // unexpectedly unresponsive. + if (_maxRetryInterval > 0) { + NSTimeInterval maxAllowedIntervalBeforeRetry = _maxRetryInterval * 3; + NSTimeInterval timeSinceInitialRequest = -[_initialRequestDate timeIntervalSinceNow]; + if (timeSinceInitialRequest > maxAllowedIntervalBeforeRetry) { + shouldDoRetry = NO; + } + } + } + } + BOOL canRetry = shouldRetryForAuthRefresh || forceAssumeRetry || shouldDoRetry; + if (canRetry) { + NSDictionary *userInfo = + GTMErrorUserInfoForData(_downloadedData, [self responseHeadersUnsynchronized]); + NSError *statusError = [NSError errorWithDomain:kGTMSessionFetcherStatusDomain + code:status + userInfo:userInfo]; + if (error == nil) { + error = statusError; + } + willRetry = shouldRetryForAuthRefresh || + forceAssumeRetry || + [self isRetryError:error] || + ((error != statusError) && [self isRetryError:statusError]); + + // If the user has installed a retry callback, consult that. + GTMSessionFetcherRetryBlock retryBlock = _retryBlock; + if (retryBlock) { + [self invokeOnCallbackQueueUnlessStopped:^{ + retryBlock(willRetry, error, response); + }]; + return; + } + } + } // @synchronized(self) + response(willRetry); +} + +- (BOOL)hasRetryAfterInterval { + GTMSessionCheckSynchronized(self); + + NSDictionary *responseHeaders = [self responseHeadersUnsynchronized]; + NSString *retryAfterValue = [responseHeaders valueForKey:@"Retry-After"]; + return (retryAfterValue != nil); +} + +- (NSTimeInterval)retryAfterInterval { + GTMSessionCheckSynchronized(self); + + NSDictionary *responseHeaders = [self responseHeadersUnsynchronized]; + NSString *retryAfterValue = [responseHeaders valueForKey:@"Retry-After"]; + if (retryAfterValue == nil) { + return 0; + } + // Retry-After formatted as HTTP-date | delta-seconds + // Reference: http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html + NSDateFormatter *rfc1123DateFormatter = [[NSDateFormatter alloc] init]; + rfc1123DateFormatter.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"]; + rfc1123DateFormatter.timeZone = [NSTimeZone timeZoneWithAbbreviation:@"GMT"]; + rfc1123DateFormatter.dateFormat = @"EEE',' dd MMM yyyy HH':'mm':'ss z"; + NSDate *retryAfterDate = [rfc1123DateFormatter dateFromString:retryAfterValue]; + NSTimeInterval retryAfterInterval = (retryAfterDate != nil) ? + retryAfterDate.timeIntervalSinceNow : retryAfterValue.intValue; + retryAfterInterval = MAX(0, retryAfterInterval); + return retryAfterInterval; +} + +- (void)beginRetryTimer { + if (![NSThread isMainThread]) { + // Defer creating and starting the timer until we're on the main thread to ensure it has + // a run loop. + dispatch_group_async(_callbackGroup, dispatch_get_main_queue(), ^{ + [self beginRetryTimer]; + }); + return; + } + + [self destroyRetryTimer]; + + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + NSTimeInterval nextInterval = [self nextRetryIntervalUnsynchronized]; + NSTimeInterval maxInterval = _maxRetryInterval; + NSTimeInterval newInterval = MIN(nextInterval, (maxInterval > 0 ? maxInterval : DBL_MAX)); + NSTimeInterval newIntervalTolerance = (newInterval / 10) > 1.0 ?: 1.0; + + _lastRetryInterval = newInterval; + + _retryTimer = [NSTimer timerWithTimeInterval:newInterval + target:self + selector:@selector(retryTimerFired:) + userInfo:nil + repeats:NO]; + _retryTimer.tolerance = newIntervalTolerance; + [[NSRunLoop mainRunLoop] addTimer:_retryTimer + forMode:NSDefaultRunLoopMode]; + } // @synchronized(self) + + [self postNotificationOnMainThreadWithName:kGTMSessionFetcherRetryDelayStartedNotification + userInfo:nil + requireAsync:NO]; +} + +- (void)retryTimerFired:(NSTimer *)timer { + [self destroyRetryTimer]; + + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + _retryCount++; + } // @synchronized(self) + + NSOperationQueue *queue = self.sessionDelegateQueue; + [queue addOperationWithBlock:^{ + [self retryFetch]; + }]; +} + +- (void)destroyRetryTimer { + BOOL shouldNotify = NO; + + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + if (_retryTimer) { + [_retryTimer invalidate]; + _retryTimer = nil; + shouldNotify = YES; + } + } + + if (shouldNotify) { + [self postNotificationOnMainThreadWithName:kGTMSessionFetcherRetryDelayStoppedNotification + userInfo:nil + requireAsync:NO]; + } +} + +- (NSUInteger)retryCount { + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + return _retryCount; + } // @synchronized(self) +} + +- (NSTimeInterval)nextRetryInterval { + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + NSTimeInterval interval = [self nextRetryIntervalUnsynchronized]; + return interval; + } // @synchronized(self) +} + +- (NSTimeInterval)nextRetryIntervalUnsynchronized { + GTMSessionCheckSynchronized(self); + + NSInteger statusCode = [self statusCodeUnsynchronized]; + if ((statusCode == 503) && [self hasRetryAfterInterval]) { + NSTimeInterval secs = [self retryAfterInterval]; + return secs; + } + // The next wait interval is the factor (2.0) times the last interval, + // but never less than the minimum interval. + NSTimeInterval secs = _lastRetryInterval * _retryFactor; + if (_maxRetryInterval > 0) { + secs = MIN(secs, _maxRetryInterval); + } + secs = MAX(secs, _minRetryInterval); + + return secs; +} + +- (NSTimer *)retryTimer { + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + return _retryTimer; + } // @synchronized(self) +} + +- (BOOL)isRetryEnabled { + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + return _isRetryEnabled; + } // @synchronized(self) +} + +- (BOOL)isRetryEnabledUnsynchronized { + GTMSessionCheckSynchronized(self); + + return _isRetryEnabled; +} + +- (void)setRetryEnabled:(BOOL)flag { + + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + if (flag && !_isRetryEnabled) { + // We defer initializing these until the user calls setRetryEnabled + // to avoid using the random number generator if it's not needed. + // However, this means min and max intervals for this fetcher are reset + // as a side effect of calling setRetryEnabled. + // + // Make an initial retry interval random between 1.0 and 2.0 seconds + _minRetryInterval = InitialMinRetryInterval(); + _maxRetryInterval = kUnsetMaxRetryInterval; + _retryFactor = 2.0; + _lastRetryInterval = 0.0; + } + _isRetryEnabled = flag; + } // @synchronized(self) +}; + +- (NSTimeInterval)maxRetryInterval { + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + return _maxRetryInterval; + } // @synchronized(self) +} + +- (void)setMaxRetryInterval:(NSTimeInterval)secs { + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + if (secs > 0) { + _maxRetryInterval = secs; + } else { + _maxRetryInterval = kUnsetMaxRetryInterval; + } + } // @synchronized(self) +} + +- (double)minRetryInterval { + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + return _minRetryInterval; + } // @synchronized(self) +} + +- (void)setMinRetryInterval:(NSTimeInterval)secs { + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + if (secs > 0) { + _minRetryInterval = secs; + } else { + // Set min interval to a random value between 1.0 and 2.0 seconds + // so that if multiple clients start retrying at the same time, they'll + // repeat at different times and avoid overloading the server + _minRetryInterval = InitialMinRetryInterval(); + } + } // @synchronized(self) + +} + +#pragma mark iOS System Completion Handlers + +#if TARGET_OS_IPHONE +static NSMutableDictionary *gSystemCompletionHandlers = nil; + +- (GTM_NULLABLE GTMSessionFetcherSystemCompletionHandler)systemCompletionHandler { + return [[self class] systemCompletionHandlerForSessionIdentifier:_sessionIdentifier]; +} + +- (void)setSystemCompletionHandler:(GTM_NULLABLE GTMSessionFetcherSystemCompletionHandler)systemCompletionHandler { + [[self class] setSystemCompletionHandler:systemCompletionHandler + forSessionIdentifier:_sessionIdentifier]; +} + ++ (void)setSystemCompletionHandler:(GTM_NULLABLE GTMSessionFetcherSystemCompletionHandler)systemCompletionHandler + forSessionIdentifier:(NSString *)sessionIdentifier { + if (!sessionIdentifier) { + NSLog(@"%s with nil identifier", __PRETTY_FUNCTION__); + return; + } + + @synchronized([GTMSessionFetcher class]) { + if (gSystemCompletionHandlers == nil && systemCompletionHandler != nil) { + gSystemCompletionHandlers = [[NSMutableDictionary alloc] init]; + } + // Use setValue: to remove the object if completionHandler is nil. + [gSystemCompletionHandlers setValue:systemCompletionHandler + forKey:sessionIdentifier]; + } +} + ++ (GTM_NULLABLE GTMSessionFetcherSystemCompletionHandler)systemCompletionHandlerForSessionIdentifier:(NSString *)sessionIdentifier { + if (!sessionIdentifier) { + return nil; + } + @synchronized([GTMSessionFetcher class]) { + return [gSystemCompletionHandlers objectForKey:sessionIdentifier]; + } +} +#endif // TARGET_OS_IPHONE + +#pragma mark Getters and Setters + +@synthesize downloadResumeData = _downloadResumeData, + configuration = _configuration, + configurationBlock = _configurationBlock, + sessionTask = _sessionTask, + wasCreatedFromBackgroundSession = _wasCreatedFromBackgroundSession, + sessionUserInfo = _sessionUserInfo, + taskDescription = _taskDescription, + taskPriority = _taskPriority, + usingBackgroundSession = _usingBackgroundSession, + canShareSession = _canShareSession, + completionHandler = _completionHandler, + credential = _credential, + proxyCredential = _proxyCredential, + bodyData = _bodyData, + bodyLength = _bodyLength, + service = _service, + serviceHost = _serviceHost, + accumulateDataBlock = _accumulateDataBlock, + receivedProgressBlock = _receivedProgressBlock, + downloadProgressBlock = _downloadProgressBlock, + resumeDataBlock = _resumeDataBlock, + didReceiveResponseBlock = _didReceiveResponseBlock, + challengeBlock = _challengeBlock, + willRedirectBlock = _willRedirectBlock, + sendProgressBlock = _sendProgressBlock, + willCacheURLResponseBlock = _willCacheURLResponseBlock, + retryBlock = _retryBlock, + retryFactor = _retryFactor, + allowedInsecureSchemes = _allowedInsecureSchemes, + allowLocalhostRequest = _allowLocalhostRequest, + allowInvalidServerCertificates = _allowInvalidServerCertificates, + cookieStorage = _cookieStorage, + callbackQueue = _callbackQueue, + initialBeginFetchDate = _initialBeginFetchDate, + testBlock = _testBlock, + testBlockAccumulateDataChunkCount = _testBlockAccumulateDataChunkCount, + comment = _comment, + log = _log; + +#if !STRIP_GTM_FETCH_LOGGING +@synthesize redirectedFromURL = _redirectedFromURL, + logRequestBody = _logRequestBody, + logResponseBody = _logResponseBody, + hasLoggedError = _hasLoggedError; +#endif + +#if GTM_BACKGROUND_TASK_FETCHING +@synthesize backgroundTaskIdentifier = _backgroundTaskIdentifier, + skipBackgroundTask = _skipBackgroundTask; +#endif + +- (GTM_NULLABLE NSURLRequest *)request { + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + return [_request copy]; + } // @synchronized(self) +} + +- (void)setRequest:(GTM_NULLABLE NSURLRequest *)request { + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + if (![self isFetchingUnsynchronized]) { + _request = [request mutableCopy]; + } else { + GTMSESSION_ASSERT_DEBUG(0, @"request may not be set after beginFetch has been invoked"); + } + } // @synchronized(self) +} + +- (GTM_NULLABLE NSMutableURLRequest *)mutableRequestForTesting { + // Allow tests only to modify the request, useful during retries. + return _request; +} + +// Internal method for updating the request property such as on redirects. +- (void)updateMutableRequest:(GTM_NULLABLE NSMutableURLRequest *)request { + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + _request = request; + } // @synchronized(self) +} + +// Set a header field value on the request. Header field value changes will not +// affect a fetch after the fetch has begun. +- (void)setRequestValue:(GTM_NULLABLE NSString *)value forHTTPHeaderField:(NSString *)field { + if (![self isFetching]) { + [self updateRequestValue:value forHTTPHeaderField:field]; + } else { + GTMSESSION_ASSERT_DEBUG(0, @"request may not be set after beginFetch has been invoked"); + } +} + +// Internal method for updating request headers. +- (void)updateRequestValue:(GTM_NULLABLE NSString *)value forHTTPHeaderField:(NSString *)field { + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + [_request setValue:value forHTTPHeaderField:field]; + } // @synchronized(self) +} + +- (void)setResponse:(GTM_NULLABLE NSURLResponse *)response { + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + _response = response; + } // @synchronized(self) +} + +- (int64_t)bodyLength { + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + if (_bodyLength == NSURLSessionTransferSizeUnknown) { + if (_bodyData) { + _bodyLength = (int64_t)_bodyData.length; + } else if (_bodyFileURL) { + NSNumber *fileSizeNum = nil; + NSError *fileSizeError = nil; + if ([_bodyFileURL getResourceValue:&fileSizeNum + forKey:NSURLFileSizeKey + error:&fileSizeError]) { + _bodyLength = [fileSizeNum longLongValue]; + } + } + } + return _bodyLength; + } // @synchronized(self) +} + +- (BOOL)useUploadTask { + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + return _useUploadTask; + } // @synchronized(self) +} + +- (void)setUseUploadTask:(BOOL)flag { + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + if (flag != _useUploadTask) { + GTMSESSION_ASSERT_DEBUG(![self isFetchingUnsynchronized], + @"useUploadTask should not change after beginFetch has been invoked"); + _useUploadTask = flag; + } + } // @synchronized(self) +} + +- (GTM_NULLABLE NSURL *)bodyFileURL { + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + return _bodyFileURL; + } // @synchronized(self) +} + +- (void)setBodyFileURL:(GTM_NULLABLE NSURL *)fileURL { + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + // The comparison here is a trivial optimization and forgiveness for any client that + // repeatedly sets the property, so it just uses pointer comparison rather than isEqual:. + if (fileURL != _bodyFileURL) { + GTMSESSION_ASSERT_DEBUG(![self isFetchingUnsynchronized], + @"fileURL should not change after beginFetch has been invoked"); + + _bodyFileURL = fileURL; + } + } // @synchronized(self) +} + +- (GTM_NULLABLE GTMSessionFetcherBodyStreamProvider)bodyStreamProvider { + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + return _bodyStreamProvider; + } // @synchronized(self) +} + +- (void)setBodyStreamProvider:(GTM_NULLABLE GTMSessionFetcherBodyStreamProvider)block { + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + GTMSESSION_ASSERT_DEBUG(![self isFetchingUnsynchronized], + @"stream provider should not change after beginFetch has been invoked"); + + _bodyStreamProvider = [block copy]; + } // @synchronized(self) +} + +- (GTM_NULLABLE id)authorizer { + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + return _authorizer; + } // @synchronized(self) +} + +- (void)setAuthorizer:(GTM_NULLABLE id)authorizer { + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + if (authorizer != _authorizer) { + if ([self isFetchingUnsynchronized]) { + GTMSESSION_ASSERT_DEBUG(0, @"authorizer should not change after beginFetch has been invoked"); + } else { + _authorizer = authorizer; + } + } + } // @synchronized(self) +} + +- (GTM_NULLABLE NSData *)downloadedData { + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + return _downloadedData; + } // @synchronized(self) +} + +- (void)setDownloadedData:(GTM_NULLABLE NSData *)data { + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + _downloadedData = [data mutableCopy]; + } // @synchronized(self) +} + +- (int64_t)downloadedLength { + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + return _downloadedLength; + } // @synchronized(self) +} + +- (void)setDownloadedLength:(int64_t)length { + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + _downloadedLength = length; + } // @synchronized(self) +} + +- (dispatch_queue_t GTM_NONNULL_TYPE)callbackQueue { + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + return _callbackQueue; + } // @synchronized(self) +} + +- (void)setCallbackQueue:(dispatch_queue_t GTM_NULLABLE_TYPE)queue { + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + _callbackQueue = queue ?: dispatch_get_main_queue(); + } // @synchronized(self) +} + +- (GTM_NULLABLE NSURLSession *)session { + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + return _session; + } // @synchronized(self) +} + +- (NSInteger)servicePriority { + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + return _servicePriority; + } // @synchronized(self) +} + +- (void)setServicePriority:(NSInteger)value { + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + if (value != _servicePriority) { + GTMSESSION_ASSERT_DEBUG(![self isFetchingUnsynchronized], + @"servicePriority should not change after beginFetch has been invoked"); + + _servicePriority = value; + } + } // @synchronized(self) +} + + +- (void)setSession:(GTM_NULLABLE NSURLSession *)session { + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + _session = session; + } // @synchronized(self) +} + +- (BOOL)canShareSession { + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + return _canShareSession; + } // @synchronized(self) +} + +- (void)setCanShareSession:(BOOL)flag { + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + _canShareSession = flag; + } // @synchronized(self) +} + +- (BOOL)useBackgroundSession { + // This reflects if the user requested a background session, not necessarily + // if one was created. That is tracked with _usingBackgroundSession. + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + return _userRequestedBackgroundSession; + } // @synchronized(self) +} + +- (void)setUseBackgroundSession:(BOOL)flag { + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + if (flag != _userRequestedBackgroundSession) { + GTMSESSION_ASSERT_DEBUG(![self isFetchingUnsynchronized], + @"useBackgroundSession should not change after beginFetch has been invoked"); + + _userRequestedBackgroundSession = flag; + } + } // @synchronized(self) +} + +- (BOOL)isUsingBackgroundSession { + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + return _usingBackgroundSession; + } // @synchronized(self) +} + +- (void)setUsingBackgroundSession:(BOOL)flag { + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + _usingBackgroundSession = flag; + } // @synchronized(self) +} + +- (GTM_NULLABLE NSURLSession *)sessionNeedingInvalidation { + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + return _sessionNeedingInvalidation; + } // @synchronized(self) +} + +- (void)setSessionNeedingInvalidation:(GTM_NULLABLE NSURLSession *)session { + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + _sessionNeedingInvalidation = session; + } // @synchronized(self) +} + +- (NSOperationQueue * GTM_NONNULL_TYPE)sessionDelegateQueue { + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + return _delegateQueue; + } // @synchronized(self) +} + +- (void)setSessionDelegateQueue:(NSOperationQueue * GTM_NULLABLE_TYPE)queue { + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + if (queue != _delegateQueue) { + if ([self isFetchingUnsynchronized]) { + GTMSESSION_ASSERT_DEBUG(0, @"sessionDelegateQueue should not change after fetch begins"); + } else { + _delegateQueue = queue ?: [NSOperationQueue mainQueue]; + } + } + } // @synchronized(self) +} + +- (BOOL)userStoppedFetching { + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + return _userStoppedFetching; + } // @synchronized(self) +} + +- (GTM_NULLABLE id)userData { + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + return _userData; + } // @synchronized(self) +} + +- (void)setUserData:(GTM_NULLABLE id)theObj { + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + _userData = theObj; + } // @synchronized(self) +} + +- (GTM_NULLABLE NSURL *)destinationFileURL { + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + return _destinationFileURL; + } // @synchronized(self) +} + +- (void)setDestinationFileURL:(GTM_NULLABLE NSURL *)destinationFileURL { + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + if (((_destinationFileURL == nil) && (destinationFileURL == nil)) || + [_destinationFileURL isEqual:destinationFileURL]) { + return; + } + if (_sessionIdentifier) { + // This is something we don't expect to happen in production. + // However if it ever happen, leave a system log. + NSLog(@"%@: Destination File URL changed from (%@) to (%@) after session identifier has " + @"been created.", + [self class], _destinationFileURL, destinationFileURL); +#if DEBUG + // On both the simulator and devices, the path can change to the download file, but the name + // shouldn't change. Technically, this isn't supported in the fetcher, but the change of + // URL is expected to happen only across development runs through Xcode. + NSString *oldFilename = [_destinationFileURL lastPathComponent]; + NSString *newFilename = [destinationFileURL lastPathComponent]; + #pragma unused(oldFilename) + #pragma unused(newFilename) + GTMSESSION_ASSERT_DEBUG([oldFilename isEqualToString:newFilename], + @"Destination File URL cannot be changed after session identifier has been created"); +#endif + } + _destinationFileURL = destinationFileURL; + } // @synchronized(self) +} + +- (void)setProperties:(GTM_NULLABLE NSDictionary *)dict { + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + _properties = [dict mutableCopy]; + } // @synchronized(self) +} + +- (GTM_NULLABLE NSDictionary *)properties { + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + return _properties; + } // @synchronized(self) +} + +- (void)setProperty:(GTM_NULLABLE id)obj forKey:(NSString *)key { + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + if (_properties == nil && obj != nil) { + _properties = [[NSMutableDictionary alloc] init]; + } + [_properties setValue:obj forKey:key]; + } // @synchronized(self) +} + +- (GTM_NULLABLE id)propertyForKey:(NSString *)key { + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + return [_properties objectForKey:key]; + } // @synchronized(self) +} + +- (void)addPropertiesFromDictionary:(NSDictionary *)dict { + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + if (_properties == nil && dict != nil) { + [self setProperties:[dict mutableCopy]]; + } else { + [_properties addEntriesFromDictionary:dict]; + } + } // @synchronized(self) +} + +- (void)setCommentWithFormat:(id)format, ... { +#if !STRIP_GTM_FETCH_LOGGING + NSString *result = format; + if (format) { + va_list argList; + va_start(argList, format); + + result = [[NSString alloc] initWithFormat:format + arguments:argList]; + va_end(argList); + } + [self setComment:result]; +#endif +} + +#if !STRIP_GTM_FETCH_LOGGING +- (NSData *)loggedStreamData { + return _loggedStreamData; +} + +- (void)appendLoggedStreamData:dataToAdd { + if (!_loggedStreamData) { + _loggedStreamData = [NSMutableData data]; + } + [_loggedStreamData appendData:dataToAdd]; +} + +- (void)clearLoggedStreamData { + _loggedStreamData = nil; +} + +- (void)setDeferResponseBodyLogging:(BOOL)deferResponseBodyLogging { + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + if (deferResponseBodyLogging != _deferResponseBodyLogging) { + _deferResponseBodyLogging = deferResponseBodyLogging; + if (!deferResponseBodyLogging && !self.hasLoggedError) { + [_delegateQueue addOperationWithBlock:^{ + [self logNowWithError:nil]; + }]; + } + } + } // @synchronized(self) +} + +- (BOOL)deferResponseBodyLogging { + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + return _deferResponseBodyLogging; + } // @synchronized(self) +} + +#else ++ (void)setLoggingEnabled:(BOOL)flag { +} + ++ (BOOL)isLoggingEnabled { + return NO; +} +#endif // STRIP_GTM_FETCH_LOGGING + +@end + +@implementation GTMSessionFetcher (BackwardsCompatibilityOnly) + +- (void)setCookieStorageMethod:(NSInteger)method { + // For backwards compatibility with the old fetcher, we'll support the old constants. + // + // Clients using the GTMSessionFetcher class should set the cookie storage explicitly + // themselves. + NSHTTPCookieStorage *storage = nil; + switch(method) { + case 0: // kGTMHTTPFetcherCookieStorageMethodStatic + // nil storage will use [[self class] staticCookieStorage] when the fetch begins. + break; + case 1: // kGTMHTTPFetcherCookieStorageMethodFetchHistory + // Do nothing; use whatever was set by the fetcher service. + return; + case 2: // kGTMHTTPFetcherCookieStorageMethodSystemDefault + storage = [NSHTTPCookieStorage sharedHTTPCookieStorage]; + break; + case 3: // kGTMHTTPFetcherCookieStorageMethodNone + // Create temporary storage for this fetcher only. + storage = [[GTMSessionCookieStorage alloc] init]; + break; + default: + GTMSESSION_ASSERT_DEBUG(0, @"Invalid cookie storage method: %d", (int)method); + } + self.cookieStorage = storage; +} + +@end + +@implementation GTMSessionCookieStorage { + NSMutableArray *_cookies; + NSHTTPCookieAcceptPolicy _policy; +} + +- (id)init { + self = [super init]; + if (self != nil) { + _cookies = [[NSMutableArray alloc] init]; + } + return self; +} + +- (GTM_NULLABLE NSArray *)cookies { + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + return [_cookies copy]; + } // @synchronized(self) +} + +- (void)setCookie:(NSHTTPCookie *)cookie { + if (!cookie) return; + if (_policy == NSHTTPCookieAcceptPolicyNever) return; + + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + [self internalSetCookie:cookie]; + } // @synchronized(self) +} + +// Note: this should only be called from inside a @synchronized(self) block. +- (void)internalSetCookie:(NSHTTPCookie *)newCookie { + GTMSessionCheckSynchronized(self); + + if (_policy == NSHTTPCookieAcceptPolicyNever) return; + + BOOL isValidCookie = (newCookie.name.length > 0 + && newCookie.domain.length > 0 + && newCookie.path.length > 0); + GTMSESSION_ASSERT_DEBUG(isValidCookie, @"invalid cookie: %@", newCookie); + + if (isValidCookie) { + // Remove the cookie if it's currently in the array. + NSHTTPCookie *oldCookie = [self cookieMatchingCookie:newCookie]; + if (oldCookie) { + [_cookies removeObjectIdenticalTo:oldCookie]; + } + + if (![[self class] hasCookieExpired:newCookie]) { + [_cookies addObject:newCookie]; + } + } +} + +// Add all cookies in the new cookie array to the storage, +// replacing stored cookies as appropriate. +// +// Side effect: removes expired cookies from the storage array. +- (void)setCookies:(GTM_NULLABLE NSArray *)newCookies { + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + [self removeExpiredCookies]; + + for (NSHTTPCookie *newCookie in newCookies) { + [self internalSetCookie:newCookie]; + } + } // @synchronized(self) +} + +- (void)setCookies:(NSArray *)cookies forURL:(GTM_NULLABLE NSURL *)URL mainDocumentURL:(GTM_NULLABLE NSURL *)mainDocumentURL { + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + if (_policy == NSHTTPCookieAcceptPolicyNever) { + return; + } + + if (_policy == NSHTTPCookieAcceptPolicyOnlyFromMainDocumentDomain) { + NSString *mainHost = mainDocumentURL.host; + NSString *associatedHost = URL.host; + if (!mainHost || ![associatedHost hasSuffix:mainHost]) { + return; + } + } + } // @synchronized(self) + [self setCookies:cookies]; +} + +- (void)deleteCookie:(NSHTTPCookie *)cookie { + if (!cookie) return; + + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + NSHTTPCookie *foundCookie = [self cookieMatchingCookie:cookie]; + if (foundCookie) { + [_cookies removeObjectIdenticalTo:foundCookie]; + } + } // @synchronized(self) +} + +// Retrieve all cookies appropriate for the given URL, considering +// domain, path, cookie name, expiration, security setting. +// Side effect: removed expired cookies from the storage array. +- (GTM_NULLABLE NSArray *)cookiesForURL:(NSURL *)theURL { + NSMutableArray *foundCookies = nil; + + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + [self removeExpiredCookies]; + + // We'll prepend "." to the desired domain, since we want the + // actual domain "nytimes.com" to still match the cookie domain + // ".nytimes.com" when we check it below with hasSuffix. + NSString *host = theURL.host.lowercaseString; + NSString *path = theURL.path; + NSString *scheme = [theURL scheme]; + + NSString *requestingDomain = nil; + BOOL isLocalhostRetrieval = NO; + + if (IsLocalhost(host)) { + isLocalhostRetrieval = YES; + } else { + if (host.length > 0) { + requestingDomain = [@"." stringByAppendingString:host]; + } + } + + for (NSHTTPCookie *storedCookie in _cookies) { + NSString *cookieDomain = storedCookie.domain.lowercaseString; + NSString *cookiePath = storedCookie.path; + BOOL cookieIsSecure = [storedCookie isSecure]; + + BOOL isDomainOK; + + if (isLocalhostRetrieval) { + // Prior to 10.5.6, the domain stored into NSHTTPCookies for localhost + // is "localhost.local" + isDomainOK = (IsLocalhost(cookieDomain) + || [cookieDomain isEqual:@"localhost.local"]); + } else { + // Ensure we're matching exact domain names. We prepended a dot to the + // requesting domain, so we can also prepend one here if needed before + // checking if the request contains the cookie domain. + if (![cookieDomain hasPrefix:@"."]) { + cookieDomain = [@"." stringByAppendingString:cookieDomain]; + } + isDomainOK = [requestingDomain hasSuffix:cookieDomain]; + } + + BOOL isPathOK = [cookiePath isEqual:@"/"] || [path hasPrefix:cookiePath]; + BOOL isSecureOK = (!cookieIsSecure + || [scheme caseInsensitiveCompare:@"https"] == NSOrderedSame); + + if (isDomainOK && isPathOK && isSecureOK) { + if (foundCookies == nil) { + foundCookies = [NSMutableArray array]; + } + [foundCookies addObject:storedCookie]; + } + } + } // @synchronized(self) + return foundCookies; +} + +// Override methods from the NSHTTPCookieStorage (NSURLSessionTaskAdditions) category. +- (void)storeCookies:(NSArray *)cookies forTask:(NSURLSessionTask *)task { + NSURLRequest *currentRequest = task.currentRequest; + [self setCookies:cookies forURL:currentRequest.URL mainDocumentURL:nil]; +} + +- (void)getCookiesForTask:(NSURLSessionTask *)task + completionHandler:(void (^)(GTM_NSArrayOf(NSHTTPCookie *) *))completionHandler { + if (completionHandler) { + NSURLRequest *currentRequest = task.currentRequest; + NSURL *currentRequestURL = currentRequest.URL; + NSArray *cookies = [self cookiesForURL:currentRequestURL]; + completionHandler(cookies); + } +} + +// Return a cookie from the array with the same name, domain, and path as the +// given cookie, or else return nil if none found. +// +// Both the cookie being tested and all cookies in the storage array should +// be valid (non-nil name, domains, paths). +// +// Note: this should only be called from inside a @synchronized(self) block +- (GTM_NULLABLE NSHTTPCookie *)cookieMatchingCookie:(NSHTTPCookie *)cookie { + GTMSessionCheckSynchronized(self); + + NSString *name = cookie.name; + NSString *domain = cookie.domain; + NSString *path = cookie.path; + + GTMSESSION_ASSERT_DEBUG(name && domain && path, + @"Invalid stored cookie (name:%@ domain:%@ path:%@)", name, domain, path); + + for (NSHTTPCookie *storedCookie in _cookies) { + if ([storedCookie.name isEqual:name] + && [storedCookie.domain isEqual:domain] + && [storedCookie.path isEqual:path]) { + return storedCookie; + } + } + return nil; +} + +// Internal routine to remove any expired cookies from the array, excluding +// cookies with nil expirations. +// +// Note: this should only be called from inside a @synchronized(self) block +- (void)removeExpiredCookies { + GTMSessionCheckSynchronized(self); + + // Count backwards since we're deleting items from the array + for (NSInteger idx = (NSInteger)_cookies.count - 1; idx >= 0; idx--) { + NSHTTPCookie *storedCookie = [_cookies objectAtIndex:(NSUInteger)idx]; + if ([[self class] hasCookieExpired:storedCookie]) { + [_cookies removeObjectAtIndex:(NSUInteger)idx]; + } + } +} + ++ (BOOL)hasCookieExpired:(NSHTTPCookie *)cookie { + NSDate *expiresDate = [cookie expiresDate]; + if (expiresDate == nil) { + // Cookies seem to have a Expires property even when the expiresDate method returns nil. + id expiresVal = [[cookie properties] objectForKey:NSHTTPCookieExpires]; + if ([expiresVal isKindOfClass:[NSDate class]]) { + expiresDate = expiresVal; + } + } + BOOL hasExpired = (expiresDate != nil && [expiresDate timeIntervalSinceNow] < 0); + return hasExpired; +} + +- (void)removeAllCookies { + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + [_cookies removeAllObjects]; + } // @synchronized(self) +} + +- (NSHTTPCookieAcceptPolicy)cookieAcceptPolicy { + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + return _policy; + } // @synchronized(self) +} + +- (void)setCookieAcceptPolicy:(NSHTTPCookieAcceptPolicy)cookieAcceptPolicy { + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + _policy = cookieAcceptPolicy; + } // @synchronized(self) +} + +@end + +void GTMSessionFetcherAssertValidSelector(id GTM_NULLABLE_TYPE obj, SEL GTM_NULLABLE_TYPE sel, ...) { + // Verify that the object's selector is implemented with the proper + // number and type of arguments +#if DEBUG + va_list argList; + va_start(argList, sel); + + if (obj && sel) { + // Check that the selector is implemented + if (![obj respondsToSelector:sel]) { + NSLog(@"\"%@\" selector \"%@\" is unimplemented or misnamed", + NSStringFromClass([(id)obj class]), + NSStringFromSelector((SEL)sel)); + NSCAssert(0, @"callback selector unimplemented or misnamed"); + } else { + const char *expectedArgType; + unsigned int argCount = 2; // skip self and _cmd + NSMethodSignature *sig = [obj methodSignatureForSelector:sel]; + + // Check that each expected argument is present and of the correct type + while ((expectedArgType = va_arg(argList, const char*)) != 0) { + + if ([sig numberOfArguments] > argCount) { + const char *foundArgType = [sig getArgumentTypeAtIndex:argCount]; + + if (0 != strncmp(foundArgType, expectedArgType, strlen(expectedArgType))) { + NSLog(@"\"%@\" selector \"%@\" argument %d should be type %s", + NSStringFromClass([(id)obj class]), + NSStringFromSelector((SEL)sel), (argCount - 2), expectedArgType); + NSCAssert(0, @"callback selector argument type mistake"); + } + } + argCount++; + } + + // Check that the proper number of arguments are present in the selector + if (argCount != [sig numberOfArguments]) { + NSLog(@"\"%@\" selector \"%@\" should have %d arguments", + NSStringFromClass([(id)obj class]), + NSStringFromSelector((SEL)sel), (argCount - 2)); + NSCAssert(0, @"callback selector arguments incorrect"); + } + } + } + + va_end(argList); +#endif +} + +NSString *GTMFetcherCleanedUserAgentString(NSString *str) { + // Reference http://www.w3.org/Protocols/rfc2616/rfc2616-sec2.html + // and http://www-archive.mozilla.org/build/user-agent-strings.html + + if (str == nil) return @""; + + NSMutableString *result = [NSMutableString stringWithString:str]; + + // Replace spaces and commas with underscores + [result replaceOccurrencesOfString:@" " + withString:@"_" + options:0 + range:NSMakeRange(0, result.length)]; + [result replaceOccurrencesOfString:@"," + withString:@"_" + options:0 + range:NSMakeRange(0, result.length)]; + + // Delete http token separators and remaining whitespace + static NSCharacterSet *charsToDelete = nil; + if (charsToDelete == nil) { + // Make a set of unwanted characters + NSString *const kSeparators = @"()<>@;:\\\"/[]?={}"; + + NSMutableCharacterSet *mutableChars = + [[NSCharacterSet whitespaceAndNewlineCharacterSet] mutableCopy]; + [mutableChars addCharactersInString:kSeparators]; + charsToDelete = [mutableChars copy]; // hang on to an immutable copy + } + + while (1) { + NSRange separatorRange = [result rangeOfCharacterFromSet:charsToDelete]; + if (separatorRange.location == NSNotFound) break; + + [result deleteCharactersInRange:separatorRange]; + }; + + return result; +} + +NSString *GTMFetcherSystemVersionString(void) { + static NSString *sSavedSystemString; + + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + // The Xcode 8 SDKs finally cleaned up this mess by providing TARGET_OS_OSX + // and TARGET_OS_IOS, but to build with older SDKs, those don't exist and + // instead one has to rely on TARGET_OS_MAC (which is true for iOS, watchOS, + // and tvOS) and TARGET_OS_IPHONE (which is true for iOS, watchOS, tvOS). So + // one has to order these carefully so you pick off the specific things + // first. + // If the code can ever assume Xcode 8 or higher (even when building for + // older OSes), then + // TARGET_OS_MAC -> TARGET_OS_OSX + // TARGET_OS_IPHONE -> TARGET_OS_IOS + // TARGET_IPHONE_SIMULATOR -> TARGET_OS_SIMULATOR +#if TARGET_OS_WATCH + // watchOS - WKInterfaceDevice + + WKInterfaceDevice *currentDevice = [WKInterfaceDevice currentDevice]; + + NSString *rawModel = [currentDevice model]; + NSString *model = GTMFetcherCleanedUserAgentString(rawModel); + + NSString *systemVersion = [currentDevice systemVersion]; + +#if TARGET_OS_SIMULATOR + NSString *hardwareModel = @"sim"; +#else + NSString *hardwareModel; + struct utsname unameRecord; + if (uname(&unameRecord) == 0) { + NSString *machineName = @(unameRecord.machine); + hardwareModel = GTMFetcherCleanedUserAgentString(machineName); + } + if (hardwareModel.length == 0) { + hardwareModel = @"unk"; + } +#endif + + sSavedSystemString = [[NSString alloc] initWithFormat:@"%@/%@ hw/%@", + model, systemVersion, hardwareModel]; + // Example: Apple_Watch/3.0 hw/Watch1_2 +#elif TARGET_OS_TV || TARGET_OS_IPHONE + // iOS and tvOS have UIDevice, use that. + UIDevice *currentDevice = [UIDevice currentDevice]; + + NSString *rawModel = [currentDevice model]; + NSString *model = GTMFetcherCleanedUserAgentString(rawModel); + + NSString *systemVersion = [currentDevice systemVersion]; + +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_SIMULATOR + NSString *hardwareModel = @"sim"; +#else + NSString *hardwareModel; + struct utsname unameRecord; + if (uname(&unameRecord) == 0) { + NSString *machineName = @(unameRecord.machine); + hardwareModel = GTMFetcherCleanedUserAgentString(machineName); + } + if (hardwareModel.length == 0) { + hardwareModel = @"unk"; + } +#endif + + sSavedSystemString = [[NSString alloc] initWithFormat:@"%@/%@ hw/%@", + model, systemVersion, hardwareModel]; + // Example: iPod_Touch/2.2 hw/iPod1_1 + // Example: Apple_TV/9.2 hw/AppleTV5,3 +#elif TARGET_OS_MAC + // Mac build + NSProcessInfo *procInfo = [NSProcessInfo processInfo]; +#if !defined(MAC_OS_X_VERSION_10_10) + BOOL hasOperatingSystemVersion = NO; +#elif MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_10 + BOOL hasOperatingSystemVersion = + [procInfo respondsToSelector:@selector(operatingSystemVersion)]; +#else + BOOL hasOperatingSystemVersion = YES; +#endif + NSString *versString; + if (hasOperatingSystemVersion) { +#if defined(MAC_OS_X_VERSION_10_10) + // A reference to NSOperatingSystemVersion requires the 10.10 SDK. +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wunguarded-availability" +// Disable unguarded availability warning as we can't use the @availability macro until we require +// all clients to build with Xcode 9 or above. + NSOperatingSystemVersion version = procInfo.operatingSystemVersion; +#pragma clang diagnostic pop + versString = [NSString stringWithFormat:@"%ld.%ld.%ld", + (long)version.majorVersion, (long)version.minorVersion, + (long)version.patchVersion]; +#else +#pragma unused(procInfo) +#endif + } else { + // With Gestalt inexplicably deprecated in 10.8, we're reduced to reading + // the system plist file. + NSString *const kPath = @"/System/Library/CoreServices/SystemVersion.plist"; + NSDictionary *plist = [NSDictionary dictionaryWithContentsOfFile:kPath]; + versString = [plist objectForKey:@"ProductVersion"]; + if (versString.length == 0) { + versString = @"10.?.?"; + } + } + + sSavedSystemString = [[NSString alloc] initWithFormat:@"MacOSX/%@", versString]; +#elif defined(_SYS_UTSNAME_H) + // Foundation-only build + struct utsname unameRecord; + uname(&unameRecord); + + sSavedSystemString = [NSString stringWithFormat:@"%s/%s", + unameRecord.sysname, unameRecord.release]; // "Darwin/8.11.1" +#else +#error No branch taken for a default user agent +#endif + }); + return sSavedSystemString; +} + +NSString *GTMFetcherStandardUserAgentString(NSBundle * GTM_NULLABLE_TYPE bundle) { + NSString *result = [NSString stringWithFormat:@"%@ %@", + GTMFetcherApplicationIdentifier(bundle), + GTMFetcherSystemVersionString()]; + return result; +} + +NSString *GTMFetcherApplicationIdentifier(NSBundle * GTM_NULLABLE_TYPE bundle) { + @synchronized([GTMSessionFetcher class]) { + static NSMutableDictionary *sAppIDMap = nil; + + // If there's a bundle ID, use that; otherwise, use the process name + if (bundle == nil) { + bundle = [NSBundle mainBundle]; + } + NSString *bundleID = [bundle bundleIdentifier]; + if (bundleID == nil) { + bundleID = @""; + } + + NSString *identifier = [sAppIDMap objectForKey:bundleID]; + if (identifier) return identifier; + + // Apps may add a string to the info.plist to uniquely identify different builds. + identifier = [bundle objectForInfoDictionaryKey:@"GTMUserAgentID"]; + if (identifier.length == 0) { + if (bundleID.length > 0) { + identifier = bundleID; + } else { + // Fall back on the procname, prefixed by "proc" to flag that it's + // autogenerated and perhaps unreliable + NSString *procName = [[NSProcessInfo processInfo] processName]; + identifier = [NSString stringWithFormat:@"proc_%@", procName]; + } + } + + // Clean up whitespace and special characters + identifier = GTMFetcherCleanedUserAgentString(identifier); + + // If there's a version number, append that + NSString *version = [bundle objectForInfoDictionaryKey:@"CFBundleShortVersionString"]; + if (version.length == 0) { + version = [bundle objectForInfoDictionaryKey:@"CFBundleVersion"]; + } + + // Clean up whitespace and special characters + version = GTMFetcherCleanedUserAgentString(version); + + // Glue the two together (cleanup done above or else cleanup would strip the + // slash) + if (version.length > 0) { + identifier = [identifier stringByAppendingFormat:@"/%@", version]; + } + + if (sAppIDMap == nil) { + sAppIDMap = [[NSMutableDictionary alloc] init]; + } + [sAppIDMap setObject:identifier forKey:bundleID]; + return identifier; + } +} + +#if DEBUG && (!defined(NS_BLOCK_ASSERTIONS) || GTMSESSION_ASSERT_AS_LOG) +@implementation GTMSessionSyncMonitorInternal { + NSValue *_objectKey; // The synchronize target object. + const char *_functionName; // The function containing the monitored sync block. +} + +- (instancetype)initWithSynchronizationObject:(id)object + allowRecursive:(BOOL)allowRecursive + functionName:(const char *)functionName { + self = [super init]; + if (self) { + Class threadKey = [GTMSessionSyncMonitorInternal class]; + _objectKey = [NSValue valueWithNonretainedObject:object]; + _functionName = functionName; + + NSMutableDictionary *threadDict = [NSThread currentThread].threadDictionary; + NSMutableDictionary *counters = threadDict[threadKey]; + if (counters == nil) { + counters = [NSMutableDictionary dictionary]; + threadDict[(id)threadKey] = counters; + } + NSCountedSet *functionNamesCounter = counters[_objectKey]; + NSUInteger numberOfSyncingFunctions = functionNamesCounter.count; + + if (!allowRecursive) { + BOOL isTopLevelSyncScope = (numberOfSyncingFunctions == 0); + NSArray *stack = [NSThread callStackSymbols]; + GTMSESSION_ASSERT_DEBUG(isTopLevelSyncScope, + @"*** Recursive sync on %@ at %s; previous sync at %@\n%@", + [object class], functionName, functionNamesCounter.allObjects, + [stack subarrayWithRange:NSMakeRange(1, stack.count - 1)]); + } + + if (!functionNamesCounter) { + functionNamesCounter = [NSCountedSet set]; + counters[_objectKey] = functionNamesCounter; + } + [functionNamesCounter addObject:(id _Nonnull)@(functionName)]; + } + return self; +} + +- (void)dealloc { + Class threadKey = [GTMSessionSyncMonitorInternal class]; + + NSMutableDictionary *threadDict = [NSThread currentThread].threadDictionary; + NSMutableDictionary *counters = threadDict[threadKey]; + NSCountedSet *functionNamesCounter = counters[_objectKey]; + NSString *functionNameStr = @(_functionName); + NSUInteger numberOfSyncsByThisFunction = [functionNamesCounter countForObject:functionNameStr]; + NSArray *stack = [NSThread callStackSymbols]; + GTMSESSION_ASSERT_DEBUG(numberOfSyncsByThisFunction > 0, @"Sync not found on %@ at %s\n%@", + [_objectKey.nonretainedObjectValue class], _functionName, + [stack subarrayWithRange:NSMakeRange(1, stack.count - 1)]); + [functionNamesCounter removeObject:functionNameStr]; + if (functionNamesCounter.count == 0) { + [counters removeObjectForKey:_objectKey]; + } +} + ++ (NSArray *)functionsHoldingSynchronizationOnObject:(id)object { + Class threadKey = [GTMSessionSyncMonitorInternal class]; + NSValue *localObjectKey = [NSValue valueWithNonretainedObject:object]; + + NSMutableDictionary *threadDict = [NSThread currentThread].threadDictionary; + NSMutableDictionary *counters = threadDict[threadKey]; + NSCountedSet *functionNamesCounter = counters[localObjectKey]; + return functionNamesCounter.count > 0 ? functionNamesCounter.allObjects : nil; +} +@end +#endif // DEBUG && (!defined(NS_BLOCK_ASSERTIONS) || GTMSESSION_ASSERT_AS_LOG) +GTM_ASSUME_NONNULL_END diff --git a/shlack/Pods/GTMSessionFetcher/Source/GTMSessionFetcherLogging.h b/shlack/Pods/GTMSessionFetcher/Source/GTMSessionFetcherLogging.h new file mode 100644 index 0000000..5ccea78 --- /dev/null +++ b/shlack/Pods/GTMSessionFetcher/Source/GTMSessionFetcherLogging.h @@ -0,0 +1,112 @@ +/* Copyright 2014 Google Inc. All rights reserved. + * + * 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 "GTMSessionFetcher.h" + +// GTM HTTP Logging +// +// All traffic using GTMSessionFetcher can be easily logged. Call +// +// [GTMSessionFetcher setLoggingEnabled:YES]; +// +// to begin generating log files. +// +// Unless explicitly set by the application using +setLoggingDirectory:, +// logs are put into a default directory, located at: +// * macOS: ~/Desktop/GTMHTTPDebugLogs +// * iOS simulator: ~/GTMHTTPDebugLogs (in application sandbox) +// * iOS device: ~/Documents/GTMHTTPDebugLogs (in application sandbox) +// +// Tip: use the Finder's "Sort By Date" to find the most recent logs. +// +// Each run of an application gets a separate set of log files. An html +// file is generated to simplify browsing the run's http transactions. +// The html file includes javascript links for inline viewing of uploaded +// and downloaded data. +// +// A symlink is created in the logs folder to simplify finding the html file +// for the latest run of the application; the symlink is called +// +// AppName_http_log_newest.html +// +// For better viewing of XML logs, use Camino or Firefox rather than Safari. +// +// Each fetcher may be given a comment to be inserted as a label in the logs, +// such as +// [fetcher setCommentWithFormat:@"retrieve item %@", itemName]; +// +// Projects may define STRIP_GTM_FETCH_LOGGING to remove logging code. + +#if !STRIP_GTM_FETCH_LOGGING + +@interface GTMSessionFetcher (GTMSessionFetcherLogging) + +// Note: on macOS the default logs directory is ~/Desktop/GTMHTTPDebugLogs; on +// iOS simulators it will be the ~/GTMHTTPDebugLogs (in the app sandbox); on +// iOS devices it will be in ~/Documents/GTMHTTPDebugLogs (in the app sandbox). +// These directories will be created as needed, and are excluded from backups +// to iCloud and iTunes. +// +// If a custom directory is set, the directory should already exist. It is +// the application's responsibility to exclude any custom directory from +// backups, if desired. ++ (void)setLoggingDirectory:(NSString *)path; ++ (NSString *)loggingDirectory; + +// client apps can turn logging on and off ++ (void)setLoggingEnabled:(BOOL)isLoggingEnabled; ++ (BOOL)isLoggingEnabled; + +// client apps can turn off logging to a file if they want to only check +// the fetcher's log property ++ (void)setLoggingToFileEnabled:(BOOL)isLoggingToFileEnabled; ++ (BOOL)isLoggingToFileEnabled; + +// client apps can optionally specify process name and date string used in +// log file names ++ (void)setLoggingProcessName:(NSString *)processName; ++ (NSString *)loggingProcessName; + ++ (void)setLoggingDateStamp:(NSString *)dateStamp; ++ (NSString *)loggingDateStamp; + +// client apps can specify the directory for the log for this specific run, +// typically to match the directory used by another fetcher class, like: +// +// [GTMSessionFetcher setLogDirectoryForCurrentRun:[GTMHTTPFetcher logDirectoryForCurrentRun]]; +// +// Setting this overrides the logging directory, process name, and date stamp when writing +// the log file. ++ (void)setLogDirectoryForCurrentRun:(NSString *)logDirectoryForCurrentRun; ++ (NSString *)logDirectoryForCurrentRun; + +// Prunes old log directories that have not been modified since the provided date. +// This will not delete the current run's log directory. ++ (void)deleteLogDirectoriesOlderThanDate:(NSDate *)date; + +// internal; called by fetcher +- (void)logFetchWithError:(NSError *)error; +- (NSInputStream *)loggedInputStreamForInputStream:(NSInputStream *)inputStream; +- (GTMSessionFetcherBodyStreamProvider)loggedStreamProviderForStreamProvider: + (GTMSessionFetcherBodyStreamProvider)streamProvider; + +// internal; accessors useful for viewing logs ++ (NSString *)processNameLogPrefix; ++ (NSString *)symlinkNameSuffix; ++ (NSString *)htmlFileName; + +@end + +#endif // !STRIP_GTM_FETCH_LOGGING diff --git a/shlack/Pods/GTMSessionFetcher/Source/GTMSessionFetcherLogging.m b/shlack/Pods/GTMSessionFetcher/Source/GTMSessionFetcherLogging.m new file mode 100644 index 0000000..cdf5c17 --- /dev/null +++ b/shlack/Pods/GTMSessionFetcher/Source/GTMSessionFetcherLogging.m @@ -0,0 +1,982 @@ +/* Copyright 2014 Google Inc. All rights reserved. + * + * 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. + */ + +#if !defined(__has_feature) || !__has_feature(objc_arc) +#error "This file requires ARC support." +#endif + +#include +#include + +#import "GTMSessionFetcherLogging.h" + +#ifndef STRIP_GTM_FETCH_LOGGING + #error GTMSessionFetcher headers should have defaulted this if it wasn't already defined. +#endif + +#if !STRIP_GTM_FETCH_LOGGING + +// Sensitive credential strings are replaced in logs with _snip_ +// +// Apps that must see the contents of sensitive tokens can set this to 1 +#ifndef SKIP_GTM_FETCH_LOGGING_SNIPPING +#define SKIP_GTM_FETCH_LOGGING_SNIPPING 0 +#endif + +// If GTMReadMonitorInputStream is available, it can be used for +// capturing uploaded streams of data +// +// We locally declare methods of GTMReadMonitorInputStream so we +// do not need to import the header, as some projects may not have it available +#if !GTMSESSION_BUILD_COMBINED_SOURCES +@interface GTMReadMonitorInputStream : NSInputStream + ++ (instancetype)inputStreamWithStream:(NSInputStream *)input; + +@property (assign) id readDelegate; +@property (assign) SEL readSelector; + +@end +#else +@class GTMReadMonitorInputStream; +#endif // !GTMSESSION_BUILD_COMBINED_SOURCES + +@interface GTMSessionFetcher (GTMHTTPFetcherLoggingUtilities) + ++ (NSString *)headersStringForDictionary:(NSDictionary *)dict; ++ (NSString *)snipSubstringOfString:(NSString *)originalStr + betweenStartString:(NSString *)startStr + endString:(NSString *)endStr; +- (void)inputStream:(GTMReadMonitorInputStream *)stream + readIntoBuffer:(void *)buffer + length:(int64_t)length; + +@end + +@implementation GTMSessionFetcher (GTMSessionFetcherLogging) + +// fetchers come and fetchers go, but statics are forever +static BOOL gIsLoggingEnabled = NO; +static BOOL gIsLoggingToFile = YES; +static NSString *gLoggingDirectoryPath = nil; +static NSString *gLogDirectoryForCurrentRun = nil; +static NSString *gLoggingDateStamp = nil; +static NSString *gLoggingProcessName = nil; + ++ (void)setLoggingDirectory:(NSString *)path { + gLoggingDirectoryPath = [path copy]; +} + ++ (NSString *)loggingDirectory { + if (!gLoggingDirectoryPath) { + NSArray *paths = nil; +#if TARGET_IPHONE_SIMULATOR + // default to a directory called GTMHTTPDebugLogs into a sandbox-safe + // directory that a developer can find easily, the application home + paths = @[ NSHomeDirectory() ]; +#elif TARGET_OS_IPHONE + // Neither ~/Desktop nor ~/Home is writable on an actual iOS, watchOS, or tvOS device. + // Put it in ~/Documents. + paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); +#else + // default to a directory called GTMHTTPDebugLogs in the desktop folder + paths = NSSearchPathForDirectoriesInDomains(NSDesktopDirectory, NSUserDomainMask, YES); +#endif + + NSString *desktopPath = paths.firstObject; + if (desktopPath) { + NSString *const kGTMLogFolderName = @"GTMHTTPDebugLogs"; + NSString *logsFolderPath = [desktopPath stringByAppendingPathComponent:kGTMLogFolderName]; + + NSFileManager *fileMgr = [NSFileManager defaultManager]; + BOOL isDir; + BOOL doesFolderExist = [fileMgr fileExistsAtPath:logsFolderPath isDirectory:&isDir]; + if (!doesFolderExist) { + // make the directory + doesFolderExist = [fileMgr createDirectoryAtPath:logsFolderPath + withIntermediateDirectories:YES + attributes:nil + error:NULL]; + if (doesFolderExist) { + // The directory has been created. Exclude it from backups. + NSURL *pathURL = [NSURL fileURLWithPath:logsFolderPath isDirectory:YES]; + [pathURL setResourceValue:@YES forKey:NSURLIsExcludedFromBackupKey error:NULL]; + } + } + + if (doesFolderExist) { + // it's there; store it in the global + gLoggingDirectoryPath = [logsFolderPath copy]; + } + } + } + return gLoggingDirectoryPath; +} + ++ (void)setLogDirectoryForCurrentRun:(NSString *)logDirectoryForCurrentRun { + // Set the path for this run's logs. + gLogDirectoryForCurrentRun = [logDirectoryForCurrentRun copy]; +} + ++ (NSString *)logDirectoryForCurrentRun { + // make a directory for this run's logs, like SyncProto_logs_10-16_01-56-58PM + if (gLogDirectoryForCurrentRun) return gLogDirectoryForCurrentRun; + + NSString *parentDir = [self loggingDirectory]; + NSString *logNamePrefix = [self processNameLogPrefix]; + NSString *dateStamp = [self loggingDateStamp]; + NSString *dirName = [NSString stringWithFormat:@"%@%@", logNamePrefix, dateStamp]; + NSString *logDirectory = [parentDir stringByAppendingPathComponent:dirName]; + + if (gIsLoggingToFile) { + NSFileManager *fileMgr = [NSFileManager defaultManager]; + // Be sure that the first time this app runs, it's not writing to a preexisting folder + static BOOL gShouldReuseFolder = NO; + if (!gShouldReuseFolder) { + gShouldReuseFolder = YES; + NSString *origLogDir = logDirectory; + for (int ctr = 2; ctr < 20; ++ctr) { + if (![fileMgr fileExistsAtPath:logDirectory]) break; + + // append a digit + logDirectory = [origLogDir stringByAppendingFormat:@"_%d", ctr]; + } + } + if (![fileMgr createDirectoryAtPath:logDirectory + withIntermediateDirectories:YES + attributes:nil + error:NULL]) return nil; + } + gLogDirectoryForCurrentRun = logDirectory; + + return gLogDirectoryForCurrentRun; +} + ++ (void)setLoggingEnabled:(BOOL)isLoggingEnabled { + gIsLoggingEnabled = isLoggingEnabled; +} + ++ (BOOL)isLoggingEnabled { + return gIsLoggingEnabled; +} + ++ (void)setLoggingToFileEnabled:(BOOL)isLoggingToFileEnabled { + gIsLoggingToFile = isLoggingToFileEnabled; +} + ++ (BOOL)isLoggingToFileEnabled { + return gIsLoggingToFile; +} + ++ (void)setLoggingProcessName:(NSString *)processName { + gLoggingProcessName = [processName copy]; +} + ++ (NSString *)loggingProcessName { + // get the process name (once per run) replacing spaces with underscores + if (!gLoggingProcessName) { + NSString *procName = [[NSProcessInfo processInfo] processName]; + gLoggingProcessName = [procName stringByReplacingOccurrencesOfString:@" " withString:@"_"]; + } + return gLoggingProcessName; +} + ++ (void)setLoggingDateStamp:(NSString *)dateStamp { + gLoggingDateStamp = [dateStamp copy]; +} + ++ (NSString *)loggingDateStamp { + // We'll pick one date stamp per run, so a run that starts at a later second + // will get a unique results html file + if (!gLoggingDateStamp) { + // produce a string like 08-21_01-41-23PM + + NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; + [formatter setFormatterBehavior:NSDateFormatterBehavior10_4]; + [formatter setDateFormat:@"M-dd_hh-mm-ssa"]; + + gLoggingDateStamp = [formatter stringFromDate:[NSDate date]]; + } + return gLoggingDateStamp; +} + ++ (NSString *)processNameLogPrefix { + static NSString *gPrefix = nil; + if (!gPrefix) { + NSString *processName = [self loggingProcessName]; + gPrefix = [[NSString alloc] initWithFormat:@"%@_log_", processName]; + } + return gPrefix; +} + ++ (NSString *)symlinkNameSuffix { + return @"_log_newest.html"; +} + ++ (NSString *)htmlFileName { + return @"aperçu_http_log.html"; +} + ++ (void)deleteLogDirectoriesOlderThanDate:(NSDate *)cutoffDate { + NSFileManager *fileMgr = [NSFileManager defaultManager]; + NSURL *parentDir = [NSURL fileURLWithPath:[[self class] loggingDirectory]]; + NSURL *logDirectoryForCurrentRun = + [NSURL fileURLWithPath:[[self class] logDirectoryForCurrentRun]]; + NSError *error; + NSArray *contents = [fileMgr contentsOfDirectoryAtURL:parentDir + includingPropertiesForKeys:@[ NSURLContentModificationDateKey ] + options:0 + error:&error]; + for (NSURL *itemURL in contents) { + if ([itemURL isEqual:logDirectoryForCurrentRun]) continue; + + NSDate *modDate; + if ([itemURL getResourceValue:&modDate + forKey:NSURLContentModificationDateKey + error:&error]) { + if ([modDate compare:cutoffDate] == NSOrderedAscending) { + if (![fileMgr removeItemAtURL:itemURL error:&error]) { + NSLog(@"deleteLogDirectoriesOlderThanDate failed to delete %@: %@", + itemURL.path, error); + } + } + } else { + NSLog(@"deleteLogDirectoriesOlderThanDate failed to get mod date of %@: %@", + itemURL.path, error); + } + } +} + +// formattedStringFromData returns a prettyprinted string for XML or JSON input, +// and a plain string for other input data +- (NSString *)formattedStringFromData:(NSData *)inputData + contentType:(NSString *)contentType + JSON:(NSDictionary **)outJSON { + if (!inputData) return nil; + + // if the content type is JSON and we have the parsing class available, use that + if ([contentType hasPrefix:@"application/json"] && inputData.length > 5) { + // convert from JSON string to NSObjects and back to a formatted string + NSMutableDictionary *obj = [NSJSONSerialization JSONObjectWithData:inputData + options:NSJSONReadingMutableContainers + error:NULL]; + if (obj) { + if (outJSON) *outJSON = obj; + if ([obj isKindOfClass:[NSMutableDictionary class]]) { + // for security and privacy, omit OAuth 2 response access and refresh tokens + if ([obj valueForKey:@"refresh_token"] != nil) { + [obj setObject:@"_snip_" forKey:@"refresh_token"]; + } + if ([obj valueForKey:@"access_token"] != nil) { + [obj setObject:@"_snip_" forKey:@"access_token"]; + } + } + NSData *data = [NSJSONSerialization dataWithJSONObject:obj + options:NSJSONWritingPrettyPrinted + error:NULL]; + if (data) { + NSString *jsonStr = [[NSString alloc] initWithData:data + encoding:NSUTF8StringEncoding]; + return jsonStr; + } + } + } + +#if !TARGET_OS_IPHONE && !GTM_SKIP_LOG_XMLFORMAT + // verify that this data starts with the bytes indicating XML + + NSString *const kXMLLintPath = @"/usr/bin/xmllint"; + static BOOL gHasCheckedAvailability = NO; + static BOOL gIsXMLLintAvailable = NO; + + if (!gHasCheckedAvailability) { + gIsXMLLintAvailable = [[NSFileManager defaultManager] fileExistsAtPath:kXMLLintPath]; + gHasCheckedAvailability = YES; + } + if (gIsXMLLintAvailable + && inputData.length > 5 + && strncmp(inputData.bytes, " 0) { + // success + inputData = formattedData; + } + } +#else + // we can't call external tasks on the iPhone; leave the XML unformatted +#endif + + NSString *dataStr = [[NSString alloc] initWithData:inputData + encoding:NSUTF8StringEncoding]; + return dataStr; +} + +// stringFromStreamData creates a string given the supplied data +// +// If NSString can create a UTF-8 string from the data, then that is returned. +// +// Otherwise, this routine tries to find a MIME boundary at the beginning of the data block, and +// uses that to break up the data into parts. Each part will be used to try to make a UTF-8 string. +// For parts that fail, a replacement string showing the part header and <> is supplied +// in place of the binary data. + +- (NSString *)stringFromStreamData:(NSData *)data + contentType:(NSString *)contentType { + + if (!data) return nil; + + // optimistically, see if the whole data block is UTF-8 + NSString *streamDataStr = [self formattedStringFromData:data + contentType:contentType + JSON:NULL]; + if (streamDataStr) return streamDataStr; + + // Munge a buffer by replacing non-ASCII bytes with underscores, and turn that munged buffer an + // NSString. That gives us a string we can use with NSScanner. + NSMutableData *mutableData = [NSMutableData dataWithData:data]; + unsigned char *bytes = (unsigned char *)mutableData.mutableBytes; + + for (unsigned int idx = 0; idx < mutableData.length; ++idx) { + if (bytes[idx] > 0x7F || bytes[idx] == 0) { + bytes[idx] = '_'; + } + } + + NSString *mungedStr = [[NSString alloc] initWithData:mutableData + encoding:NSUTF8StringEncoding]; + if (mungedStr) { + + // scan for the boundary string + NSString *boundary = nil; + NSScanner *scanner = [NSScanner scannerWithString:mungedStr]; + + if ([scanner scanUpToString:@"\r\n" intoString:&boundary] + && [boundary hasPrefix:@"--"]) { + + // we found a boundary string; use it to divide the string into parts + NSArray *mungedParts = [mungedStr componentsSeparatedByString:boundary]; + + // look at each munged part in the original string, and try to convert those into UTF-8 + NSMutableArray *origParts = [NSMutableArray array]; + NSUInteger offset = 0; + for (NSString *mungedPart in mungedParts) { + NSUInteger partSize = mungedPart.length; + NSData *origPartData = [data subdataWithRange:NSMakeRange(offset, partSize)]; + NSString *origPartStr = [[NSString alloc] initWithData:origPartData + encoding:NSUTF8StringEncoding]; + if (origPartStr) { + // we could make this original part into UTF-8; use the string + [origParts addObject:origPartStr]; + } else { + // this part can't be made into UTF-8; scan the header, if we can + NSString *header = nil; + NSScanner *headerScanner = [NSScanner scannerWithString:mungedPart]; + if (![headerScanner scanUpToString:@"\r\n\r\n" intoString:&header]) { + // we couldn't find a header + header = @""; + } + // make a part string with the header and <> + NSString *binStr = [NSString stringWithFormat:@"\r%@\r<<%lu bytes>>\r", + header, (long)(partSize - header.length)]; + [origParts addObject:binStr]; + } + offset += partSize + boundary.length; + } + // rejoin the original parts + streamDataStr = [origParts componentsJoinedByString:boundary]; + } + } + if (!streamDataStr) { + // give up; just make a string showing the uploaded bytes + streamDataStr = [NSString stringWithFormat:@"<<%u bytes>>", (unsigned int)data.length]; + } + return streamDataStr; +} + +// logFetchWithError is called following a successful or failed fetch attempt +// +// This method does all the work for appending to and creating log files + +- (void)logFetchWithError:(NSError *)error { + if (![[self class] isLoggingEnabled]) return; + NSString *logDirectory = [[self class] logDirectoryForCurrentRun]; + if (!logDirectory) return; + NSString *processName = [[self class] loggingProcessName]; + + // TODO: add Javascript to display response data formatted in hex + + // each response's NSData goes into its own xml or txt file, though all responses for this run of + // the app share a main html file. This counter tracks all fetch responses for this app run. + // + // we'll use a local variable since this routine may be reentered while waiting for XML formatting + // to be completed by an external task + static int gResponseCounter = 0; + int responseCounter = ++gResponseCounter; + + NSURLResponse *response = [self response]; + NSDictionary *responseHeaders = [self responseHeaders]; + NSString *responseDataStr = nil; + NSDictionary *responseJSON = nil; + + // if there's response data, decide what kind of file to put it in based on the first bytes of the + // file or on the mime type supplied by the server + NSString *responseMIMEType = [response MIMEType]; + BOOL isResponseImage = NO; + + // file name for an image data file + NSString *responseDataFileName = nil; + + int64_t responseDataLength = self.downloadedLength; + if (responseDataLength > 0) { + NSData *downloadedData = self.downloadedData; + if (downloadedData == nil + && responseDataLength > 0 + && responseDataLength < 20000 + && self.destinationFileURL) { + // There's a download file that's not too big, so get the data to display from the downloaded + // file. + NSURL *destinationURL = self.destinationFileURL; + downloadedData = [NSData dataWithContentsOfURL:destinationURL]; + } + NSString *responseType = [responseHeaders valueForKey:@"Content-Type"]; + responseDataStr = [self formattedStringFromData:downloadedData + contentType:responseType + JSON:&responseJSON]; + NSString *responseDataExtn = nil; + NSData *dataToWrite = nil; + if (responseDataStr) { + // we were able to make a UTF-8 string from the response data + if ([responseMIMEType isEqual:@"application/atom+xml"] + || [responseMIMEType hasSuffix:@"/xml"]) { + responseDataExtn = @"xml"; + dataToWrite = [responseDataStr dataUsingEncoding:NSUTF8StringEncoding]; + } + } else if ([responseMIMEType isEqual:@"image/jpeg"]) { + responseDataExtn = @"jpg"; + dataToWrite = downloadedData; + isResponseImage = YES; + } else if ([responseMIMEType isEqual:@"image/gif"]) { + responseDataExtn = @"gif"; + dataToWrite = downloadedData; + isResponseImage = YES; + } else if ([responseMIMEType isEqual:@"image/png"]) { + responseDataExtn = @"png"; + dataToWrite = downloadedData; + isResponseImage = YES; + } else { + // add more non-text types here + } + // if we have an extension, save the raw data in a file with that extension + if (responseDataExtn && dataToWrite) { + // generate a response file base name like + NSString *responseBaseName = [NSString stringWithFormat:@"fetch_%d_response", responseCounter]; + responseDataFileName = [responseBaseName stringByAppendingPathExtension:responseDataExtn]; + NSString *responseDataFilePath = [logDirectory stringByAppendingPathComponent:responseDataFileName]; + + NSError *downloadedError = nil; + if (gIsLoggingToFile && ![dataToWrite writeToFile:responseDataFilePath + options:0 + error:&downloadedError]) { + NSLog(@"%@ logging write error:%@ (%@)", [self class], downloadedError, responseDataFileName); + } + } + } + // we'll have one main html file per run of the app + NSString *htmlName = [[self class] htmlFileName]; + NSString *htmlPath =[logDirectory stringByAppendingPathComponent:htmlName]; + + // if the html file exists (from logging previous fetches) we don't need + // to re-write the header or the scripts + NSFileManager *fileMgr = [NSFileManager defaultManager]; + BOOL didFileExist = [fileMgr fileExistsAtPath:htmlPath]; + + NSMutableString* outputHTML = [NSMutableString string]; + + // we need a header to say we'll have UTF-8 text + if (!didFileExist) { + [outputHTML appendFormat:@"%@ HTTP fetch log %@", + processName, [[self class] loggingDateStamp]]; + } + // now write the visible html elements + NSString *copyableFileName = [NSString stringWithFormat:@"fetch_%d.txt", responseCounter]; + + NSDate *now = [NSDate date]; + // write the date & time, the comment, and the link to the plain-text (copyable) log + [outputHTML appendFormat:@"%@      ", now]; + + NSString *comment = [self comment]; + if (comment.length > 0) { + [outputHTML appendFormat:@"%@      ", comment]; + } + [outputHTML appendFormat:@"request/response log
", copyableFileName]; + NSTimeInterval elapsed = -self.initialBeginFetchDate.timeIntervalSinceNow; + [outputHTML appendFormat:@"elapsed: %5.3fsec
", elapsed]; + + // write the request URL + NSURLRequest *request = self.request; + NSString *requestMethod = request.HTTPMethod; + NSURL *requestURL = request.URL; + + // Save the request URL for next time in case this redirects. + NSString *redirectedFromURLString = [self.redirectedFromURL absoluteString]; + self.redirectedFromURL = [requestURL copy]; + if (redirectedFromURLString) { + [outputHTML appendFormat:@"redirected from %@
", + redirectedFromURLString]; + } + [outputHTML appendFormat:@"request: %@ %@
\n", requestMethod, requestURL]; + + // write the request headers + NSDictionary *requestHeaders = request.allHTTPHeaderFields; + NSUInteger numberOfRequestHeaders = requestHeaders.count; + if (numberOfRequestHeaders > 0) { + // Indicate if the request is authorized; warn if the request is authorized but non-SSL + NSString *auth = [requestHeaders objectForKey:@"Authorization"]; + NSString *headerDetails = @""; + if (auth) { + BOOL isInsecure = [[requestURL scheme] isEqual:@"http"]; + if (isInsecure) { + // 26A0 = ⚠ + headerDetails = + @"   authorized, non-SSL "; + } else { + headerDetails = @"   authorized"; + } + } + NSString *cookiesHdr = [requestHeaders objectForKey:@"Cookie"]; + if (cookiesHdr) { + headerDetails = [headerDetails stringByAppendingString:@"   cookies"]; + } + NSString *matchHdr = [requestHeaders objectForKey:@"If-Match"]; + if (matchHdr) { + headerDetails = [headerDetails stringByAppendingString:@"   if-match"]; + } + matchHdr = [requestHeaders objectForKey:@"If-None-Match"]; + if (matchHdr) { + headerDetails = [headerDetails stringByAppendingString:@"   if-none-match"]; + } + [outputHTML appendFormat:@"   headers: %d %@
", + (int)numberOfRequestHeaders, headerDetails]; + } else { + [outputHTML appendFormat:@"   headers: none
"]; + } + // write the request post data + NSData *bodyData = nil; + NSData *loggedStreamData = self.loggedStreamData; + if (loggedStreamData) { + bodyData = loggedStreamData; + } else { + bodyData = self.bodyData; + if (bodyData == nil) { + bodyData = self.request.HTTPBody; + } + } + uint64_t bodyDataLength = bodyData.length; + + if (bodyData.length == 0) { + // If the data is in a body upload file URL, read that in if it's not huge. + NSURL *bodyFileURL = self.bodyFileURL; + if (bodyFileURL) { + NSNumber *fileSizeNum = nil; + NSError *fileSizeError = nil; + if ([bodyFileURL getResourceValue:&fileSizeNum + forKey:NSURLFileSizeKey + error:&fileSizeError]) { + bodyDataLength = [fileSizeNum unsignedLongLongValue]; + if (bodyDataLength > 0 && bodyDataLength < 50000) { + bodyData = [NSData dataWithContentsOfURL:bodyFileURL + options:NSDataReadingUncached + error:&fileSizeError]; + } + } + } + } + NSString *bodyDataStr = nil; + NSString *postType = [requestHeaders valueForKey:@"Content-Type"]; + + if (bodyDataLength > 0) { + [outputHTML appendFormat:@"   data: %llu bytes, %@
\n", + bodyDataLength, postType ? postType : @"(no type)"]; + NSString *logRequestBody = self.logRequestBody; + if (logRequestBody) { + bodyDataStr = [logRequestBody copy]; + self.logRequestBody = nil; + } else { + bodyDataStr = [self stringFromStreamData:bodyData + contentType:postType]; + if (bodyDataStr) { + // remove OAuth 2 client secret and refresh token + bodyDataStr = [[self class] snipSubstringOfString:bodyDataStr + betweenStartString:@"client_secret=" + endString:@"&"]; + bodyDataStr = [[self class] snipSubstringOfString:bodyDataStr + betweenStartString:@"refresh_token=" + endString:@"&"]; + // remove ClientLogin password + bodyDataStr = [[self class] snipSubstringOfString:bodyDataStr + betweenStartString:@"&Passwd=" + endString:@"&"]; + } + } + } else { + // no post data + } + // write the response status, MIME type, URL + NSInteger status = [self statusCode]; + if (response) { + NSString *statusString = @""; + if (status != 0) { + if (status == 200 || status == 201) { + statusString = [NSString stringWithFormat:@"%ld", (long)status]; + + // report any JSON-RPC error + if ([responseJSON isKindOfClass:[NSDictionary class]]) { + NSDictionary *jsonError = [responseJSON objectForKey:@"error"]; + if ([jsonError isKindOfClass:[NSDictionary class]]) { + NSString *jsonCode = [[jsonError valueForKey:@"code"] description]; + NSString *jsonMessage = [jsonError valueForKey:@"message"]; + if (jsonCode || jsonMessage) { + // 2691 = ⚑ + NSString *const jsonErrFmt = + @"   JSON error: %@ %@  ⚑"; + statusString = [statusString stringByAppendingFormat:jsonErrFmt, + jsonCode ? jsonCode : @"", + jsonMessage ? jsonMessage : @""]; + } + } + } + } else { + // purple for anything other than 200 or 201 + NSString *flag = status >= 400 ? @" ⚑" : @""; // 2691 = ⚑ + NSString *explanation = [NSHTTPURLResponse localizedStringForStatusCode:status]; + NSString *const statusFormat = @"%ld %@ %@"; + statusString = [NSString stringWithFormat:statusFormat, (long)status, explanation, flag]; + } + } + // show the response URL only if it's different from the request URL + NSString *responseURLStr = @""; + NSURL *responseURL = response.URL; + + if (responseURL && ![responseURL isEqual:request.URL]) { + NSString *const responseURLFormat = + @"response URL: %@
\n"; + responseURLStr = [NSString stringWithFormat:responseURLFormat, [responseURL absoluteString]]; + } + [outputHTML appendFormat:@"response:  status %@
\n%@", + statusString, responseURLStr]; + // Write the response headers + NSUInteger numberOfResponseHeaders = responseHeaders.count; + if (numberOfResponseHeaders > 0) { + // Indicate if the server is setting cookies + NSString *cookiesSet = [responseHeaders valueForKey:@"Set-Cookie"]; + NSString *cookiesStr = + cookiesSet ? @"  sets cookies" : @""; + // Indicate if the server is redirecting + NSString *location = [responseHeaders valueForKey:@"Location"]; + BOOL isRedirect = status >= 300 && status <= 399 && location != nil; + NSString *redirectsStr = + isRedirect ? @"  redirects" : @""; + [outputHTML appendFormat:@"   headers: %d %@ %@
\n", + (int)numberOfResponseHeaders, cookiesStr, redirectsStr]; + } else { + [outputHTML appendString:@"   headers: none
\n"]; + } + } + // error + if (error) { + [outputHTML appendFormat:@"Error: %@
\n", error.description]; + } + // Write the response data + if (responseDataFileName) { + if (isResponseImage) { + // Make a small inline image that links to the full image file + [outputHTML appendFormat:@"   data: %lld bytes, %@
", + responseDataLength, responseMIMEType]; + NSString *const fmt = + @"image\n"; + [outputHTML appendFormat:fmt, responseDataFileName, responseDataFileName]; + } else { + // The response data was XML; link to the xml file + NSString *const fmt = + @"   data: %lld bytes, %@   %@\n"; + [outputHTML appendFormat:fmt, responseDataLength, responseMIMEType, + responseDataFileName, [responseDataFileName pathExtension]]; + } + } else { + // The response data was not an image; just show the length and MIME type + [outputHTML appendFormat:@"   data: %lld bytes, %@\n", + responseDataLength, responseMIMEType ? responseMIMEType : @"(no response type)"]; + } + // Make a single string of the request and response, suitable for copying + // to the clipboard and pasting into a bug report + NSMutableString *copyable = [NSMutableString string]; + if (comment) { + [copyable appendFormat:@"%@\n\n", comment]; + } + [copyable appendFormat:@"%@ elapsed: %5.3fsec\n", now, elapsed]; + if (redirectedFromURLString) { + [copyable appendFormat:@"Redirected from %@\n", redirectedFromURLString]; + } + [copyable appendFormat:@"Request: %@ %@\n", requestMethod, requestURL]; + if (requestHeaders.count > 0) { + [copyable appendFormat:@"Request headers:\n%@\n", + [[self class] headersStringForDictionary:requestHeaders]]; + } + if (bodyDataLength > 0) { + [copyable appendFormat:@"Request body: (%llu bytes)\n", bodyDataLength]; + if (bodyDataStr) { + [copyable appendFormat:@"%@\n", bodyDataStr]; + } + [copyable appendString:@"\n"]; + } + if (response) { + [copyable appendFormat:@"Response: status %d\n", (int) status]; + [copyable appendFormat:@"Response headers:\n%@\n", + [[self class] headersStringForDictionary:responseHeaders]]; + [copyable appendFormat:@"Response body: (%lld bytes)\n", responseDataLength]; + if (responseDataLength > 0) { + NSString *logResponseBody = self.logResponseBody; + if (logResponseBody) { + // The user has provided the response body text. + responseDataStr = [logResponseBody copy]; + self.logResponseBody = nil; + } + if (responseDataStr != nil) { + [copyable appendFormat:@"%@\n", responseDataStr]; + } else { + // Even though it's redundant, we'll put in text to indicate that all the bytes are binary. + if (self.destinationFileURL) { + [copyable appendFormat:@"<<%lld bytes>> to file %@\n", + responseDataLength, self.destinationFileURL.path]; + } else { + [copyable appendFormat:@"<<%lld bytes>>\n", responseDataLength]; + } + } + } + } + if (error) { + [copyable appendFormat:@"Error: %@\n", error]; + } + // Save to log property before adding the separator + self.log = copyable; + + [copyable appendString:@"-----------------------------------------------------------\n"]; + + // Write the copyable version to another file (linked to at the top of the html file, above) + // + // Ideally, something to just copy this to the clipboard like + // Copy here." + // would work everywhere, but it only works in Safari as of 8/2010 + if (gIsLoggingToFile) { + NSString *parentDir = [[self class] loggingDirectory]; + NSString *copyablePath = [logDirectory stringByAppendingPathComponent:copyableFileName]; + NSError *copyableError = nil; + if (![copyable writeToFile:copyablePath + atomically:NO + encoding:NSUTF8StringEncoding + error:©ableError]) { + // Error writing to file + NSLog(@"%@ logging write error:%@ (%@)", [self class], copyableError, copyablePath); + } + [outputHTML appendString:@"

"]; + + // Append the HTML to the main output file + const char* htmlBytes = outputHTML.UTF8String; + NSOutputStream *stream = [NSOutputStream outputStreamToFileAtPath:htmlPath + append:YES]; + [stream open]; + [stream write:(const uint8_t *) htmlBytes maxLength:strlen(htmlBytes)]; + [stream close]; + + // Make a symlink to the latest html + NSString *const symlinkNameSuffix = [[self class] symlinkNameSuffix]; + NSString *symlinkName = [processName stringByAppendingString:symlinkNameSuffix]; + NSString *symlinkPath = [parentDir stringByAppendingPathComponent:symlinkName]; + + [fileMgr removeItemAtPath:symlinkPath error:NULL]; + [fileMgr createSymbolicLinkAtPath:symlinkPath + withDestinationPath:htmlPath + error:NULL]; +#if TARGET_OS_IPHONE + static BOOL gReportedLoggingPath = NO; + if (!gReportedLoggingPath) { + gReportedLoggingPath = YES; + NSLog(@"GTMSessionFetcher logging to \"%@\"", parentDir); + } +#endif + } +} + +- (NSInputStream *)loggedInputStreamForInputStream:(NSInputStream *)inputStream { + if (!inputStream) return nil; + if (![GTMSessionFetcher isLoggingEnabled]) return inputStream; + + [self clearLoggedStreamData]; // Clear any previous data. + Class monitorClass = NSClassFromString(@"GTMReadMonitorInputStream"); + if (!monitorClass) { + NSString const *str = @"<>"; + NSData *stringData = [str dataUsingEncoding:NSUTF8StringEncoding]; + [self appendLoggedStreamData:stringData]; + return inputStream; + } + inputStream = [monitorClass inputStreamWithStream:inputStream]; + + GTMReadMonitorInputStream *readMonitorInputStream = (GTMReadMonitorInputStream *)inputStream; + [readMonitorInputStream setReadDelegate:self]; + SEL readSel = @selector(inputStream:readIntoBuffer:length:); + [readMonitorInputStream setReadSelector:readSel]; + + return inputStream; +} + +- (GTMSessionFetcherBodyStreamProvider)loggedStreamProviderForStreamProvider: + (GTMSessionFetcherBodyStreamProvider)streamProvider { + if (!streamProvider) return nil; + if (![GTMSessionFetcher isLoggingEnabled]) return streamProvider; + + [self clearLoggedStreamData]; // Clear any previous data. + Class monitorClass = NSClassFromString(@"GTMReadMonitorInputStream"); + if (!monitorClass) { + NSString const *str = @"<>"; + NSData *stringData = [str dataUsingEncoding:NSUTF8StringEncoding]; + [self appendLoggedStreamData:stringData]; + return streamProvider; + } + GTMSessionFetcherBodyStreamProvider loggedStreamProvider = + ^(GTMSessionFetcherBodyStreamProviderResponse response) { + streamProvider(^(NSInputStream *bodyStream) { + bodyStream = [self loggedInputStreamForInputStream:bodyStream]; + response(bodyStream); + }); + }; + return loggedStreamProvider; +} + +@end + +@implementation GTMSessionFetcher (GTMSessionFetcherLoggingUtilities) + +- (void)inputStream:(GTMReadMonitorInputStream *)stream + readIntoBuffer:(void *)buffer + length:(int64_t)length { + // append the captured data + NSData *data = [NSData dataWithBytesNoCopy:buffer + length:(NSUInteger)length + freeWhenDone:NO]; + [self appendLoggedStreamData:data]; +} + +#pragma mark Fomatting Utilities + ++ (NSString *)snipSubstringOfString:(NSString *)originalStr + betweenStartString:(NSString *)startStr + endString:(NSString *)endStr { +#if SKIP_GTM_FETCH_LOGGING_SNIPPING + return originalStr; +#else + if (!originalStr) return nil; + + // Find the start string, and replace everything between it + // and the end string (or the end of the original string) with "_snip_" + NSRange startRange = [originalStr rangeOfString:startStr]; + if (startRange.location == NSNotFound) return originalStr; + + // We found the start string + NSUInteger originalLength = originalStr.length; + NSUInteger startOfTarget = NSMaxRange(startRange); + NSRange targetAndRest = NSMakeRange(startOfTarget, originalLength - startOfTarget); + NSRange endRange = [originalStr rangeOfString:endStr + options:0 + range:targetAndRest]; + NSRange replaceRange; + if (endRange.location == NSNotFound) { + // Found no end marker so replace to end of string + replaceRange = targetAndRest; + } else { + // Replace up to the endStr + replaceRange = NSMakeRange(startOfTarget, endRange.location - startOfTarget); + } + NSString *result = [originalStr stringByReplacingCharactersInRange:replaceRange + withString:@"_snip_"]; + return result; +#endif // SKIP_GTM_FETCH_LOGGING_SNIPPING +} + ++ (NSString *)headersStringForDictionary:(NSDictionary *)dict { + // Format the dictionary in http header style, like + // Accept: application/json + // Cache-Control: no-cache + // Content-Type: application/json; charset=utf-8 + // + // Pad the key names, but not beyond 16 chars, since long custom header + // keys just create too much whitespace + NSArray *keys = [dict.allKeys sortedArrayUsingSelector:@selector(compare:)]; + + NSMutableString *str = [NSMutableString string]; + for (NSString *key in keys) { + NSString *value = [dict valueForKey:key]; + if ([key isEqual:@"Authorization"]) { + // Remove OAuth 1 token + value = [[self class] snipSubstringOfString:value + betweenStartString:@"oauth_token=\"" + endString:@"\""]; + + // Remove OAuth 2 bearer token (draft 16, and older form) + value = [[self class] snipSubstringOfString:value + betweenStartString:@"Bearer " + endString:@"\n"]; + value = [[self class] snipSubstringOfString:value + betweenStartString:@"OAuth " + endString:@"\n"]; + + // Remove Google ClientLogin + value = [[self class] snipSubstringOfString:value + betweenStartString:@"GoogleLogin auth=" + endString:@"\n"]; + } + [str appendFormat:@" %@: %@\n", key, value]; + } + return str; +} + +@end + +#endif // !STRIP_GTM_FETCH_LOGGING diff --git a/shlack/Pods/GTMSessionFetcher/Source/GTMSessionFetcherService.h b/shlack/Pods/GTMSessionFetcher/Source/GTMSessionFetcherService.h new file mode 100644 index 0000000..fb743ca --- /dev/null +++ b/shlack/Pods/GTMSessionFetcher/Source/GTMSessionFetcherService.h @@ -0,0 +1,193 @@ +/* Copyright 2014 Google Inc. All rights reserved. + * + * 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. + */ + +// For best performance and convenient usage, fetchers should be generated by a common +// GTMSessionFetcherService instance, like +// +// _fetcherService = [[GTMSessionFetcherService alloc] init]; +// GTMSessionFetcher* myFirstFetcher = [_fetcherService fetcherWithRequest:request1]; +// GTMSessionFetcher* mySecondFetcher = [_fetcherService fetcherWithRequest:request2]; + +#import "GTMSessionFetcher.h" + +GTM_ASSUME_NONNULL_BEGIN + +// Notifications. + +// This notification indicates a reusable session has become invalid. It is intended mainly for the +// service's unit tests. +// +// The notification object is the fetcher service. +// The invalid session is provided via the userInfo kGTMSessionFetcherServiceSessionKey key. +extern NSString *const kGTMSessionFetcherServiceSessionBecameInvalidNotification; +extern NSString *const kGTMSessionFetcherServiceSessionKey; + +@interface GTMSessionFetcherService : NSObject + +// Queues of delayed and running fetchers. Each dictionary contains arrays +// of GTMSessionFetcher *fetchers, keyed by NSString *host +@property(atomic, strong, readonly, GTM_NULLABLE) GTM_NSDictionaryOf(NSString *, NSArray *) *delayedFetchersByHost; +@property(atomic, strong, readonly, GTM_NULLABLE) GTM_NSDictionaryOf(NSString *, NSArray *) *runningFetchersByHost; + +// A max value of 0 means no fetchers should be delayed. +// The default limit is 10 simultaneous fetchers targeting each host. +// This does not apply to fetchers whose useBackgroundSession property is YES. Since services are +// not resurrected on an app relaunch, delayed fetchers would effectively be abandoned. +@property(atomic, assign) NSUInteger maxRunningFetchersPerHost; + +// Properties to be applied to each fetcher; see GTMSessionFetcher.h for descriptions +@property(atomic, strong, GTM_NULLABLE) NSURLSessionConfiguration *configuration; +@property(atomic, copy, GTM_NULLABLE) GTMSessionFetcherConfigurationBlock configurationBlock; +@property(atomic, strong, GTM_NULLABLE) NSHTTPCookieStorage *cookieStorage; +@property(atomic, strong, GTM_NULL_RESETTABLE) dispatch_queue_t callbackQueue; +@property(atomic, copy, GTM_NULLABLE) GTMSessionFetcherChallengeBlock challengeBlock; +@property(atomic, strong, GTM_NULLABLE) NSURLCredential *credential; +@property(atomic, strong) NSURLCredential *proxyCredential; +@property(atomic, copy, GTM_NULLABLE) GTM_NSArrayOf(NSString *) *allowedInsecureSchemes; +@property(atomic, assign) BOOL allowLocalhostRequest; +@property(atomic, assign) BOOL allowInvalidServerCertificates; +@property(atomic, assign, getter=isRetryEnabled) BOOL retryEnabled; +@property(atomic, copy, GTM_NULLABLE) GTMSessionFetcherRetryBlock retryBlock; +@property(atomic, assign) NSTimeInterval maxRetryInterval; +@property(atomic, assign) NSTimeInterval minRetryInterval; +@property(atomic, copy, GTM_NULLABLE) GTM_NSDictionaryOf(NSString *, id) *properties; + +#if GTM_BACKGROUND_TASK_FETCHING +@property(atomic, assign) BOOL skipBackgroundTask; +#endif + +// A default useragent of GTMFetcherStandardUserAgentString(nil) will be given to each fetcher +// created by this service unless the request already has a user-agent header set. +// This default will be added starting with builds with the SDKs for OS X 10.11 and iOS 9. +// +// To use the configuration's default user agent, set this property to nil. +@property(atomic, copy, GTM_NULLABLE) NSString *userAgent; + +// The authorizer to attach to the created fetchers. If a specific fetcher should +// not authorize its requests, the fetcher's authorizer property may be set to nil +// before the fetch begins. +@property(atomic, strong, GTM_NULLABLE) id authorizer; + +// Delegate queue used by the session when calling back to the fetcher. The default +// is the main queue. Changing this does not affect the queue used to call back to the +// application; that is specified by the callbackQueue property above. +@property(atomic, strong, GTM_NULL_RESETTABLE) NSOperationQueue *sessionDelegateQueue; + +// When enabled, indicates the same session should be used by subsequent fetchers. +// +// This is enabled by default. +@property(atomic, assign) BOOL reuseSession; + +// Sets the delay until an unused session is invalidated. +// The default interval is 60 seconds. +// +// If the interval is set to 0, then any reused session is not invalidated except by +// explicitly invoking -resetSession. Be aware that setting the interval to 0 thus +// causes the session's delegate to be retained until the session is explicitly reset. +@property(atomic, assign) NSTimeInterval unusedSessionTimeout; + +// If shouldReuseSession is enabled, this will force creation of a new session when future +// fetchers begin. +- (void)resetSession; + +// Create a fetcher +// +// These methods will return a fetcher. If successfully created, the connection +// will hold a strong reference to it for the life of the connection as well. +// So the caller doesn't have to hold onto the fetcher explicitly unless they +// want to be able to monitor or cancel it. +- (GTMSessionFetcher *)fetcherWithRequest:(NSURLRequest *)request; +- (GTMSessionFetcher *)fetcherWithURL:(NSURL *)requestURL; +- (GTMSessionFetcher *)fetcherWithURLString:(NSString *)requestURLString; + +// Common method for fetcher creation. +// +// -fetcherWithRequest:fetcherClass: may be overridden to customize creation of +// fetchers. This is the ONLY method in the GTMSessionFetcher library intended to +// be overridden. +- (id)fetcherWithRequest:(NSURLRequest *)request + fetcherClass:(Class)fetcherClass; + +- (BOOL)isDelayingFetcher:(GTMSessionFetcher *)fetcher; + +- (NSUInteger)numberOfFetchers; // running + delayed fetchers +- (NSUInteger)numberOfRunningFetchers; +- (NSUInteger)numberOfDelayedFetchers; + +// Return a list of all running or delayed fetchers. This includes fetchers created +// by the service which have been started and have not yet stopped. +// +// Returns an array of fetcher objects, or nil if none. +- (GTM_NULLABLE GTM_NSArrayOf(GTMSessionFetcher *) *)issuedFetchers; + +// Search for running or delayed fetchers with the specified URL. +// +// Returns an array of fetcher objects found, or nil if none found. +- (GTM_NULLABLE GTM_NSArrayOf(GTMSessionFetcher *) *)issuedFetchersWithRequestURL:(NSURL *)requestURL; + +- (void)stopAllFetchers; + +// Methods for use by the fetcher class only. +- (GTM_NULLABLE NSURLSession *)session; +- (GTM_NULLABLE NSURLSession *)sessionForFetcherCreation; +- (GTM_NULLABLE id)sessionDelegate; +- (GTM_NULLABLE NSDate *)stoppedAllFetchersDate; + +// The testBlock can inspect its fetcher parameter's request property to +// determine which fetcher is being faked. +@property(atomic, copy, GTM_NULLABLE) GTMSessionFetcherTestBlock testBlock; + +@end + +@interface GTMSessionFetcherService (TestingSupport) + +// Convenience methods to create a fetcher service for testing. +// +// Fetchers generated by this mock fetcher service will not perform any +// network operation, but will invoke callbacks and provide the supplied data +// or error to the completion handler. +// +// You can make more customized mocks by setting the test block property of the service +// or fetcher; the test block can inspect the fetcher's request or other properties. +// +// See the description of the testBlock property below. ++ (instancetype)mockFetcherServiceWithFakedData:(GTM_NULLABLE NSData *)fakedDataOrNil + fakedError:(GTM_NULLABLE NSError *)fakedErrorOrNil; ++ (instancetype)mockFetcherServiceWithFakedData:(GTM_NULLABLE NSData *)fakedDataOrNil + fakedResponse:(NSHTTPURLResponse *)fakedResponse + fakedError:(GTM_NULLABLE NSError *)fakedErrorOrNil; + +// Spin the run loop and discard events (or, if not on the main thread, just sleep the thread) +// until all running and delayed fetchers have completed. +// +// This is only for use in testing or in tools without a user interface. +// +// Synchronous fetches should never be done by shipping apps; they are +// sufficient reason for rejection from the app store. +// +// Returns NO if timed out. +- (BOOL)waitForCompletionOfAllFetchersWithTimeout:(NSTimeInterval)timeoutInSeconds; + +@end + +@interface GTMSessionFetcherService (BackwardsCompatibilityOnly) + +// Clients using GTMSessionFetcher should set the cookie storage explicitly themselves. +// This method is just for compatibility with the old fetcher. +@property(atomic, assign) NSInteger cookieStorageMethod; + +@end + +GTM_ASSUME_NONNULL_END diff --git a/shlack/Pods/GTMSessionFetcher/Source/GTMSessionFetcherService.m b/shlack/Pods/GTMSessionFetcher/Source/GTMSessionFetcherService.m new file mode 100644 index 0000000..bd44787 --- /dev/null +++ b/shlack/Pods/GTMSessionFetcher/Source/GTMSessionFetcherService.m @@ -0,0 +1,1369 @@ +/* Copyright 2014 Google Inc. All rights reserved. + * + * 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. + */ + +#if !defined(__has_feature) || !__has_feature(objc_arc) +#error "This file requires ARC support." +#endif + +#import "GTMSessionFetcherService.h" + +NSString *const kGTMSessionFetcherServiceSessionBecameInvalidNotification + = @"kGTMSessionFetcherServiceSessionBecameInvalidNotification"; +NSString *const kGTMSessionFetcherServiceSessionKey + = @"kGTMSessionFetcherServiceSessionKey"; + +#if !GTMSESSION_BUILD_COMBINED_SOURCES +@interface GTMSessionFetcher (ServiceMethods) +- (BOOL)beginFetchMayDelay:(BOOL)mayDelay + mayAuthorize:(BOOL)mayAuthorize; +@end +#endif // !GTMSESSION_BUILD_COMBINED_SOURCES + +@interface GTMSessionFetcherService () + +@property(atomic, strong, readwrite) NSDictionary *delayedFetchersByHost; +@property(atomic, strong, readwrite) NSDictionary *runningFetchersByHost; + +@end + +// Since NSURLSession doesn't support a separate delegate per task (!), instances of this +// class serve as a session delegate trampoline. +// +// This class maps a session's tasks to fetchers, and resends delegate messages to the task's +// fetcher. +@interface GTMSessionFetcherSessionDelegateDispatcher : NSObject + +// The session for the tasks in this dispatcher's task-to-fetcher map. +@property(atomic) NSURLSession *session; + +// The timer interval for invalidating a session that has no active tasks. +@property(atomic) NSTimeInterval discardInterval; + +// The current discard timer. +@property(atomic, readonly) NSTimer *discardTimer; + + +- (instancetype)initWithParentService:(GTMSessionFetcherService *)parentService + sessionDiscardInterval:(NSTimeInterval)discardInterval; + +- (void)setFetcher:(GTMSessionFetcher *)fetcher + forTask:(NSURLSessionTask *)task; +- (void)removeFetcher:(GTMSessionFetcher *)fetcher; + +// Before using a session, tells the delegate dispatcher to stop the discard timer. +- (void)startSessionUsage; + +// When abandoning a delegate dispatcher, we want to avoid the session retaining +// the delegate after tasks complete. +- (void)abandon; + +@end + + +@implementation GTMSessionFetcherService { + NSMutableDictionary *_delayedFetchersByHost; + NSMutableDictionary *_runningFetchersByHost; + NSUInteger _maxRunningFetchersPerHost; + + // When this ivar is nil, the service will not reuse sessions. + GTMSessionFetcherSessionDelegateDispatcher *_delegateDispatcher; + + // Fetchers will wait on this if another fetcher is creating the shared NSURLSession. + dispatch_semaphore_t _sessionCreationSemaphore; + + dispatch_queue_t _callbackQueue; + NSOperationQueue *_delegateQueue; + NSHTTPCookieStorage *_cookieStorage; + NSString *_userAgent; + NSTimeInterval _timeout; + + NSURLCredential *_credential; // Username & password. + NSURLCredential *_proxyCredential; // Credential supplied to proxy servers. + + NSInteger _cookieStorageMethod; + + id _authorizer; + + // For waitForCompletionOfAllFetchersWithTimeout: we need to wait on stopped fetchers since + // they've not yet finished invoking their queued callbacks. This array is nil except when + // waiting on fetchers. + NSMutableArray *_stoppedFetchersToWaitFor; + + // For fetchers that enqueued their callbacks before stopAllFetchers was called on the service, + // set a barrier so the callbacks know to bail out. + NSDate *_stoppedAllFetchersDate; +} + +@synthesize maxRunningFetchersPerHost = _maxRunningFetchersPerHost, + configuration = _configuration, + configurationBlock = _configurationBlock, + cookieStorage = _cookieStorage, + userAgent = _userAgent, + challengeBlock = _challengeBlock, + credential = _credential, + proxyCredential = _proxyCredential, + allowedInsecureSchemes = _allowedInsecureSchemes, + allowLocalhostRequest = _allowLocalhostRequest, + allowInvalidServerCertificates = _allowInvalidServerCertificates, + retryEnabled = _retryEnabled, + retryBlock = _retryBlock, + maxRetryInterval = _maxRetryInterval, + minRetryInterval = _minRetryInterval, + properties = _properties, + unusedSessionTimeout = _unusedSessionTimeout, + testBlock = _testBlock; + +#if GTM_BACKGROUND_TASK_FETCHING +@synthesize skipBackgroundTask = _skipBackgroundTask; +#endif + +- (instancetype)init { + self = [super init]; + if (self) { + _delayedFetchersByHost = [[NSMutableDictionary alloc] init]; + _runningFetchersByHost = [[NSMutableDictionary alloc] init]; + _maxRunningFetchersPerHost = 10; + _cookieStorageMethod = -1; + _unusedSessionTimeout = 60.0; + _delegateDispatcher = + [[GTMSessionFetcherSessionDelegateDispatcher alloc] initWithParentService:self + sessionDiscardInterval:_unusedSessionTimeout]; + _callbackQueue = dispatch_get_main_queue(); + + _delegateQueue = [[NSOperationQueue alloc] init]; + _delegateQueue.maxConcurrentOperationCount = 1; + _delegateQueue.name = @"com.google.GTMSessionFetcher.NSURLSessionDelegateQueue"; + + _sessionCreationSemaphore = dispatch_semaphore_create(1); + + // Starting with the SDKs for OS X 10.11/iOS 9, the service has a default useragent. + // Apps can remove this and get the default system "CFNetwork" useragent by setting the + // fetcher service's userAgent property to nil. +#if (!TARGET_OS_IPHONE && defined(MAC_OS_X_VERSION_10_11) && MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_11) \ + || (TARGET_OS_IPHONE && defined(__IPHONE_9_0) && __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_9_0) + _userAgent = GTMFetcherStandardUserAgentString(nil); +#endif + } + return self; +} + +- (void)dealloc { + [self detachAuthorizer]; + [_delegateDispatcher abandon]; +} + +#pragma mark Generate a new fetcher + +// Clients may override this method. Clients should not override any other library methods. +- (id)fetcherWithRequest:(NSURLRequest *)request + fetcherClass:(Class)fetcherClass { + GTMSessionFetcher *fetcher = [[fetcherClass alloc] initWithRequest:request + configuration:self.configuration]; + fetcher.callbackQueue = self.callbackQueue; + fetcher.sessionDelegateQueue = self.sessionDelegateQueue; + fetcher.challengeBlock = self.challengeBlock; + fetcher.credential = self.credential; + fetcher.proxyCredential = self.proxyCredential; + fetcher.authorizer = self.authorizer; + fetcher.cookieStorage = self.cookieStorage; + fetcher.allowedInsecureSchemes = self.allowedInsecureSchemes; + fetcher.allowLocalhostRequest = self.allowLocalhostRequest; + fetcher.allowInvalidServerCertificates = self.allowInvalidServerCertificates; + fetcher.configurationBlock = self.configurationBlock; + fetcher.retryEnabled = self.retryEnabled; + fetcher.retryBlock = self.retryBlock; + fetcher.maxRetryInterval = self.maxRetryInterval; + fetcher.minRetryInterval = self.minRetryInterval; + fetcher.properties = self.properties; + fetcher.service = self; + if (self.cookieStorageMethod >= 0) { + [fetcher setCookieStorageMethod:self.cookieStorageMethod]; + } + +#if GTM_BACKGROUND_TASK_FETCHING + fetcher.skipBackgroundTask = self.skipBackgroundTask; +#endif + + NSString *userAgent = self.userAgent; + if (userAgent.length > 0 + && [request valueForHTTPHeaderField:@"User-Agent"] == nil) { + [fetcher setRequestValue:userAgent + forHTTPHeaderField:@"User-Agent"]; + } + fetcher.testBlock = self.testBlock; + + return fetcher; +} + +- (GTMSessionFetcher *)fetcherWithRequest:(NSURLRequest *)request { + return [self fetcherWithRequest:request + fetcherClass:[GTMSessionFetcher class]]; +} + +- (GTMSessionFetcher *)fetcherWithURL:(NSURL *)requestURL { + return [self fetcherWithRequest:[NSURLRequest requestWithURL:requestURL]]; +} + +- (GTMSessionFetcher *)fetcherWithURLString:(NSString *)requestURLString { + NSURL *url = [NSURL URLWithString:requestURLString]; + return [self fetcherWithURL:url]; +} + +// Returns a session for the fetcher's host, or nil. +- (NSURLSession *)session { + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + NSURLSession *session = _delegateDispatcher.session; + return session; + } +} + +// Returns a session for the fetcher's host, or nil. For shared sessions, this +// waits on a semaphore, blocking other fetchers while the caller creates the +// session if needed. +- (NSURLSession *)sessionForFetcherCreation { + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + if (!_delegateDispatcher) { + // This fetcher is creating a non-shared session, so skip the semaphore usage. + return nil; + } + } + + // Wait if another fetcher is currently creating a session; avoid waiting + // inside the @synchronized block, as that can deadlock. + dispatch_semaphore_wait(_sessionCreationSemaphore, DISPATCH_TIME_FOREVER); + + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + // Before getting the NSURLSession for task creation, it is + // important to invalidate and nil out the session discard timer; otherwise + // the session can be invalidated between when it is returned to the + // fetcher, and when the fetcher attempts to create its NSURLSessionTask. + [_delegateDispatcher startSessionUsage]; + + NSURLSession *session = _delegateDispatcher.session; + if (session) { + // The calling fetcher will receive a preexisting session, so + // we can allow other fetchers to create a session. + dispatch_semaphore_signal(_sessionCreationSemaphore); + } else { + // No existing session was obtained, so the calling fetcher will create the session; + // it *must* invoke fetcherDidCreateSession: to signal the dispatcher's semaphore after + // the session has been created (or fails to be created) to avoid a hang. + } + return session; + } +} + +- (id)sessionDelegate { + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + return _delegateDispatcher; + } +} + +#pragma mark Queue Management + +- (void)addRunningFetcher:(GTMSessionFetcher *)fetcher + forHost:(NSString *)host { + // Add to the array of running fetchers for this host, creating the array if needed. + NSMutableArray *runningForHost = [_runningFetchersByHost objectForKey:host]; + if (runningForHost == nil) { + runningForHost = [NSMutableArray arrayWithObject:fetcher]; + [_runningFetchersByHost setObject:runningForHost forKey:host]; + } else { + [runningForHost addObject:fetcher]; + } +} + +- (void)addDelayedFetcher:(GTMSessionFetcher *)fetcher + forHost:(NSString *)host { + // Add to the array of delayed fetchers for this host, creating the array if needed. + NSMutableArray *delayedForHost = [_delayedFetchersByHost objectForKey:host]; + if (delayedForHost == nil) { + delayedForHost = [NSMutableArray arrayWithObject:fetcher]; + [_delayedFetchersByHost setObject:delayedForHost forKey:host]; + } else { + [delayedForHost addObject:fetcher]; + } +} + +- (BOOL)isDelayingFetcher:(GTMSessionFetcher *)fetcher { + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + NSString *host = fetcher.request.URL.host; + if (host == nil) { + return NO; + } + NSArray *delayedForHost = [_delayedFetchersByHost objectForKey:host]; + NSUInteger idx = [delayedForHost indexOfObjectIdenticalTo:fetcher]; + BOOL isDelayed = (delayedForHost != nil) && (idx != NSNotFound); + return isDelayed; + } +} + +- (BOOL)fetcherShouldBeginFetching:(GTMSessionFetcher *)fetcher { + // Entry point from the fetcher + NSURL *requestURL = fetcher.request.URL; + NSString *host = requestURL.host; + + // Addresses "file:///path" case where localhost is the implicit host. + if (host.length == 0 && [requestURL isFileURL]) { + host = @"localhost"; + } + + if (host.length == 0) { + // Data URIs legitimately have no host, reject other hostless URLs. + GTMSESSION_ASSERT_DEBUG([[requestURL scheme] isEqual:@"data"], @"%@ lacks host", fetcher); + return YES; + } + + BOOL shouldBeginResult; + + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + NSMutableArray *runningForHost = [_runningFetchersByHost objectForKey:host]; + if (runningForHost != nil + && [runningForHost indexOfObjectIdenticalTo:fetcher] != NSNotFound) { + GTMSESSION_ASSERT_DEBUG(NO, @"%@ was already running", fetcher); + return YES; + } + + BOOL shouldRunNow = (fetcher.usingBackgroundSession + || _maxRunningFetchersPerHost == 0 + || _maxRunningFetchersPerHost > + [[self class] numberOfNonBackgroundSessionFetchers:runningForHost]); + if (shouldRunNow) { + [self addRunningFetcher:fetcher forHost:host]; + shouldBeginResult = YES; + } else { + [self addDelayedFetcher:fetcher forHost:host]; + shouldBeginResult = NO; + } + } // @synchronized(self) + + // We'll save the host that serves as the key for this fetcher's array + // to avoid any chance of the underlying request changing, stranding + // the fetcher in the wrong array + fetcher.serviceHost = host; + + return shouldBeginResult; +} + +- (void)startFetcher:(GTMSessionFetcher *)fetcher { + [fetcher beginFetchMayDelay:NO + mayAuthorize:YES]; +} + +// Internal utility. Returns a fetcher's delegate if it's a dispatcher, or nil if the fetcher +// is its own delegate (possibly via proxy) and has no dispatcher. +- (GTMSessionFetcherSessionDelegateDispatcher *)delegateDispatcherForFetcher:(GTMSessionFetcher *)fetcher { + GTMSessionCheckNotSynchronized(self); + + NSURLSession *fetcherSession = fetcher.session; + if (fetcherSession) { + id fetcherDelegate = fetcherSession.delegate; + // If the delegate is non-nil and claims to be a GTMSessionFetcher, there is no dispatcher; + // assume the fetcher is the delegate or has been proxied (some third-party frameworks + // are known to swizzle NSURLSession to proxy its delegate). + BOOL hasDispatcher = (fetcherDelegate != nil && + ![fetcherDelegate isKindOfClass:[GTMSessionFetcher class]]); + if (hasDispatcher) { + GTMSESSION_ASSERT_DEBUG([fetcherDelegate isKindOfClass:[GTMSessionFetcherSessionDelegateDispatcher class]], + @"Fetcher delegate class: %@", [fetcherDelegate class]); + return (GTMSessionFetcherSessionDelegateDispatcher *)fetcherDelegate; + } + } + return nil; +} + +- (void)fetcherDidCreateSession:(GTMSessionFetcher *)fetcher { + if (fetcher.canShareSession) { + NSURLSession *fetcherSession = fetcher.session; + GTMSESSION_ASSERT_DEBUG(fetcherSession != nil, @"Fetcher missing its session: %@", fetcher); + + GTMSessionFetcherSessionDelegateDispatcher *delegateDispatcher = + [self delegateDispatcherForFetcher:fetcher]; + if (delegateDispatcher) { + GTMSESSION_ASSERT_DEBUG(delegateDispatcher.session == nil, + @"Fetcher made an extra session: %@", fetcher); + + // Save this fetcher's session. + delegateDispatcher.session = fetcherSession; + + // Allow other fetchers to request this session now. + dispatch_semaphore_signal(_sessionCreationSemaphore); + } + } +} + +- (void)fetcherDidBeginFetching:(GTMSessionFetcher *)fetcher { + // If this fetcher has a separate delegate with a shared session, then + // this fetcher should be added to the delegate's map of tasks to fetchers. + GTMSessionFetcherSessionDelegateDispatcher *delegateDispatcher = + [self delegateDispatcherForFetcher:fetcher]; + if (delegateDispatcher) { + GTMSESSION_ASSERT_DEBUG(fetcher.canShareSession, + @"Inappropriate shared session: %@", fetcher); + + // There should already be a session, from this or a previous fetcher. + // + // Sanity check that the fetcher's session is the delegate's shared session. + NSURLSession *sharedSession = delegateDispatcher.session; + NSURLSession *fetcherSession = fetcher.session; + GTMSESSION_ASSERT_DEBUG(sharedSession != nil, @"Missing delegate session: %@", fetcher); + GTMSESSION_ASSERT_DEBUG(fetcherSession == sharedSession, + @"Inconsistent session: %@ %@ (shared: %@)", + fetcher, fetcherSession, sharedSession); + + if (sharedSession != nil && fetcherSession == sharedSession) { + NSURLSessionTask *task = fetcher.sessionTask; + GTMSESSION_ASSERT_DEBUG(task != nil, @"Missing session task: %@", fetcher); + + if (task) { + [delegateDispatcher setFetcher:fetcher + forTask:task]; + } + } + } +} + +- (void)stopFetcher:(GTMSessionFetcher *)fetcher { + [fetcher stopFetching]; +} + +- (void)fetcherDidStop:(GTMSessionFetcher *)fetcher { + // Entry point from the fetcher + NSString *host = fetcher.serviceHost; + if (!host) { + // fetcher has been stopped previously + return; + } + + // This removeFetcher: invocation is a fallback; typically, fetchers are removed from the task + // map when the task completes. + GTMSessionFetcherSessionDelegateDispatcher *delegateDispatcher = + [self delegateDispatcherForFetcher:fetcher]; + [delegateDispatcher removeFetcher:fetcher]; + + NSMutableArray *fetchersToStart; + + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + // If a test is waiting for all fetchers to stop, it needs to wait for this one + // to invoke its callbacks on the callback queue. + [_stoppedFetchersToWaitFor addObject:fetcher]; + + NSMutableArray *runningForHost = [_runningFetchersByHost objectForKey:host]; + [runningForHost removeObject:fetcher]; + + NSMutableArray *delayedForHost = [_delayedFetchersByHost objectForKey:host]; + [delayedForHost removeObject:fetcher]; + + while (delayedForHost.count > 0 + && [[self class] numberOfNonBackgroundSessionFetchers:runningForHost] + < _maxRunningFetchersPerHost) { + // Start another delayed fetcher running, scanning for the minimum + // priority value, defaulting to FIFO for equal priorities + GTMSessionFetcher *nextFetcher = nil; + for (GTMSessionFetcher *delayedFetcher in delayedForHost) { + if (nextFetcher == nil + || delayedFetcher.servicePriority < nextFetcher.servicePriority) { + nextFetcher = delayedFetcher; + } + } + + if (nextFetcher) { + [self addRunningFetcher:nextFetcher forHost:host]; + runningForHost = [_runningFetchersByHost objectForKey:host]; + + [delayedForHost removeObjectIdenticalTo:nextFetcher]; + + if (!fetchersToStart) { + fetchersToStart = [NSMutableArray array]; + } + [fetchersToStart addObject:nextFetcher]; + } + } + + if (runningForHost.count == 0) { + // None left; remove the empty array + [_runningFetchersByHost removeObjectForKey:host]; + } + + if (delayedForHost.count == 0) { + [_delayedFetchersByHost removeObjectForKey:host]; + } + } // @synchronized(self) + + // Start fetchers outside of the synchronized block to avoid a deadlock. + for (GTMSessionFetcher *nextFetcher in fetchersToStart) { + [self startFetcher:nextFetcher]; + } + + // The fetcher is no longer in the running or the delayed array, + // so remove its host and thread properties + fetcher.serviceHost = nil; +} + +- (NSUInteger)numberOfFetchers { + NSUInteger running = [self numberOfRunningFetchers]; + NSUInteger delayed = [self numberOfDelayedFetchers]; + return running + delayed; +} + +- (NSUInteger)numberOfRunningFetchers { + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + NSUInteger sum = 0; + for (NSString *host in _runningFetchersByHost) { + NSArray *fetchers = [_runningFetchersByHost objectForKey:host]; + sum += fetchers.count; + } + return sum; + } +} + +- (NSUInteger)numberOfDelayedFetchers { + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + NSUInteger sum = 0; + for (NSString *host in _delayedFetchersByHost) { + NSArray *fetchers = [_delayedFetchersByHost objectForKey:host]; + sum += fetchers.count; + } + return sum; + } +} + +- (NSArray *)issuedFetchers { + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + NSMutableArray *allFetchers = [NSMutableArray array]; + void (^accumulateFetchers)(id, id, BOOL *) = ^(NSString *host, + NSArray *fetchersForHost, + BOOL *stop) { + [allFetchers addObjectsFromArray:fetchersForHost]; + }; + [_runningFetchersByHost enumerateKeysAndObjectsUsingBlock:accumulateFetchers]; + [_delayedFetchersByHost enumerateKeysAndObjectsUsingBlock:accumulateFetchers]; + + GTMSESSION_ASSERT_DEBUG(allFetchers.count == [NSSet setWithArray:allFetchers].count, + @"Fetcher appears multiple times\n running: %@\n delayed: %@", + _runningFetchersByHost, _delayedFetchersByHost); + + return allFetchers.count > 0 ? allFetchers : nil; + } +} + +- (NSArray *)issuedFetchersWithRequestURL:(NSURL *)requestURL { + NSString *host = requestURL.host; + if (host.length == 0) return nil; + + NSURL *targetURL = [requestURL absoluteURL]; + + NSArray *allFetchers = [self issuedFetchers]; + NSIndexSet *indexes = [allFetchers indexesOfObjectsPassingTest:^BOOL(GTMSessionFetcher *fetcher, + NSUInteger idx, + BOOL *stop) { + NSURL *fetcherURL = [fetcher.request.URL absoluteURL]; + return [fetcherURL isEqual:targetURL]; + }]; + + NSArray *result = nil; + if (indexes.count > 0) { + result = [allFetchers objectsAtIndexes:indexes]; + } + return result; +} + +- (void)stopAllFetchers { + NSArray *delayedFetchersByHost; + NSArray *runningFetchersByHost; + + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + // Set the time barrier so fetchers know not to call back even if + // the stop calls below occur after the fetchers naturally + // stopped and so were removed from _runningFetchersByHost, + // but while the callbacks were already enqueued before stopAllFetchers + // was invoked. + _stoppedAllFetchersDate = [[NSDate alloc] init]; + + // Remove fetchers from the delayed list to avoid fetcherDidStop: from + // starting more fetchers running as a side effect of stopping one + delayedFetchersByHost = _delayedFetchersByHost.allValues; + [_delayedFetchersByHost removeAllObjects]; + + runningFetchersByHost = _runningFetchersByHost.allValues; + [_runningFetchersByHost removeAllObjects]; + } + + for (NSArray *delayedForHost in delayedFetchersByHost) { + for (GTMSessionFetcher *fetcher in delayedForHost) { + [self stopFetcher:fetcher]; + } + } + + for (NSArray *runningForHost in runningFetchersByHost) { + for (GTMSessionFetcher *fetcher in runningForHost) { + [self stopFetcher:fetcher]; + } + } +} + +- (NSDate *)stoppedAllFetchersDate { + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + return _stoppedAllFetchersDate; + } +} + +#pragma mark Accessors + +- (BOOL)reuseSession { + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + return _delegateDispatcher != nil; + } +} + +- (void)setReuseSession:(BOOL)shouldReuse { + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + BOOL wasReusing = (_delegateDispatcher != nil); + if (shouldReuse != wasReusing) { + [self abandonDispatcher]; + if (shouldReuse) { + _delegateDispatcher = + [[GTMSessionFetcherSessionDelegateDispatcher alloc] initWithParentService:self + sessionDiscardInterval:_unusedSessionTimeout]; + } else { + _delegateDispatcher = nil; + } + } + } +} + +- (void)resetSession { + GTMSessionCheckNotSynchronized(self); + dispatch_semaphore_wait(_sessionCreationSemaphore, DISPATCH_TIME_FOREVER); + + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + [self resetSessionInternal]; + } + + dispatch_semaphore_signal(_sessionCreationSemaphore); +} + +- (void)resetSessionInternal { + GTMSessionCheckSynchronized(self); + + // The old dispatchers may be retained as delegates of any ongoing sessions by those sessions. + if (_delegateDispatcher) { + [self abandonDispatcher]; + _delegateDispatcher = + [[GTMSessionFetcherSessionDelegateDispatcher alloc] initWithParentService:self + sessionDiscardInterval:_unusedSessionTimeout]; + } +} + +- (void)resetSessionForDispatcherDiscardTimer:(NSTimer *)timer { + GTMSessionCheckNotSynchronized(self); + + dispatch_semaphore_wait(_sessionCreationSemaphore, DISPATCH_TIME_FOREVER); + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + if (_delegateDispatcher.discardTimer == timer) { + // If the delegate dispatcher's current discardTimer is the same object as the timer + // that fired, no fetcher has recently attempted to start using the session by calling + // startSessionUsage, which invalidates and nils out the timer. + [self resetSessionInternal]; + } else { + // A fetcher has invalidated the timer between its triggering and now, potentially + // meaning a fetcher has requested access to the NSURLSession, and may be in the process + // of starting a new task. The dispatcher should not be abandoned, as this can lead + // to a race condition between calling -finishTasksAndInvalidate on the NSURLSession + // and the fetcher attempting to create a new task. + } + } + + dispatch_semaphore_signal(_sessionCreationSemaphore); +} + +- (NSTimeInterval)unusedSessionTimeout { + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + return _unusedSessionTimeout; + } +} + +- (void)setUnusedSessionTimeout:(NSTimeInterval)timeout { + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + _unusedSessionTimeout = timeout; + _delegateDispatcher.discardInterval = timeout; + } +} + +// This method should be called inside of @synchronized(self) +- (void)abandonDispatcher { + GTMSessionCheckSynchronized(self); + [_delegateDispatcher abandon]; +} + +- (NSDictionary *)runningFetchersByHost { + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + return [_runningFetchersByHost copy]; + } +} + +- (void)setRunningFetchersByHost:(NSDictionary *)dict { + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + _runningFetchersByHost = [dict mutableCopy]; + } +} + +- (NSDictionary *)delayedFetchersByHost { + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + return [_delayedFetchersByHost copy]; + } +} + +- (void)setDelayedFetchersByHost:(NSDictionary *)dict { + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + _delayedFetchersByHost = [dict mutableCopy]; + } +} + +- (id)authorizer { + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + return _authorizer; + } +} + +- (void)setAuthorizer:(id)obj { + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + if (obj != _authorizer) { + [self detachAuthorizer]; + } + + _authorizer = obj; + } + + // Use the fetcher service for the authorization fetches if the auth + // object supports fetcher services + if ([obj respondsToSelector:@selector(setFetcherService:)]) { +#if GTM_USE_SESSION_FETCHER + [obj setFetcherService:self]; +#else + [obj setFetcherService:(id)self]; +#endif + } +} + +// This should be called inside a @synchronized(self) block except during dealloc. +- (void)detachAuthorizer { + // This method is called by the fetcher service's dealloc and setAuthorizer: + // methods; do not override. + // + // The fetcher service retains the authorizer, and the authorizer has a + // weak pointer to the fetcher service (a non-zeroing pointer for + // compatibility with iOS 4 and Mac OS X 10.5/10.6.) + // + // When this fetcher service no longer uses the authorizer, we want to remove + // the authorizer's dependence on the fetcher service. Authorizers can still + // function without a fetcher service. + if ([_authorizer respondsToSelector:@selector(fetcherService)]) { + id authFetcherService = [_authorizer fetcherService]; + if (authFetcherService == self) { + [_authorizer setFetcherService:nil]; + } + } +} + +- (dispatch_queue_t GTM_NONNULL_TYPE)callbackQueue { + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + return _callbackQueue; + } // @synchronized(self) +} + +- (void)setCallbackQueue:(dispatch_queue_t GTM_NULLABLE_TYPE)queue { + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + _callbackQueue = queue ?: dispatch_get_main_queue(); + } // @synchronized(self) +} + +- (NSOperationQueue * GTM_NONNULL_TYPE)sessionDelegateQueue { + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + return _delegateQueue; + } // @synchronized(self) +} + +- (void)setSessionDelegateQueue:(NSOperationQueue * GTM_NULLABLE_TYPE)queue { + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + _delegateQueue = queue ?: [NSOperationQueue mainQueue]; + } // @synchronized(self) +} + +- (NSOperationQueue *)delegateQueue { + // Provided for compatibility with the old fetcher service. The gtm-oauth2 code respects + // any custom delegate queue for calling the app. + return nil; +} + ++ (NSUInteger)numberOfNonBackgroundSessionFetchers:(NSArray *)fetchers { + NSUInteger sum = 0; + for (GTMSessionFetcher *fetcher in fetchers) { + if (!fetcher.usingBackgroundSession) { + ++sum; + } + } + return sum; +} + +@end + +@implementation GTMSessionFetcherService (TestingSupport) + ++ (instancetype)mockFetcherServiceWithFakedData:(NSData *)fakedDataOrNil + fakedError:(NSError *)fakedErrorOrNil { +#if !GTM_DISABLE_FETCHER_TEST_BLOCK + NSURL *url = [NSURL URLWithString:@"http://example.invalid"]; + NSHTTPURLResponse *fakedResponse = + [[NSHTTPURLResponse alloc] initWithURL:url + statusCode:(fakedErrorOrNil ? 500 : 200) + HTTPVersion:@"HTTP/1.1" + headerFields:nil]; + return [self mockFetcherServiceWithFakedData:fakedDataOrNil + fakedResponse:fakedResponse + fakedError:fakedErrorOrNil]; +#else + GTMSESSION_ASSERT_DEBUG(0, @"Test blocks disabled"); + return nil; +#endif // GTM_DISABLE_FETCHER_TEST_BLOCK +} + ++ (instancetype)mockFetcherServiceWithFakedData:(NSData *)fakedDataOrNil + fakedResponse:(NSHTTPURLResponse *)fakedResponse + fakedError:(NSError *)fakedErrorOrNil { +#if !GTM_DISABLE_FETCHER_TEST_BLOCK + GTMSessionFetcherService *service = [[self alloc] init]; + service.allowedInsecureSchemes = @[ @"http" ]; + service.testBlock = ^(GTMSessionFetcher *fetcherToTest, + GTMSessionFetcherTestResponse testResponse) { + testResponse(fakedResponse, fakedDataOrNil, fakedErrorOrNil); + }; + return service; +#else + GTMSESSION_ASSERT_DEBUG(0, @"Test blocks disabled"); + return nil; +#endif // GTM_DISABLE_FETCHER_TEST_BLOCK +} + +#pragma mark Synchronous Wait for Unit Testing + +- (BOOL)waitForCompletionOfAllFetchersWithTimeout:(NSTimeInterval)timeoutInSeconds { + NSDate *giveUpDate = [NSDate dateWithTimeIntervalSinceNow:timeoutInSeconds]; + _stoppedFetchersToWaitFor = [NSMutableArray array]; + + BOOL shouldSpinRunLoop = [NSThread isMainThread]; + const NSTimeInterval kSpinInterval = 0.001; + BOOL didTimeOut = NO; + while (([self numberOfFetchers] > 0 || _stoppedFetchersToWaitFor.count > 0)) { + didTimeOut = [giveUpDate timeIntervalSinceNow] < 0; + if (didTimeOut) break; + + GTMSessionFetcher *stoppedFetcher = _stoppedFetchersToWaitFor.firstObject; + if (stoppedFetcher) { + [_stoppedFetchersToWaitFor removeObject:stoppedFetcher]; + [stoppedFetcher waitForCompletionWithTimeout:10.0 * kSpinInterval]; + } + + if (shouldSpinRunLoop) { + NSDate *stopDate = [NSDate dateWithTimeIntervalSinceNow:kSpinInterval]; + [[NSRunLoop currentRunLoop] runUntilDate:stopDate]; + } else { + [NSThread sleepForTimeInterval:kSpinInterval]; + } + } + _stoppedFetchersToWaitFor = nil; + + return !didTimeOut; +} + +@end + +@implementation GTMSessionFetcherService (BackwardsCompatibilityOnly) + +- (NSInteger)cookieStorageMethod { + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + return _cookieStorageMethod; + } +} + +- (void)setCookieStorageMethod:(NSInteger)cookieStorageMethod { + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + _cookieStorageMethod = cookieStorageMethod; + } +} + +@end + +@implementation GTMSessionFetcherSessionDelegateDispatcher { + __weak GTMSessionFetcherService *_parentService; + NSURLSession *_session; + + // The task map maps NSURLSessionTasks to GTMSessionFetchers + NSMutableDictionary *_taskToFetcherMap; + // The discard timer will invalidate sessions after the session's last task completes. + NSTimer *_discardTimer; + NSTimeInterval _discardInterval; +} + +@synthesize discardInterval = _discardInterval, + session = _session; + +- (instancetype)init { + [self doesNotRecognizeSelector:_cmd]; + return nil; +} + +- (instancetype)initWithParentService:(GTMSessionFetcherService *)parentService + sessionDiscardInterval:(NSTimeInterval)discardInterval { + self = [super init]; + if (self) { + _discardInterval = discardInterval; + _parentService = parentService; + } + return self; +} + +- (NSString *)description { + return [NSString stringWithFormat:@"%@ %p %@ %@", + [self class], self, + _session ?: @"", + _taskToFetcherMap.count > 0 ? _taskToFetcherMap : @""]; +} + +- (NSTimer *)discardTimer { + GTMSessionCheckNotSynchronized(self); + @synchronized(self) { + return _discardTimer; + } +} + +// This method should be called inside of a @synchronized(self) block. +- (void)startDiscardTimer { + GTMSessionCheckSynchronized(self); + [_discardTimer invalidate]; + _discardTimer = nil; + if (_discardInterval > 0) { + _discardTimer = [NSTimer timerWithTimeInterval:_discardInterval + target:self + selector:@selector(discardTimerFired:) + userInfo:nil + repeats:NO]; + [_discardTimer setTolerance:(_discardInterval / 10)]; + [[NSRunLoop mainRunLoop] addTimer:_discardTimer forMode:NSRunLoopCommonModes]; + } +} + +// This method should be called inside of a @synchronized(self) block. +- (void)destroyDiscardTimer { + GTMSessionCheckSynchronized(self); + [_discardTimer invalidate]; + _discardTimer = nil; +} + +- (void)discardTimerFired:(NSTimer *)timer { + GTMSessionFetcherService *service; + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + NSUInteger numberOfTasks = _taskToFetcherMap.count; + if (numberOfTasks == 0) { + service = _parentService; + } + } + + // Inform the service that the discard timer has fired, and should check whether the + // service can abandon us. -resetSession cannot be called directly, as there is a + // race condition that must be guarded against with the NSURLSession being returned + // from sessionForFetcherCreation outside other locks. The service can take steps + // to prevent resetting the session if that has occurred. + // + // The service must be called from outside the @synchronized block. + [service resetSessionForDispatcherDiscardTimer:timer]; +} + +- (void)abandon { + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + [self destroySessionAndTimer]; + } +} + +- (void)startSessionUsage { + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + [self destroyDiscardTimer]; + } +} + +// This method should be called inside of a @synchronized(self) block. +- (void)destroySessionAndTimer { + GTMSessionCheckSynchronized(self); + [self destroyDiscardTimer]; + + // Break any retain cycle from the session holding the delegate. + [_session finishTasksAndInvalidate]; + + // Immediately clear the session so no new task may be issued with it. + // + // The _taskToFetcherMap needs to stay valid until the outstanding tasks finish. + _session = nil; +} + +- (void)setFetcher:(GTMSessionFetcher *)fetcher forTask:(NSURLSessionTask *)task { + GTMSESSION_ASSERT_DEBUG(fetcher != nil, @"missing fetcher"); + + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + if (_taskToFetcherMap == nil) { + _taskToFetcherMap = [[NSMutableDictionary alloc] init]; + } + + if (fetcher) { + [_taskToFetcherMap setObject:fetcher forKey:task]; + [self destroyDiscardTimer]; + } + } +} + +- (void)removeFetcher:(GTMSessionFetcher *)fetcher { + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + // Typically, a fetcher should be removed when its task invokes + // URLSession:task:didCompleteWithError:. + // + // When fetching with a testBlock, though, the task completed delegate + // method may not be invoked, requiring cleanup here. + NSArray *tasks = [_taskToFetcherMap allKeysForObject:fetcher]; + GTMSESSION_ASSERT_DEBUG(tasks.count <= 1, @"fetcher task not unmapped: %@", tasks); + [_taskToFetcherMap removeObjectsForKeys:tasks]; + + if (_taskToFetcherMap.count == 0) { + [self startDiscardTimer]; + } + } +} + +// This helper method provides synchronized access to the task map for the delegate +// methods below. +- (id)fetcherForTask:(NSURLSessionTask *)task { + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + return [_taskToFetcherMap objectForKey:task]; + } +} + +- (void)removeTaskFromMap:(NSURLSessionTask *)task { + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + [_taskToFetcherMap removeObjectForKey:task]; + } +} + +- (void)setSession:(NSURLSession *)session { + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + _session = session; + } +} + +- (NSURLSession *)session { + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + return _session; + } +} + +- (NSTimeInterval)discardInterval { + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + return _discardInterval; + } +} + +- (void)setDiscardInterval:(NSTimeInterval)interval { + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + _discardInterval = interval; + } +} + +// NSURLSessionDelegate protocol methods. + +// - (void)URLSessionDidFinishEventsForBackgroundURLSession:(NSURLSession *)session; +// +// TODO(seh): How do we route this to an appropriate fetcher? + + +- (void)URLSession:(NSURLSession *)session didBecomeInvalidWithError:(NSError *)error { + GTM_LOG_SESSION_DELEGATE(@"%@ %p URLSession:%@ didBecomeInvalidWithError:%@", + [self class], self, session, error); + NSDictionary *localTaskToFetcherMap; + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + _session = nil; + + localTaskToFetcherMap = [_taskToFetcherMap copy]; + } + + // Any "suspended" tasks may not have received callbacks from NSURLSession when the session + // completes; we'll call them now. + [localTaskToFetcherMap enumerateKeysAndObjectsUsingBlock:^(NSURLSessionTask *task, + GTMSessionFetcher *fetcher, + BOOL *stop) { + if (fetcher.session == session) { + // Our delegate method URLSession:task:didCompleteWithError: will rely on + // _taskToFetcherMap so that should still contain this fetcher. + NSError *canceledError = [NSError errorWithDomain:NSURLErrorDomain + code:NSURLErrorCancelled + userInfo:nil]; + [self URLSession:session task:task didCompleteWithError:canceledError]; + } else { + GTMSESSION_ASSERT_DEBUG(0, @"Unexpected session in fetcher: %@ has %@ (expected %@)", + fetcher, fetcher.session, session); + } + }]; + + // Our tests rely on this notification to know the session discard timer fired. + NSDictionary *userInfo = @{ kGTMSessionFetcherServiceSessionKey : session }; + NSNotificationCenter *nc = [NSNotificationCenter defaultCenter]; + [nc postNotificationName:kGTMSessionFetcherServiceSessionBecameInvalidNotification + object:_parentService + userInfo:userInfo]; +} + + +#pragma mark - NSURLSessionTaskDelegate + +// NSURLSessionTaskDelegate protocol methods. +// +// We won't test here if the fetcher responds to these since we only want this +// class to implement the same delegate methods the fetcher does (so NSURLSession's +// tests for respondsToSelector: will have the same result whether the session +// delegate is the fetcher or this dispatcher.) + +- (void)URLSession:(NSURLSession *)session + task:(NSURLSessionTask *)task +willPerformHTTPRedirection:(NSHTTPURLResponse *)response + newRequest:(NSURLRequest *)request + completionHandler:(void (^)(NSURLRequest *))completionHandler { + id fetcher = [self fetcherForTask:task]; + [fetcher URLSession:session + task:task +willPerformHTTPRedirection:response + newRequest:request + completionHandler:completionHandler]; +} + +- (void)URLSession:(NSURLSession *)session + task:(NSURLSessionTask *)task +didReceiveChallenge:(NSURLAuthenticationChallenge *)challenge + completionHandler:(void (^)(NSURLSessionAuthChallengeDisposition, NSURLCredential *))handler { + id fetcher = [self fetcherForTask:task]; + [fetcher URLSession:session + task:task + didReceiveChallenge:challenge + completionHandler:handler]; +} + +- (void)URLSession:(NSURLSession *)session + task:(NSURLSessionTask *)task + needNewBodyStream:(void (^)(NSInputStream *bodyStream))handler { + id fetcher = [self fetcherForTask:task]; + [fetcher URLSession:session + task:task + needNewBodyStream:handler]; +} + +- (void)URLSession:(NSURLSession *)session + task:(NSURLSessionTask *)task + didSendBodyData:(int64_t)bytesSent + totalBytesSent:(int64_t)totalBytesSent +totalBytesExpectedToSend:(int64_t)totalBytesExpectedToSend { + id fetcher = [self fetcherForTask:task]; + [fetcher URLSession:session + task:task + didSendBodyData:bytesSent + totalBytesSent:totalBytesSent +totalBytesExpectedToSend:totalBytesExpectedToSend]; +} + +- (void)URLSession:(NSURLSession *)session + task:(NSURLSessionTask *)task +didCompleteWithError:(NSError *)error { + id fetcher = [self fetcherForTask:task]; + + // This is the usual way tasks are removed from the task map. + [self removeTaskFromMap:task]; + + [fetcher URLSession:session + task:task + didCompleteWithError:error]; +} + +// NSURLSessionDataDelegate protocol methods. + +- (void)URLSession:(NSURLSession *)session + dataTask:(NSURLSessionDataTask *)dataTask +didReceiveResponse:(NSURLResponse *)response + completionHandler:(void (^)(NSURLSessionResponseDisposition))handler { + id fetcher = [self fetcherForTask:dataTask]; + [fetcher URLSession:session + dataTask:dataTask + didReceiveResponse:response + completionHandler:handler]; +} + +- (void)URLSession:(NSURLSession *)session + dataTask:(NSURLSessionDataTask *)dataTask +didBecomeDownloadTask:(NSURLSessionDownloadTask *)downloadTask { + id fetcher = [self fetcherForTask:dataTask]; + GTMSESSION_ASSERT_DEBUG(fetcher != nil, @"Missing fetcher for %@", dataTask); + [self removeTaskFromMap:dataTask]; + if (fetcher) { + GTMSESSION_ASSERT_DEBUG([fetcher isKindOfClass:[GTMSessionFetcher class]], + @"Expecting GTMSessionFetcher"); + [self setFetcher:(GTMSessionFetcher *)fetcher forTask:downloadTask]; + } + + [fetcher URLSession:session + dataTask:dataTask +didBecomeDownloadTask:downloadTask]; +} + +- (void)URLSession:(NSURLSession *)session + dataTask:(NSURLSessionDataTask *)dataTask + didReceiveData:(NSData *)data { + id fetcher = [self fetcherForTask:dataTask]; + [fetcher URLSession:session + dataTask:dataTask + didReceiveData:data]; +} + +- (void)URLSession:(NSURLSession *)session + dataTask:(NSURLSessionDataTask *)dataTask + willCacheResponse:(NSCachedURLResponse *)proposedResponse + completionHandler:(void (^)(NSCachedURLResponse *))handler { + id fetcher = [self fetcherForTask:dataTask]; + [fetcher URLSession:session + dataTask:dataTask + willCacheResponse:proposedResponse + completionHandler:handler]; +} + +// NSURLSessionDownloadDelegate protocol methods. + +- (void)URLSession:(NSURLSession *)session + downloadTask:(NSURLSessionDownloadTask *)downloadTask +didFinishDownloadingToURL:(NSURL *)location { + id fetcher = [self fetcherForTask:downloadTask]; + [fetcher URLSession:session + downloadTask:downloadTask +didFinishDownloadingToURL:location]; +} + +- (void)URLSession:(NSURLSession *)session + downloadTask:(NSURLSessionDownloadTask *)downloadTask + didWriteData:(int64_t)bytesWritten + totalBytesWritten:(int64_t)totalWritten +totalBytesExpectedToWrite:(int64_t)totalExpected { + id fetcher = [self fetcherForTask:downloadTask]; + [fetcher URLSession:session + downloadTask:downloadTask + didWriteData:bytesWritten + totalBytesWritten:totalWritten +totalBytesExpectedToWrite:totalExpected]; +} + +- (void)URLSession:(NSURLSession *)session + downloadTask:(NSURLSessionDownloadTask *)downloadTask + didResumeAtOffset:(int64_t)fileOffset +expectedTotalBytes:(int64_t)expectedTotalBytes { + id fetcher = [self fetcherForTask:downloadTask]; + [fetcher URLSession:session + downloadTask:downloadTask + didResumeAtOffset:fileOffset + expectedTotalBytes:expectedTotalBytes]; +} + +@end diff --git a/shlack/Pods/GTMSessionFetcher/Source/GTMSessionUploadFetcher.h b/shlack/Pods/GTMSessionFetcher/Source/GTMSessionUploadFetcher.h new file mode 100644 index 0000000..a098ce9 --- /dev/null +++ b/shlack/Pods/GTMSessionFetcher/Source/GTMSessionUploadFetcher.h @@ -0,0 +1,166 @@ +/* Copyright 2014 Google Inc. All rights reserved. + * + * 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. + */ + +// GTMSessionUploadFetcher implements Google's resumable upload protocol. + +// +// This subclass of GTMSessionFetcher simulates the series of fetches +// needed for chunked upload as a single fetch operation. +// +// Protocol document: TBD +// +// To the client, the only fetcher that exists is this class; the subsidiary +// fetchers needed for uploading chunks are not visible (though the most recent +// chunk fetcher may be accessed via the -activeFetcher or -chunkFetcher methods, and +// -responseHeaders and -statusCode reflect results from the most recent chunk +// fetcher.) +// +// Chunk fetchers are discarded as soon as they have completed. +// +// The protocol also allows for a cancellation notification request to be sent to the +// server to allow discarding of the currently uploaded data and this will be sent +// automatically upon calling stopFetching if the upload has already started. +// +// Note: Unlike the fetcher superclass, the methods of GTMSessionUploadFetcher should +// only be used from the main thread until further work is done to make this subclass +// thread-safe. + +#import "GTMSessionFetcher.h" +#import "GTMSessionFetcherService.h" + +GTM_ASSUME_NONNULL_BEGIN + +// The value to use for file size parameters when the file size is not yet known. +extern int64_t const kGTMSessionUploadFetcherUnknownFileSize; + +// Unless an application knows it needs a smaller chunk size, it should use the standard +// chunk size, which sends the entire file as a single chunk to minimize upload overhead. +// Setting an explicit chunk size that comfortably fits in memory is advisable for large +// uploads. +extern int64_t const kGTMSessionUploadFetcherStandardChunkSize; + +// When uploading requires data buffer allocations (such as uploading from an NSData or +// an NSFileHandle) this is the maximum buffer size that will be created by the fetcher. +extern int64_t const kGTMSessionUploadFetcherMaximumDemandBufferSize; + +// Notification that the upload location URL was provided by the server. +extern NSString *const kGTMSessionFetcherUploadLocationObtainedNotification; + +// Block to provide data during uploads. +// +// Response data may be allocated with dataWithBytesNoCopy:length:freeWhenDone: for efficiency, +// and released after the response block returns. +// +// If the length of the file being uploaded is unknown or already set, send +// kGTMSessionUploadFetcherUnknownFileSize for |fullUploadLength|. Otherwise, set |fullUploadLength| +// to its proper value. +// +// Pass nil as the data (and optionally an NSError) for a failure. +typedef void (^GTMSessionUploadFetcherDataProviderResponse)(NSData * GTM_NULLABLE_TYPE data, + int64_t fullUploadLength, + NSError * GTM_NULLABLE_TYPE error); +// Do not call the response with an NSData object with less data than the requested length unless +// you are passing the fullUploadLength to the fetcher for the first time and it is the last chunk +// of data in the file being uploaded. +typedef void (^GTMSessionUploadFetcherDataProvider)(int64_t offset, int64_t length, + GTMSessionUploadFetcherDataProviderResponse response); + +// Block to be notified about the final status of the cancellation request started in stopFetching. +// +// |fetcher| will be the cancel request that was sent to the server, or nil if stopFetching is not +// going to send a cancel request. If |fetcher| is provided, the other parameters correspond to the +// completion handler of the cancellation request fetcher. +typedef void (^GTMSessionUploadFetcherCancellationHandler)( + GTMSessionFetcher * GTM_NULLABLE_TYPE fetcher, + NSData * GTM_NULLABLE_TYPE data, + NSError * GTM_NULLABLE_TYPE error); + +@interface GTMSessionUploadFetcher : GTMSessionFetcher + +// Create an upload fetcher specifying either the request or the resume location URL, +// then set an upload data source using one of these: +// +// setUploadFileURL: +// setUploadDataLength:provider: +// setUploadFileHandle: +// setUploadData: + ++ (instancetype)uploadFetcherWithRequest:(NSURLRequest *)request + uploadMIMEType:(NSString *)uploadMIMEType + chunkSize:(int64_t)chunkSize + fetcherService:(GTM_NULLABLE GTMSessionFetcherService *)fetcherServiceOrNil; + ++ (instancetype)uploadFetcherWithLocation:(NSURL * GTM_NULLABLE_TYPE)uploadLocationURL + uploadMIMEType:(NSString *)uploadMIMEType + chunkSize:(int64_t)chunkSize + fetcherService:(GTM_NULLABLE GTMSessionFetcherService *)fetcherServiceOrNil; + +// Allows dataProviders for files of unknown length. Pass kGTMSessionUploadFetcherUnknownFileSize as +// |fullLength| if the length is unknown. +- (void)setUploadDataLength:(int64_t)fullLength + provider:(GTM_NULLABLE GTMSessionUploadFetcherDataProvider)block; + ++ (NSArray *)uploadFetchersForBackgroundSessions; ++ (GTM_NULLABLE instancetype)uploadFetcherForSessionIdentifier:(NSString *)sessionIdentifier; + +- (void)pauseFetching; +- (void)resumeFetching; +- (BOOL)isPaused; + +@property(atomic, strong, GTM_NULLABLE) NSURL *uploadLocationURL; +@property(atomic, strong, GTM_NULLABLE) NSData *uploadData; +@property(atomic, strong, GTM_NULLABLE) NSURL *uploadFileURL; +@property(atomic, strong, GTM_NULLABLE) NSFileHandle *uploadFileHandle; +@property(atomic, copy, readonly, GTM_NULLABLE) GTMSessionUploadFetcherDataProvider uploadDataProvider; +@property(atomic, copy) NSString *uploadMIMEType; +@property(atomic, assign) int64_t chunkSize; +@property(atomic, readonly, assign) int64_t currentOffset; + +// The fetcher for the current data chunk, if any +@property(atomic, strong, GTM_NULLABLE) GTMSessionFetcher *chunkFetcher; + +// The active fetcher is the current chunk fetcher, or the upload fetcher itself +// if no chunk fetcher has yet been created. +@property(atomic, readonly) GTMSessionFetcher *activeFetcher; + +// The last request made by an active fetcher. Useful for testing. +@property(atomic, readonly, GTM_NULLABLE) NSURLRequest *lastChunkRequest; + +// The status code from the most recently-completed fetch. +@property(atomic, assign) NSInteger statusCode; + +// Invoked as part of the stop fetching process. Invoked immediately if there is no upload in +// progress, otherwise invoked with the results of the attempt to notify the server that the +// upload will not continue. +// +// Unlike other callbacks, since this is related specifically to the stopFetching flow it is not +// cleared by stopFetching. It will instead clear itself after it is invoked or if the completion +// has occured before stopFetching is called. +@property(atomic, copy, GTM_NULLABLE) GTMSessionUploadFetcherCancellationHandler + cancellationHandler; + +// Exposed for testing only. +@property(atomic, readonly, GTM_NULLABLE) dispatch_queue_t delegateCallbackQueue; +@property(atomic, readonly, GTM_NULLABLE) GTMSessionFetcherCompletionHandler delegateCompletionHandler; + +@end + +@interface GTMSessionFetcher (GTMSessionUploadFetcherMethods) + +@property(readonly, GTM_NULLABLE) GTMSessionUploadFetcher *parentUploadFetcher; + +@end + +GTM_ASSUME_NONNULL_END diff --git a/shlack/Pods/GTMSessionFetcher/Source/GTMSessionUploadFetcher.m b/shlack/Pods/GTMSessionFetcher/Source/GTMSessionUploadFetcher.m new file mode 100644 index 0000000..7a43c67 --- /dev/null +++ b/shlack/Pods/GTMSessionFetcher/Source/GTMSessionUploadFetcher.m @@ -0,0 +1,1959 @@ +/* Copyright 2014 Google Inc. All rights reserved. + * + * 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. + */ + +#if !defined(__has_feature) || !__has_feature(objc_arc) +#error "This file requires ARC support." +#endif + +#import "GTMSessionUploadFetcher.h" + +static NSString *const kGTMSessionIdentifierIsUploadChunkFetcherMetadataKey = @"_upChunk"; +static NSString *const kGTMSessionIdentifierUploadFileURLMetadataKey = @"_upFileURL"; +static NSString *const kGTMSessionIdentifierUploadFileLengthMetadataKey = @"_upFileLen"; +static NSString *const kGTMSessionIdentifierUploadLocationURLMetadataKey = @"_upLocURL"; +static NSString *const kGTMSessionIdentifierUploadMIMETypeMetadataKey = @"_uploadMIME"; +static NSString *const kGTMSessionIdentifierUploadChunkSizeMetadataKey = @"_upChSize"; +static NSString *const kGTMSessionIdentifierUploadCurrentOffsetMetadataKey = @"_upOffset"; + +static NSString *const kGTMSessionHeaderXGoogUploadChunkGranularity = @"X-Goog-Upload-Chunk-Granularity"; +static NSString *const kGTMSessionHeaderXGoogUploadCommand = @"X-Goog-Upload-Command"; +static NSString *const kGTMSessionHeaderXGoogUploadContentLength = @"X-Goog-Upload-Content-Length"; +static NSString *const kGTMSessionHeaderXGoogUploadContentType = @"X-Goog-Upload-Content-Type"; +static NSString *const kGTMSessionHeaderXGoogUploadOffset = @"X-Goog-Upload-Offset"; +static NSString *const kGTMSessionHeaderXGoogUploadProtocol = @"X-Goog-Upload-Protocol"; +static NSString *const kGTMSessionXGoogUploadProtocolResumable = @"resumable"; +static NSString *const kGTMSessionHeaderXGoogUploadSizeReceived = @"X-Goog-Upload-Size-Received"; +static NSString *const kGTMSessionHeaderXGoogUploadStatus = @"X-Goog-Upload-Status"; +static NSString *const kGTMSessionHeaderXGoogUploadURL = @"X-Goog-Upload-URL"; + +// Property of chunk fetchers identifying the parent upload fetcher. Non-retained NSValue. +static NSString *const kGTMSessionUploadFetcherChunkParentKey = @"_uploadFetcherChunkParent"; + +int64_t const kGTMSessionUploadFetcherUnknownFileSize = -1; + +int64_t const kGTMSessionUploadFetcherStandardChunkSize = (int64_t)LLONG_MAX; + +#if TARGET_OS_IPHONE +int64_t const kGTMSessionUploadFetcherMaximumDemandBufferSize = 10 * 1024 * 1024; // 10 MB for iOS, watchOS, tvOS +#else +int64_t const kGTMSessionUploadFetcherMaximumDemandBufferSize = 100 * 1024 * 1024; // 100 MB for macOS +#endif + +typedef NS_ENUM(NSUInteger, GTMSessionUploadFetcherStatus) { + kStatusUnknown, + kStatusActive, + kStatusFinal, + kStatusCancelled, +}; + +NSString *const kGTMSessionFetcherUploadLocationObtainedNotification = + @"kGTMSessionFetcherUploadLocationObtainedNotification"; + +#if !GTMSESSION_BUILD_COMBINED_SOURCES +@interface GTMSessionFetcher (ProtectedMethods) + +// Access to non-public method on the parent fetcher class. +- (void)stopFetchReleasingCallbacks:(BOOL)shouldReleaseCallbacks; +- (void)createSessionIdentifierWithMetadata:(NSDictionary *)metadata; +- (GTMSessionFetcherCompletionHandler)completionHandlerWithTarget:(id)target + didFinishSelector:(SEL)finishedSelector; +- (void)invokeOnCallbackQueue:(dispatch_queue_t)callbackQueue + afterUserStopped:(BOOL)afterStopped + block:(void (^)(void))block; +- (NSTimer *)retryTimer; +- (void)beginFetchForRetry; + +@property(readwrite, strong) NSData *downloadedData; +- (void)releaseCallbacks; + +- (NSInteger)statusCodeUnsynchronized; + +- (BOOL)userStoppedFetching; + +@end +#endif // !GTMSESSION_BUILD_COMBINED_SOURCES + +@interface GTMSessionUploadFetcher () + +// Changing readonly to readwrite. +@property(atomic, strong, readwrite) NSURLRequest *lastChunkRequest; +@property(atomic, readwrite, assign) int64_t currentOffset; + +// Internal properties. +@property(strong, atomic, GTM_NULLABLE) GTMSessionFetcher *fetcherInFlight; // Synchronized on self. + +@property(assign, atomic, getter=isSubdataGenerating) BOOL subdataGenerating; +@property(assign, atomic) BOOL shouldInitiateOffsetQuery; +@property(assign, atomic) int64_t uploadGranularity; + +@end + +@implementation GTMSessionUploadFetcher { + GTMSessionFetcher *_chunkFetcher; + + // We'll call through to the delegate's completion handler. + GTMSessionFetcherCompletionHandler _delegateCompletionHandler; + dispatch_queue_t _delegateCallbackQueue; + + // The initial fetch's body length and bytes actually sent are + // needed for calculating progress during subsequent chunk uploads + int64_t _initialBodyLength; + int64_t _initialBodySent; + + // The upload server address for the chunks of this upload session. + NSURL *_uploadLocationURL; + + // _uploadData, _uploadDataProvider, or _uploadFileHandle may be set, but only one. + NSData *_uploadData; + NSFileHandle *_uploadFileHandle; + GTMSessionUploadFetcherDataProvider _uploadDataProvider; + NSURL *_uploadFileURL; + int64_t _uploadFileLength; + NSString *_uploadMIMEType; + int64_t _chunkSize; + int64_t _uploadGranularity; + BOOL _isPaused; + BOOL _isRestartedUpload; + BOOL _shouldInitiateOffsetQuery; + + // Tied to useBackgroundSession property, since this property is applicable to chunk fetchers. + BOOL _useBackgroundSessionOnChunkFetchers; + + // We keep the latest offset into the upload data just for progress reporting. + int64_t _currentOffset; + + NSDictionary *_recentChunkReponseHeaders; + NSInteger _recentChunkStatusCode; + + // For waiting, we need to know the fetcher in flight, if any, and if subdata generation + // is in progress. + GTMSessionFetcher *_fetcherInFlight; + BOOL _isSubdataGenerating; + BOOL _isCancelInFlight; + + GTMSessionUploadFetcherCancellationHandler _cancellationHandler; +} + ++ (void)load { + [self uploadFetchersForBackgroundSessions]; +} + ++ (instancetype)uploadFetcherWithRequest:(NSURLRequest *)request + uploadMIMEType:(NSString *)uploadMIMEType + chunkSize:(int64_t)chunkSize + fetcherService:(GTMSessionFetcherService *)fetcherService { + GTMSessionUploadFetcher *fetcher = [self uploadFetcherWithRequest:request + fetcherService:fetcherService]; + [fetcher setLocationURL:nil + uploadMIMEType:uploadMIMEType + chunkSize:chunkSize]; + return fetcher; +} + ++ (instancetype)uploadFetcherWithLocation:(NSURL * GTM_NULLABLE_TYPE)uploadLocationURL + uploadMIMEType:(NSString *)uploadMIMEType + chunkSize:(int64_t)chunkSize + fetcherService:(GTMSessionFetcherService *)fetcherService { + GTMSessionUploadFetcher *fetcher = [self uploadFetcherWithRequest:nil + fetcherService:fetcherService]; + [fetcher setLocationURL:uploadLocationURL + uploadMIMEType:uploadMIMEType + chunkSize:chunkSize]; + return fetcher; +} + ++ (instancetype)uploadFetcherForSessionIdentifierMetadata:(NSDictionary *)metadata { + GTMSESSION_ASSERT_DEBUG( + [metadata[kGTMSessionIdentifierIsUploadChunkFetcherMetadataKey] boolValue], + @"Session identifier metadata is not for an upload fetcher: %@", metadata); + + NSNumber *uploadFileLengthNum = metadata[kGTMSessionIdentifierUploadFileLengthMetadataKey]; + GTMSESSION_ASSERT_DEBUG(uploadFileLengthNum != nil, + @"Session metadata missing an UploadFileSize"); + if (uploadFileLengthNum == nil) return nil; + + int64_t uploadFileLength = [uploadFileLengthNum longLongValue]; + GTMSESSION_ASSERT_DEBUG(uploadFileLength >= 0, @"Session metadata UploadFileSize is unknown"); + + NSString *uploadFileURLString = metadata[kGTMSessionIdentifierUploadFileURLMetadataKey]; + GTMSESSION_ASSERT_DEBUG(uploadFileURLString, @"Session metadata missing an UploadFileURL"); + if (uploadFileURLString == nil) return nil; + + NSURL *uploadFileURL = [NSURL URLWithString:uploadFileURLString]; + // There used to be a call here to NSURL checkResourceIsReachableAndReturnError: to check for the + // existence of the file (also tried NSFileManager fileExistsAtPath:). We've determined + // empirically that the check can fail at startup even when the upload file does in fact exist. + // For now, we'll go ahead and restore the background upload fetcher. If the file doesn't exist, + // it will fail later. + + NSString *uploadLocationURLString = metadata[kGTMSessionIdentifierUploadLocationURLMetadataKey]; + NSURL *uploadLocationURL = + uploadLocationURLString ? [NSURL URLWithString:uploadLocationURLString] : nil; + + NSString *uploadMIMEType = + metadata[kGTMSessionIdentifierUploadMIMETypeMetadataKey]; + int64_t uploadChunkSize = + [metadata[kGTMSessionIdentifierUploadChunkSizeMetadataKey] longLongValue]; + if (uploadChunkSize <= 0) { + uploadChunkSize = kGTMSessionUploadFetcherStandardChunkSize; + } + int64_t currentOffset = + [metadata[kGTMSessionIdentifierUploadCurrentOffsetMetadataKey] longLongValue]; + GTMSESSION_ASSERT_DEBUG(currentOffset <= uploadFileLength, + @"CurrentOffset (%lld) exceeds UploadFileSize (%lld)", + currentOffset, uploadFileLength); + if (currentOffset > uploadFileLength) return nil; + + GTMSessionUploadFetcher *uploadFetcher = [self uploadFetcherWithLocation:uploadLocationURL + uploadMIMEType:uploadMIMEType + chunkSize:uploadChunkSize + fetcherService:nil]; + // Set the upload file length before setting the upload file URL tries to determine the length. + [uploadFetcher setUploadFileLength:uploadFileLength]; + + uploadFetcher.uploadFileURL = uploadFileURL; + uploadFetcher.sessionUserInfo = metadata; + uploadFetcher.useBackgroundSession = YES; + uploadFetcher.currentOffset = currentOffset; + uploadFetcher.delegateCallbackQueue = uploadFetcher.callbackQueue; + uploadFetcher.allowedInsecureSchemes = @[ @"http" ]; // Allowed on restored upload fetcher. + return uploadFetcher; +} + ++ (instancetype)uploadFetcherWithRequest:(NSURLRequest *)request + fetcherService:(GTMSessionFetcherService *)fetcherService { + // Internal utility method for instantiating fetchers + GTMSessionUploadFetcher *fetcher; + if ([fetcherService isKindOfClass:[GTMSessionFetcherService class]]) { + fetcher = [fetcherService fetcherWithRequest:request + fetcherClass:self]; + } else { + fetcher = [self fetcherWithRequest:request]; + } + fetcher.useBackgroundSession = YES; + return fetcher; +} + ++ (NSPointerArray *)uploadFetcherPointerArrayForBackgroundSessions { + static NSPointerArray *gUploadFetcherPointerArrayForBackgroundSessions = nil; + + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + gUploadFetcherPointerArrayForBackgroundSessions = [NSPointerArray weakObjectsPointerArray]; + }); + return gUploadFetcherPointerArrayForBackgroundSessions; +} + ++ (instancetype)uploadFetcherForSessionIdentifier:(NSString *)sessionIdentifier { + GTMSESSION_ASSERT_DEBUG(sessionIdentifier != nil, @"Invalid session identifier"); + NSArray *uploadFetchersForBackgroundSessions = [self uploadFetchersForBackgroundSessions]; + for (GTMSessionUploadFetcher *uploadFetcher in uploadFetchersForBackgroundSessions) { + if ([uploadFetcher.chunkFetcher.sessionIdentifier isEqual:sessionIdentifier]) { + return uploadFetcher; + } + } + return nil; +} + ++ (NSArray *)uploadFetchersForBackgroundSessions { + NSMutableSet *restoredSessionIdentifiers = [[NSMutableSet alloc] init]; + NSMutableArray *uploadFetchers = [[NSMutableArray alloc] init]; + NSPointerArray *uploadFetcherPointerArray = [self uploadFetcherPointerArrayForBackgroundSessions]; + + // Collect the background session upload fetchers that are still in memory. + @synchronized(uploadFetcherPointerArray) { + [uploadFetcherPointerArray compact]; + for (GTMSessionUploadFetcher *uploadFetcher in uploadFetcherPointerArray) { + NSString *sessionIdentifier = uploadFetcher.chunkFetcher.sessionIdentifier; + if (sessionIdentifier) { + [restoredSessionIdentifiers addObject:sessionIdentifier]; + [uploadFetchers addObject:uploadFetcher]; + } + } + } // @synchronized(uploadFetcherPointerArray) + + // The system may have other ongoing background upload sessions. Restore upload fetchers for those + // too. + NSArray *fetchers = [GTMSessionFetcher fetchersForBackgroundSessions]; + for (GTMSessionFetcher *fetcher in fetchers) { + NSString *sessionIdentifier = fetcher.sessionIdentifier; + if (!sessionIdentifier || [restoredSessionIdentifiers containsObject:sessionIdentifier]) { + continue; + } + NSDictionary *sessionIdentifierMetadata = [fetcher sessionIdentifierMetadata]; + if (sessionIdentifierMetadata == nil) { + continue; + } + if (![sessionIdentifierMetadata[kGTMSessionIdentifierIsUploadChunkFetcherMetadataKey] boolValue]) { + continue; + } + GTMSessionUploadFetcher *uploadFetcher = + [self uploadFetcherForSessionIdentifierMetadata:sessionIdentifierMetadata]; + if (uploadFetcher == nil) { + // Something went wrong with this upload fetcher, so kill the restored chunk fetcher. + [fetcher stopFetching]; + continue; + } + [uploadFetchers addObject:uploadFetcher]; + uploadFetcher->_chunkFetcher = fetcher; + uploadFetcher->_fetcherInFlight = fetcher; + [uploadFetcher attachSendProgressBlockToChunkFetcher:fetcher]; + fetcher.completionHandler = + [fetcher completionHandlerWithTarget:uploadFetcher + didFinishSelector:@selector(chunkFetcher:finishedWithData:error:)]; + + GTMSESSION_LOG_DEBUG(@"%@ restoring upload fetcher %@ for chunk fetcher %@", + [self class], uploadFetcher, fetcher); + } + return uploadFetchers; +} + +- (void)setUploadData:(NSData *)data { + BOOL changed = NO; + + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + if (_uploadData != data) { + _uploadData = data; + changed = YES; + } + } + if (changed) { + [self setupRequestHeaders]; + } +} + +- (NSData *)uploadData { + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + return _uploadData; + } +} + +- (void)setUploadFileHandle:(NSFileHandle *)fh { + BOOL changed = NO; + + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + if (_uploadFileHandle != fh) { + _uploadFileHandle = fh; + changed = YES; + } + } + if (changed) { + [self setupRequestHeaders]; + } +} + +- (NSFileHandle *)uploadFileHandle { + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + return _uploadFileHandle; + } +} + +- (void)setUploadFileURL:(NSURL *)uploadURL { + BOOL changed = NO; + + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + if (_uploadFileURL != uploadURL) { + _uploadFileURL = uploadURL; + changed = YES; + } + } + if (changed) { + [self setupRequestHeaders]; + } +} + +- (NSURL *)uploadFileURL { + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + return _uploadFileURL; + } +} + +- (void)setUploadFileLength:(int64_t)fullLength { + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + if (_uploadFileLength == kGTMSessionUploadFetcherUnknownFileSize && + fullLength != kGTMSessionUploadFetcherUnknownFileSize) { + _uploadFileLength = fullLength; + } + } +} + +- (void)setUploadDataLength:(int64_t)fullLength + provider:(GTMSessionUploadFetcherDataProvider)block { + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + _uploadDataProvider = [block copy]; + _uploadFileLength = fullLength; + } + [self setupRequestHeaders]; +} + +- (GTMSessionUploadFetcherDataProvider)uploadDataProvider { + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + return _uploadDataProvider; + } +} + + +- (void)setUploadMIMEType:(NSString *)uploadMIMEType { + GTMSESSION_ASSERT_DEBUG(0, @"TODO: disallow setUploadMIMEType by making declaration readonly"); + // (and uploadMIMEType, chunksize, currentOffset) + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + _uploadMIMEType = uploadMIMEType; + } +} + +- (NSString *)uploadMIMEType { + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + return _uploadMIMEType; + } +} + +- (void)setChunkSize:(int64_t)chunkSize { + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + _chunkSize = chunkSize; + } +} + +- (int64_t)chunkSize { + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + return _chunkSize; + } +} + +- (void)setupRequestHeaders { + GTMSessionCheckNotSynchronized(self); + +#if DEBUG + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + int hasData = (_uploadData != nil) ? 1 : 0; + int hasFileHandle = (_uploadFileHandle != nil) ? 1 : 0; + int hasFileURL = (_uploadFileURL != nil) ? 1 : 0; + int hasUploadDataProvider = (_uploadDataProvider != nil) ? 1 : 0; + int numberOfSources = hasData + hasFileHandle + hasFileURL + hasUploadDataProvider; + #pragma unused(numberOfSources) + GTMSESSION_ASSERT_DEBUG(numberOfSources == 1, + @"Need just one upload source (%d)", numberOfSources); + } // @synchronized(self) +#endif + + // Add our custom headers to the initial request indicating the data + // type and total size to be delivered later in the chunk requests. + NSMutableURLRequest *mutableRequest = [self.request mutableCopy]; + + GTMSESSION_ASSERT_DEBUG((mutableRequest == nil) != (_uploadLocationURL == nil), + @"Request and location are mutually exclusive"); + if (!mutableRequest) return; + + [mutableRequest setValue:kGTMSessionXGoogUploadProtocolResumable + forHTTPHeaderField:kGTMSessionHeaderXGoogUploadProtocol]; + [mutableRequest setValue:@"start" + forHTTPHeaderField:kGTMSessionHeaderXGoogUploadCommand]; + [mutableRequest setValue:_uploadMIMEType + forHTTPHeaderField:kGTMSessionHeaderXGoogUploadContentType]; + [mutableRequest setValue:@([self fullUploadLength]).stringValue + forHTTPHeaderField:kGTMSessionHeaderXGoogUploadContentLength]; + + NSString *method = mutableRequest.HTTPMethod; + if (method == nil || [method caseInsensitiveCompare:@"GET"] == NSOrderedSame) { + [mutableRequest setHTTPMethod:@"POST"]; + } + + // Ensure the user agent header identifies this to the upload server as a + // GTMSessionUploadFetcher client. The /1 can be incremented in the unlikely circumstance + // we need to make a bug fix in the client that the server can recognize. + NSString *const kUserAgentStub = @"(GTMSUF/1)"; + NSString *userAgent = [mutableRequest valueForHTTPHeaderField:@"User-Agent"]; + if (userAgent == nil + || [userAgent rangeOfString:kUserAgentStub].location == NSNotFound) { + if (userAgent.length == 0) { + userAgent = GTMFetcherStandardUserAgentString(nil); + } + userAgent = [userAgent stringByAppendingFormat:@" %@", kUserAgentStub]; + [mutableRequest setValue:userAgent forHTTPHeaderField:@"User-Agent"]; + } + [self setRequest:mutableRequest]; +} + +- (void)setLocationURL:(NSURL * GTM_NULLABLE_TYPE)location + uploadMIMEType:(NSString *)uploadMIMEType + chunkSize:(int64_t)chunkSize { + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + GTMSESSION_ASSERT_DEBUG(chunkSize > 0, @"chunk size is zero"); + + // When resuming an upload, set the known upload target URL. + _uploadLocationURL = location; + + _uploadMIMEType = uploadMIMEType; + _chunkSize = chunkSize; + + // Indicate that we've not yet determined the file handle's length + _uploadFileLength = kGTMSessionUploadFetcherUnknownFileSize; + + // Indicate that we've not yet determined the upload fetcher status + _recentChunkStatusCode = -1; + + // If this is restarting an upload begun by another fetcher, + // the location is specified but the request is nil + _isRestartedUpload = (location != nil); + } // @synchronized(self) +} + +- (int64_t)fullUploadLength { + int64_t result; + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + if (_uploadData) { + result = (int64_t)_uploadData.length; + } else { + if (_uploadFileLength == kGTMSessionUploadFetcherUnknownFileSize) { + if (_uploadFileHandle) { + // First time through, seek to end to determine file length + _uploadFileLength = (int64_t)[_uploadFileHandle seekToEndOfFile]; + } else if (_uploadDataProvider) { + // _uploadFileLength is set when the _uploadDataProvider is set. + GTMSESSION_ASSERT_DEBUG(_uploadFileLength >= 0, @"No uploadDataProvider length set"); + } else { + NSNumber *filesizeNum; + NSError *valueError; + if ([_uploadFileURL getResourceValue:&filesizeNum + forKey:NSURLFileSizeKey + error:&valueError]) { + _uploadFileLength = filesizeNum.longLongValue; + } else { + GTMSESSION_ASSERT_DEBUG(NO, @"Cannot get file size: %@\n %@", + valueError, _uploadFileURL.path); + _uploadFileLength = 0; + } + } + } + result = _uploadFileLength; + } + } // @synchronized(self) + return result; +} + +// Make a subdata of the upload data. +- (void)generateChunkSubdataWithOffset:(int64_t)offset + length:(int64_t)length + response:(GTMSessionUploadFetcherDataProviderResponse)response { + GTMSessionUploadFetcherDataProvider uploadDataProvider = self.uploadDataProvider; + if (uploadDataProvider) { + uploadDataProvider(offset, length, response); + return; + } + + NSData *uploadData = self.uploadData; + if (uploadData) { + // NSData provided. + NSData *resultData; + if (offset == 0 && length == (int64_t)uploadData.length) { + resultData = uploadData; + } else { + int64_t dataLength = (int64_t)uploadData.length; + // Ensure our range is valid. b/18007814 + if (offset + length > dataLength) { + NSString *errorMessage = [NSString stringWithFormat: + @"Range invalid for upload data. offset: %lld\tlength: %lld\tdataLength: %lld", + offset, length, dataLength]; + GTMSESSION_ASSERT_DEBUG(NO, @"%@", errorMessage); + response(nil, + kGTMSessionUploadFetcherUnknownFileSize, + [self uploadChunkUnavailableErrorWithDescription:errorMessage]); + return; + } + NSRange range = NSMakeRange((NSUInteger)offset, (NSUInteger)length); + + @try { + resultData = [uploadData subdataWithRange:range]; + } + @catch (NSException *exception) { + NSString *errorMessage = exception.description; + GTMSESSION_ASSERT_DEBUG(NO, @"%@", errorMessage); + response(nil, + kGTMSessionUploadFetcherUnknownFileSize, + [self uploadChunkUnavailableErrorWithDescription:errorMessage]); + return; + } + } + response(resultData, kGTMSessionUploadFetcherUnknownFileSize, nil); + return; + } + NSURL *uploadFileURL = self.uploadFileURL; + if (uploadFileURL) { + dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ + [self generateChunkSubdataFromFileURL:uploadFileURL + offset:offset + length:length + response:response]; + }); + return; + } + GTMSESSION_ASSERT_DEBUG(_uploadFileHandle, @"Unexpectedly missing upload data package"); + NSFileHandle *uploadFileHandle = self.uploadFileHandle; + dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ + [self generateChunkSubdataFromFileHandle:uploadFileHandle + offset:offset + length:length + response:response]; + }); +} + +- (void)generateChunkSubdataFromFileHandle:(NSFileHandle *)fileHandle + offset:(int64_t)offset + length:(int64_t)length + response:(GTMSessionUploadFetcherDataProviderResponse)response { + NSData *resultData; + NSError *error; + @try { + [fileHandle seekToFileOffset:(unsigned long long)offset]; + resultData = [fileHandle readDataOfLength:(NSUInteger)length]; + } + @catch (NSException *exception) { + GTMSESSION_ASSERT_DEBUG(NO, @"uploadFileHandle failed to read, %@", exception); + error = [self uploadChunkUnavailableErrorWithDescription:exception.description]; + } + // The response always re-dispatches to the main thread, so we skip doing that here. + response(resultData, kGTMSessionUploadFetcherUnknownFileSize, error); +} + +- (void)generateChunkSubdataFromFileURL:(NSURL *)fileURL + offset:(int64_t)offset + length:(int64_t)length + response:(GTMSessionUploadFetcherDataProviderResponse)response { + GTMSessionCheckNotSynchronized(self); + + NSData *resultData; + NSError *error; + int64_t fullUploadLength = [self fullUploadLength]; + NSData *mappedData = + [NSData dataWithContentsOfURL:fileURL + options:NSDataReadingMappedAlways + NSDataReadingUncached + error:&error]; + if (!mappedData) { + // We could not create an NSData by memory-mapping the file. +#if TARGET_IPHONE_SIMULATOR + // NSTemporaryDirectory() can differ in the simulator between app restarts, + // yet the contents for the new path remains unchanged, so try the latest temp path. + if ([error.domain isEqual:NSCocoaErrorDomain] && (error.code == NSFileReadNoSuchFileError)) { + NSString *filename = [fileURL lastPathComponent]; + NSString *filePath = [NSTemporaryDirectory() stringByAppendingPathComponent:filename]; + NSURL *newFileURL = [NSURL fileURLWithPath:filePath]; + if (![newFileURL isEqual:fileURL]) { + [self generateChunkSubdataFromFileURL:newFileURL + offset:offset + length:length + response:response]; + return; + } + } +#endif + + // If the file is just too large to create an NSData for, or if for some other reason we can't + // map it, create an NSFileHandle instead to read a subset into an NSData. +#if DEBUG + NSNumber *fileSizeNum; + BOOL hasFileSize = [fileURL getResourceValue:&fileSizeNum forKey:NSURLFileSizeKey error:NULL]; + GTMSESSION_LOG_DEBUG(@"Note: uploadFileURL is falling back to creating upload chunks by reading" + @" an NSFileHandle since uploadFileURL failed to map the upload file," + @" file size %@, %@", + hasFileSize ? fileSizeNum : @"unknown", error); +#endif + + NSFileHandle *fileHandle = [NSFileHandle fileHandleForReadingFromURL:fileURL + error:&error]; + if (fileHandle != nil) { + [self generateChunkSubdataFromFileHandle:fileHandle + offset:offset + length:length + response:response]; + return; + } + GTMSESSION_ASSERT_DEBUG(NO, @"uploadFileURL failed to read, %@", error); + // Fall through with the error. + } else { + // Successfully created an NSData by memory-mapping the file. + if ((NSUInteger)(offset + length) > mappedData.length) { + NSString *errorMessage = [NSString stringWithFormat: + @"Range invalid for upload data. offset: %lld\tlength: %lld\tdataLength: %lld\texpected UploadLength: %lld", + offset, length, (long long)mappedData.length, fullUploadLength]; + GTMSESSION_ASSERT_DEBUG(NO, @"%@", errorMessage); + response(nil, + kGTMSessionUploadFetcherUnknownFileSize, + [self uploadChunkUnavailableErrorWithDescription:errorMessage]); + return; + } + if (offset > 0 || length < fullUploadLength) { + NSRange range = NSMakeRange((NSUInteger)offset, (NSUInteger)length); + resultData = [mappedData subdataWithRange:range]; + } else { + resultData = mappedData; + } + } + // The response always re-dispatches to the main thread, so we skip re-dispatching here. + response(resultData, kGTMSessionUploadFetcherUnknownFileSize, error); +} + +- (NSError *)uploadChunkUnavailableErrorWithDescription:(NSString *)description { + // The description in the userInfo is intended as a clue to programmers, not + // for client code to examine or rely on. + NSDictionary *userInfo = @{ @"description" : description }; + return [NSError errorWithDomain:kGTMSessionFetcherErrorDomain + code:GTMSessionFetcherErrorUploadChunkUnavailable + userInfo:userInfo]; +} + +- (NSError *)prematureFailureErrorWithUserInfo:(NSDictionary *)userInfo { + // An error for if we get an unexpected status from the upload server or + // otherwise cannot continue. This is an issue beyond the upload protocol; + // there's no way the client can do anything useful except give up. + NSError *error = [NSError errorWithDomain:kGTMSessionFetcherStatusDomain + code:501 // Not implemented + userInfo:userInfo]; + return error; +} + ++ (GTMSessionUploadFetcherStatus)uploadStatusFromResponseHeaders:(NSDictionary *)responseHeaders { + NSString *statusString = [responseHeaders objectForKey:kGTMSessionHeaderXGoogUploadStatus]; + if ([statusString isEqual:@"active"]) { + return kStatusActive; + } + if ([statusString isEqual:@"final"]) { + return kStatusFinal; + } + if ([statusString isEqual:@"cancelled"]) { + return kStatusCancelled; + } + return kStatusUnknown; +} + +#pragma mark Method overrides affecting the initial fetch only + +- (void)setCompletionHandler:(GTMSessionFetcherCompletionHandler)handler { + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + _delegateCompletionHandler = handler; + } +} + +- (void)setDelegateCallbackQueue:(dispatch_queue_t GTM_NULLABLE_TYPE)queue { + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + _delegateCallbackQueue = queue; + } +} + +- (dispatch_queue_t GTM_NULLABLE_TYPE)delegateCallbackQueue { + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + return _delegateCallbackQueue; + } +} + +- (BOOL)isRestartedUpload { + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + return _isRestartedUpload; + } +} + +- (GTMSessionFetcher * GTM_NULLABLE_TYPE)chunkFetcher { + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + return _chunkFetcher; + } +} + +- (void)setChunkFetcher:(GTMSessionFetcher * GTM_NULLABLE_TYPE)fetcher { + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + _chunkFetcher = fetcher; + } +} + +- (void)setFetcherInFlight:(GTMSessionFetcher * GTM_NULLABLE_TYPE)fetcher { + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + _fetcherInFlight = fetcher; + } +} + +- (GTMSessionFetcher * GTM_NULLABLE_TYPE)fetcherInFlight { + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + return _fetcherInFlight; + } +} + +- (void)setCancellationHandler:(GTMSessionUploadFetcherCancellationHandler GTM_NULLABLE_TYPE) + cancellationHandler { + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + _cancellationHandler = cancellationHandler; + } +} + +- (GTMSessionUploadFetcherCancellationHandler GTM_NULLABLE_TYPE)cancellationHandler { + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + return _cancellationHandler; + } +} + +- (void)beginFetchForRetry { + GTMSessionCheckNotSynchronized(self); + + // Override the superclass to reset the initial body length and fetcher-in-flight, + // then call the superclass implementation. + [self setInitialBodyLength:[self bodyLength]]; + + GTMSESSION_ASSERT_DEBUG(self.fetcherInFlight == nil, @"unexpected fetcher in flight: %@", + self.fetcherInFlight); + self.fetcherInFlight = self; + [super beginFetchForRetry]; +} + +- (void)beginFetchWithCompletionHandler:(GTMSessionFetcherCompletionHandler)handler { + GTMSessionCheckNotSynchronized(self); + + [self setInitialBodyLength:[self bodyLength]]; + + // We'll hold onto the superclass's callback queue so we can invoke the handler + // even after the superclass has released the queue and its callback handler, as + // happens during auth failure. + [self setDelegateCallbackQueue:self.callbackQueue]; + self.completionHandler = handler; + + if ([self isRestartedUpload]) { + // When restarting an upload, we know the destination location for chunk fetches, + // but we need to query to find the initial offset. + if (![self isPaused]) { + [self sendQueryForUploadOffsetWithFetcherProperties:self.properties]; + } + return; + } + // We don't want to call into the client's completion block immediately + // after the finish of the initial connection (the delegate is called only + // when uploading finishes), so we substitute our own completion block to be + // called when the initial connection finishes + GTMSESSION_ASSERT_DEBUG(self.fetcherInFlight == nil, @"unexpected fetcher in flight: %@", + self.fetcherInFlight); + + self.fetcherInFlight = self; + [super beginFetchWithCompletionHandler:^(NSData *data, NSError *error) { + self.fetcherInFlight = nil; + // callback + + BOOL hasTestBlock = (self.testBlock != nil); + if (![self isRestartedUpload] && !hasTestBlock) { + if (error == nil) { + [self beginChunkFetches]; + } else { + if ([self retryTimer] == nil) { + [self invokeFinalCallbackWithData:nil + error:error + shouldInvalidateLocation:YES]; + } + } + } else { + // If there was no initial request, then this fetch is resuming some + // other uploadFetcher's initial request, and the superclass's connection + // is never used, so at this point we call the user's actual completion + // block. + if (!hasTestBlock) { + [self invokeFinalCallbackWithData:data + error:error + shouldInvalidateLocation:YES]; + } else { + // There was a test block, so we won't do chunk fetches, but we simulate obtaining + // the data to be uploaded from the upload data provider block or the file handle, + // and then call back. + [self generateChunkSubdataWithOffset:0 + length:[self fullUploadLength] + response:^(NSData *generateData, int64_t fullUploadLength, NSError *generateError) { + [self invokeFinalCallbackWithData:data + error:error + shouldInvalidateLocation:YES]; + }]; + } + } + }]; +} + +- (void)beginChunkFetches { + GTMSessionCheckNotSynchronized(self); + +#if DEBUG + // The initial response of the resumable upload protocol should have an + // empty body + // + // This assert typically happens because the upload create/edit link URL was + // not supplied with the request, and the server is thus expecting a non- + // resumable request/response. + if (self.downloadedData.length > 0) { + NSData *downloadedData = self.downloadedData; + NSString *str = [[NSString alloc] initWithData:downloadedData + encoding:NSUTF8StringEncoding]; + #pragma unused(str) + GTMSESSION_ASSERT_DEBUG(NO, @"unexpected response data (uploading to the wrong URL?)\n%@", str); + } +#endif + + // We need to get the upload URL from the location header to continue. + NSDictionary *responseHeaders = [self responseHeaders]; + + [self retrieveUploadChunkGranularityFromResponseHeaders:responseHeaders]; + + GTMSessionUploadFetcherStatus uploadStatus = + [[self class] uploadStatusFromResponseHeaders:responseHeaders]; + GTMSESSION_ASSERT_DEBUG(uploadStatus != kStatusUnknown, + @"beginChunkFetches has unexpected upload status for headers %@", responseHeaders); + + BOOL isPrematureStop = (uploadStatus == kStatusFinal) || (uploadStatus == kStatusCancelled); + + NSString *uploadLocationURLStr = [responseHeaders objectForKey:kGTMSessionHeaderXGoogUploadURL]; + BOOL hasUploadLocation = (uploadLocationURLStr.length > 0); + + if (isPrematureStop || !hasUploadLocation) { + GTMSESSION_ASSERT_DEBUG(NO, @"Premature failure: upload-status:\"%@\" location:%@", + [responseHeaders objectForKey:kGTMSessionHeaderXGoogUploadStatus], uploadLocationURLStr); + // We cannot continue since we do not know the location to use + // as our upload destination. + NSDictionary *userInfo = nil; + NSData *downloadedData = self.downloadedData; + if (downloadedData.length > 0) { + userInfo = @{ kGTMSessionFetcherStatusDataKey : downloadedData }; + } + NSError *failureError = [self prematureFailureErrorWithUserInfo:userInfo]; + [self invokeFinalCallbackWithData:nil + error:failureError + shouldInvalidateLocation:YES]; + return; + } + + self.uploadLocationURL = [NSURL URLWithString:uploadLocationURLStr]; + + NSNotificationCenter *nc = [NSNotificationCenter defaultCenter]; + [nc postNotificationName:kGTMSessionFetcherUploadLocationObtainedNotification + object:self]; + + // we've now sent all of the initial post body data, so we need to include + // its size in future progress indicator callbacks + [self setInitialBodySent:[self initialBodyLength]]; + + // just in case the user paused us during the initial fetch... + if (![self isPaused]) { + [self uploadNextChunkWithOffset:0]; + } +} + +- (void)URLSession:(NSURLSession *)session + task:(NSURLSessionTask *)task + didSendBodyData:(int64_t)bytesSent + totalBytesSent:(int64_t)totalBytesSent + totalBytesExpectedToSend:(int64_t)totalBytesExpectedToSend { + // Overrides the superclass. + [self invokeDelegateWithDidSendBytes:bytesSent + totalBytesSent:totalBytesSent + totalBytesExpectedToSend:totalBytesExpectedToSend + [self fullUploadLength]]; +} + +- (BOOL)shouldReleaseCallbacksUponCompletion { + // Overrides the superclass. + + // We don't want the superclass to release the delegate and callback + // blocks once the initial fetch has finished + // + // This is invoked for only successful completion of the connection; + // an error always will invoke and release the callbacks + return NO; +} + +- (void)invokeFinalCallbackWithData:(NSData *)data + error:(NSError *)error + shouldInvalidateLocation:(BOOL)shouldInvalidateLocation { + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + if (shouldInvalidateLocation) { + _uploadLocationURL = nil; + } + + dispatch_queue_t queue = _delegateCallbackQueue; + GTMSessionFetcherCompletionHandler handler = _delegateCompletionHandler; + if (queue && handler) { + [self invokeOnCallbackQueue:queue + afterUserStopped:NO + block:^{ + handler(data, error); + }]; + } + } // @synchronized(self) + + [self releaseUploadAndBaseCallbacks:!self.userStoppedFetching]; +} + +- (void)releaseUploadAndBaseCallbacks:(BOOL)shouldReleaseCancellation { + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + _delegateCallbackQueue = nil; + _delegateCompletionHandler = nil; + _uploadDataProvider = nil; + if (shouldReleaseCancellation) { + _cancellationHandler = nil; + } + } + + // Release the base class's callbacks, too, if needed. + [self releaseCallbacks]; +} + +- (void)stopFetchReleasingCallbacks:(BOOL)shouldReleaseCallbacks { + GTMSessionCheckNotSynchronized(self); + + // Clear _fetcherInFlight when stopped. Moved from stopFetching, since that's a public method, + // where this method does the work. Fixes issue clearing value when retryBlock included. + GTMSessionFetcher *fetcherInFlight = self.fetcherInFlight; + if (fetcherInFlight == self) { + self.fetcherInFlight = nil; + } + + [super stopFetchReleasingCallbacks:shouldReleaseCallbacks]; + + if (shouldReleaseCallbacks) { + [self releaseUploadAndBaseCallbacks:NO]; + } +} + +#pragma mark Chunk fetching methods + +- (void)uploadNextChunkWithOffset:(int64_t)offset { + // use the properties in each chunk fetcher + NSDictionary *props = [self properties]; + + [self uploadNextChunkWithOffset:offset + fetcherProperties:props]; +} + +- (void)sendQueryForUploadOffsetWithFetcherProperties:(NSDictionary *)props { + GTMSessionFetcher *queryFetcher = [self uploadFetcherWithProperties:props + isQueryFetch:YES]; + queryFetcher.bodyData = [NSData data]; + + NSString *originalComment = self.comment; + [queryFetcher setCommentWithFormat:@"%@ (query offset)", + originalComment ? originalComment : @"upload"]; + + [queryFetcher setRequestValue:@"query" forHTTPHeaderField:kGTMSessionHeaderXGoogUploadCommand]; + + self.fetcherInFlight = queryFetcher; + [queryFetcher beginFetchWithDelegate:self + didFinishSelector:@selector(queryFetcher:finishedWithData:error:)]; +} + +- (void)queryFetcher:(GTMSessionFetcher *)queryFetcher + finishedWithData:(NSData *)data + error:(NSError *)error { + self.fetcherInFlight = nil; + + NSDictionary *responseHeaders = [queryFetcher responseHeaders]; + NSString *sizeReceivedHeader; + + GTMSessionUploadFetcherStatus uploadStatus = + [[self class] uploadStatusFromResponseHeaders:responseHeaders]; + GTMSESSION_ASSERT_DEBUG(uploadStatus != kStatusUnknown || error != nil, + @"query fetcher completion has unexpected upload status for headers %@", responseHeaders); + + if (error == nil) { + sizeReceivedHeader = [responseHeaders objectForKey:kGTMSessionHeaderXGoogUploadSizeReceived]; + + if (uploadStatus == kStatusCancelled || + (uploadStatus == kStatusActive && sizeReceivedHeader == nil)) { + NSDictionary *userInfo = nil; + if (data.length > 0) { + userInfo = @{ kGTMSessionFetcherStatusDataKey : data }; + } + error = [self prematureFailureErrorWithUserInfo:userInfo]; + } + } + + if (error == nil) { + int64_t offset = [sizeReceivedHeader longLongValue]; + int64_t fullUploadLength = [self fullUploadLength]; + if (uploadStatus == kStatusFinal || + (offset >= fullUploadLength && + fullUploadLength != kGTMSessionUploadFetcherUnknownFileSize)) { + // Handle we're done + [self chunkFetcher:queryFetcher finishedWithData:data error:nil]; + } else { + [self retrieveUploadChunkGranularityFromResponseHeaders:responseHeaders]; + [self uploadNextChunkWithOffset:offset]; + } + } else { + // Handle query error + [self chunkFetcher:queryFetcher finishedWithData:data error:error]; + } +} + +- (void)sendCancelUploadWithFetcherProperties:(NSDictionary *)props { + @synchronized(self) { + _isCancelInFlight = YES; + } + GTMSessionFetcher *cancelFetcher = [self uploadFetcherWithProperties:props + isQueryFetch:YES]; + cancelFetcher.bodyData = [NSData data]; + + NSString *originalComment = self.comment; + [cancelFetcher setCommentWithFormat:@"%@ (cancel)", + originalComment ? originalComment : @"upload"]; + + [cancelFetcher setRequestValue:@"cancel" forHTTPHeaderField:kGTMSessionHeaderXGoogUploadCommand]; + + self.fetcherInFlight = cancelFetcher; + [cancelFetcher beginFetchWithCompletionHandler:^(NSData *data, NSError *error) { + self.fetcherInFlight = nil; + if (![self triggerCancellationHandlerForFetch:cancelFetcher data:data error:error]) { + if (error) { + GTMSESSION_LOG_DEBUG(@"cancelFetcher %@", error); + } + } + @synchronized(self) { + self->_isCancelInFlight = NO; + } + }]; +} + +- (void)uploadNextChunkWithOffset:(int64_t)offset + fetcherProperties:(NSDictionary *)props { + GTMSessionCheckNotSynchronized(self); + + // Example chunk headers: + // X-Goog-Upload-Command: upload, finalize + // X-Goog-Upload-Offset: 0 + // Content-Length: 2000000 + // Content-Type: image/jpeg + // + // {bytes 0-1999999} + + // The chunk upload URL requires no authentication header. + GTMSessionFetcher *chunkFetcher = [self uploadFetcherWithProperties:props + isQueryFetch:NO]; + [self attachSendProgressBlockToChunkFetcher:chunkFetcher]; + int64_t chunkSize = [self updateChunkFetcher:chunkFetcher + forChunkAtOffset:offset]; + BOOL isUploadingFileURL = (self.uploadFileURL != nil); + int64_t fullUploadLength = [self fullUploadLength]; + + // The chunk size may have changed, so determine again if we're uploading the full file. + BOOL isUploadingFullFile = (offset == 0 && + fullUploadLength != kGTMSessionUploadFetcherUnknownFileSize && + chunkSize >= fullUploadLength); + if (isUploadingFullFile && isUploadingFileURL) { + // The data is the full upload file URL. + chunkFetcher.bodyFileURL = self.uploadFileURL; + [self beginChunkFetcher:chunkFetcher + offset:offset]; + } else { + // Make an NSData for the subset for this upload chunk. + self.subdataGenerating = YES; + [self generateChunkSubdataWithOffset:offset + length:chunkSize + response:^(NSData *chunkData, int64_t uploadFileLength, NSError *chunkError) { + // The subdata methods may leave us on a background thread. + dispatch_async(dispatch_get_main_queue(), ^{ + self.subdataGenerating = NO; + + // dont allow the updating of fileLength for uploads not using a data provider as they + // should know the file length before the upload starts. + if (self->_uploadDataProvider != nil && uploadFileLength > 0) { + [self setUploadFileLength:uploadFileLength]; + // Update the command and content-length headers if this is the last chunk to be sent. + if (offset + chunkSize >= uploadFileLength) { + int64_t updatedChunkSize = [self updateChunkFetcher:chunkFetcher + forChunkAtOffset:offset]; + if (updatedChunkSize == 0) { + // Calling beginChunkFetcher early when there is no more data to send allows us to + // properly handle nil chunkData below without having to account for the case where + // we are just finalizing the file. + chunkFetcher.bodyData = [[NSData alloc] init]; + [self beginChunkFetcher:chunkFetcher + offset:offset]; + return; + } + } + } + + if (chunkData == nil) { + NSError *responseError = chunkError; + if (!responseError) { + responseError = [self uploadChunkUnavailableErrorWithDescription:@"chunkData is nil"]; + } + [self invokeFinalCallbackWithData:nil + error:responseError + shouldInvalidateLocation:YES]; + return; + } + + BOOL didWriteFile = NO; + if (isUploadingFileURL) { + // Make a temporary file with the data subset. + NSString *tempName = + [NSString stringWithFormat:@"GTMUpload_temp_%@", [[NSUUID UUID] UUIDString]]; + NSString *tempPath = [NSTemporaryDirectory() stringByAppendingPathComponent:tempName]; + NSError *writeError; + didWriteFile = [chunkData writeToFile:tempPath + options:NSDataWritingAtomic + error:&writeError]; + if (didWriteFile) { + chunkFetcher.bodyFileURL = [NSURL fileURLWithPath:tempPath]; + } else { + GTMSESSION_LOG_DEBUG(@"writeToFile failed: %@\n%@", writeError, tempPath); + } + } + if (!didWriteFile) { + chunkFetcher.bodyData = [chunkData copy]; + } + [self beginChunkFetcher:chunkFetcher + offset:offset]; + }); + }]; + } +} + +- (void)beginChunkFetcher:(GTMSessionFetcher *)chunkFetcher + offset:(int64_t)offset { + + // Track the current offset for progress reporting + self.currentOffset = offset; + + // Hang on to the fetcher in case we need to cancel it. We set these before beginning the + // chunk fetch so the observers notified of chunk fetches can inspect the upload fetcher to + // match to the chunk. + self.chunkFetcher = chunkFetcher; + self.fetcherInFlight = chunkFetcher; + + // Update the last chunk request, including any request headers. + self.lastChunkRequest = chunkFetcher.request; + + [chunkFetcher beginFetchWithDelegate:self + didFinishSelector:@selector(chunkFetcher:finishedWithData:error:)]; +} + +- (void)attachSendProgressBlockToChunkFetcher:(GTMSessionFetcher *)chunkFetcher { + chunkFetcher.sendProgressBlock = ^(int64_t bytesSent, int64_t totalBytesSent, + int64_t totalBytesExpectedToSend) { + // The total bytes expected include the initial body and the full chunked + // data, independent of how big this fetcher's chunk is. + int64_t initialBodySent = [self bodyLength]; // TODO(grobbins) use [self initialBodySent] + int64_t totalSent = initialBodySent + self.currentOffset + totalBytesSent; + int64_t totalExpected = initialBodySent + [self fullUploadLength]; + + [self invokeDelegateWithDidSendBytes:bytesSent + totalBytesSent:totalSent + totalBytesExpectedToSend:totalExpected]; + }; +} + +- (NSDictionary *)uploadSessionIdentifierMetadata { + NSMutableDictionary *metadata = [NSMutableDictionary dictionary]; + metadata[kGTMSessionIdentifierIsUploadChunkFetcherMetadataKey] = @YES; + GTMSESSION_ASSERT_DEBUG(self.uploadFileURL, + @"Invalid upload fetcher to create session identifier for metadata"); + metadata[kGTMSessionIdentifierUploadFileURLMetadataKey] = [self.uploadFileURL absoluteString]; + metadata[kGTMSessionIdentifierUploadFileLengthMetadataKey] = @([self fullUploadLength]); + + if (self.uploadLocationURL) { + metadata[kGTMSessionIdentifierUploadLocationURLMetadataKey] = + [self.uploadLocationURL absoluteString]; + } + if (self.uploadMIMEType) { + metadata[kGTMSessionIdentifierUploadMIMETypeMetadataKey] = self.uploadMIMEType; + } + metadata[kGTMSessionIdentifierUploadChunkSizeMetadataKey] = @(self.chunkSize); + metadata[kGTMSessionIdentifierUploadCurrentOffsetMetadataKey] = @(self.currentOffset); + return metadata; +} + +- (GTMSessionFetcher *)uploadFetcherWithProperties:(NSDictionary *)properties + isQueryFetch:(BOOL)isQueryFetch { + GTMSessionCheckNotSynchronized(self); + + // Common code to make a request for a query command or for a chunk upload. + NSURL *uploadLocationURL = self.uploadLocationURL; + NSMutableURLRequest *chunkRequest = [NSMutableURLRequest requestWithURL:uploadLocationURL]; + [chunkRequest setHTTPMethod:@"PUT"]; + + // copy the user-agent from the original connection + // n.b. that self.request is nil for upload fetchers created with an existing upload location + // URL. + NSURLRequest *origRequest = self.request; + NSString *userAgent = [origRequest valueForHTTPHeaderField:@"User-Agent"]; + if (userAgent.length > 0) { + [chunkRequest setValue:userAgent forHTTPHeaderField:@"User-Agent"]; + } + + [chunkRequest setValue:kGTMSessionXGoogUploadProtocolResumable + forHTTPHeaderField:kGTMSessionHeaderXGoogUploadProtocol]; + + // To avoid timeouts when debugging, copy the timeout of the initial fetcher. + NSTimeInterval origTimeout = [origRequest timeoutInterval]; + [chunkRequest setTimeoutInterval:origTimeout]; + + // + // Make a new chunk fetcher. + // + GTMSessionFetcher *chunkFetcher = [GTMSessionFetcher fetcherWithRequest:chunkRequest]; + chunkFetcher.callbackQueue = self.callbackQueue; + chunkFetcher.sessionUserInfo = self.sessionUserInfo; + chunkFetcher.configurationBlock = self.configurationBlock; + chunkFetcher.allowedInsecureSchemes = self.allowedInsecureSchemes; + chunkFetcher.allowLocalhostRequest = self.allowLocalhostRequest; + chunkFetcher.allowInvalidServerCertificates = self.allowInvalidServerCertificates; + chunkFetcher.useUploadTask = !isQueryFetch; + + if (self.uploadFileURL && !isQueryFetch && self.useBackgroundSession) { + [chunkFetcher createSessionIdentifierWithMetadata:[self uploadSessionIdentifierMetadata]]; + } + + // Give the chunk fetcher the same properties as the previous chunk fetcher + chunkFetcher.properties = [properties mutableCopy]; + [chunkFetcher setProperty:[NSValue valueWithNonretainedObject:self] + forKey:kGTMSessionUploadFetcherChunkParentKey]; + + // copy other fetcher settings to the new fetcher + chunkFetcher.retryEnabled = self.retryEnabled; + chunkFetcher.maxRetryInterval = self.maxRetryInterval; + + if ([self isRetryEnabled]) { + // We interpose our own retry method both so we can change the request to ask the server to + // tell us where to resume the chunk. + chunkFetcher.retryBlock = ^(BOOL suggestedWillRetry, NSError *chunkError, + GTMSessionFetcherRetryResponse response) { + void (^finish)(BOOL) = ^(BOOL shouldRetry){ + // We'll retry by sending an offset query. + if (shouldRetry) { + self.shouldInitiateOffsetQuery = !isQueryFetch; + + // We don't know what our actual offset is anymore, but the server will tell us. + self.currentOffset = 0; + } + // We don't actually want to retry this specific fetcher. + response(NO); + }; + + GTMSessionFetcherRetryBlock retryBlock = self.retryBlock; + if (retryBlock) { + // Ask the client, then call the finish block above. + retryBlock(suggestedWillRetry, chunkError, finish); + } else { + finish(suggestedWillRetry); + } + }; + } + + return chunkFetcher; +} + +- (void)chunkFetcher:(GTMSessionFetcher *)chunkFetcher + finishedWithData:(NSData *)data + error:(NSError *)error { + BOOL hasDestroyedOldChunkFetcher = NO; + self.fetcherInFlight = nil; + + NSDictionary *responseHeaders = [chunkFetcher responseHeaders]; + GTMSessionUploadFetcherStatus uploadStatus = + [[self class] uploadStatusFromResponseHeaders:responseHeaders]; + GTMSESSION_ASSERT_DEBUG(uploadStatus != kStatusUnknown + || error != nil + || self.wasCreatedFromBackgroundSession, + @"chunk fetcher completion has kStatusUnknown upload status for headers %@ fetcher %@", + responseHeaders, self); + BOOL isUploadStatusStopped = (uploadStatus == kStatusFinal || uploadStatus == kStatusCancelled); + + // Check if the fetcher was actually querying. If it failed, do not retry, + // as it would enter an infinite retry loop. + NSString *uploadCommand = + chunkFetcher.request.allHTTPHeaderFields[kGTMSessionHeaderXGoogUploadCommand]; + BOOL isQueryFetch = [uploadCommand isEqual:@"query"]; + + // TODO + // Maybe here we can check to see if the request had x goog content length set. (the file length one). + int64_t previousContentLength = + [[chunkFetcher.request valueForHTTPHeaderField:@"Content-Length"] longLongValue]; + // The Content-Length header may not be present if the chunk fetcher was recreated from + // a background session. + BOOL hasKnownChunkSize = (previousContentLength > 0); + BOOL needsQuery = (!hasKnownChunkSize && !isUploadStatusStopped); + + if (error || (needsQuery && !isQueryFetch)) { + NSInteger status = error.code; + + // Status 4xx indicates a bad offset in the Google upload protocol. However, do not retry status + // 404 per spec, nor if the upload size appears to have been zero (since the server will just + // keep asking us to retry.) + if (self.shouldInitiateOffsetQuery || + (needsQuery && !isQueryFetch) || + ([error.domain isEqual:kGTMSessionFetcherStatusDomain] && + status >= 400 && status <= 499 && + status != 404 && + uploadStatus == kStatusActive && + previousContentLength > 0)) { + self.shouldInitiateOffsetQuery = NO; + [self destroyChunkFetcher]; + hasDestroyedOldChunkFetcher = YES; + [self sendQueryForUploadOffsetWithFetcherProperties:chunkFetcher.properties]; + } else { + // Some unexpected status has occurred; handle it as we would a regular + // object fetcher failure. + [self invokeFinalCallbackWithData:data + error:error + shouldInvalidateLocation:NO]; + } + } else { + // The chunk has uploaded successfully. + int64_t newOffset = self.currentOffset + previousContentLength; +#if DEBUG + // Verify that if we think all of the uploading data has been sent, the server responded with + // the "final" upload status. + BOOL hasUploadAllData = (newOffset == [self fullUploadLength]); + BOOL isFinalStatus = (uploadStatus == kStatusFinal); + #pragma unused(hasUploadAllData,isFinalStatus) + GTMSESSION_ASSERT_DEBUG(hasUploadAllData == isFinalStatus || !hasKnownChunkSize, + @"uploadStatus:%@ newOffset:%lld (%lld + %lld) fullUploadLength:%lld" + @" chunkFetcher:%@ requestHeaders:%@ responseHeaders:%@", + [responseHeaders objectForKey:kGTMSessionHeaderXGoogUploadStatus], + newOffset, self.currentOffset, previousContentLength, + [self fullUploadLength], + chunkFetcher, chunkFetcher.request.allHTTPHeaderFields, + responseHeaders); +#endif + if (isUploadStatusStopped || (_currentOffset > _uploadFileLength && _uploadFileLength > 0)) { + // This was the last chunk. + if (error == nil && uploadStatus == kStatusCancelled) { + // Report cancelled status as an error. + NSDictionary *userInfo = nil; + if (data.length > 0) { + userInfo = @{ kGTMSessionFetcherStatusDataKey : data }; + } + data = nil; + error = [self prematureFailureErrorWithUserInfo:userInfo]; + } else { + // The upload is in final status. + // + // Take the chunk fetcher's data as the superclass data. + self.downloadedData = data; + self.statusCode = chunkFetcher.statusCode; + } + + // we're done + [self invokeFinalCallbackWithData:data + error:error + shouldInvalidateLocation:YES]; + } else { + // Start the next chunk. + self.currentOffset = newOffset; + + // We want to destroy this chunk fetcher before creating the next one, but + // we want to pass on its properties + NSDictionary *props = [chunkFetcher properties]; + + // We no longer need to be able to cancel this chunkFetcher. Destroy it + // before we create a new chunk fetcher. + [self destroyChunkFetcher]; + hasDestroyedOldChunkFetcher = YES; + + [self uploadNextChunkWithOffset:newOffset + fetcherProperties:props]; + } + } + if (!hasDestroyedOldChunkFetcher) { + [self destroyChunkFetcher]; + } +} + +- (void)destroyChunkFetcher { + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + if (_fetcherInFlight == _chunkFetcher) { + _fetcherInFlight = nil; + } + + [_chunkFetcher stopFetching]; + + NSURL *chunkFileURL = _chunkFetcher.bodyFileURL; + BOOL wasTemporaryUploadFile = ![chunkFileURL isEqual:_uploadFileURL]; + if (wasTemporaryUploadFile) { + NSError *error; + [[NSFileManager defaultManager] removeItemAtURL:chunkFileURL + error:&error]; + if (error) { + GTMSESSION_LOG_DEBUG(@"removingItemAtURL failed: %@\n%@", error, chunkFileURL); + } + } + + _recentChunkReponseHeaders = _chunkFetcher.responseHeaders; + + // To avoid retain cycles, remove all properties except the parent identifier. + _chunkFetcher.properties = + @{ kGTMSessionUploadFetcherChunkParentKey : [NSValue valueWithNonretainedObject:self] }; + + _chunkFetcher.retryBlock = nil; + _chunkFetcher.sendProgressBlock = nil; + _chunkFetcher = nil; + } // @synchronized(self) +} + +// This method calculates the proper values to pass to the client's send progress block. +// +// The actual total bytes sent include the initial body sent, plus the +// offset into the batched data prior to the current chunk fetcher + +- (void)invokeDelegateWithDidSendBytes:(int64_t)bytesSent + totalBytesSent:(int64_t)totalBytesSent + totalBytesExpectedToSend:(int64_t)totalBytesExpected { + GTMSessionCheckNotSynchronized(self); + + // Ensure the chunk fetcher survives the callback in case the user pauses the upload process. + __block GTMSessionFetcher *holdFetcher = self.chunkFetcher; + + [self invokeOnCallbackQueue:self.delegateCallbackQueue + afterUserStopped:NO + block:^{ + GTMSessionFetcherSendProgressBlock sendProgressBlock = self.sendProgressBlock; + if (sendProgressBlock) { + sendProgressBlock(bytesSent, totalBytesSent, totalBytesExpected); + } + holdFetcher = nil; + }]; +} + +- (void)retrieveUploadChunkGranularityFromResponseHeaders:(NSDictionary *)responseHeaders { + GTMSessionCheckNotSynchronized(self); + + // Standard granularity for Google uploads is 256K. + NSString *chunkGranularityHeader = + [responseHeaders objectForKey:kGTMSessionHeaderXGoogUploadChunkGranularity]; + self.uploadGranularity = chunkGranularityHeader.longLongValue; +} + +#pragma mark - + +- (BOOL)isPaused { + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + return _isPaused; + } // @synchronized(self) +} + +- (void)pauseFetching { + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + _isPaused = YES; + } // @synchronized(self) + + // Pausing just means stopping the current chunk from uploading; + // when we resume, we will send a query request to the server to + // figure out what bytes to resume sending. + // + // We won't try to cancel the initial data upload, but rather will check + // for being paused in beginChunkFetches. + [self destroyChunkFetcher]; +} + +- (void)resumeFetching { + BOOL wasPaused; + + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + wasPaused = _isPaused; + _isPaused = NO; + } // @synchronized(self) + + if (wasPaused) { + [self sendQueryForUploadOffsetWithFetcherProperties:self.properties]; + } +} + +- (void)stopFetching { + // Overrides the superclass + [self destroyChunkFetcher]; + + // If we think the server is waiting for more data, then tell it there won't be more. + if (self.uploadLocationURL) { + [self sendCancelUploadWithFetcherProperties:[self properties]]; + self.uploadLocationURL = nil; + } else { + [self invokeOnCallbackQueue:self.callbackQueue + afterUserStopped:YES + block:^{ + // Repeated calls to stopFetching may cause this path to be reached despite having sent a real + // cancel request, check here to ensure that the cancellation handler invocation which fires + // will definitely be for the real request sent previously. + @synchronized(self) { + if (self->_isCancelInFlight) { + return; + } + } + [self triggerCancellationHandlerForFetch:nil data:nil error:nil]; + }]; + } + + [super stopFetching]; +} + +// Fires the cancellation handler, returning whether there was a handler to be fired. +- (BOOL)triggerCancellationHandlerForFetch:(GTMSessionFetcher *)fetcher + data:(NSData *)data + error:(NSError *)error { + GTMSessionUploadFetcherCancellationHandler handler = self.cancellationHandler; + if (handler) { + handler(fetcher, data, error); + self.cancellationHandler = nil; + return YES; + } + return NO; +} + +#pragma mark - + +- (int64_t)updateChunkFetcher:(GTMSessionFetcher *)chunkFetcher + forChunkAtOffset:(int64_t)offset { + BOOL isUploadingFileURL = (self.uploadFileURL != nil); + + // Upload another chunk, meeting server-required granularity. + int64_t chunkSize = self.chunkSize; + + int64_t fullUploadLength = [self fullUploadLength]; + BOOL isFileLengthKnown = fullUploadLength >= 0; + + BOOL isUploadingFullFile = (offset == 0 && isFileLengthKnown && chunkSize >= fullUploadLength); + if (!isUploadingFileURL || !isUploadingFullFile) { + // We're not uploading the entire file and given the file URL. Since we'll be + // allocating a subdata block for a chunk, we need to bound it to something that + // won't blow the process's memory. + if (chunkSize > kGTMSessionUploadFetcherMaximumDemandBufferSize) { + chunkSize = kGTMSessionUploadFetcherMaximumDemandBufferSize; + } + } + + int64_t granularity = self.uploadGranularity; + if (granularity > 0) { + if (chunkSize < granularity) { + chunkSize = granularity; + } else { + chunkSize = chunkSize - (chunkSize % granularity); + } + } + + GTMSESSION_ASSERT_DEBUG(offset < fullUploadLength || fullUploadLength == 0, + @"offset %lld exceeds data length %lld", offset, fullUploadLength); + + if (granularity > 0) { + offset = offset - (offset % granularity); + } + + // If the chunk size is bigger than the remaining data, or else + // it's close enough in size to the remaining data that we'd rather + // avoid having a whole extra http fetch for the leftover bit, then make + // this chunk size exactly match the remaining data size + NSString *command; + int64_t thisChunkSize = chunkSize; + + BOOL isChunkTooBig = (thisChunkSize >= (fullUploadLength - offset)); + BOOL isChunkAlmostBigEnough = (fullUploadLength - offset - 2500 < thisChunkSize); + BOOL isFinalChunk = (isChunkTooBig || isChunkAlmostBigEnough) && isFileLengthKnown; + if (isFinalChunk) { + thisChunkSize = fullUploadLength - offset; + if (thisChunkSize > 0) { + command = @"upload, finalize"; + } else { + command = @"finalize"; + } + } else { + command = @"upload"; + } + NSString *lengthStr = @(thisChunkSize).stringValue; + NSString *offsetStr = @(offset).stringValue; + + [chunkFetcher setRequestValue:command forHTTPHeaderField:kGTMSessionHeaderXGoogUploadCommand]; + [chunkFetcher setRequestValue:lengthStr forHTTPHeaderField:@"Content-Length"]; + [chunkFetcher setRequestValue:offsetStr forHTTPHeaderField:kGTMSessionHeaderXGoogUploadOffset]; + if (_uploadFileLength != kGTMSessionUploadFetcherUnknownFileSize) { + [chunkFetcher setRequestValue:@([self fullUploadLength]).stringValue + forHTTPHeaderField:kGTMSessionHeaderXGoogUploadContentLength]; + } + + // Append the range of bytes in this chunk to the fetcher comment. + NSString *baseComment = self.comment; + [chunkFetcher setCommentWithFormat:@"%@ (%lld-%lld)", + baseComment ? baseComment : @"upload", offset, MAX(0, offset + thisChunkSize - 1)]; + + return thisChunkSize; +} + +// Public properties. +@synthesize currentOffset = _currentOffset, + delegateCompletionHandler = _delegateCompletionHandler, + chunkFetcher = _chunkFetcher, + lastChunkRequest = _lastChunkRequest, + subdataGenerating = _subdataGenerating, + shouldInitiateOffsetQuery = _shouldInitiateOffsetQuery, + uploadGranularity = _uploadGranularity; + +// Internal properties. +@dynamic fetcherInFlight; +@dynamic activeFetcher; +@dynamic statusCode; +@dynamic delegateCallbackQueue; + ++ (void)removePointer:(void *)pointer fromPointerArray:(NSPointerArray *)pointerArray { + for (NSUInteger index = 0, count = pointerArray.count; index < count; ++index) { + void *pointerAtIndex = [pointerArray pointerAtIndex:index]; + if (pointerAtIndex == pointer) { + [pointerArray removePointerAtIndex:index]; + return; + } + } +} + +- (BOOL)useBackgroundSession { + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + return _useBackgroundSessionOnChunkFetchers; + } // @synchronized(self +} + +- (void)setUseBackgroundSession:(BOOL)useBackgroundSession { + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + if (_useBackgroundSessionOnChunkFetchers != useBackgroundSession) { + _useBackgroundSessionOnChunkFetchers = useBackgroundSession; + NSPointerArray *uploadFetcherPointerArrayForBackgroundSessions = + [[self class] uploadFetcherPointerArrayForBackgroundSessions]; + @synchronized(uploadFetcherPointerArrayForBackgroundSessions) { + if (_useBackgroundSessionOnChunkFetchers) { + [uploadFetcherPointerArrayForBackgroundSessions addPointer:(__bridge void *)self]; + } else { + [[self class] removePointer:(__bridge void *)self + fromPointerArray:uploadFetcherPointerArrayForBackgroundSessions]; + } + } // @synchronized(uploadFetcherPointerArrayForBackgroundSessions) + } + } // @synchronized(self) +} + +- (BOOL)canFetchWithBackgroundSession { + // The initial upload fetcher is always a foreground session; the + // useBackgroundSession property will apply only to chunk fetchers, + // not to queries. + return NO; +} + +- (NSDictionary *)responseHeaders { + GTMSessionCheckNotSynchronized(self); + // Overrides the superclass + + // If asked for the fetcher's response, use the most recent chunk fetcher's response, + // since the original request's response lacks useful information like the actual + // Content-Type. + NSDictionary *dict = self.chunkFetcher.responseHeaders; + if (dict) { + return dict; + } + + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + if (_recentChunkReponseHeaders) { + return _recentChunkReponseHeaders; + } + } // @synchronized(self + + // No chunk fetcher yet completed, so return whatever we have from the initial fetch. + return [super responseHeaders]; +} + +- (NSInteger)statusCodeUnsynchronized { + GTMSessionCheckSynchronized(self); + + if (_recentChunkStatusCode != -1) { + // Overrides the superclass to indicate status appropriate to the initial + // or latest chunk fetch + return _recentChunkStatusCode; + } else { + return [super statusCodeUnsynchronized]; + } +} + + +- (void)setStatusCode:(NSInteger)val { + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + _recentChunkStatusCode = val; + } +} + +- (int64_t)initialBodyLength { + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + return _initialBodyLength; + } +} + +- (void)setInitialBodyLength:(int64_t)length { + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + _initialBodyLength = length; + } +} + +- (int64_t)initialBodySent { + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + return _initialBodySent; + } +} + +- (void)setInitialBodySent:(int64_t)length { + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + _initialBodySent = length; + } +} + +- (NSURL *)uploadLocationURL { + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + return _uploadLocationURL; + } +} + +- (void)setUploadLocationURL:(NSURL *)locationURL { + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + + _uploadLocationURL = locationURL; + } +} + +- (GTMSessionFetcher *)activeFetcher { + GTMSessionFetcher *result = self.fetcherInFlight; + if (result) return result; + + return self; +} + +- (BOOL)isFetching { + // If there is an active chunk fetcher, then the upload fetcher is considered + // to still be fetching. + if (self.fetcherInFlight != nil) return YES; + + return [super isFetching]; +} + +- (BOOL)waitForCompletionWithTimeout:(NSTimeInterval)timeoutInSeconds { + NSDate *timeoutDate = [NSDate dateWithTimeIntervalSinceNow:timeoutInSeconds]; + + while (self.fetcherInFlight || self.subdataGenerating) { + if ([timeoutDate timeIntervalSinceNow] < 0) return NO; + + if (self.subdataGenerating) { + // Allow time for subdata generation. + NSDate *stopDate = [NSDate dateWithTimeIntervalSinceNow:0.001]; + [[NSRunLoop currentRunLoop] runUntilDate:stopDate]; + } else { + // Wait for any chunk or query fetchers that still have pending callbacks or + // notifications. + BOOL timedOut; + + if (self.fetcherInFlight == self) { + timedOut = ![super waitForCompletionWithTimeout:timeoutInSeconds]; + } else { + timedOut = ![self.fetcherInFlight waitForCompletionWithTimeout:timeoutInSeconds]; + } + if (timedOut) return NO; + } + } + return YES; +} + +@end + +@implementation GTMSessionFetcher (GTMSessionUploadFetcherMethods) + +- (GTMSessionUploadFetcher *)parentUploadFetcher { + NSValue *property = [self propertyForKey:kGTMSessionUploadFetcherChunkParentKey]; + if (!property) return nil; + + GTMSessionUploadFetcher *uploadFetcher = property.nonretainedObjectValue; + + GTMSESSION_ASSERT_DEBUG([uploadFetcher isKindOfClass:[GTMSessionUploadFetcher class]], + @"Unexpected parent upload fetcher class: %@", [uploadFetcher class]); + return uploadFetcher; +} + +@end diff --git a/shlack/Pods/GoogleSignIn/.cocoapods.yml b/shlack/Pods/GoogleSignIn/.cocoapods.yml new file mode 100755 index 0000000..64a82b1 --- /dev/null +++ b/shlack/Pods/GoogleSignIn/.cocoapods.yml @@ -0,0 +1,5 @@ +try: + install: + pre: + - git clone https://github.com/googlesamples/google-services + project: 'google-services/ios/signin/SignInExample.xcodeproj' diff --git a/shlack/Pods/GoogleSignIn/CHANGELOG.md b/shlack/Pods/GoogleSignIn/CHANGELOG.md new file mode 100755 index 0000000..d796ae4 --- /dev/null +++ b/shlack/Pods/GoogleSignIn/CHANGELOG.md @@ -0,0 +1,110 @@ +# 2018-11-26 -- v4.4.0 +- Removes the dependency on GTM OAuth 2. + +# 2018-10-1 -- v4.3.0 +- Supports Google's Enterprise Mobile Management. + +# 2018-8-10 -- v4.2.0 +- Adds `grantedScopes` to `GIDGoogleUser`, allowing confirmation of which scopes + have been granted after a successful sign-in. +- Deprecates `accessibleScopes` in `GIDGoogleUser`, use `grantedScopes` instead. +- Localizes `GIDSignInButton` for hi (Hindi) and fr-CA (French (Canada)). +- Adds dependency to the system `LocalAuthentication` framework. + +# 2018-1-8 -- v4.1.2 +- Add `pod try` support for the GoogleSignIn CocoaPod. + +# 2017-10-17 -- v4.1.1 +- Fixes an issue that `GIDSignInUIDelegate`'s `signInWillDispatch:error:` was + not called on iOS 11. Please note that it is intended that neither + `signIn:presentViewController:` nor `signIn:dismissViewController:` is called + on iOS 11 because SFAuthenticationSession is not presented by the app's view + controller. + +# 2017-09-13 -- v4.1.0 +- Uses SFAuthenticationSession on iOS 11. + +# 2017-02-06 -- v4.0.2 +- No longer depends on GoogleAppUtilities. + +# 2016-10-24 -- v4.0.1 +- Switches to open source pod dependencies. +- Appearance of sign-in button no longer depends on requested scopes. + +# 2016-04-21 -- v4.0.0 +- GoogleSignIn pod now takes form of a static framework. Import with + `#import ` in Objective-C. +- Adds module support. You can also use `@import GoogleSignIn;` in Objective-C, + if module is enabled, and `import GoogleSignIn` in Swift without using a + bridge-header. +- For users of the stand-alone zip distribution, multiple frameworks are now + provided and all need to be added to a project. This decomposition allows more + flexibility in case of duplicated dependencies. +- Removes deprecated method `checkGoogleSignInAppInstalled` from `GIDSignIn`. +- Removes `allowsSignInWithBrowser` and `allowsSignInWithWebView` properties + from `GIDSignIn`. +- No longer requires adding bundle ID as a URL scheme supported by the app. + +# 2016-03-04 -- v3.0.0 +- Provides `givenName` and `familyName` properties on `GIDProfileData`. +- Allows setting the `loginHint` property on `GIDSignIn` to prefill the user's + ID or email address in the sign-in flow. +- Removed the `UIViewController(SignIn)` category as well as the `delegate` + property from `GIDSignInButton`. +- Requires that `uiDelegate` has been set properly on `GIDSignIn` and that + SafariServices framework has been linked. +- Removes the dependency on StoreKit. +- Provides bitcode support. +- Requires Xcode 7.0 or above due to bitcode incompatibilities with Xcode 6. + +# 2015-10-26 -- v2.4.0 +- Updates sign-in button with the new Google logo. +- Supports domain restriction for sign-in. +- Allows refreshing ID tokens. + +# 2015-10-09 -- v2.3.2 +- No longer requires Xcode 7. + +# 2015-10-01 -- v2.3.1 +- Fixes a crash in `GIDProfileData`'s `imageURLWithDimension:`. + +# 2015-09-25 -- v2.3.0 +- Requires Xcode 7.0 or above. +- Uses SFSafariViewController for signing in on iOS 9. `uiDelegate` must be + set for this to work. +- Optimizes fetching user profile. +- Supports GTMFetcherAuthorizationProtocol in GIDAuthentication. + +# 2015-07-15 -- v2.2.0 +- Compatible with iOS 9 (beta). Note that this version of the Sign-In SDK does + not include bitcode, so you must set ENABLE_BITCODE to NO in your project if + you use Xcode 7. +- Adds descriptive identifiers for GIDSignInButton's Auto Layout constraints. +- `signInSilently` no longer requires setting `uiDelegate`. + +# 2015-06-17 -- v2.1.0 +- Fixes Auto Layout issues with GIDSignInButton. +- Adds API to refresh access token in GIDAuthentication. +- Better exception description for unassigned clientID in GIDSignIn. +- Other minor bug fixes. + +# 2015-05-28 -- v2.0.1 +- Bug fixes + +# 2015-05-21 -- v2.0.0 +- Supports sign-in via UIWebView rather than app switching to a browser, + configurable with the new `allowsSignInWithWebView` property. +- Now apps which have disabled the app switch to a browser via the + `allowsSignInWithBrowser` and in-app web view via `allowsSignInWithWebView` + properties have the option to display a prompt instructing the user to + download the Google app from the App Store. +- Fixes sign-in button sizing issue when auto-layout is enabled +- `signInSilently` now calls the delegate with error when `hasAuthInKeychain` + is `NO` as documented +- Other minor bug fixes + +# 2015-03-12 -- v1.0.0 +- New sign-in focused SDK with refreshed API +- Dynamically rendered sign-in button with contextual branding +- Basic profile support +- Added allowsSignInWithBrowser property diff --git a/shlack/Pods/GoogleSignIn/Frameworks/GoogleSignIn.framework/GoogleSignIn b/shlack/Pods/GoogleSignIn/Frameworks/GoogleSignIn.framework/GoogleSignIn new file mode 100755 index 0000000000000000000000000000000000000000..8c1ab38f894161bcf1f7b929ae23247cbdb4df95 GIT binary patch literal 7572960 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 ~Ao;(vg@f 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 z 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 XF$6DZ0`WeIUAE9*+}&7&5|&*Lxk*Cp7S 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%0A4++TzmH%c0eF>t^Wcxlez~ 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%0DbZy<()j9Ef=)%JJNqMi3G9l}INrX?T7Ji+I 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�(_7TuixNj@sG0cFM_ldJjDjr+xVZi;q#6SJ&dW=wD^v;g-@4_e>s%P zf+v7n7QdSf4X%wWc$SUdV3XH=8{F51&(}75Z~(OMG1&MI+4u+9_)~2B?KWjuZsRAY z?VrE&5QwJj*(&NetNcWittD3CiD#q){mhm;bpnsqpGZz^LeVhn?>w;=NJssd+?FR& zk7bC*T_VP%Iru(yoVYR1BKJli`rJ⪚vCLN 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

a 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 z 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

H13SRY1~c*E{;>epJ4cdGJG3w8t*y4$$q>( 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

jX=Nhu4V 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ȹ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

W}hQ?C+(lX>Jx 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 p8+wTd>yBW|MWER!+D(W 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�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 z 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

|M= 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%0AVyyUWAQW@DZmQ( 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

?rGtNMHo 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

?o_m>uB|)YDIA=<<6dy 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

    f~84LMV^w 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%0Da{ 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 z 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

    Ju%Wt!Qwlom)chnPN9?rHWd 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 + +@protocol GTMFetcherAuthorizationProtocol; +@class GIDAuthentication; + +// @relates GIDAuthentication +// +// The callback block that takes a GIDAuthentication, or an error if attempt to refresh was +// unsuccessful. +typedef void (^GIDAuthenticationHandler)(GIDAuthentication *authentication, NSError *error); + +// @relates GIDAuthentication +// +// The callback block that takes an access token, or an error if attempt to refresh was +// unsuccessful. +typedef void (^GIDAccessTokenHandler)(NSString *accessToken, NSError *error); + +// This class represents the OAuth 2.0 entities needed for sign-in. +@interface GIDAuthentication : NSObject + +// The client ID associated with the authentication. +@property(nonatomic, readonly) NSString *clientID; + +// The OAuth2 access token to access Google services. +@property(nonatomic, readonly) NSString *accessToken; + +// The estimated expiration date of the access token. +@property(nonatomic, readonly) NSDate *accessTokenExpirationDate; + +// The OAuth2 refresh token to exchange for new access tokens. +@property(nonatomic, readonly) NSString *refreshToken; + +// An OpenID Connect ID token that identifies the user. Send this token to your server to +// authenticate the user there. For more information on this topic, see +// https://developers.google.com/identity/sign-in/ios/backend-auth +@property(nonatomic, readonly) NSString *idToken; + +// The estimated expiration date of the ID token. +@property(nonatomic, readonly) NSDate *idTokenExpirationDate; + +// Gets a new authorizer for GTLService, GTMSessionFetcher, or GTMHTTPFetcher. +- (id)fetcherAuthorizer; + +// Get a valid access token and a valid ID token, refreshing them first if they have expired or are +// about to expire. +- (void)getTokensWithHandler:(GIDAuthenticationHandler)handler; + +// Refreshes the access token and the ID token using the refresh token. +- (void)refreshTokensWithHandler:(GIDAuthenticationHandler)handler; + +// Gets the access token, which may be a new one from the refresh token if the original has already +// expired or is about to expire. Deprecated: use |getTokensWithHandler:| to get access tokens +// instead. +- (void)getAccessTokenWithHandler:(GIDAccessTokenHandler)handler + DEPRECATED_MSG_ATTRIBUTE("Use |getTokensWithHandler:| instead."); + +// Refreshes the access token with the refresh token. Deprecated: Use |refreshTokensWithHandler:| +// to refresh access tokens instead. +- (void)refreshAccessTokenWithHandler:(GIDAccessTokenHandler)handler + DEPRECATED_MSG_ATTRIBUTE("Use |refreshTokensWithHandler:| instead."); + +@end diff --git a/shlack/Pods/GoogleSignIn/Frameworks/GoogleSignIn.framework/Headers/GIDGoogleUser.h b/shlack/Pods/GoogleSignIn/Frameworks/GoogleSignIn.framework/Headers/GIDGoogleUser.h new file mode 100755 index 0000000..7a051d2 --- /dev/null +++ b/shlack/Pods/GoogleSignIn/Frameworks/GoogleSignIn.framework/Headers/GIDGoogleUser.h @@ -0,0 +1,43 @@ +/* + * GIDGoogleUser.h + * Google Sign-In iOS SDK + * + * Copyright 2014 Google Inc. + * + * Use of this SDK is subject to the Google APIs Terms of Service: + * https://developers.google.com/terms/ + */ + +#import + +@class GIDAuthentication; +@class GIDProfileData; + +// This class represents a user account. +@interface GIDGoogleUser : NSObject + +// The Google user ID. +@property(nonatomic, readonly) NSString *userID; + +// Representation of the Basic profile data. It is only available if |shouldFetchBasicProfile| +// is set and either |signIn| or |signInSilently| has been completed successfully. +@property(nonatomic, readonly) GIDProfileData *profile; + +// The authentication object for the user. +@property(nonatomic, readonly) GIDAuthentication *authentication; + +// The API scopes requested by the app in an array of |NSString|s. Deprecated. +// Use |grantedScopes| instead. +@property(nonatomic, readonly) NSArray *accessibleScopes + __attribute__((deprecated("Use grantedScopes instead."))); + +// The API scopes granted to the app in an array of |NSString|s. +@property(nonatomic, readonly) NSArray *grantedScopes; + +// For Google Apps hosted accounts, the domain of the user. +@property(nonatomic, readonly) NSString *hostedDomain; + +// An OAuth2 authorization code for the home server. +@property(nonatomic, readonly) NSString *serverAuthCode; + +@end diff --git a/shlack/Pods/GoogleSignIn/Frameworks/GoogleSignIn.framework/Headers/GIDProfileData.h b/shlack/Pods/GoogleSignIn/Frameworks/GoogleSignIn.framework/Headers/GIDProfileData.h new file mode 100755 index 0000000..8ffc995 --- /dev/null +++ b/shlack/Pods/GoogleSignIn/Frameworks/GoogleSignIn.framework/Headers/GIDProfileData.h @@ -0,0 +1,34 @@ +/* + * GIDProfileData.h + * Google Sign-In iOS SDK + * + * Copyright 2014 Google Inc. + * + * Use of this SDK is subject to the Google APIs Terms of Service: + * https://developers.google.com/terms/ + */ + +#import + +// This class represents the basic profile information of a GIDGoogleUser. +@interface GIDProfileData : NSObject + +// The Google user's email. +@property(nonatomic, readonly) NSString *email; + +// The Google user's full name. +@property(nonatomic, readonly) NSString *name; + +// The Google user's given name. +@property(nonatomic, readonly) NSString *givenName; + +// The Google user's family name. +@property(nonatomic, readonly) NSString *familyName; + +// Whether or not the user has profile image. +@property(nonatomic, readonly) BOOL hasImage; + +// Gets the user's profile image URL for the given dimension in pixels for each side of the square. +- (NSURL *)imageURLWithDimension:(NSUInteger)dimension; + +@end diff --git a/shlack/Pods/GoogleSignIn/Frameworks/GoogleSignIn.framework/Headers/GIDSignIn.h b/shlack/Pods/GoogleSignIn/Frameworks/GoogleSignIn.framework/Headers/GIDSignIn.h new file mode 100755 index 0000000..f62a3fb --- /dev/null +++ b/shlack/Pods/GoogleSignIn/Frameworks/GoogleSignIn.framework/Headers/GIDSignIn.h @@ -0,0 +1,187 @@ +/* + * GIDSignIn.h + * Google Sign-In iOS SDK + * + * Copyright 2012 Google Inc. + * + * Use of this SDK is subject to the Google APIs Terms of Service: + * https://developers.google.com/terms/ + */ + +#import +#import + +@class GIDGoogleUser; +@class GIDSignIn; + +// The error domain for NSErrors returned by the Google Identity SDK. +extern NSString *const kGIDSignInErrorDomain; + +// A list of potential error codes returned from the Google Identity SDK. +typedef NS_ENUM(NSInteger, GIDSignInErrorCode) { + // Indicates an unknown error has occurred. + kGIDSignInErrorCodeUnknown = -1, + // Indicates a problem reading or writing to the application keychain. + kGIDSignInErrorCodeKeychain = -2, + // Indicates no appropriate applications are installed on the user's device which can handle + // sign-in. This code will only ever be returned if using webview and switching to browser have + // both been disabled. + kGIDSignInErrorCodeNoSignInHandlersInstalled = -3, + // Indicates there are no auth tokens in the keychain. This error code will be returned by + // signInSilently if the user has never signed in before with the given scopes, or if they have + // since signed out. + kGIDSignInErrorCodeHasNoAuthInKeychain = -4, + // Indicates the user canceled the sign in request. + kGIDSignInErrorCodeCanceled = -5, + // Indicates an Enterprise Mobility Management related error has occurred. + kGIDSignInErrorCodeEMM = -6, +}; + +// A protocol implemented by the delegate of |GIDSignIn| to receive a refresh token or an error. +@protocol GIDSignInDelegate + +// The sign-in flow has finished and was successful if |error| is |nil|. +- (void)signIn:(GIDSignIn *)signIn + didSignInForUser:(GIDGoogleUser *)user + withError:(NSError *)error; + +@optional + +// Finished disconnecting |user| from the app successfully if |error| is |nil|. +- (void)signIn:(GIDSignIn *)signIn + didDisconnectWithUser:(GIDGoogleUser *)user + withError:(NSError *)error; + +@end + +// A protocol which may be implemented by consumers of |GIDSignIn| to be notified of when +// GIDSignIn has finished dispatching the sign-in request. +// +// This protocol is useful for developers who implement their own "Sign In with Google" button. +// Because there may be a brief delay between when the call to |signIn| is made, and when the +// app switch occurs, it is best practice to have the UI react to the user's input by displaying +// a spinner or other UI element. The |signInWillDispatch| method should be used to +// stop or hide the spinner. +@protocol GIDSignInUIDelegate + +@optional + +// The sign-in flow has finished selecting how to proceed, and the UI should no longer display +// a spinner or other "please wait" element. +- (void)signInWillDispatch:(GIDSignIn *)signIn error:(NSError *)error; + +// If implemented, this method will be invoked when sign in needs to display a view controller. +// The view controller should be displayed modally (via UIViewController's |presentViewController| +// method, and not pushed unto a navigation controller's stack. +- (void)signIn:(GIDSignIn *)signIn presentViewController:(UIViewController *)viewController; + +// If implemented, this method will be invoked when sign in needs to dismiss a view controller. +// Typically, this should be implemented by calling |dismissViewController| on the passed +// view controller. +- (void)signIn:(GIDSignIn *)signIn dismissViewController:(UIViewController *)viewController; + +@end + +// This class signs the user in with Google. It also provides single sign-on via a capable Google +// app if one is installed. +// +// For reference, please see "Google Sign-In for iOS" at +// https://developers.google.com/identity/sign-in/ios +// Here is sample code to use |GIDSignIn|: +// 1. Get a reference to the |GIDSignIn| shared instance: +// GIDSignIn *signIn = [GIDSignIn sharedInstance]; +// 2. Set the OAuth 2.0 scopes you want to request: +// [signIn setScopes:[NSArray arrayWithObject:@"https://www.googleapis.com/auth/plus.login"]]; +// 3. Call [signIn setDelegate:self]; +// 4. Set up delegate method |signIn:didSignInForUser:withError:|. +// 5. Call |handleURL| on the shared instance from |application:openUrl:...| in your app delegate. +// 6. Call |signIn| on the shared instance; +@interface GIDSignIn : NSObject + +// The authentication object for the current user, or |nil| if there is currently no logged in user. +@property(nonatomic, readonly) GIDGoogleUser *currentUser; + +// The object to be notified when authentication is finished. +@property(nonatomic, weak) id delegate; + +// The object to be notified when sign in dispatch selection is finished. +@property(nonatomic, weak) id uiDelegate; + +// The client ID of the app from the Google APIs console. Must set for sign-in to work. +@property(nonatomic, copy) NSString *clientID; + +// The API scopes requested by the app in an array of |NSString|s. The default value is |@[]|. +// +// This property is optional. If you set it, set it before calling |signIn|. +@property(nonatomic, copy) NSArray *scopes; + +// Whether or not to fetch basic profile data after signing in. The data is saved in the +// |GIDGoogleUser.profileData| object. +// +// Setting the flag will add "email" and "profile" to scopes. +// Defaults to |YES|. +@property(nonatomic, assign) BOOL shouldFetchBasicProfile; + +// The language for sign-in, in the form of ISO 639-1 language code optionally followed by a dash +// and ISO 3166-1 alpha-2 region code, such as |@"it"| or |@"pt-PT"|. Only set if different from +// system default. +// +// This property is optional. If you set it, set it before calling |signIn|. +@property(nonatomic, copy) NSString *language; + +// The login hint to the authorization server, for example the user's ID, or email address, +// to be prefilled if possible. +// +// This property is optional. If you set it, set it before calling |signIn|. +@property(nonatomic, copy) NSString *loginHint; + +// The client ID of the home web server. This will be returned as the |audience| property of the +// OpenID Connect ID token. For more info on the ID token: +// https://developers.google.com/identity/sign-in/ios/backend-auth +// +// This property is optional. If you set it, set it before calling |signIn|. +@property(nonatomic, copy) NSString *serverClientID; + +// The OpenID2 realm of the home web server. This allows Google to include the user's OpenID +// Identifier in the OpenID Connect ID token. +// +// This property is optional. If you set it, set it before calling |signIn|. +@property(nonatomic, copy) NSString *openIDRealm; + +// The Google Apps domain to which users must belong to sign in. To verify, check |GIDGoogleUser|'s +// |hostedDomain| property. +// +// This property is optional. If you set it, set it before calling |signIn|. +@property(nonatomic, copy) NSString *hostedDomain; + +// Returns a shared |GIDSignIn| instance. ++ (GIDSignIn *)sharedInstance; + +// This method should be called from your |UIApplicationDelegate|'s +// |application:openURL:sourceApplication:annotation|. Returns |YES| if |GIDSignIn| handled this +// URL. +- (BOOL)handleURL:(NSURL *)url + sourceApplication:(NSString *)sourceApplication + annotation:(id)annotation; + +// Checks whether the user has either currently signed in or has previous authentication saved in +// keychain. +- (BOOL)hasAuthInKeychain; + +// Attempts to sign in a previously authenticated user without interaction. The delegate will be +// called at the end of this process indicating success or failure. +- (void)signInSilently; + +// Starts the sign-in process. The delegate will be called at the end of this process. Note that +// this method should not be called when the app is starting up, (e.g in +// application:didFinishLaunchingWithOptions:). Instead use the |signInSilently| method. +- (void)signIn; + +// Marks current user as being in the signed out state. +- (void)signOut; + +// Disconnects the current user from the app and revokes previous authentication. If the operation +// succeeds, the OAuth 2.0 token is also removed from keychain. +- (void)disconnect; + +@end diff --git a/shlack/Pods/GoogleSignIn/Frameworks/GoogleSignIn.framework/Headers/GIDSignInButton.h b/shlack/Pods/GoogleSignIn/Frameworks/GoogleSignIn.framework/Headers/GIDSignInButton.h new file mode 100755 index 0000000..1e75fd6 --- /dev/null +++ b/shlack/Pods/GoogleSignIn/Frameworks/GoogleSignIn.framework/Headers/GIDSignInButton.h @@ -0,0 +1,51 @@ +/* + * GIDSignInButton.h + * Google Sign-In iOS SDK + * + * Copyright 2012 Google Inc. + * + * Use of this SDK is subject to the Google APIs Terms of Service: + * https://developers.google.com/terms/ + */ + +#import + +// The various layout styles supported by the GIDSignInButton. +// The minimum size of the button depends on the language used for text. +// The following dimensions (in points) fit for all languages: +// kGIDSignInButtonStyleStandard: 230 x 48 +// kGIDSignInButtonStyleWide: 312 x 48 +// kGIDSignInButtonStyleIconOnly: 48 x 48 (no text, fixed size) +typedef NS_ENUM(NSInteger, GIDSignInButtonStyle) { + kGIDSignInButtonStyleStandard = 0, + kGIDSignInButtonStyleWide = 1, + kGIDSignInButtonStyleIconOnly = 2 +}; + +// The various color schemes supported by the GIDSignInButton. +typedef NS_ENUM(NSInteger, GIDSignInButtonColorScheme) { + kGIDSignInButtonColorSchemeDark = 0, + kGIDSignInButtonColorSchemeLight = 1 +}; + +// This class provides the "Sign in with Google" button. You can instantiate this +// class programmatically or from a NIB file. You should set up the +// |GIDSignIn| shared instance with your client ID and any additional scopes, +// implement the delegate methods for |GIDSignIn|, and add this button to your +// view hierarchy. +@interface GIDSignInButton : UIControl + +// The layout style for the sign-in button. +// Possible values: +// - kGIDSignInButtonStyleStandard: 230 x 48 (default) +// - kGIDSignInButtonStyleWide: 312 x 48 +// - kGIDSignInButtonStyleIconOnly: 48 x 48 (no text, fixed size) +@property(nonatomic, assign) GIDSignInButtonStyle style; + +// The color scheme for the sign-in button. +// Possible values: +// - kGIDSignInButtonColorSchemeDark +// - kGIDSignInButtonColorSchemeLight (default) +@property(nonatomic, assign) GIDSignInButtonColorScheme colorScheme; + +@end diff --git a/shlack/Pods/GoogleSignIn/Frameworks/GoogleSignIn.framework/Headers/GoogleSignIn.h b/shlack/Pods/GoogleSignIn/Frameworks/GoogleSignIn.framework/Headers/GoogleSignIn.h new file mode 100755 index 0000000..8ccf7cd --- /dev/null +++ b/shlack/Pods/GoogleSignIn/Frameworks/GoogleSignIn.framework/Headers/GoogleSignIn.h @@ -0,0 +1,5 @@ +#import "GIDAuthentication.h" +#import "GIDGoogleUser.h" +#import "GIDProfileData.h" +#import "GIDSignIn.h" +#import "GIDSignInButton.h" diff --git a/shlack/Pods/GoogleSignIn/Frameworks/GoogleSignIn.framework/Modules/module.modulemap b/shlack/Pods/GoogleSignIn/Frameworks/GoogleSignIn.framework/Modules/module.modulemap new file mode 100755 index 0000000..4e52825 --- /dev/null +++ b/shlack/Pods/GoogleSignIn/Frameworks/GoogleSignIn.framework/Modules/module.modulemap @@ -0,0 +1,12 @@ +framework module GoogleSignIn { + umbrella header "GoogleSignIn.h" + export * + module * { export *} + link framework "CoreGraphics" + link framework "CoreText" + link framework "Foundation" + link framework "LocalAuthentication" + link framework "SafariServices" + link framework "Security" + link framework "SystemConfiguration" + link framework "UIKit"} diff --git a/shlack/Pods/GoogleSignIn/README.md b/shlack/Pods/GoogleSignIn/README.md new file mode 100755 index 0000000..4418b66 --- /dev/null +++ b/shlack/Pods/GoogleSignIn/README.md @@ -0,0 +1,18 @@ +# Google Sign-In SDK for iOS + +The Google Sign-In SDK allows users to sign in with their Google account from +third-party apps. + +Please visit [our developer site](https://developers.google.com/identity/sign-in/ios/) +for integration instructions, documentation, support information, and terms of +service. + +## Getting Started + +* Try our example app with: + ``` + $ pod try GoogleSignIn + ``` + and follow the directions [here](https://developers.google.com/identity/sign-in/ios/start). +* Read our [getting started guides](https://developers.google.com/identity/sign-in/ios/start-integrating). +* Take a look at the [API reference](https://developers.google.com/identity/sign-in/ios/api/). diff --git a/shlack/Pods/GoogleSignIn/Resources/GoogleSignIn.bundle/Info.plist b/shlack/Pods/GoogleSignIn/Resources/GoogleSignIn.bundle/Info.plist new file mode 100755 index 0000000..290d534 --- /dev/null +++ b/shlack/Pods/GoogleSignIn/Resources/GoogleSignIn.bundle/Info.plist @@ -0,0 +1,24 @@ + + + + + CFBundleDevelopmentRegion + English + CFBundleIconFile + + CFBundleIdentifier + com.google.${PRODUCT_NAME:rfc1034identifier} + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${PRODUCT_NAME} + CFBundlePackageType + BNDL + CFBundleShortVersionString + 1.0 + CFBundleVersion + 1 + NSPrincipalClass + + + diff --git a/shlack/Pods/GoogleSignIn/Resources/GoogleSignIn.bundle/Roboto-Bold.ttf b/shlack/Pods/GoogleSignIn/Resources/GoogleSignIn.bundle/Roboto-Bold.ttf new file mode 100755 index 0000000000000000000000000000000000000000..68822caf2421c331497581f9b80e49401189b996 GIT binary patch literal 127744 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%0AmbY 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 JPDHLkV1h!Z?2`Zh literal 0 HcmV?d00001 diff --git a/shlack/Pods/GoogleSignIn/Resources/GoogleSignIn.bundle/google@3x.png b/shlack/Pods/GoogleSignIn/Resources/GoogleSignIn.bundle/google@3x.png new file mode 100755 index 0000000000000000000000000000000000000000..d978ed26a231ef362d6897ebf208f3f1f4f1c7da GIT binary patch literal 1622 zcmV-c2C4apP)0n7a+ByQ8!ahvZ4Bun~Qz)$OQXm;|AK-T;yJkwe z5lB|-2hb?eu^!N_zrfEgVCIW(%}c{J?Gjx7CO(zGCwvl-oT+PonEn~#mX1?^fxYJw z%=Xzqv$hLRB7d5d9l|!{41P_5HFX(Ksy6wBJ0M#7YdYKUcVVkK4M-1e<+#o-o6eMa z0gxV>{DQWAqP|6~-v6`N+#Se>@Q4w8xC{T=*3SmgYoji>YtO&On*L609Vtygd%^KQ z>GZe7G!)2)_8%I{^3RXnyORiyS7dL!X1pP8plsB>XEl}Q{nS+6MXdGq5mki)Wp2L< zfwC2GX{yK@$D!IZF6l1n&N?X3p0W@qn{lDW^8DvG&?d^dh)B^MBIHoF_&^wT4A~7R zn~|7FdF#r%RCAbE);zVHsG2&sJs5AcK-rEOSLUl6Adz+RdWxFk`{EW22%xOL`H%YMPC8pf4E9&##ZKi2xLSif>}$VUjc%x?9wU|49}|s zG9oj<8h(TST`*|)3y5#Us9f{N`v}O0jLw*J^C;_517t*on#b2bSkztKlx_E-tovR- zdS$5HzX=FdmiLVG23^+Wcp$wpG-G}s;t!ZIq1KdjZFzJ-|5-qKnQxEoqKCCKIxdA7 zD+L6r?4l$K_2-H{;>6iDq57PS+RVdt0m>u{^c>k>_M*r!K*XP(`BV`v)Z5E;6Jz~T z5XueUb>9Y*Nf>a2Y%s^o^#=kGO3ZcE2v08TCklKn4%E)%ajsTo9<~=yCSXtMYb$DK zl?i1jZuk?3apB{RedACyWj)1(b4PKIm=vFT8BiuzN+NTm*H>}mX&}ahgrJ-?EAoHg zP+zUsK}?%9kpm>8c->b3btG)GF1b)`GZvi;#JDi}Vfi-KFIc>v80nwE15eK5Zq&^8CW3aW-p^Bmb^9>>&h!Gc7=pWWY^*Dc(3ANFBYgWCk(}B{-Tv~SkAB|Ev zN)<@6Thk~4+8CEj6!;7GHTj(NF$2i?TJg9q zQoYmn1WKgu%)`2>K9@uFI-kXwUE6jItT8e2;g|RnA$6J`dq-<8pp9|ag5oPYjQ@dQ z9_RNM_)Ol^;cD)r_wF4t-kZE9CVKtwr;CL3)=>Ol*x&4>(Fs7C;}R1O07Pdi zc;QT8zT?Z-vsDzm6DSrgG4WbaJg%oZKOA_E6r&$ly7?#N<%i7_c|fsniHmNyAs0>I znXCv0!yms-*h*`8?Y(WjA=n!z9xh2?ZIot9xM9y+^V*2p!hL`e;Ua}wIhsMFlY>3U zofIe;F4A}_P<_sqGrz{%wS0I0lEo!ud`2|++`o5xC})f6aXrVIH&80L=yJf)3EfOy z*I8&T-*rHsMtpzCNaJkCGx`+JJl>Bq_B20Ul-pn21`0ZNyD04`wR UaJO?$Q2+n{07*qoM6N<$f*zI^s{jB1 literal 0 HcmV?d00001 diff --git a/shlack/Pods/GoogleSignIn/Resources/GoogleSignIn.bundle/he.lproj/GoogleSignIn.strings b/shlack/Pods/GoogleSignIn/Resources/GoogleSignIn.bundle/he.lproj/GoogleSignIn.strings new file mode 100755 index 0000000..efd53fe --- /dev/null +++ b/shlack/Pods/GoogleSignIn/Resources/GoogleSignIn.bundle/he.lproj/GoogleSignIn.strings @@ -0,0 +1,44 @@ +/* Sign-in button text */ +"Sign in" = "היכנס"; + +/* Long form sign-in button text */ +"Sign in with Google" = "היכנס באמצעות Google"; + +/* The title of the promotional prompt to install the Google app. */ +"PromoTitle" = "כניסה באמצעות Google"; + +/* The body message of the promotional prompt to install the Google app. */ +"PromoMessage" = "התקן את Google app בחינם והיכנס אל אפליקציות באמצעות חשבון Google. לא תצטרך עוד לזכור סיסמאות."; + +/* The cancel button on the promotional prompt to install the Google app. */ +"PromoActionCancel" = "בטל"; + +/* The install button on the promotional prompt to install the Google app. */ +"PromoActionInstall" = "התקן"; + +/* The text for the button for user to acknowledge and dismiss a dialog. */ +"OK" = "אישור"; + +/* The text for the button for user to dismiss a dialog without taking any action. */ +"Cancel" = "ביטול"; + +/* The name of the iOS native "Settings" app. */ +"SettingsAppName" = "הגדרות"; + +/* The title for the error dialog for unable to sign in because of EMM policy. */ +"EmmErrorTitle" = "לא ניתן להיכנס לחשבון"; + +/* The text in the error dialog asking user to set up a passcode for the device due to EMM policy. */ +"EmmPasscodeRequired" = "מנהל המערכת דורש ממך להגדיר קוד סיסמה במכשיר זה כדי לגשת לחשבון זה. יש להגדיר קוד סיסמה ולנסות שוב."; + +/* The text in the error dialog informing user that EMM policy prevented sign-in on the device. */ +"EmmGeneralError" = "המכשיר אינו פועל בהתאם למדיניות האבטחה שנקבעה על-ידי מנהל המערכת."; + +/* The title in the error dialog informing user that connecting with Device Policy app is required. */ +"EmmConnectTitle" = "האם להתחבר באמצעות האפליקציית Device Policy?"; + +/* The text in the error dialog informing user that connecting with Device Policy app is required. */ +"EmmConnectText" = "על מנת להגן על נתוני הארגון שלך, יש להתחבר באמצעות אפליקציית Device Policy לפני הכניסה לחשבון."; + +/* The action button label in the error dialog informing user that connecting with Device Policy app is required. */ +"EmmConnectLabel" = "התחברות"; diff --git a/shlack/Pods/GoogleSignIn/Resources/GoogleSignIn.bundle/hi.lproj/GoogleSignIn.strings b/shlack/Pods/GoogleSignIn/Resources/GoogleSignIn.bundle/hi.lproj/GoogleSignIn.strings new file mode 100755 index 0000000..3b7cd1f --- /dev/null +++ b/shlack/Pods/GoogleSignIn/Resources/GoogleSignIn.bundle/hi.lproj/GoogleSignIn.strings @@ -0,0 +1,44 @@ +/* Sign-in button text */ +"Sign in" = "साइन इन करें"; + +/* Long form sign-in button text */ +"Sign in with Google" = "Google के साथ साइन इन करें"; + +/* The title of the promotional prompt to install the Google app. */ +"PromoTitle" = "Google के साथ साइन इन करें"; + +/* The body message of the promotional prompt to install the Google app. */ +"PromoMessage" = "मुफ़्त Google ऐप्लिकेशन पाएं और अपने Google खाते से ऐप्लिकेशन में साइन इन करें. पासवर्ड याद रखने की ज़रूरत नहीं."; + +/* The cancel button on the promotional prompt to install the Google app. */ +"PromoActionCancel" = "अभी नहीं"; + +/* The install button on the promotional prompt to install the Google app. */ +"PromoActionInstall" = "पाएं"; + +/* The text for the button for user to acknowledge and dismiss a dialog. */ +"OK" = "ठीक"; + +/* The text for the button for user to dismiss a dialog without taking any action. */ +"Cancel" = "अभी नहीं"; + +/* The name of the iOS native "Settings" app. */ +"SettingsAppName" = "सेटिंग"; + +/* The title for the error dialog for unable to sign in because of EMM policy. */ +"EmmErrorTitle" = "खाते में साइन इन नहीं किया जा सका"; + +/* The text in the error dialog asking user to set up a passcode for the device due to EMM policy. */ +"EmmPasscodeRequired" = "आपके एडमिन के लिए ज़रूरी है कि आप यह खाता एक्सेस करने के लिए इस डिवाइस पर एक पासकोड सेट करें. कृपया पासकोड सेट करें और दोबारा कोशिश करें."; + +/* The text in the error dialog informing user that EMM policy prevented sign-in on the device. */ +"EmmGeneralError" = "डिवाइस आपके एडमिन के ज़रिए सेट की गई सुरक्षा नीति का अनुपालन नहीं करता है."; + +/* The title in the error dialog informing user that connecting with Device Policy app is required. */ +"EmmConnectTitle" = "क्या Device Policy ऐप्लिकेशन से कनेक्ट करना चाहते हैं?"; + +/* The text in the error dialog informing user that connecting with Device Policy app is required. */ +"EmmConnectText" = "अपने संगठन डेटा की सुरक्षा के लिए, आपको लॉग-इन करने से पहले Device Policy ऐप्लिकेशन से कनेक्ट करना होगा."; + +/* The action button label in the error dialog informing user that connecting with Device Policy app is required. */ +"EmmConnectLabel" = "कनेक्ट करें"; diff --git a/shlack/Pods/GoogleSignIn/Resources/GoogleSignIn.bundle/hr.lproj/GoogleSignIn.strings b/shlack/Pods/GoogleSignIn/Resources/GoogleSignIn.bundle/hr.lproj/GoogleSignIn.strings new file mode 100755 index 0000000..32b6cc3 --- /dev/null +++ b/shlack/Pods/GoogleSignIn/Resources/GoogleSignIn.bundle/hr.lproj/GoogleSignIn.strings @@ -0,0 +1,44 @@ +/* Sign-in button text */ +"Sign in" = "Prijava"; + +/* Long form sign-in button text */ +"Sign in with Google" = "Prijavite se putem Googlea"; + +/* The title of the promotional prompt to install the Google app. */ +"PromoTitle" = "Prijavite se putem Googlea"; + +/* The body message of the promotional prompt to install the Google app. */ +"PromoMessage" = "Preuzmite besplatnu aplikaciju Google i prijavljujte se na aplikacije svojim Google računom. Ne morate pamtiti zaporke."; + +/* The cancel button on the promotional prompt to install the Google app. */ +"PromoActionCancel" = "Odustani"; + +/* The install button on the promotional prompt to install the Google app. */ +"PromoActionInstall" = "Nabavi"; + +/* The text for the button for user to acknowledge and dismiss a dialog. */ +"OK" = "U redu"; + +/* The text for the button for user to dismiss a dialog without taking any action. */ +"Cancel" = "Odbaci"; + +/* The name of the iOS native "Settings" app. */ +"SettingsAppName" = "Postavke"; + +/* The title for the error dialog for unable to sign in because of EMM policy. */ +"EmmErrorTitle" = "Prijava na račun nije moguća"; + +/* The text in the error dialog asking user to set up a passcode for the device due to EMM policy. */ +"EmmPasscodeRequired" = "Vaš administrator zahtijeva da postavite šifru zaporke na ovom uređaju da biste pristupili računu. Postavite šifru zaporke i pokušajte ponovo."; + +/* The text in the error dialog informing user that EMM policy prevented sign-in on the device. */ +"EmmGeneralError" = "Uređaj nije usklađen sa sigurnosnim pravilima koja je postavio vaš administrator."; + +/* The title in the error dialog informing user that connecting with Device Policy app is required. */ +"EmmConnectTitle" = "Želite li se povezati s aplikacijom Pravila za uređaje?"; + +/* The text in the error dialog informing user that connecting with Device Policy app is required. */ +"EmmConnectText" = "Da biste zaštitili podatke svoje organizacije, morate se povezati s aplikacijom Pravila za uređaje prije prijave."; + +/* The action button label in the error dialog informing user that connecting with Device Policy app is required. */ +"EmmConnectLabel" = "Poveži"; diff --git a/shlack/Pods/GoogleSignIn/Resources/GoogleSignIn.bundle/hu.lproj/GoogleSignIn.strings b/shlack/Pods/GoogleSignIn/Resources/GoogleSignIn.bundle/hu.lproj/GoogleSignIn.strings new file mode 100755 index 0000000..9359cf5 --- /dev/null +++ b/shlack/Pods/GoogleSignIn/Resources/GoogleSignIn.bundle/hu.lproj/GoogleSignIn.strings @@ -0,0 +1,44 @@ +/* Sign-in button text */ +"Sign in" = "Bejelentkezés"; + +/* Long form sign-in button text */ +"Sign in with Google" = "Bejelentkezés Google-fiókkal"; + +/* The title of the promotional prompt to install the Google app. */ +"PromoTitle" = "Bejelentkezés Google-fiókkal"; + +/* The body message of the promotional prompt to install the Google app. */ +"PromoMessage" = "Telepítse az ingyenes Google alkalmazást, és jelentkezzen be az egyes termékekbe Google-fiókjával. Nem kell különböző jelszavakat megjegyeznie."; + +/* The cancel button on the promotional prompt to install the Google app. */ +"PromoActionCancel" = "Mégse"; + +/* The install button on the promotional prompt to install the Google app. */ +"PromoActionInstall" = "Telepítés"; + +/* The text for the button for user to acknowledge and dismiss a dialog. */ +"OK" = "OK"; + +/* The text for the button for user to dismiss a dialog without taking any action. */ +"Cancel" = "Mégse"; + +/* The name of the iOS native "Settings" app. */ +"SettingsAppName" = "Beállítások"; + +/* The title for the error dialog for unable to sign in because of EMM policy. */ +"EmmErrorTitle" = "Nem sikerült bejelentkezni a fiókba"; + +/* The text in the error dialog asking user to set up a passcode for the device due to EMM policy. */ +"EmmPasscodeRequired" = "Adminisztrátora biztonsági kód beállítását kéri ezen az eszközön a fiókhoz való hozzáféréshez. Kérjük, állítson be biztonsági kódot, majd próbálja újra."; + +/* The text in the error dialog informing user that EMM policy prevented sign-in on the device. */ +"EmmGeneralError" = "Az eszköz nem felel meg a rendszergazda által beállított biztonsági házirendnek."; + +/* The title in the error dialog informing user that connecting with Device Policy app is required. */ +"EmmConnectTitle" = "Csatlakozik a Device Policy alkalmazáshoz?"; + +/* The text in the error dialog informing user that connecting with Device Policy app is required. */ +"EmmConnectText" = "A szervezet adatainak védelme érdekében a bejelentkezés előtt csatlakoznia kell a Device Policy alkalmazáshoz."; + +/* The action button label in the error dialog informing user that connecting with Device Policy app is required. */ +"EmmConnectLabel" = "Csatlakozás"; diff --git a/shlack/Pods/GoogleSignIn/Resources/GoogleSignIn.bundle/id.lproj/GoogleSignIn.strings b/shlack/Pods/GoogleSignIn/Resources/GoogleSignIn.bundle/id.lproj/GoogleSignIn.strings new file mode 100755 index 0000000..9b66ca3 --- /dev/null +++ b/shlack/Pods/GoogleSignIn/Resources/GoogleSignIn.bundle/id.lproj/GoogleSignIn.strings @@ -0,0 +1,44 @@ +/* Sign-in button text */ +"Sign in" = "Masuk"; + +/* Long form sign-in button text */ +"Sign in with Google" = "Masuk dengan Google"; + +/* The title of the promotional prompt to install the Google app. */ +"PromoTitle" = "Masuk dengan Google"; + +/* The body message of the promotional prompt to install the Google app. */ +"PromoMessage" = "Dapatkan Google app gratis dan masuk ke aplikasi dengan Akun Google. Tidak perlu mengingat sandi."; + +/* The cancel button on the promotional prompt to install the Google app. */ +"PromoActionCancel" = "Batal"; + +/* The install button on the promotional prompt to install the Google app. */ +"PromoActionInstall" = "Ambil"; + +/* The text for the button for user to acknowledge and dismiss a dialog. */ +"OK" = "Oke"; + +/* The text for the button for user to dismiss a dialog without taking any action. */ +"Cancel" = "Batal"; + +/* The name of the iOS native "Settings" app. */ +"SettingsAppName" = "Setelan"; + +/* The title for the error dialog for unable to sign in because of EMM policy. */ +"EmmErrorTitle" = "Tidak dapat login ke akun"; + +/* The text in the error dialog asking user to set up a passcode for the device due to EMM policy. */ +"EmmPasscodeRequired" = "Administrator mengharuskan Anda menyetel kode sandi di perangkat ini untuk mengakses akun ini. Setel kode sandi dan coba lagi."; + +/* The text in the error dialog informing user that EMM policy prevented sign-in on the device. */ +"EmmGeneralError" = "Perangkat ini tidak sesuai dengan kebijakan keamanan yang disetel oleh administrator."; + +/* The title in the error dialog informing user that connecting with Device Policy app is required. */ +"EmmConnectTitle" = "Sambungkan dengan Aplikasi Device Policy?"; + +/* The text in the error dialog informing user that connecting with Device Policy app is required. */ +"EmmConnectText" = "Untuk melindungi data organisasi, Anda harus tersambung dengan aplikasi Device Policy sebelum login."; + +/* The action button label in the error dialog informing user that connecting with Device Policy app is required. */ +"EmmConnectLabel" = "Sambungkan"; diff --git a/shlack/Pods/GoogleSignIn/Resources/GoogleSignIn.bundle/it.lproj/GoogleSignIn.strings b/shlack/Pods/GoogleSignIn/Resources/GoogleSignIn.bundle/it.lproj/GoogleSignIn.strings new file mode 100755 index 0000000..9c3e576 --- /dev/null +++ b/shlack/Pods/GoogleSignIn/Resources/GoogleSignIn.bundle/it.lproj/GoogleSignIn.strings @@ -0,0 +1,44 @@ +/* Sign-in button text */ +"Sign in" = "Accedi"; + +/* Long form sign-in button text */ +"Sign in with Google" = "Accedi con Google"; + +/* The title of the promotional prompt to install the Google app. */ +"PromoTitle" = "Accedi con Google"; + +/* The body message of the promotional prompt to install the Google app. */ +"PromoMessage" = "Scarica gratis l'app Google app e accedi alle app con il tuo account Google: liberati dai vincoli delle password."; + +/* The cancel button on the promotional prompt to install the Google app. */ +"PromoActionCancel" = "Annulla"; + +/* The install button on the promotional prompt to install the Google app. */ +"PromoActionInstall" = "Scarica"; + +/* The text for the button for user to acknowledge and dismiss a dialog. */ +"OK" = "OK"; + +/* The text for the button for user to dismiss a dialog without taking any action. */ +"Cancel" = "Annulla"; + +/* The name of the iOS native "Settings" app. */ +"SettingsAppName" = "Impostazioni"; + +/* The title for the error dialog for unable to sign in because of EMM policy. */ +"EmmErrorTitle" = "Impossibile accedere all'account"; + +/* The text in the error dialog asking user to set up a passcode for the device due to EMM policy. */ +"EmmPasscodeRequired" = "L'amministratore richiede l'impostazione di un passcode sul dispositivo per accedere a questo account. Imposta un passcode e riprova."; + +/* The text in the error dialog informing user that EMM policy prevented sign-in on the device. */ +"EmmGeneralError" = "Il dispositivo non è conforme alle norme di sicurezza stabilite dall'amministratore."; + +/* The title in the error dialog informing user that connecting with Device Policy app is required. */ +"EmmConnectTitle" = "Vuoi collegarti all'app Device Policy?"; + +/* The text in the error dialog informing user that connecting with Device Policy app is required. */ +"EmmConnectText" = "Per proteggere i dati della tua organizzazione, devi collegarti all'app Device Policy prima di accedere."; + +/* The action button label in the error dialog informing user that connecting with Device Policy app is required. */ +"EmmConnectLabel" = "Collega"; diff --git a/shlack/Pods/GoogleSignIn/Resources/GoogleSignIn.bundle/ja.lproj/GoogleSignIn.strings b/shlack/Pods/GoogleSignIn/Resources/GoogleSignIn.bundle/ja.lproj/GoogleSignIn.strings new file mode 100755 index 0000000..6dab02c --- /dev/null +++ b/shlack/Pods/GoogleSignIn/Resources/GoogleSignIn.bundle/ja.lproj/GoogleSignIn.strings @@ -0,0 +1,44 @@ +/* Sign-in button text */ +"Sign in" = "ログイン"; + +/* Long form sign-in button text */ +"Sign in with Google" = "Googleでログイン"; + +/* The title of the promotional prompt to install the Google app. */ +"PromoTitle" = "Googleでログイン"; + +/* The body message of the promotional prompt to install the Google app. */ +"PromoMessage" = "無料のGoogleアプリをインストールして、Googleアカウントでアプリにログインしよう。パスワードを覚えておく必要はありません。"; + +/* The cancel button on the promotional prompt to install the Google app. */ +"PromoActionCancel" = "キャンセル"; + +/* The install button on the promotional prompt to install the Google app. */ +"PromoActionInstall" = "インストール"; + +/* The text for the button for user to acknowledge and dismiss a dialog. */ +"OK" = "OK"; + +/* The text for the button for user to dismiss a dialog without taking any action. */ +"Cancel" = "キャンセル"; + +/* The name of the iOS native "Settings" app. */ +"SettingsAppName" = "設定"; + +/* The title for the error dialog for unable to sign in because of EMM policy. */ +"EmmErrorTitle" = "アカウントにログインできません"; + +/* The text in the error dialog asking user to set up a passcode for the device due to EMM policy. */ +"EmmPasscodeRequired" = "このアカウントにアクセスするには、この端末でパスコードを設定する必要があります。パスコードを設定してから、もう一度お試しください。"; + +/* The text in the error dialog informing user that EMM policy prevented sign-in on the device. */ +"EmmGeneralError" = "この端末は、管理者が設定したセキュリティ ポリシーに準拠していません。"; + +/* The title in the error dialog informing user that connecting with Device Policy app is required. */ +"EmmConnectTitle" = "Device Policy アプリと接続しますか?"; + +/* The text in the error dialog informing user that connecting with Device Policy app is required. */ +"EmmConnectText" = "組織のデータを保護するために、ログインする前に Device Policy アプリと接続する必要があります。"; + +/* The action button label in the error dialog informing user that connecting with Device Policy app is required. */ +"EmmConnectLabel" = "接続"; diff --git a/shlack/Pods/GoogleSignIn/Resources/GoogleSignIn.bundle/ko.lproj/GoogleSignIn.strings b/shlack/Pods/GoogleSignIn/Resources/GoogleSignIn.bundle/ko.lproj/GoogleSignIn.strings new file mode 100755 index 0000000..b596605 --- /dev/null +++ b/shlack/Pods/GoogleSignIn/Resources/GoogleSignIn.bundle/ko.lproj/GoogleSignIn.strings @@ -0,0 +1,44 @@ +/* Sign-in button text */ +"Sign in" = "로그인"; + +/* Long form sign-in button text */ +"Sign in with Google" = "Google 계정으로 로그인"; + +/* The title of the promotional prompt to install the Google app. */ +"PromoTitle" = "Google 계정으로 로그인"; + +/* The body message of the promotional prompt to install the Google app. */ +"PromoMessage" = "무료 Google 앱을 다운로드하여 Google 계정으로 앱에 로그인하세요. 비밀번호를 기억할 필요가 없습니다."; + +/* The cancel button on the promotional prompt to install the Google app. */ +"PromoActionCancel" = "취소"; + +/* The install button on the promotional prompt to install the Google app. */ +"PromoActionInstall" = "설치"; + +/* The text for the button for user to acknowledge and dismiss a dialog. */ +"OK" = "확인"; + +/* The text for the button for user to dismiss a dialog without taking any action. */ +"Cancel" = "취소"; + +/* The name of the iOS native "Settings" app. */ +"SettingsAppName" = "설정"; + +/* The title for the error dialog for unable to sign in because of EMM policy. */ +"EmmErrorTitle" = "계정에 로그인할 수 없음"; + +/* The text in the error dialog asking user to set up a passcode for the device due to EMM policy. */ +"EmmPasscodeRequired" = "관리자의 설정에 따라 이 계정에 액세스하려면 사용 중인 기기에 비밀번호를 설정해야 합니다. 비밀번호를 설정한 후 다시 시도해 주세요."; + +/* The text in the error dialog informing user that EMM policy prevented sign-in on the device. */ +"EmmGeneralError" = "관리자가 설정한 보안 정책을 준수하지 않는 기기입니다."; + +/* The title in the error dialog informing user that connecting with Device Policy app is required. */ +"EmmConnectTitle" = "Device Policy 앱과 연결하시겠습니까?"; + +/* The text in the error dialog informing user that connecting with Device Policy app is required. */ +"EmmConnectText" = "조직의 데이터를 보호하려면 로그인하기 전에 Device Policy 앱과 연결해야 합니다."; + +/* The action button label in the error dialog informing user that connecting with Device Policy app is required. */ +"EmmConnectLabel" = "연결"; diff --git a/shlack/Pods/GoogleSignIn/Resources/GoogleSignIn.bundle/ms.lproj/GoogleSignIn.strings b/shlack/Pods/GoogleSignIn/Resources/GoogleSignIn.bundle/ms.lproj/GoogleSignIn.strings new file mode 100755 index 0000000..700aaf2 --- /dev/null +++ b/shlack/Pods/GoogleSignIn/Resources/GoogleSignIn.bundle/ms.lproj/GoogleSignIn.strings @@ -0,0 +1,44 @@ +/* Sign-in button text */ +"Sign in" = "Log masuk"; + +/* Long form sign-in button text */ +"Sign in with Google" = "Log masuk dengan Google"; + +/* The title of the promotional prompt to install the Google app. */ +"PromoTitle" = "Log masuk dengan Google"; + +/* The body message of the promotional prompt to install the Google app. */ +"PromoMessage" = "Dapatkan apl Google percuma dan log masuk ke apl menggunakan Akaun Google anda. Tidak perlu mengingati kata laluan."; + +/* The cancel button on the promotional prompt to install the Google app. */ +"PromoActionCancel" = "Batal"; + +/* The install button on the promotional prompt to install the Google app. */ +"PromoActionInstall" = "Dapatkan"; + +/* The text for the button for user to acknowledge and dismiss a dialog. */ +"OK" = "OK"; + +/* The text for the button for user to dismiss a dialog without taking any action. */ +"Cancel" = "Batal"; + +/* The name of the iOS native "Settings" app. */ +"SettingsAppName" = "Tetapan"; + +/* The title for the error dialog for unable to sign in because of EMM policy. */ +"EmmErrorTitle" = "Tidak dapat log masuk ke akaun"; + +/* The text in the error dialog asking user to set up a passcode for the device due to EMM policy. */ +"EmmPasscodeRequired" = "Pentadbir menghendaki anda menetapkan kod laluan pada peranti ini untuk mengakses akaun ini. Sila tetapkan kod laluan, kemudian cuba lagi."; + +/* The text in the error dialog informing user that EMM policy prevented sign-in on the device. */ +"EmmGeneralError" = "Peranti tidak mematuhi dasar keselamatan yang ditetapkan oleh pentadbir anda."; + +/* The title in the error dialog informing user that connecting with Device Policy app is required. */ +"EmmConnectTitle" = "Berhubung dengan Apl Dasar Peranti?"; + +/* The text in the error dialog informing user that connecting with Device Policy app is required. */ +"EmmConnectText" = "Untuk melindungi data organisasi anda, anda mesti berhubung dengan apl Dasar Peranti sebelum log masuk."; + +/* The action button label in the error dialog informing user that connecting with Device Policy app is required. */ +"EmmConnectLabel" = "Hubungkan"; diff --git a/shlack/Pods/GoogleSignIn/Resources/GoogleSignIn.bundle/nb.lproj/GoogleSignIn.strings b/shlack/Pods/GoogleSignIn/Resources/GoogleSignIn.bundle/nb.lproj/GoogleSignIn.strings new file mode 100755 index 0000000..994b40f --- /dev/null +++ b/shlack/Pods/GoogleSignIn/Resources/GoogleSignIn.bundle/nb.lproj/GoogleSignIn.strings @@ -0,0 +1,44 @@ +/* Sign-in button text */ +"Sign in" = "Logg på"; + +/* Long form sign-in button text */ +"Sign in with Google" = "Logg på med Google"; + +/* The title of the promotional prompt to install the Google app. */ +"PromoTitle" = "Logg på med Google"; + +/* The body message of the promotional prompt to install the Google app. */ +"PromoMessage" = "Skaff deg den gratis Google-appen, og logg på apper med Google-kontoen din. Du trenger ikke å huske passord."; + +/* The cancel button on the promotional prompt to install the Google app. */ +"PromoActionCancel" = "Avbryt"; + +/* The install button on the promotional prompt to install the Google app. */ +"PromoActionInstall" = "Hent"; + +/* The text for the button for user to acknowledge and dismiss a dialog. */ +"OK" = "OK"; + +/* The text for the button for user to dismiss a dialog without taking any action. */ +"Cancel" = "Avbryt"; + +/* The name of the iOS native "Settings" app. */ +"SettingsAppName" = "Innstillinger"; + +/* The title for the error dialog for unable to sign in because of EMM policy. */ +"EmmErrorTitle" = "Kan ikke logge på kontoen"; + +/* The text in the error dialog asking user to set up a passcode for the device due to EMM policy. */ +"EmmPasscodeRequired" = "Administratoren din krever at du angir en adgangskode på denne enheten for å få tilgang til kontoen. Angi en adgangskode, og prøv på nytt."; + +/* The text in the error dialog informing user that EMM policy prevented sign-in on the device. */ +"EmmGeneralError" = "Enheten overholder ikke retningslinjene for sikkerhet som ble angitt av administratoren din."; + +/* The title in the error dialog informing user that connecting with Device Policy app is required. */ +"EmmConnectTitle" = "Vil du koble til med Device Policy-appen?"; + +/* The text in the error dialog informing user that connecting with Device Policy app is required. */ +"EmmConnectText" = "For å beskytte dataene til organisasjonen din må du koble til med Device Policy-appen før du logger på."; + +/* The action button label in the error dialog informing user that connecting with Device Policy app is required. */ +"EmmConnectLabel" = "Koble til"; diff --git a/shlack/Pods/GoogleSignIn/Resources/GoogleSignIn.bundle/nl.lproj/GoogleSignIn.strings b/shlack/Pods/GoogleSignIn/Resources/GoogleSignIn.bundle/nl.lproj/GoogleSignIn.strings new file mode 100755 index 0000000..fb539e0 --- /dev/null +++ b/shlack/Pods/GoogleSignIn/Resources/GoogleSignIn.bundle/nl.lproj/GoogleSignIn.strings @@ -0,0 +1,44 @@ +/* Sign-in button text */ +"Sign in" = "Inloggen"; + +/* Long form sign-in button text */ +"Sign in with Google" = "Inloggen met Google"; + +/* The title of the promotional prompt to install the Google app. */ +"PromoTitle" = "Inloggen met Google"; + +/* The body message of the promotional prompt to install the Google app. */ +"PromoMessage" = "Installeer de gratis Google-app en log in bij apps met uw Google-account. U hoeft geen wachtwoorden te onthouden."; + +/* The cancel button on the promotional prompt to install the Google app. */ +"PromoActionCancel" = "Annuleren"; + +/* The install button on the promotional prompt to install the Google app. */ +"PromoActionInstall" = "Installeren"; + +/* The text for the button for user to acknowledge and dismiss a dialog. */ +"OK" = "OK"; + +/* The text for the button for user to dismiss a dialog without taking any action. */ +"Cancel" = "Annuleren"; + +/* The name of the iOS native "Settings" app. */ +"SettingsAppName" = "Instellingen"; + +/* The title for the error dialog for unable to sign in because of EMM policy. */ +"EmmErrorTitle" = "Kan niet inloggen op account"; + +/* The text in the error dialog asking user to set up a passcode for the device due to EMM policy. */ +"EmmPasscodeRequired" = "Uw beheerder vereist dat u een toegangscode instelt op dit apparaat om toegang te krijgen tot dit account. Stel een toegangscode in en probeer het opnieuw."; + +/* The text in the error dialog informing user that EMM policy prevented sign-in on the device. */ +"EmmGeneralError" = "Het apparaat voldoet niet aan het beveiligingsbeleid dat is ingesteld door uw beheerder."; + +/* The title in the error dialog informing user that connecting with Device Policy app is required. */ +"EmmConnectTitle" = "Verbinden met Device Policy-app?"; + +/* The text in the error dialog informing user that connecting with Device Policy app is required. */ +"EmmConnectText" = "Ter bescherming van de gegevens van uw organisatie moet u verbinding maken met de Device Policy-app voordat u inlogt."; + +/* The action button label in the error dialog informing user that connecting with Device Policy app is required. */ +"EmmConnectLabel" = "Verbinden"; diff --git a/shlack/Pods/GoogleSignIn/Resources/GoogleSignIn.bundle/pl.lproj/GoogleSignIn.strings b/shlack/Pods/GoogleSignIn/Resources/GoogleSignIn.bundle/pl.lproj/GoogleSignIn.strings new file mode 100755 index 0000000..6ed4b57 --- /dev/null +++ b/shlack/Pods/GoogleSignIn/Resources/GoogleSignIn.bundle/pl.lproj/GoogleSignIn.strings @@ -0,0 +1,44 @@ +/* Sign-in button text */ +"Sign in" = "Zaloguj się"; + +/* Long form sign-in button text */ +"Sign in with Google" = "Zaloguj się przez Google"; + +/* The title of the promotional prompt to install the Google app. */ +"PromoTitle" = "Zaloguj się przez Google"; + +/* The body message of the promotional prompt to install the Google app. */ +"PromoMessage" = "Pobierz darmową aplikację Google i zaloguj się do aplikacji, używając konta Google. Nie musisz pamiętać haseł."; + +/* The cancel button on the promotional prompt to install the Google app. */ +"PromoActionCancel" = "Anuluj"; + +/* The install button on the promotional prompt to install the Google app. */ +"PromoActionInstall" = "Pobierz"; + +/* The text for the button for user to acknowledge and dismiss a dialog. */ +"OK" = "OK"; + +/* The text for the button for user to dismiss a dialog without taking any action. */ +"Cancel" = "Anuluj"; + +/* The name of the iOS native "Settings" app. */ +"SettingsAppName" = "Ustawienia"; + +/* The title for the error dialog for unable to sign in because of EMM policy. */ +"EmmErrorTitle" = "Nie można zalogować się na konto"; + +/* The text in the error dialog asking user to set up a passcode for the device due to EMM policy. */ +"EmmPasscodeRequired" = "Administrator wymaga ustawienia kodu dostępu do konta na tym urządzeniu. Ustaw kod dostępu i spróbuj ponownie."; + +/* The text in the error dialog informing user that EMM policy prevented sign-in on the device. */ +"EmmGeneralError" = "Urządzenie nie jest zgodne z zasadami bezpieczeństwa ustanowionymi przez Twojego administratora."; + +/* The title in the error dialog informing user that connecting with Device Policy app is required. */ +"EmmConnectTitle" = "Połączyć z aplikacją Device Policy?"; + +/* The text in the error dialog informing user that connecting with Device Policy app is required. */ +"EmmConnectText" = "Aby chronić dane organizacji, przed zalogowaniem musisz się połączyć z aplikacją Device Policy."; + +/* The action button label in the error dialog informing user that connecting with Device Policy app is required. */ +"EmmConnectLabel" = "Połącz"; diff --git a/shlack/Pods/GoogleSignIn/Resources/GoogleSignIn.bundle/pt.lproj/GoogleSignIn.strings b/shlack/Pods/GoogleSignIn/Resources/GoogleSignIn.bundle/pt.lproj/GoogleSignIn.strings new file mode 100755 index 0000000..3207312 --- /dev/null +++ b/shlack/Pods/GoogleSignIn/Resources/GoogleSignIn.bundle/pt.lproj/GoogleSignIn.strings @@ -0,0 +1,44 @@ +/* Sign-in button text */ +"Sign in" = "Fazer login"; + +/* Long form sign-in button text */ +"Sign in with Google" = "Fazer login com o Google"; + +/* The title of the promotional prompt to install the Google app. */ +"PromoTitle" = "Fazer login com o Google"; + +/* The body message of the promotional prompt to install the Google app. */ +"PromoMessage" = "Faça o download do Google app gratuitamente e faça login em aplicativos com sua Conta do Google. Não há necessidade de lembrar senhas."; + +/* The cancel button on the promotional prompt to install the Google app. */ +"PromoActionCancel" = "Cancelar"; + +/* The install button on the promotional prompt to install the Google app. */ +"PromoActionInstall" = "Instalar"; + +/* The text for the button for user to acknowledge and dismiss a dialog. */ +"OK" = "OK"; + +/* The text for the button for user to dismiss a dialog without taking any action. */ +"Cancel" = "Cancelar"; + +/* The name of the iOS native "Settings" app. */ +"SettingsAppName" = "Configurações"; + +/* The title for the error dialog for unable to sign in because of EMM policy. */ +"EmmErrorTitle" = "Não foi possível fazer login na conta"; + +/* The text in the error dialog asking user to set up a passcode for the device due to EMM policy. */ +"EmmPasscodeRequired" = "Seu administrador exige que você defina uma senha neste dispositivo para acessar esta conta. Defina uma senha e tente novamente."; + +/* The text in the error dialog informing user that EMM policy prevented sign-in on the device. */ +"EmmGeneralError" = "O dispositivo não está em conformidade com a política de segurança definida pelo administrador."; + +/* The title in the error dialog informing user that connecting with Device Policy app is required. */ +"EmmConnectTitle" = "Conectar-se ao app Device Policy?"; + +/* The text in the error dialog informing user that connecting with Device Policy app is required. */ +"EmmConnectText" = "Para proteger os dados da sua organização, você precisa se conectar ao app Device Policy antes de fazer login."; + +/* The action button label in the error dialog informing user that connecting with Device Policy app is required. */ +"EmmConnectLabel" = "Conectar"; diff --git a/shlack/Pods/GoogleSignIn/Resources/GoogleSignIn.bundle/pt_BR.lproj/GoogleSignIn.strings b/shlack/Pods/GoogleSignIn/Resources/GoogleSignIn.bundle/pt_BR.lproj/GoogleSignIn.strings new file mode 100755 index 0000000..3207312 --- /dev/null +++ b/shlack/Pods/GoogleSignIn/Resources/GoogleSignIn.bundle/pt_BR.lproj/GoogleSignIn.strings @@ -0,0 +1,44 @@ +/* Sign-in button text */ +"Sign in" = "Fazer login"; + +/* Long form sign-in button text */ +"Sign in with Google" = "Fazer login com o Google"; + +/* The title of the promotional prompt to install the Google app. */ +"PromoTitle" = "Fazer login com o Google"; + +/* The body message of the promotional prompt to install the Google app. */ +"PromoMessage" = "Faça o download do Google app gratuitamente e faça login em aplicativos com sua Conta do Google. Não há necessidade de lembrar senhas."; + +/* The cancel button on the promotional prompt to install the Google app. */ +"PromoActionCancel" = "Cancelar"; + +/* The install button on the promotional prompt to install the Google app. */ +"PromoActionInstall" = "Instalar"; + +/* The text for the button for user to acknowledge and dismiss a dialog. */ +"OK" = "OK"; + +/* The text for the button for user to dismiss a dialog without taking any action. */ +"Cancel" = "Cancelar"; + +/* The name of the iOS native "Settings" app. */ +"SettingsAppName" = "Configurações"; + +/* The title for the error dialog for unable to sign in because of EMM policy. */ +"EmmErrorTitle" = "Não foi possível fazer login na conta"; + +/* The text in the error dialog asking user to set up a passcode for the device due to EMM policy. */ +"EmmPasscodeRequired" = "Seu administrador exige que você defina uma senha neste dispositivo para acessar esta conta. Defina uma senha e tente novamente."; + +/* The text in the error dialog informing user that EMM policy prevented sign-in on the device. */ +"EmmGeneralError" = "O dispositivo não está em conformidade com a política de segurança definida pelo administrador."; + +/* The title in the error dialog informing user that connecting with Device Policy app is required. */ +"EmmConnectTitle" = "Conectar-se ao app Device Policy?"; + +/* The text in the error dialog informing user that connecting with Device Policy app is required. */ +"EmmConnectText" = "Para proteger os dados da sua organização, você precisa se conectar ao app Device Policy antes de fazer login."; + +/* The action button label in the error dialog informing user that connecting with Device Policy app is required. */ +"EmmConnectLabel" = "Conectar"; diff --git a/shlack/Pods/GoogleSignIn/Resources/GoogleSignIn.bundle/pt_PT.lproj/GoogleSignIn.strings b/shlack/Pods/GoogleSignIn/Resources/GoogleSignIn.bundle/pt_PT.lproj/GoogleSignIn.strings new file mode 100755 index 0000000..91d7a25 --- /dev/null +++ b/shlack/Pods/GoogleSignIn/Resources/GoogleSignIn.bundle/pt_PT.lproj/GoogleSignIn.strings @@ -0,0 +1,44 @@ +/* Sign-in button text */ +"Sign in" = "Iniciar sessão"; + +/* Long form sign-in button text */ +"Sign in with Google" = "Iniciar sessão com o Google"; + +/* The title of the promotional prompt to install the Google app. */ +"PromoTitle" = "Iniciar sessão com o Google"; + +/* The body message of the promotional prompt to install the Google app. */ +"PromoMessage" = "Obtenha a aplicação Google gratuita e inicie sessão nas aplicações com a sua Conta Google. Não precisa de memorizar palavras-passe."; + +/* The cancel button on the promotional prompt to install the Google app. */ +"PromoActionCancel" = "Cancelar"; + +/* The install button on the promotional prompt to install the Google app. */ +"PromoActionInstall" = "Obter"; + +/* The text for the button for user to acknowledge and dismiss a dialog. */ +"OK" = "OK"; + +/* The text for the button for user to dismiss a dialog without taking any action. */ +"Cancel" = "Cancelar"; + +/* The name of the iOS native "Settings" app. */ +"SettingsAppName" = "Definições"; + +/* The title for the error dialog for unable to sign in because of EMM policy. */ +"EmmErrorTitle" = "Não é possível iniciar sessão na conta"; + +/* The text in the error dialog asking user to set up a passcode for the device due to EMM policy. */ +"EmmPasscodeRequired" = "O administrador requer a definição de um código secreto neste dispositivo para aceder a esta conta. Defina um código secreto e tente novamente."; + +/* The text in the error dialog informing user that EMM policy prevented sign-in on the device. */ +"EmmGeneralError" = "O dispositivo não está em conformidade com a política de segurança definida pelo seu administrador."; + +/* The title in the error dialog informing user that connecting with Device Policy app is required. */ +"EmmConnectTitle" = "Pretende ligar-se à aplicação Device Policy?"; + +/* The text in the error dialog informing user that connecting with Device Policy app is required. */ +"EmmConnectText" = "Para proteger os dados da sua entidade, tem de se ligar à aplicação Device Policy antes de iniciar sessão."; + +/* The action button label in the error dialog informing user that connecting with Device Policy app is required. */ +"EmmConnectLabel" = "Ligar"; diff --git a/shlack/Pods/GoogleSignIn/Resources/GoogleSignIn.bundle/ro.lproj/GoogleSignIn.strings b/shlack/Pods/GoogleSignIn/Resources/GoogleSignIn.bundle/ro.lproj/GoogleSignIn.strings new file mode 100755 index 0000000..34b4239 --- /dev/null +++ b/shlack/Pods/GoogleSignIn/Resources/GoogleSignIn.bundle/ro.lproj/GoogleSignIn.strings @@ -0,0 +1,44 @@ +/* Sign-in button text */ +"Sign in" = "Conectați-vă"; + +/* Long form sign-in button text */ +"Sign in with Google" = "Conectați-vă cu Google"; + +/* The title of the promotional prompt to install the Google app. */ +"PromoTitle" = "Conectați-vă cu Google"; + +/* The body message of the promotional prompt to install the Google app. */ +"PromoMessage" = "Instalați aplicația Google gratuită și conectați-vă la aplicații folosind Contul Google. Nu mai trebuie să rețineți parolele."; + +/* The cancel button on the promotional prompt to install the Google app. */ +"PromoActionCancel" = "Anulați"; + +/* The install button on the promotional prompt to install the Google app. */ +"PromoActionInstall" = "Instalați"; + +/* The text for the button for user to acknowledge and dismiss a dialog. */ +"OK" = "OK"; + +/* The text for the button for user to dismiss a dialog without taking any action. */ +"Cancel" = "Anulați"; + +/* The name of the iOS native "Settings" app. */ +"SettingsAppName" = "Setări"; + +/* The title for the error dialog for unable to sign in because of EMM policy. */ +"EmmErrorTitle" = "Nu vă puteți conecta la cont"; + +/* The text in the error dialog asking user to set up a passcode for the device due to EMM policy. */ +"EmmPasscodeRequired" = "Administratorul impune să setați o parolă pe acest dispozitiv ca să accesați contul. Setați o parolă și încercați din nou."; + +/* The text in the error dialog informing user that EMM policy prevented sign-in on the device. */ +"EmmGeneralError" = "Dispozitivul nu respectă politica de securitate stabilită de administrator."; + +/* The title in the error dialog informing user that connecting with Device Policy app is required. */ +"EmmConnectTitle" = "Vă conectați cu aplicația Device Policy?"; + +/* The text in the error dialog informing user that connecting with Device Policy app is required. */ +"EmmConnectText" = "Pentru a vă proteja datele organizației, trebuie să vă conectați cu aplicația Device Policy înainte de a vă conecta."; + +/* The action button label in the error dialog informing user that connecting with Device Policy app is required. */ +"EmmConnectLabel" = "Conectați"; diff --git a/shlack/Pods/GoogleSignIn/Resources/GoogleSignIn.bundle/ru.lproj/GoogleSignIn.strings b/shlack/Pods/GoogleSignIn/Resources/GoogleSignIn.bundle/ru.lproj/GoogleSignIn.strings new file mode 100755 index 0000000..6d6c98a --- /dev/null +++ b/shlack/Pods/GoogleSignIn/Resources/GoogleSignIn.bundle/ru.lproj/GoogleSignIn.strings @@ -0,0 +1,44 @@ +/* Sign-in button text */ +"Sign in" = "Войти"; + +/* Long form sign-in button text */ +"Sign in with Google" = "Войти в аккаунт Google"; + +/* The title of the promotional prompt to install the Google app. */ +"PromoTitle" = "Надоело вводить пароль?"; + +/* The body message of the promotional prompt to install the Google app. */ +"PromoMessage" = "Установите бесплатное приложение Google и входите в другие мобильные программы, используя учетные данные своего аккаунта."; + +/* The cancel button on the promotional prompt to install the Google app. */ +"PromoActionCancel" = "Отмена"; + +/* The install button on the promotional prompt to install the Google app. */ +"PromoActionInstall" = "Установить"; + +/* The text for the button for user to acknowledge and dismiss a dialog. */ +"OK" = "ОК"; + +/* The text for the button for user to dismiss a dialog without taking any action. */ +"Cancel" = "Отмена"; + +/* The name of the iOS native "Settings" app. */ +"SettingsAppName" = "Настройки"; + +/* The title for the error dialog for unable to sign in because of EMM policy. */ +"EmmErrorTitle" = "Не удалось войти в аккаунт"; + +/* The text in the error dialog asking user to set up a passcode for the device due to EMM policy. */ +"EmmPasscodeRequired" = "В соответствии с требованиями администратора для входа в аккаунт необходимо установить на устройстве код доступа. Сделайте это и повторите попытку."; + +/* The text in the error dialog informing user that EMM policy prevented sign-in on the device. */ +"EmmGeneralError" = "Устройство не соответствует правилам безопасности, которые установлены администратором."; + +/* The title in the error dialog informing user that connecting with Device Policy app is required. */ +"EmmConnectTitle" = "Подключить приложение Device Policy?"; + +/* The text in the error dialog informing user that connecting with Device Policy app is required. */ +"EmmConnectText" = "В целях защиты корпоративных данных перед входом в аккаунт необходимо подключить приложение Device Policy."; + +/* The action button label in the error dialog informing user that connecting with Device Policy app is required. */ +"EmmConnectLabel" = "Подключить"; diff --git a/shlack/Pods/GoogleSignIn/Resources/GoogleSignIn.bundle/sk.lproj/GoogleSignIn.strings b/shlack/Pods/GoogleSignIn/Resources/GoogleSignIn.bundle/sk.lproj/GoogleSignIn.strings new file mode 100755 index 0000000..eaf2f7f --- /dev/null +++ b/shlack/Pods/GoogleSignIn/Resources/GoogleSignIn.bundle/sk.lproj/GoogleSignIn.strings @@ -0,0 +1,44 @@ +/* Sign-in button text */ +"Sign in" = "Prihlásiť sa"; + +/* Long form sign-in button text */ +"Sign in with Google" = "Prihlásiť sa pomocou účtu Google"; + +/* The title of the promotional prompt to install the Google app. */ +"PromoTitle" = "Prihlásenie pomocou účtu Google"; + +/* The body message of the promotional prompt to install the Google app. */ +"PromoMessage" = "Nainštalujte si zdarma aplikáciu Google a prihlasujte sa do aplikácií pomocou účtu Google. Nebudete si už musieť pamätať rôzne heslá."; + +/* The cancel button on the promotional prompt to install the Google app. */ +"PromoActionCancel" = "Zrušiť"; + +/* The install button on the promotional prompt to install the Google app. */ +"PromoActionInstall" = "Inštalovať"; + +/* The text for the button for user to acknowledge and dismiss a dialog. */ +"OK" = "OK"; + +/* The text for the button for user to dismiss a dialog without taking any action. */ +"Cancel" = "Zrušiť"; + +/* The name of the iOS native "Settings" app. */ +"SettingsAppName" = "Nastavenia"; + +/* The title for the error dialog for unable to sign in because of EMM policy. */ +"EmmErrorTitle" = "Nedá sa prihlásiť do účtu"; + +/* The text in the error dialog asking user to set up a passcode for the device due to EMM policy. */ +"EmmPasscodeRequired" = "Správca vyžaduje, aby ste v tomto zariadení nastavili vstupný kód na prístup do príslušného účtu. Nastavte vstupný kód a skúste to znova."; + +/* The text in the error dialog informing user that EMM policy prevented sign-in on the device. */ +"EmmGeneralError" = "Zariadenie nespĺňa pravidlá zabezpečenia nastavené vaším správcom."; + +/* The title in the error dialog informing user that connecting with Device Policy app is required. */ +"EmmConnectTitle" = "Prepojiť s aplikáciou Pravidlá pre zariadenie?"; + +/* The text in the error dialog informing user that connecting with Device Policy app is required. */ +"EmmConnectText" = "Na to, aby bolo možné chrániť dáta vašej organizácie, je nutné pred prihlásením aktivovať prepojenie s aplikáciou Pravidlá pre zariadenie."; + +/* The action button label in the error dialog informing user that connecting with Device Policy app is required. */ +"EmmConnectLabel" = "Prepojiť"; diff --git a/shlack/Pods/GoogleSignIn/Resources/GoogleSignIn.bundle/sv.lproj/GoogleSignIn.strings b/shlack/Pods/GoogleSignIn/Resources/GoogleSignIn.bundle/sv.lproj/GoogleSignIn.strings new file mode 100755 index 0000000..3192e07 --- /dev/null +++ b/shlack/Pods/GoogleSignIn/Resources/GoogleSignIn.bundle/sv.lproj/GoogleSignIn.strings @@ -0,0 +1,44 @@ +/* Sign-in button text */ +"Sign in" = "Logga in"; + +/* Long form sign-in button text */ +"Sign in with Google" = "Logga in med Google"; + +/* The title of the promotional prompt to install the Google app. */ +"PromoTitle" = "Logga in med Google"; + +/* The body message of the promotional prompt to install the Google app. */ +"PromoMessage" = "Hämta Google-appen utan kostnad och logga in i appar med ditt Google-konto. Du behöver inte komma ihåg en massa lösenord."; + +/* The cancel button on the promotional prompt to install the Google app. */ +"PromoActionCancel" = "Avbryt"; + +/* The install button on the promotional prompt to install the Google app. */ +"PromoActionInstall" = "Hämta"; + +/* The text for the button for user to acknowledge and dismiss a dialog. */ +"OK" = "Ok"; + +/* The text for the button for user to dismiss a dialog without taking any action. */ +"Cancel" = "Avbryt"; + +/* The name of the iOS native "Settings" app. */ +"SettingsAppName" = "Inställningar"; + +/* The title for the error dialog for unable to sign in because of EMM policy. */ +"EmmErrorTitle" = "Det gick inte att logga in på kontot"; + +/* The text in the error dialog asking user to set up a passcode for the device due to EMM policy. */ +"EmmPasscodeRequired" = "Administratören kräver att du anger ett lösenord på den här enheten för att få åtkomst till kontot. Ange ett lösenord och försök igen."; + +/* The text in the error dialog informing user that EMM policy prevented sign-in on the device. */ +"EmmGeneralError" = "Säkerhetspolicyn som administratören har angett efterlevs inte på enheten."; + +/* The title in the error dialog informing user that connecting with Device Policy app is required. */ +"EmmConnectTitle" = "Vill du ansluta med appen Device Policy?"; + +/* The text in the error dialog informing user that connecting with Device Policy app is required. */ +"EmmConnectText" = "Du måste ansluta med appen Device Policy innan du loggar in för att skydda organisationens data."; + +/* The action button label in the error dialog informing user that connecting with Device Policy app is required. */ +"EmmConnectLabel" = "Anslut"; diff --git a/shlack/Pods/GoogleSignIn/Resources/GoogleSignIn.bundle/th.lproj/GoogleSignIn.strings b/shlack/Pods/GoogleSignIn/Resources/GoogleSignIn.bundle/th.lproj/GoogleSignIn.strings new file mode 100755 index 0000000..353394c --- /dev/null +++ b/shlack/Pods/GoogleSignIn/Resources/GoogleSignIn.bundle/th.lproj/GoogleSignIn.strings @@ -0,0 +1,44 @@ +/* Sign-in button text */ +"Sign in" = "ลงชื่อเข้าใช้"; + +/* Long form sign-in button text */ +"Sign in with Google" = "ลงชื่อเข้าใช้ด้วย Google"; + +/* The title of the promotional prompt to install the Google app. */ +"PromoTitle" = "ลงชื่อเข้าใช้ด้วย Google"; + +/* The body message of the promotional prompt to install the Google app. */ +"PromoMessage" = "ติดตั้งแอป Google ฟรีและลงชื่อเข้าใช้แอปต่างๆ ด้วยบัญชี Google คุณไม่ต้องจำรหัสผ่านอีกแล้ว"; + +/* The cancel button on the promotional prompt to install the Google app. */ +"PromoActionCancel" = "ยกเลิก"; + +/* The install button on the promotional prompt to install the Google app. */ +"PromoActionInstall" = "ติดตั้ง"; + +/* The text for the button for user to acknowledge and dismiss a dialog. */ +"OK" = "ตกลง"; + +/* The text for the button for user to dismiss a dialog without taking any action. */ +"Cancel" = "ยกเลิก"; + +/* The name of the iOS native "Settings" app. */ +"SettingsAppName" = "การตั้งค่า"; + +/* The title for the error dialog for unable to sign in because of EMM policy. */ +"EmmErrorTitle" = "ลงชื่อเข้าใช้บัญชีไม่ได้"; + +/* The text in the error dialog asking user to set up a passcode for the device due to EMM policy. */ +"EmmPasscodeRequired" = "ผู้ดูแลระบบกำหนดให้คุณตั้งรหัสผ่านในอุปกรณ์นี้เพื่อเข้าถึงบัญชีนี้ โปรดตั้งรหัสผ่าน แล้วลองอีกครั้ง"; + +/* The text in the error dialog informing user that EMM policy prevented sign-in on the device. */ +"EmmGeneralError" = "อุปกรณ์ไม่ตรงตามนโยบายความปลอดภัยที่กำหนดโดยผู้ดูแลระบบของคุณ"; + +/* The title in the error dialog informing user that connecting with Device Policy app is required. */ +"EmmConnectTitle" = "เชื่อมต่อแอป Device Policy ไหม"; + +/* The text in the error dialog informing user that connecting with Device Policy app is required. */ +"EmmConnectText" = "เพื่อปกป้องข้อมูลขององค์กร คุณต้องเชื่อมต่อแอป Device Policy ก่อนลงชื่อเข้าสู่ระบบ"; + +/* The action button label in the error dialog informing user that connecting with Device Policy app is required. */ +"EmmConnectLabel" = "เชื่อมต่อ"; diff --git a/shlack/Pods/GoogleSignIn/Resources/GoogleSignIn.bundle/tr.lproj/GoogleSignIn.strings b/shlack/Pods/GoogleSignIn/Resources/GoogleSignIn.bundle/tr.lproj/GoogleSignIn.strings new file mode 100755 index 0000000..414b7b9 --- /dev/null +++ b/shlack/Pods/GoogleSignIn/Resources/GoogleSignIn.bundle/tr.lproj/GoogleSignIn.strings @@ -0,0 +1,44 @@ +/* Sign-in button text */ +"Sign in" = "Oturum aç"; + +/* Long form sign-in button text */ +"Sign in with Google" = "Google ile oturum aç"; + +/* The title of the promotional prompt to install the Google app. */ +"PromoTitle" = "Google ile oturum aç"; + +/* The body message of the promotional prompt to install the Google app. */ +"PromoMessage" = "Ücretsiz Google uygulamasını edinin ve uygulamalarda Google Hesabınızla oturum açın. Şifrelerinizi hatırlamanız gerekmez."; + +/* The cancel button on the promotional prompt to install the Google app. */ +"PromoActionCancel" = "İptal"; + +/* The install button on the promotional prompt to install the Google app. */ +"PromoActionInstall" = "Yükle"; + +/* The text for the button for user to acknowledge and dismiss a dialog. */ +"OK" = "Tamam"; + +/* The text for the button for user to dismiss a dialog without taking any action. */ +"Cancel" = "İptal"; + +/* The name of the iOS native "Settings" app. */ +"SettingsAppName" = "Ayarlar"; + +/* The title for the error dialog for unable to sign in because of EMM policy. */ +"EmmErrorTitle" = "Hesapta oturum açılamıyor"; + +/* The text in the error dialog asking user to set up a passcode for the device due to EMM policy. */ +"EmmPasscodeRequired" = "Yöneticiniz, bu hesaba erişmek için bu cihazda bir şifre kodu ayarlamanızı gerektiriyor. Lütfen şifre kodu ayarlayın ve tekrar deneyin."; + +/* The text in the error dialog informing user that EMM policy prevented sign-in on the device. */ +"EmmGeneralError" = "Bu cihaz, yöneticinizin ayarladığı güvenlik politikasıyla uyumlu değil."; + +/* The title in the error dialog informing user that connecting with Device Policy app is required. */ +"EmmConnectTitle" = "Cihaz Politika Uygulamasına bağlanılsın mı?"; + +/* The text in the error dialog informing user that connecting with Device Policy app is required. */ +"EmmConnectText" = "Kuruluşunuzun verilerini korumak için, giriş yapmadan önce Cihaz Politikası uygulamasına bağlanmalısınız."; + +/* The action button label in the error dialog informing user that connecting with Device Policy app is required. */ +"EmmConnectLabel" = "Bağlan"; diff --git a/shlack/Pods/GoogleSignIn/Resources/GoogleSignIn.bundle/uk.lproj/GoogleSignIn.strings b/shlack/Pods/GoogleSignIn/Resources/GoogleSignIn.bundle/uk.lproj/GoogleSignIn.strings new file mode 100755 index 0000000..faaa0bc --- /dev/null +++ b/shlack/Pods/GoogleSignIn/Resources/GoogleSignIn.bundle/uk.lproj/GoogleSignIn.strings @@ -0,0 +1,44 @@ +/* Sign-in button text */ +"Sign in" = "Увійти"; + +/* Long form sign-in button text */ +"Sign in with Google" = "Увійти в обліковий запис Google"; + +/* The title of the promotional prompt to install the Google app. */ +"PromoTitle" = "Входьте в обліковий запис Google"; + +/* The body message of the promotional prompt to install the Google app. */ +"PromoMessage" = "Установіть безкоштовний додаток Google і входьте в обліковий запис Google у додатках. Не потрібно запам’ятовувати паролі."; + +/* The cancel button on the promotional prompt to install the Google app. */ +"PromoActionCancel" = "Скасувати"; + +/* The install button on the promotional prompt to install the Google app. */ +"PromoActionInstall" = "Установити"; + +/* The text for the button for user to acknowledge and dismiss a dialog. */ +"OK" = "OK"; + +/* The text for the button for user to dismiss a dialog without taking any action. */ +"Cancel" = "Скасувати"; + +/* The name of the iOS native "Settings" app. */ +"SettingsAppName" = "Налаштування"; + +/* The title for the error dialog for unable to sign in because of EMM policy. */ +"EmmErrorTitle" = "Не вдається ввійти в обліковий запис"; + +/* The text in the error dialog asking user to set up a passcode for the device due to EMM policy. */ +"EmmPasscodeRequired" = "Щоб увійти в обліковий запис, потрібно налаштувати код доступу на пристрої. Зробіть це й повторіть спробу."; + +/* The text in the error dialog informing user that EMM policy prevented sign-in on the device. */ +"EmmGeneralError" = "Пристрій не відповідає правилу безпеки, яке налаштував адміністратор."; + +/* The title in the error dialog informing user that connecting with Device Policy app is required. */ +"EmmConnectTitle" = "З’єднатися з додатком Device Policy?"; + +/* The text in the error dialog informing user that connecting with Device Policy app is required. */ +"EmmConnectText" = "Щоб захистити дані організації, потрібно з’єднатися з додатком Device Policy, перш ніж увійти."; + +/* The action button label in the error dialog informing user that connecting with Device Policy app is required. */ +"EmmConnectLabel" = "З’єднатися"; diff --git a/shlack/Pods/GoogleSignIn/Resources/GoogleSignIn.bundle/vi.lproj/GoogleSignIn.strings b/shlack/Pods/GoogleSignIn/Resources/GoogleSignIn.bundle/vi.lproj/GoogleSignIn.strings new file mode 100755 index 0000000..94f858c --- /dev/null +++ b/shlack/Pods/GoogleSignIn/Resources/GoogleSignIn.bundle/vi.lproj/GoogleSignIn.strings @@ -0,0 +1,44 @@ +/* Sign-in button text */ +"Sign in" = "Đăng nhập"; + +/* Long form sign-in button text */ +"Sign in with Google" = "Đăng nhập bằng Google"; + +/* The title of the promotional prompt to install the Google app. */ +"PromoTitle" = "Đăng nhập bằng Google"; + +/* The body message of the promotional prompt to install the Google app. */ +"PromoMessage" = "Tải ứng dụng Google miễn phí và đăng nhập vào các ứng dụng bằng Tài khoản Google của bạn. Không cần phải nhớ mật khẩu."; + +/* The cancel button on the promotional prompt to install the Google app. */ +"PromoActionCancel" = "Hủy"; + +/* The install button on the promotional prompt to install the Google app. */ +"PromoActionInstall" = "Tải"; + +/* The text for the button for user to acknowledge and dismiss a dialog. */ +"OK" = "OK"; + +/* The text for the button for user to dismiss a dialog without taking any action. */ +"Cancel" = "Hủy"; + +/* The name of the iOS native "Settings" app. */ +"SettingsAppName" = "Cài đặt"; + +/* The title for the error dialog for unable to sign in because of EMM policy. */ +"EmmErrorTitle" = "Không thể đăng nhập vào tài khoản"; + +/* The text in the error dialog asking user to set up a passcode for the device due to EMM policy. */ +"EmmPasscodeRequired" = "Quản trị viên của bạn yêu cầu bạn phải đặt mật mã trên thiết bị này để truy cập vào tài khoản này. Hãy đặt mật mã và thử lại."; + +/* The text in the error dialog informing user that EMM policy prevented sign-in on the device. */ +"EmmGeneralError" = "Thiết bị này không tuân thủ chính sách bảo mật do quản trị viên của bạn thiết lập."; + +/* The title in the error dialog informing user that connecting with Device Policy app is required. */ +"EmmConnectTitle" = "Kết nối với ứng dụng Device Policy?"; + +/* The text in the error dialog informing user that connecting with Device Policy app is required. */ +"EmmConnectText" = "Để bảo vệ dữ liệu của tổ chức của mình, bạn phải kết nối với ứng dụng Device Policy trước khi đăng nhập."; + +/* The action button label in the error dialog informing user that connecting with Device Policy app is required. */ +"EmmConnectLabel" = "Kết nối"; diff --git a/shlack/Pods/GoogleSignIn/Resources/GoogleSignIn.bundle/zh_CN.lproj/GoogleSignIn.strings b/shlack/Pods/GoogleSignIn/Resources/GoogleSignIn.bundle/zh_CN.lproj/GoogleSignIn.strings new file mode 100755 index 0000000..0c087f6 --- /dev/null +++ b/shlack/Pods/GoogleSignIn/Resources/GoogleSignIn.bundle/zh_CN.lproj/GoogleSignIn.strings @@ -0,0 +1,44 @@ +/* Sign-in button text */ +"Sign in" = "登录"; + +/* Long form sign-in button text */ +"Sign in with Google" = "使用 Google 帐号登录"; + +/* The title of the promotional prompt to install the Google app. */ +"PromoTitle" = "使用 Google 帐号登录"; + +/* The body message of the promotional prompt to install the Google app. */ +"PromoMessage" = "安装免费的“Google”应用后,您可以使用自己的 Google 帐号登录众多应用(无需记住众多密码)。"; + +/* The cancel button on the promotional prompt to install the Google app. */ +"PromoActionCancel" = "取消"; + +/* The install button on the promotional prompt to install the Google app. */ +"PromoActionInstall" = "安装"; + +/* The text for the button for user to acknowledge and dismiss a dialog. */ +"OK" = "确定"; + +/* The text for the button for user to dismiss a dialog without taking any action. */ +"Cancel" = "取消"; + +/* The name of the iOS native "Settings" app. */ +"SettingsAppName" = "设置"; + +/* The title for the error dialog for unable to sign in because of EMM policy. */ +"EmmErrorTitle" = "无法登录帐号"; + +/* The text in the error dialog asking user to set up a passcode for the device due to EMM policy. */ +"EmmPasscodeRequired" = "您的管理员要求您必须先在此设备上设置密码,然后才能访问此帐号。请设置密码并重试。"; + +/* The text in the error dialog informing user that EMM policy prevented sign-in on the device. */ +"EmmGeneralError" = "该设备不符合管理员设置的安全政策。"; + +/* The title in the error dialog informing user that connecting with Device Policy app is required. */ +"EmmConnectTitle" = "要关联 Device Policy 应用吗?"; + +/* The text in the error dialog informing user that connecting with Device Policy app is required. */ +"EmmConnectText" = "要保护您组织的数据,您必须在登录前关联 Device Policy 应用。"; + +/* The action button label in the error dialog informing user that connecting with Device Policy app is required. */ +"EmmConnectLabel" = "关联"; diff --git a/shlack/Pods/GoogleSignIn/Resources/GoogleSignIn.bundle/zh_TW.lproj/GoogleSignIn.strings b/shlack/Pods/GoogleSignIn/Resources/GoogleSignIn.bundle/zh_TW.lproj/GoogleSignIn.strings new file mode 100755 index 0000000..748468f --- /dev/null +++ b/shlack/Pods/GoogleSignIn/Resources/GoogleSignIn.bundle/zh_TW.lproj/GoogleSignIn.strings @@ -0,0 +1,44 @@ +/* Sign-in button text */ +"Sign in" = "登入"; + +/* Long form sign-in button text */ +"Sign in with Google" = "登入 Google 帳戶"; + +/* The title of the promotional prompt to install the Google app. */ +"PromoTitle" = "登入 Google 帳戶"; + +/* The body message of the promotional prompt to install the Google app. */ +"PromoMessage" = "只要安裝免費的 Google app,即可使用 Google 帳戶登入應用程式,而不必費心記住密碼。"; + +/* The cancel button on the promotional prompt to install the Google app. */ +"PromoActionCancel" = "取消"; + +/* The install button on the promotional prompt to install the Google app. */ +"PromoActionInstall" = "安裝"; + +/* The text for the button for user to acknowledge and dismiss a dialog. */ +"OK" = "確定"; + +/* The text for the button for user to dismiss a dialog without taking any action. */ +"Cancel" = "取消"; + +/* The name of the iOS native "Settings" app. */ +"SettingsAppName" = "設定"; + +/* The title for the error dialog for unable to sign in because of EMM policy. */ +"EmmErrorTitle" = "無法登入帳戶"; + +/* The text in the error dialog asking user to set up a passcode for the device due to EMM policy. */ +"EmmPasscodeRequired" = "管理員要求您必須為這個裝置設定通行碼,才能存取這個帳戶。請設定通行碼,然後再試一次。"; + +/* The text in the error dialog informing user that EMM policy prevented sign-in on the device. */ +"EmmGeneralError" = "這部裝置不符合您的管理員所設定的安全性政策規定。"; + +/* The title in the error dialog informing user that connecting with Device Policy app is required. */ +"EmmConnectTitle" = "要連結 Device Policy 應用程式嗎?"; + +/* The text in the error dialog informing user that connecting with Device Policy app is required. */ +"EmmConnectText" = "為了保護貴機構的資料,您必須在登入前連結 Device Policy 應用程式。"; + +/* The action button label in the error dialog informing user that connecting with Device Policy app is required. */ +"EmmConnectLabel" = "連結"; diff --git a/shlack/Pods/GoogleToolboxForMac/DebugUtils/GTMDebugSelectorValidation.h b/shlack/Pods/GoogleToolboxForMac/DebugUtils/GTMDebugSelectorValidation.h new file mode 100644 index 0000000..0c4c4da --- /dev/null +++ b/shlack/Pods/GoogleToolboxForMac/DebugUtils/GTMDebugSelectorValidation.h @@ -0,0 +1,101 @@ +// +// GTMDebugSelectorValidation.h +// +// This file should only be included within an implimation file. In any +// function that takes an object and selector to invoke, you should call: +// +// GTMAssertSelectorNilOrImplementedWithArguments(obj, sel, @encode(arg1type), ..., NULL) +// or +// GTMAssertSelectorNilOrImplementedWithReturnTypeAndArguments(obj, sel, @encode(returnType), @encode(arg1type), ..., NULL) +// +// This will then validate that the selector is defined and using the right +// type(s), this can help catch errors much earlier then waiting for the +// selector to actually fire (and in the case of error selectors, might never +// really be tested until in the field). +// +// Copyright 2007-2008 Google Inc. +// +// 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. +// + +#if DEBUG + +#import +#import +#import "GTMDefines.h" + +static void GTMAssertSelectorNilOrImplementedWithReturnTypeAndArguments(id obj, SEL sel, const char *retType, ...) { + + // verify that the object's selector is implemented with the proper + // number and type of arguments + va_list argList; + va_start(argList, retType); + + if (obj && sel) { + // check that the selector is implemented + _GTMDevAssert([obj respondsToSelector:sel], + @"\"%@\" selector \"%@\" is unimplemented or misnamed", + NSStringFromClass([obj class]), + NSStringFromSelector(sel)); + + const char *expectedArgType; + NSUInteger argCount = 2; // skip self and _cmd + NSMethodSignature *sig = [obj methodSignatureForSelector:sel]; + + // check that each expected argument is present and of the correct type + while ((expectedArgType = va_arg(argList, const char*)) != 0) { + + if ([sig numberOfArguments] > argCount) { + const char *foundArgType = [sig getArgumentTypeAtIndex:argCount]; + + _GTMDevAssert(0 == strncmp(foundArgType, expectedArgType, strlen(expectedArgType)), + @"\"%@\" selector \"%@\" argument %u should be type %s", + NSStringFromClass([obj class]), + NSStringFromSelector(sel), + (uint32_t)(argCount - 2), + expectedArgType); + } + argCount++; + } + + // check that the proper number of arguments are present in the selector + _GTMDevAssert(argCount == [sig numberOfArguments], + @"\"%@\" selector \"%@\" should have %u arguments", + NSStringFromClass([obj class]), + NSStringFromSelector(sel), + (uint32_t)(argCount - 2)); + + // if asked, validate the return type + if (retType && (strcmp("gtm_skip_return_test", retType) != 0)) { + const char *foundRetType = [sig methodReturnType]; + _GTMDevAssert(0 == strncmp(foundRetType, retType, strlen(retType)), + @"\"%@\" selector \"%@\" return type should be type %s", + NSStringFromClass([obj class]), + NSStringFromSelector(sel), + retType); + } + } + + va_end(argList); +} + +#define GTMAssertSelectorNilOrImplementedWithArguments(obj, sel, ...) \ + GTMAssertSelectorNilOrImplementedWithReturnTypeAndArguments((obj), (sel), "gtm_skip_return_test", __VA_ARGS__) + +#else // DEBUG + +// make it go away if not debug +#define GTMAssertSelectorNilOrImplementedWithReturnTypeAndArguments(obj, sel, retType, ...) do { } while (0) +#define GTMAssertSelectorNilOrImplementedWithArguments(obj, sel, ...) do { } while (0) + +#endif // DEBUG diff --git a/shlack/Pods/GoogleToolboxForMac/DebugUtils/GTMDebugThreadValidation.h b/shlack/Pods/GoogleToolboxForMac/DebugUtils/GTMDebugThreadValidation.h new file mode 100644 index 0000000..8d116d9 --- /dev/null +++ b/shlack/Pods/GoogleToolboxForMac/DebugUtils/GTMDebugThreadValidation.h @@ -0,0 +1,44 @@ +// +// GTMDebugThreadValidation.h +// +// Copyright 2016 Google Inc. +// +// 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 "GTMDefines.h" +#import + +// GTMCheckCurrentQueue, GTMIsCurrentQueue +// +// GTMCheckCurrentQueue takes a target queue and uses _GTMDevAssert to +// report if that is not the currently executing queue. +// +// GTMIsCurrentQueue takes a target queue and returns true if the target queue +// is the currently executing dispatch queue. This can be passed to another +// assertion call in debug builds; it should never be used in release code. +// +// The dispatch queue must have a label. +#define GTMCheckCurrentQueue(targetQueue) \ + _GTMDevAssert(GTMIsCurrentQueue(targetQueue), \ + @"Current queue is %s (expected %s)", \ + _GTMQueueName(DISPATCH_CURRENT_QUEUE_LABEL), \ + _GTMQueueName(targetQueue)) + +#define GTMIsCurrentQueue(targetQueue) \ + (strcmp(_GTMQueueName(DISPATCH_CURRENT_QUEUE_LABEL), \ + _GTMQueueName(targetQueue)) == 0) + +#define _GTMQueueName(queue) \ + (strlen(dispatch_queue_get_label(queue)) > 0 ? \ + dispatch_queue_get_label(queue) : "unnamed") diff --git a/shlack/Pods/GoogleToolboxForMac/DebugUtils/GTMMethodCheck.h b/shlack/Pods/GoogleToolboxForMac/DebugUtils/GTMMethodCheck.h new file mode 100644 index 0000000..9fad81d --- /dev/null +++ b/shlack/Pods/GoogleToolboxForMac/DebugUtils/GTMMethodCheck.h @@ -0,0 +1,69 @@ +// +// GTMMethodCheck.h +// +// Copyright 2006-2016 Google Inc. +// +// 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 +#import +#import + +/// A macro for enforcing debug time checks to make sure all required methods are linked in +// +// When using categories, it can be very easy to forget to include the +// implementation of a category. +// Let's say you had a class foo that depended on method bar of class baz, and +// method bar was implemented as a member of a category. +// You could add the following code: +// +// GTM_METHOD_CHECK(baz, bar) +// +// and the code would check to make sure baz was implemented just before main +// was called. This works for both dynamic libraries, and executables. +// +// +// This is not compiled into release builds. + +#ifdef DEBUG + +// This is the "magic". +// A) we need a multi layer define here so that the preprocessor expands +// __LINE__ the way we want it. We need __LINE__ so that each of our +// GTM_METHOD_CHECKs generates a unique function name. +#define GTM_METHOD_CHECK(class, method) GTM_METHOD_CHECK_INNER(class, method, __LINE__) +#define GTM_METHOD_CHECK_INNER(class, method, line) \ + GTM_METHOD_CHECK_INNER_INNER(class, method, line) + +// B) define a function that is called at startup to check that |class| has an +// implementation for |method| (either a class method or an instance method). +#define GTM_METHOD_CHECK_INNER_INNER(class, method, line) \ +__attribute__ ((constructor, visibility("hidden"))) \ + static void xxGTMMethodCheckMethod ## class ## line () { \ + @autoreleasepool { \ + if (![class instancesRespondToSelector:@selector(method)] \ + && ![class respondsToSelector:@selector(method)]) { \ + fprintf(stderr, "%s:%d: error: We need method '%s' to be linked in for class '%s'\n", \ + __FILE__, line, #method, #class); \ + exit(EX_SOFTWARE); \ + } \ + } \ +} + +#else // DEBUG + +// Do nothing in release. +#define GTM_METHOD_CHECK(class, method) + +#endif // DEBUG diff --git a/shlack/Pods/GoogleToolboxForMac/Foundation/GTMNSDictionary+URLArguments.h b/shlack/Pods/GoogleToolboxForMac/Foundation/GTMNSDictionary+URLArguments.h new file mode 100644 index 0000000..285a82c --- /dev/null +++ b/shlack/Pods/GoogleToolboxForMac/Foundation/GTMNSDictionary+URLArguments.h @@ -0,0 +1,40 @@ +// +// GTMNSDictionary+URLArguments.h +// +// Copyright 2006-2008 Google Inc. +// +// 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 + +/// Utility for building a URL or POST argument string. +@interface NSDictionary (GTMNSDictionaryURLArgumentsAdditions) + +/// Returns a dictionary of the decoded key-value pairs in a http arguments +/// string of the form key1=value1&key2=value2&...&keyN=valueN. +/// Keys and values will be unescaped automatically. +/// Only the first value for a repeated key is returned. +/// +/// NOTE: Apps targeting iOS 8 or OS X 10.10 and later should use +/// NSURLComponents and NSURLQueryItem to create URLs with +/// query arguments instead of using these category methods. ++ (NSDictionary *)gtm_dictionaryWithHttpArgumentsString:(NSString *)argString NS_DEPRECATED(10_0, 10_10, 2_0, 8_0, "Use NSURLComponents and NSURLQueryItem."); + +/// Gets a string representation of the dictionary in the form +/// key1=value1&key2=value2&...&keyN=valueN, suitable for use as either +/// URL arguments (after a '?') or POST body. Keys and values will be escaped +/// automatically, so should be unescaped in the dictionary. +- (NSString *)gtm_httpArgumentsString NS_DEPRECATED(10_0, 10_10, 2_0, 8_0, "Use NSURLComponents and NSURLQueryItem."); + +@end diff --git a/shlack/Pods/GoogleToolboxForMac/Foundation/GTMNSDictionary+URLArguments.m b/shlack/Pods/GoogleToolboxForMac/Foundation/GTMNSDictionary+URLArguments.m new file mode 100644 index 0000000..612ba5b --- /dev/null +++ b/shlack/Pods/GoogleToolboxForMac/Foundation/GTMNSDictionary+URLArguments.m @@ -0,0 +1,82 @@ +// +// GTMNSDictionary+URLArguments.m +// +// Copyright 2006-2008 Google Inc. +// +// 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 "GTMNSDictionary+URLArguments.h" +#import "GTMNSString+URLArguments.h" +#import "GTMMethodCheck.h" +#import "GTMDefines.h" + + +// Export a nonsense symbol to suppress a libtool warning when this is linked alone in a static lib. +__attribute__((visibility("default"))) + char GTMNSDictionaryURLArgumentsExportToSuppressLibToolWarning = 0; + +#pragma clang diagnostic push +// Ignore all of the deprecation warnings for GTMNSString+URLArguments +#pragma clang diagnostic ignored "-Wdeprecated-declarations" + +@implementation NSDictionary (GTMNSDictionaryURLArgumentsAdditions) + +GTM_METHOD_CHECK(NSString, gtm_stringByEscapingForURLArgument); +GTM_METHOD_CHECK(NSString, gtm_stringByUnescapingFromURLArgument); + ++ (NSDictionary *)gtm_dictionaryWithHttpArgumentsString:(NSString *)argString { + NSMutableDictionary* ret = [NSMutableDictionary dictionary]; + NSArray* components = [argString componentsSeparatedByString:@"&"]; + NSString* component; + // Use reverse order so that the first occurrence of a key replaces + // those subsequent. + for (component in [components reverseObjectEnumerator]) { + if ([component length] == 0) + continue; + NSRange pos = [component rangeOfString:@"="]; + NSString *key; + NSString *val; + if (pos.location == NSNotFound) { + key = [component gtm_stringByUnescapingFromURLArgument]; + val = @""; + } else { + key = [[component substringToIndex:pos.location] + gtm_stringByUnescapingFromURLArgument]; + val = [[component substringFromIndex:pos.location + pos.length] + gtm_stringByUnescapingFromURLArgument]; + } + // gtm_stringByUnescapingFromURLArgument returns nil on invalid UTF8 + // and NSMutableDictionary raises an exception when passed nil values. + if (!key) key = @""; + if (!val) val = @""; + [ret setObject:val forKey:key]; + } + return ret; +} + +- (NSString *)gtm_httpArgumentsString { + NSMutableArray* arguments = [NSMutableArray arrayWithCapacity:[self count]]; + NSString* key; + for (key in self) { + [arguments addObject:[NSString stringWithFormat:@"%@=%@", + [key gtm_stringByEscapingForURLArgument], + [[[self objectForKey:key] description] gtm_stringByEscapingForURLArgument]]]; + } + + return [arguments componentsJoinedByString:@"&"]; +} + +@end + +#pragma clang diagnostic pop diff --git a/shlack/Pods/GoogleToolboxForMac/Foundation/GTMNSString+URLArguments.h b/shlack/Pods/GoogleToolboxForMac/Foundation/GTMNSString+URLArguments.h new file mode 100644 index 0000000..08fe231 --- /dev/null +++ b/shlack/Pods/GoogleToolboxForMac/Foundation/GTMNSString+URLArguments.h @@ -0,0 +1,45 @@ +// +// GTMNSString+URLArguments.h +// +// Copyright 2006-2008 Google Inc. +// +// 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 + +/// Utilities for encoding and decoding URL arguments. +@interface NSString (GTMNSStringURLArgumentsAdditions) + +/// Returns a string that is escaped properly to be a URL argument. +/// +/// This differs from stringByAddingPercentEscapesUsingEncoding: in that it +/// will escape all the reserved characters (per RFC 3986 +/// ) which +/// stringByAddingPercentEscapesUsingEncoding would leave. +/// +/// This will also escape '%', so this should not be used on a string that has +/// already been escaped unless double-escaping is the desired result. +/// +/// NOTE: Apps targeting iOS 8 or OS X 10.10 and later should use +/// NSURLComponents and NSURLQueryItem to create properly-escaped +/// URLs instead of using these category methods. +- (NSString*)gtm_stringByEscapingForURLArgument NS_DEPRECATED(10_0, 10_10, 2_0, 8_0, "Use NSURLComponents."); + +/// Returns the unescaped version of a URL argument +/// +/// This has the same behavior as stringByReplacingPercentEscapesUsingEncoding:, +/// except that it will also convert '+' to space. +- (NSString*)gtm_stringByUnescapingFromURLArgument NS_DEPRECATED(10_0, 10_10, 2_0, 8_0, "Use NSURLComponents."); + +@end diff --git a/shlack/Pods/GoogleToolboxForMac/Foundation/GTMNSString+URLArguments.m b/shlack/Pods/GoogleToolboxForMac/Foundation/GTMNSString+URLArguments.m new file mode 100644 index 0000000..e785c5e --- /dev/null +++ b/shlack/Pods/GoogleToolboxForMac/Foundation/GTMNSString+URLArguments.m @@ -0,0 +1,48 @@ +// +// GTMNSString+URLArguments.m +// +// Copyright 2006-2008 Google Inc. +// +// 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 "GTMNSString+URLArguments.h" + +@implementation NSString (GTMNSStringURLArgumentsAdditions) + +- (NSString *)gtm_stringByEscapingForURLArgument { + // Encode all the reserved characters, per RFC 3986 + // () + CFStringRef escaped = + CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault, + (CFStringRef)self, + NULL, + (CFStringRef)@"!*'();:@&=+$,/?%#[]", + kCFStringEncodingUTF8); +#if defined(__has_feature) && __has_feature(objc_arc) + return CFBridgingRelease(escaped); +#else + return [(NSString *)escaped autorelease]; +#endif +} + +- (NSString *)gtm_stringByUnescapingFromURLArgument { + NSMutableString *resultString = [NSMutableString stringWithString:self]; + [resultString replaceOccurrencesOfString:@"+" + withString:@" " + options:NSLiteralSearch + range:NSMakeRange(0, [resultString length])]; + return [resultString stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; +} + +@end diff --git a/shlack/Pods/GoogleToolboxForMac/GTMDefines.h b/shlack/Pods/GoogleToolboxForMac/GTMDefines.h new file mode 100644 index 0000000..68ff8c0 --- /dev/null +++ b/shlack/Pods/GoogleToolboxForMac/GTMDefines.h @@ -0,0 +1,375 @@ +// +// GTMDefines.h +// +// Copyright 2008 Google Inc. +// +// 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. +// + +// ============================================================================ + +#include +#include + +#ifdef __OBJC__ +#include +#endif // __OBJC__ + +#if TARGET_OS_IPHONE +#include +#endif // TARGET_OS_IPHONE + +// ---------------------------------------------------------------------------- +// CPP symbols that can be overridden in a prefix to control how the toolbox +// is compiled. +// ---------------------------------------------------------------------------- + + +// By setting the GTM_CONTAINERS_VALIDATION_FAILED_LOG and +// GTM_CONTAINERS_VALIDATION_FAILED_ASSERT macros you can control what happens +// when a validation fails. If you implement your own validators, you may want +// to control their internals using the same macros for consistency. +#ifndef GTM_CONTAINERS_VALIDATION_FAILED_ASSERT + #define GTM_CONTAINERS_VALIDATION_FAILED_ASSERT 0 +#endif + +// Ensure __has_feature and __has_extension are safe to use. +// See http://clang-analyzer.llvm.org/annotations.html +#ifndef __has_feature // Optional. + #define __has_feature(x) 0 // Compatibility with non-clang compilers. +#endif + +#ifndef __has_extension + #define __has_extension __has_feature // Compatibility with pre-3.0 compilers. +#endif + +// Give ourselves a consistent way to do inlines. Apple's macros even use +// a few different actual definitions, so we're based off of the foundation +// one. +#if !defined(GTM_INLINE) + #if (defined (__GNUC__) && (__GNUC__ == 4)) || defined (__clang__) + #define GTM_INLINE static __inline__ __attribute__((always_inline)) + #else + #define GTM_INLINE static __inline__ + #endif +#endif + +// Give ourselves a consistent way of doing externs that links up nicely +// when mixing objc and objc++ +#if !defined (GTM_EXTERN) + #if defined __cplusplus + #define GTM_EXTERN extern "C" + #define GTM_EXTERN_C_BEGIN extern "C" { + #define GTM_EXTERN_C_END } + #else + #define GTM_EXTERN extern + #define GTM_EXTERN_C_BEGIN + #define GTM_EXTERN_C_END + #endif +#endif + +// Give ourselves a consistent way of exporting things if we have visibility +// set to hidden. +#if !defined (GTM_EXPORT) + #define GTM_EXPORT __attribute__((visibility("default"))) +#endif + +// Give ourselves a consistent way of declaring something as unused. This +// doesn't use __unused because that is only supported in gcc 4.2 and greater. +#if !defined (GTM_UNUSED) +#define GTM_UNUSED(x) ((void)(x)) +#endif + +// _GTMDevLog & _GTMDevAssert +// +// _GTMDevLog & _GTMDevAssert are meant to be a very lightweight shell for +// developer level errors. This implementation simply macros to NSLog/NSAssert. +// It is not intended to be a general logging/reporting system. +// +// Please see http://code.google.com/p/google-toolbox-for-mac/wiki/DevLogNAssert +// for a little more background on the usage of these macros. +// +// _GTMDevLog log some error/problem in debug builds +// _GTMDevAssert assert if condition isn't met w/in a method/function +// in all builds. +// +// To replace this system, just provide different macro definitions in your +// prefix header. Remember, any implementation you provide *must* be thread +// safe since this could be called by anything in what ever situtation it has +// been placed in. +// + +// Ignore the "Macro name is a reserved identifier" warning in this section +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wreserved-id-macro" + +// We only define the simple macros if nothing else has defined this. +#ifndef _GTMDevLog + +#ifdef DEBUG + #define _GTMDevLog(...) NSLog(__VA_ARGS__) +#else + #define _GTMDevLog(...) do { } while (0) +#endif + +#endif // _GTMDevLog + +#ifndef _GTMDevAssert +// we directly invoke the NSAssert handler so we can pass on the varargs +// (NSAssert doesn't have a macro we can use that takes varargs) +#if !defined(NS_BLOCK_ASSERTIONS) + #define _GTMDevAssert(condition, ...) \ + do { \ + if (!(condition)) { \ + [[NSAssertionHandler currentHandler] \ + handleFailureInFunction:(NSString *) \ + [NSString stringWithUTF8String:__PRETTY_FUNCTION__] \ + file:(NSString *)[NSString stringWithUTF8String:__FILE__] \ + lineNumber:__LINE__ \ + description:__VA_ARGS__]; \ + } \ + } while(0) +#else // !defined(NS_BLOCK_ASSERTIONS) + #define _GTMDevAssert(condition, ...) do { } while (0) +#endif // !defined(NS_BLOCK_ASSERTIONS) + +#endif // _GTMDevAssert + +// _GTMCompileAssert +// +// Note: Software for current compilers should just use _Static_assert directly +// instead of this macro. +// +// _GTMCompileAssert is an assert that is meant to fire at compile time if you +// want to check things at compile instead of runtime. For example if you +// want to check that a wchar is 4 bytes instead of 2 you would use +// _GTMCompileAssert(sizeof(wchar_t) == 4, wchar_t_is_4_bytes_on_OS_X) +// Note that the second "arg" is not in quotes, and must be a valid processor +// symbol in it's own right (no spaces, punctuation etc). + +// Wrapping this in an #ifndef allows external groups to define their own +// compile time assert scheme. +#ifndef _GTMCompileAssert + #if __has_feature(c_static_assert) || __has_extension(c_static_assert) + #define _GTMCompileAssert(test, msg) _Static_assert((test), #msg) + #else + // Pre-Xcode 7 support. + // + // We got this technique from here: + // http://unixjunkie.blogspot.com/2007/10/better-compile-time-asserts_29.html + #define _GTMCompileAssertSymbolInner(line, msg) _GTMCOMPILEASSERT ## line ## __ ## msg + #define _GTMCompileAssertSymbol(line, msg) _GTMCompileAssertSymbolInner(line, msg) + #define _GTMCompileAssert(test, msg) \ + typedef char _GTMCompileAssertSymbol(__LINE__, msg) [ ((test) ? 1 : -1) ] + #endif // __has_feature(c_static_assert) || __has_extension(c_static_assert) +#endif // _GTMCompileAssert + +#pragma clang diagnostic pop + +// ---------------------------------------------------------------------------- +// CPP symbols defined based on the project settings so the GTM code has +// simple things to test against w/o scattering the knowledge of project +// setting through all the code. +// ---------------------------------------------------------------------------- + +// Provide a single constant CPP symbol that all of GTM uses for ifdefing +// iPhone code. +#if TARGET_OS_IPHONE // iPhone SDK + // For iPhone specific stuff + #define GTM_IPHONE_SDK 1 + #if TARGET_IPHONE_SIMULATOR + #define GTM_IPHONE_DEVICE 0 + #define GTM_IPHONE_SIMULATOR 1 + #else + #define GTM_IPHONE_DEVICE 1 + #define GTM_IPHONE_SIMULATOR 0 + #endif // TARGET_IPHONE_SIMULATOR + // By default, GTM has provided it's own unittesting support, define this + // to use the support provided by Xcode, especially for the Xcode4 support + // for unittesting. + #ifndef GTM_USING_XCTEST + #define GTM_USING_XCTEST 0 + #endif + #define GTM_MACOS_SDK 0 +#else + // For MacOS specific stuff + #define GTM_MACOS_SDK 1 + #define GTM_IPHONE_SDK 0 + #define GTM_IPHONE_SIMULATOR 0 + #define GTM_IPHONE_DEVICE 0 + #ifndef GTM_USING_XCTEST + #define GTM_USING_XCTEST 0 + #endif +#endif + +// Some of our own availability macros +#if GTM_MACOS_SDK +#define GTM_AVAILABLE_ONLY_ON_IPHONE UNAVAILABLE_ATTRIBUTE +#define GTM_AVAILABLE_ONLY_ON_MACOS +#else +#define GTM_AVAILABLE_ONLY_ON_IPHONE +#define GTM_AVAILABLE_ONLY_ON_MACOS UNAVAILABLE_ATTRIBUTE +#endif + +// GC was dropped by Apple, define the old constant incase anyone still keys +// off of it. +#ifndef GTM_SUPPORT_GC + #define GTM_SUPPORT_GC 0 +#endif + +// Some support for advanced clang static analysis functionality +#ifndef NS_RETURNS_RETAINED + #if __has_feature(attribute_ns_returns_retained) + #define NS_RETURNS_RETAINED __attribute__((ns_returns_retained)) + #else + #define NS_RETURNS_RETAINED + #endif +#endif + +#ifndef NS_RETURNS_NOT_RETAINED + #if __has_feature(attribute_ns_returns_not_retained) + #define NS_RETURNS_NOT_RETAINED __attribute__((ns_returns_not_retained)) + #else + #define NS_RETURNS_NOT_RETAINED + #endif +#endif + +#ifndef CF_RETURNS_RETAINED + #if __has_feature(attribute_cf_returns_retained) + #define CF_RETURNS_RETAINED __attribute__((cf_returns_retained)) + #else + #define CF_RETURNS_RETAINED + #endif +#endif + +#ifndef CF_RETURNS_NOT_RETAINED + #if __has_feature(attribute_cf_returns_not_retained) + #define CF_RETURNS_NOT_RETAINED __attribute__((cf_returns_not_retained)) + #else + #define CF_RETURNS_NOT_RETAINED + #endif +#endif + +#ifndef NS_CONSUMED + #if __has_feature(attribute_ns_consumed) + #define NS_CONSUMED __attribute__((ns_consumed)) + #else + #define NS_CONSUMED + #endif +#endif + +#ifndef CF_CONSUMED + #if __has_feature(attribute_cf_consumed) + #define CF_CONSUMED __attribute__((cf_consumed)) + #else + #define CF_CONSUMED + #endif +#endif + +#ifndef NS_CONSUMES_SELF + #if __has_feature(attribute_ns_consumes_self) + #define NS_CONSUMES_SELF __attribute__((ns_consumes_self)) + #else + #define NS_CONSUMES_SELF + #endif +#endif + +#ifndef GTM_NONNULL + #if defined(__has_attribute) + #if __has_attribute(nonnull) + #define GTM_NONNULL(x) __attribute__((nonnull x)) + #else + #define GTM_NONNULL(x) + #endif + #else + #define GTM_NONNULL(x) + #endif +#endif + +// Invalidates the initializer from which it's called. +#ifndef GTMInvalidateInitializer + #if __has_feature(objc_arc) + #define GTMInvalidateInitializer() \ + do { \ + [self class]; /* Avoid warning of dead store to |self|. */ \ + _GTMDevAssert(NO, @"Invalid initializer."); \ + return nil; \ + } while (0) + #else + #define GTMInvalidateInitializer() \ + do { \ + [self release]; \ + _GTMDevAssert(NO, @"Invalid initializer."); \ + return nil; \ + } while (0) + #endif +#endif + +#ifndef GTMCFAutorelease + // GTMCFAutorelease returns an id. In contrast, Apple's CFAutorelease returns + // a CFTypeRef. + #if __has_feature(objc_arc) + #define GTMCFAutorelease(x) CFBridgingRelease(x) + #else + #define GTMCFAutorelease(x) ([(id)x autorelease]) + #endif +#endif + +#ifdef __OBJC__ + + +// Macro to allow you to create NSStrings out of other macros. +// #define FOO foo +// NSString *fooString = GTM_NSSTRINGIFY(FOO); +#if !defined (GTM_NSSTRINGIFY) + #define GTM_NSSTRINGIFY_INNER(x) @#x + #define GTM_NSSTRINGIFY(x) GTM_NSSTRINGIFY_INNER(x) +#endif + +// ============================================================================ + +// GTM_SEL_STRING is for specifying selector (usually property) names to KVC +// or KVO methods. +// In debug it will generate warnings for undeclared selectors if +// -Wunknown-selector is turned on. +// In release it will have no runtime overhead. +#ifndef GTM_SEL_STRING + #ifdef DEBUG + #define GTM_SEL_STRING(selName) NSStringFromSelector(@selector(selName)) + #else + #define GTM_SEL_STRING(selName) @#selName + #endif // DEBUG +#endif // GTM_SEL_STRING + +#ifndef GTM_WEAK +#if __has_feature(objc_arc_weak) + // With ARC enabled, __weak means a reference that isn't implicitly + // retained. __weak objects are accessed through runtime functions, so + // they are zeroed out, but this requires OS X 10.7+. + // At clang r251041+, ARC-style zeroing weak references even work in + // non-ARC mode. + #define GTM_WEAK __weak + #elif __has_feature(objc_arc) + // ARC, but targeting 10.6 or older, where zeroing weak references don't + // exist. + #define GTM_WEAK __unsafe_unretained + #else + // With manual reference counting, __weak used to be silently ignored. + // clang r251041 gives it the ARC semantics instead. This means they + // now require a deployment target of 10.7, while some clients of GTM + // still target 10.6. In these cases, expand to __unsafe_unretained instead + #define GTM_WEAK + #endif +#endif + +#endif // __OBJC__ diff --git a/shlack/Pods/GoogleToolboxForMac/LICENSE b/shlack/Pods/GoogleToolboxForMac/LICENSE new file mode 100644 index 0000000..d645695 --- /dev/null +++ b/shlack/Pods/GoogleToolboxForMac/LICENSE @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + 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. diff --git a/shlack/Pods/GoogleToolboxForMac/README.md b/shlack/Pods/GoogleToolboxForMac/README.md new file mode 100644 index 0000000..710560a --- /dev/null +++ b/shlack/Pods/GoogleToolboxForMac/README.md @@ -0,0 +1,15 @@ +# GTM: Google Toolbox for Mac # + +**Project site**
    +**Discussion group** + +# Google Toolbox for Mac # + +A collection of source from different Google projects that may be of use to +developers working other iOS or OS X projects. + +If you find a problem/bug or want a new feature to be included in the Google +Toolbox for Mac, please join the +[discussion group](http://groups.google.com/group/google-toolbox-for-mac) +or submit an +[issue](https://github.com/google/google-toolbox-for-mac/issues). diff --git a/shlack/Pods/Manifest.lock b/shlack/Pods/Manifest.lock index 8fbfdce..9ab3c93 100644 --- a/shlack/Pods/Manifest.lock +++ b/shlack/Pods/Manifest.lock @@ -1,6 +1,9 @@ PODS: - Firebase/Analytics (6.5.0): - Firebase/Core + - Firebase/Auth (6.5.0): + - Firebase/CoreOnly + - FirebaseAuth (~> 6.2.1) - Firebase/Core (6.5.0): - Firebase/CoreOnly - FirebaseAnalytics (= 6.0.4) @@ -18,6 +21,12 @@ PODS: - GoogleUtilities/Network (~> 6.0) - "GoogleUtilities/NSData+zlib (~> 6.0)" - nanopb (~> 0.3) + - FirebaseAuth (6.2.1): + - FirebaseAuthInterop (~> 1.0) + - FirebaseCore (~> 6.0) + - GoogleUtilities/AppDelegateSwizzler (~> 6.2) + - GoogleUtilities/Environment (~> 6.2) + - GTMSessionFetcher/Core (~> 1.1) - FirebaseAuthInterop (1.0.0) - FirebaseCore (6.1.0): - GoogleUtilities/Environment (~> 6.0) @@ -36,6 +45,18 @@ PODS: - GoogleUtilities/Network (~> 6.0) - "GoogleUtilities/NSData+zlib (~> 6.0)" - nanopb (~> 0.3) + - GoogleSignIn (4.4.0): + - "GoogleToolboxForMac/NSDictionary+URLArguments (~> 2.1)" + - "GoogleToolboxForMac/NSString+URLArguments (~> 2.1)" + - GTMSessionFetcher/Core (~> 1.1) + - GoogleToolboxForMac/DebugUtils (2.2.1): + - GoogleToolboxForMac/Defines (= 2.2.1) + - GoogleToolboxForMac/Defines (2.2.1) + - "GoogleToolboxForMac/NSDictionary+URLArguments (2.2.1)": + - GoogleToolboxForMac/DebugUtils (= 2.2.1) + - GoogleToolboxForMac/Defines (= 2.2.1) + - "GoogleToolboxForMac/NSString+URLArguments (= 2.2.1)" + - "GoogleToolboxForMac/NSString+URLArguments (2.2.1)" - GoogleUtilities/AppDelegateSwizzler (6.2.3): - GoogleUtilities/Environment - GoogleUtilities/Logger @@ -54,6 +75,7 @@ PODS: - GoogleUtilities/Logger - GoogleUtilities/UserDefaults (6.2.3): - GoogleUtilities/Logger + - GTMSessionFetcher/Core (1.2.2) - leveldb-library (1.20) - nanopb (0.3.901): - nanopb/decode (= 0.3.901) @@ -70,8 +92,10 @@ PODS: DEPENDENCIES: - Firebase/Analytics + - Firebase/Auth - Firebase/Core - Firebase/Database + - GoogleSignIn - RealmSwift - SwiftyJSON - YMTGetDeviceName @@ -80,12 +104,16 @@ SPEC REPOS: https://github.com/cocoapods/specs.git: - Firebase - FirebaseAnalytics + - FirebaseAuth - FirebaseAuthInterop - FirebaseCore - FirebaseDatabase - FirebaseInstanceID - GoogleAppMeasurement + - GoogleSignIn + - GoogleToolboxForMac - GoogleUtilities + - GTMSessionFetcher - leveldb-library - nanopb - Realm @@ -96,12 +124,16 @@ SPEC REPOS: SPEC CHECKSUMS: Firebase: dedc9e48ea3f3649ad5f6b982f8a0c73508a14b5 FirebaseAnalytics: 3fb375bc9d13779add4039716f868d233a473fad + FirebaseAuth: a06ad63e9bf4c86165b54cceb1c14d4f4c38d419 FirebaseAuthInterop: 0ffa57668be100582bb7643d4fcb7615496c41fc FirebaseCore: aecf02fb2274ec361b9bebeac112f5daa18273bd FirebaseDatabase: f48e067716864be2b855cf716b927ef375d6cfa0 FirebaseInstanceID: 662b8108a09fe9ed01aafdedba100fde8536b0f6 GoogleAppMeasurement: 183bd916af7f80deb67c01888368f1108d641832 + GoogleSignIn: 7ff245e1a7b26d379099d3243a562f5747e23d39 + GoogleToolboxForMac: b3553629623a3b1bff17f555e736cd5a6d95ad55 GoogleUtilities: d2b0e277a95962e09bb27f5cd42f5f0b6a506c7d + GTMSessionFetcher: 61bb0f61a4cb560030f1222021178008a5727a23 leveldb-library: 08cba283675b7ed2d99629a4bc5fd052cd2bb6a5 nanopb: 2901f78ea1b7b4015c860c2fdd1ea2fee1a18d48 Realm: 5a1d9d47bfc101dd597668b1a8af4288a2557f6d @@ -109,6 +141,6 @@ SPEC CHECKSUMS: SwiftyJSON: 36413e04c44ee145039d332b4f4e2d3e8d6c4db7 YMTGetDeviceName: fc316b382842751b81bd44eefaaec248f53a2d35 -PODFILE CHECKSUM: 851f9b218067398db64a556c4ce9360439e946c6 +PODFILE CHECKSUM: 2fc2392d396e8d7e93c4cecd9ea4bc9068775189 COCOAPODS: 1.7.5 diff --git a/shlack/Pods/Pods.xcodeproj/project.pbxproj b/shlack/Pods/Pods.xcodeproj/project.pbxproj index aea762e..5218a5b 100644 --- a/shlack/Pods/Pods.xcodeproj/project.pbxproj +++ b/shlack/Pods/Pods.xcodeproj/project.pbxproj @@ -9,19 +9,20 @@ /* Begin PBXAggregateTarget section */ 072CEA044D2EF26F03496D5996BBF59F /* Firebase */ = { isa = PBXAggregateTarget; - buildConfigurationList = 8DD977517C248319451DB85AB81E48C6 /* Build configuration list for PBXAggregateTarget "Firebase" */; + buildConfigurationList = 27E03C742D58EE8D2DD3198775CEC365 /* Build configuration list for PBXAggregateTarget "Firebase" */; buildPhases = ( ); dependencies = ( - 51BDCE72D635910F59F8BE2D085ECF27 /* PBXTargetDependency */, - C472727A0907C53BCDFF109E5F28DAAB /* PBXTargetDependency */, - 2697D23F9C78EE842EE420E263473F39 /* PBXTargetDependency */, + F1E3ED1B3D1AE0224160D3C592A3F25C /* PBXTargetDependency */, + 1A81A71036F74D704E72A537186AF1DB /* PBXTargetDependency */, + 92E0BEA355A534A61317E0F51033F37A /* PBXTargetDependency */, + 715E30E430A15E30A701625AE6FD0077 /* PBXTargetDependency */, ); name = Firebase; }; 8EC0F2618965C875A96BFDBEE5D9734C /* FirebaseAuthInterop */ = { isa = PBXAggregateTarget; - buildConfigurationList = B06332DA5A203A349B875007390EFEC7 /* Build configuration list for PBXAggregateTarget "FirebaseAuthInterop" */; + buildConfigurationList = 55AD7F59A05C9709A6FD9CA79BA2D606 /* Build configuration list for PBXAggregateTarget "FirebaseAuthInterop" */; buildPhases = ( ); dependencies = ( @@ -30,772 +31,1011 @@ }; B53D977A951AFC38B21751B706C1DF83 /* GoogleAppMeasurement */ = { isa = PBXAggregateTarget; - buildConfigurationList = B4E31387BEF7D6F4FD8B312C9578BAE0 /* Build configuration list for PBXAggregateTarget "GoogleAppMeasurement" */; + buildConfigurationList = 971B6C0AE9DBBBC42D37001BF68A48FE /* Build configuration list for PBXAggregateTarget "GoogleAppMeasurement" */; buildPhases = ( ); dependencies = ( - 1405C190ED9E1E16D2CF759D59C68D1A /* PBXTargetDependency */, - 68F495FD6399571335232AD5B7DEB78E /* PBXTargetDependency */, + 8110A5D55565149BF3493020F8B9C053 /* PBXTargetDependency */, + 031600888D8317EE88A86AA33676CAE0 /* PBXTargetDependency */, ); name = GoogleAppMeasurement; }; C49E7A4D59E5C8BE8DE9FB1EFB150185 /* FirebaseAnalytics */ = { isa = PBXAggregateTarget; - buildConfigurationList = 9CC09DAFA09AB5D8EBE5B10BB259F60F /* Build configuration list for PBXAggregateTarget "FirebaseAnalytics" */; + buildConfigurationList = 57ECFEB3B4AAA94566EDA10D78A6B898 /* Build configuration list for PBXAggregateTarget "FirebaseAnalytics" */; buildPhases = ( ); dependencies = ( - 926485F7A1D02636A6267356E7EA2FF1 /* PBXTargetDependency */, - 5EA7EE3FB0C96B611E8BD457D7FE7BA2 /* PBXTargetDependency */, - 19635AAE0A3094A8088E910E1AD3B6CD /* PBXTargetDependency */, - 50896A4EAEB7FA22D435704BA89EE5CB /* PBXTargetDependency */, - 0C6BD3144A335F632CCF4C99D070816B /* PBXTargetDependency */, + 713DB8BB5EA4F35FAD748C04E063024D /* PBXTargetDependency */, + 52E0CFE2971431B143862FC64835B5AA /* PBXTargetDependency */, + 489AC7D88558C3D0F0CD1DBB843A6101 /* PBXTargetDependency */, + B81F0562685656F8E1941792D098F667 /* PBXTargetDependency */, + 23DD9AA6A0491AD5A0B3DFFE7F705A89 /* PBXTargetDependency */, ); name = FirebaseAnalytics; }; + CAD3534FC55B0333104E5117C0A9A324 /* GoogleSignIn */ = { + isa = PBXAggregateTarget; + buildConfigurationList = CE0641E81519F94D3542E1D4F4FE19EC /* Build configuration list for PBXAggregateTarget "GoogleSignIn" */; + buildPhases = ( + ); + dependencies = ( + AA57705443CF5E71F105FC141862A122 /* PBXTargetDependency */, + FF631AD5C73AE7F8166EE7B8C7418A62 /* PBXTargetDependency */, + ); + name = GoogleSignIn; + }; /* End PBXAggregateTarget section */ /* Begin PBXBuildFile section */ - 001CDDCC8E85344405B934355E258A91 /* RLMSyncCredentials.h in Copy . Public Headers */ = {isa = PBXBuildFile; fileRef = 41E535603585A6792F57470F8FE246D7 /* RLMSyncCredentials.h */; }; - 0021862FD43EABE9787FA2D7FC7CD7D5 /* FListenComplete.m in Sources */ = {isa = PBXBuildFile; fileRef = 0FEC893D0AC066E0809BDE755B416AF5 /* FListenComplete.m */; }; - 008746183140E0958AA87D2F41556D91 /* RLMPlatform.h in Headers */ = {isa = PBXBuildFile; fileRef = DAFEA2D6B681E5C02DDB71702A8E1FFE /* RLMPlatform.h */; }; - 00EDAEC0ECFF39FEC894E3A5CD68E307 /* FNamedNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 71155B113A427AFF9C3CC21D011E468E /* FNamedNode.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 01FDD5E33AA5967E02D28A7238099273 /* FIRInstanceIDCheckinStore.m in Sources */ = {isa = PBXBuildFile; fileRef = D5EED1578D1E2C5E9EF187D618D0B8F2 /* FIRInstanceIDCheckinStore.m */; }; - 0220B1FD81A1C0ED5E672D34FC201542 /* FIRComponent.h in Headers */ = {isa = PBXBuildFile; fileRef = 72513B4FCE64223E66FBB0852919524C /* FIRComponent.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 027F1DD9944F11611F6F5EE85DFB5CAD /* RLMThreadSafeReference.h in Copy . Public Headers */ = {isa = PBXBuildFile; fileRef = A4FF28B17689447E1E0477D1AA932149 /* RLMThreadSafeReference.h */; }; - 02D6F597ECCA47D2748065788FA22ECD /* table.h in Headers */ = {isa = PBXBuildFile; fileRef = 5384656717C3A6C572CD7DF79C450CA1 /* table.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 02E5202F634A49C7389469E643BC7C72 /* GULLoggerCodes.h in Headers */ = {isa = PBXBuildFile; fileRef = 1B307B38EB1FA1D94DD39CAEAF9806C9 /* GULLoggerCodes.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 0307BF33822D34F62F45331BEF503F1C /* FIRInstanceIDStore.m in Sources */ = {isa = PBXBuildFile; fileRef = B3453F66B08741D6ACA2A66435B99FB0 /* FIRInstanceIDStore.m */; }; - 03DE41BCA9860E1FAA136DA0AEEEB621 /* FIRInstanceID_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = DB83E66076A97630EF5DF7B121B994BA /* FIRInstanceID_Private.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 03ECF435991F8E4D3203E04DCFED6E03 /* RLMObservation.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1B1BE978180117D7A9F0FFAEFF97BDC0 /* RLMObservation.mm */; settings = {COMPILER_FLAGS = "-DREALM_HAVE_CONFIG -DREALM_COCOA_VERSION='@\"3.17.3\"' -D__ASSERTMACROS__ -DREALM_ENABLE_SYNC"; }; }; - 03F01BC83070ABBD518F5AA17D4DCB40 /* FLimitedFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 4D3B36FC89E48CC66A13103306192863 /* FLimitedFilter.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 03F771627DD26DE3A46A3A0AA9238D96 /* FCancelEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = DF70012FB7B27E7D34ED5DB67119C6FA /* FCancelEvent.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 0469818BF61408BA96170D6BFDDF8D8B /* coding.cc in Sources */ = {isa = PBXBuildFile; fileRef = 3EEDAC8F7F06C08AB9877AA430A7983F /* coding.cc */; settings = {COMPILER_FLAGS = "-DOS_MACOSX -DLEVELDB_PLATFORM_POSIX -fno-objc-arc"; }; }; - 0489A2C8FD18EF7D94A18E4BF96DD95B /* log_reader.cc in Sources */ = {isa = PBXBuildFile; fileRef = 85A197D8EDFCAF02A96F1F978530617D /* log_reader.cc */; settings = {COMPILER_FLAGS = "-DOS_MACOSX -DLEVELDB_PLATFORM_POSIX -fno-objc-arc"; }; }; - 04CBFDD9C0C9119205A8C77C0C4E2774 /* RLMResults.h in Headers */ = {isa = PBXBuildFile; fileRef = 9843BC20AC2ED23810EDF684637C15C5 /* RLMResults.h */; }; - 04D9EEB121FAFA473B84577842DE28AA /* FCompoundHash.h in Headers */ = {isa = PBXBuildFile; fileRef = C3667D61C09AF1510303969EBFCDF4E8 /* FCompoundHash.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 04FCBCEA9CCA44E9E2F7122847E00864 /* FPersistenceManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 1BAD6C9A418D41295BD5D6D9626A1DAB /* FPersistenceManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 05164415A2A7E8612561C489427157E9 /* GULNetworkConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = 4E112AE6B24E5753313012A31DA501B3 /* GULNetworkConstants.m */; }; - 0559BE32654A74F19F60D6EA197ED857 /* RLMProperty_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = FCE7CBF0406D1926A617016502A76B9D /* RLMProperty_Private.h */; }; - 05795030216F1D4D1A6B48EEB3174F4A /* schema.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CD2CC43780BF7E6C9A6607C441B6B81B /* schema.cpp */; settings = {COMPILER_FLAGS = "-DREALM_HAVE_CONFIG -DREALM_COCOA_VERSION='@\"3.17.3\"' -D__ASSERTMACROS__ -DREALM_ENABLE_SYNC"; }; }; - 05D77495455E78F807247A8BB036B847 /* env_posix.cc in Sources */ = {isa = PBXBuildFile; fileRef = 6257B240538B1FCABF83C3D705CA1ED8 /* env_posix.cc */; settings = {COMPILER_FLAGS = "-DOS_MACOSX -DLEVELDB_PLATFORM_POSIX -fno-objc-arc"; }; }; - 06017FB2CB0527E5C1440238625E24A2 /* RLMSchema_Private.h in Copy . Private Headers */ = {isa = PBXBuildFile; fileRef = F7C0667A3A1C1CFC512A5112FA3856C1 /* RLMSchema_Private.h */; }; - 0617314CA1022A4ADE49D659461F2ECE /* RLMJSONModels.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A4D28D8A4554494333F8A1B3F7CEF10 /* RLMJSONModels.m */; settings = {COMPILER_FLAGS = "-DREALM_HAVE_CONFIG -DREALM_COCOA_VERSION='@\"3.17.3\"' -D__ASSERTMACROS__ -DREALM_ENABLE_SYNC"; }; }; - 06186994A01F0DCBC0552F2CF8F875A4 /* FWriteRecord.h in Headers */ = {isa = PBXBuildFile; fileRef = A9947A1B156CF5409AA2D9B4C6B08F7B /* FWriteRecord.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 061AD4AFD8DA76779BFEAF73508E47D7 /* FTupleUserCallback.h in Headers */ = {isa = PBXBuildFile; fileRef = 295B5EDCCB25183E4AEE49DFA63DE530 /* FTupleUserCallback.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 062B8C73B8DB1C4A45282999CFA7CE8C /* keychain_helper.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0C2CD0FBB7975223F6A384762C817805 /* keychain_helper.cpp */; settings = {COMPILER_FLAGS = "-DREALM_HAVE_CONFIG -DREALM_COCOA_VERSION='@\"3.17.3\"' -D__ASSERTMACROS__ -DREALM_ENABLE_SYNC"; }; }; - 0680DAF3198E2B474E47AB4714D3A7A9 /* FirebaseInstanceID-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 95FAD538204FA5D047B742FDC630D693 /* FirebaseInstanceID-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 06F8B2D110E3D85C99D7694C88D4AACC /* FTupleStringNode.h in Headers */ = {isa = PBXBuildFile; fileRef = E593C16D643BACC5E4698D1EEE2F2042 /* FTupleStringNode.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 07B4E1113A960921C57CFEA26293FDA3 /* RLMCollection_Private.h in Copy . Private Headers */ = {isa = PBXBuildFile; fileRef = F59BC7A16A66FA14351F20FA2BBFFEAF /* RLMCollection_Private.h */; }; - 07BF0C352A5E42162EEC15698A50B2DA /* GULReachabilityChecker.h in Headers */ = {isa = PBXBuildFile; fileRef = EEF61379CE37066B7B3335D89DCFA5FB /* GULReachabilityChecker.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 07C6751526EFADA832A1A7A639746D5D /* RLMPlatform.h in Copy . Public Headers */ = {isa = PBXBuildFile; fileRef = DAFEA2D6B681E5C02DDB71702A8E1FFE /* RLMPlatform.h */; }; + 0006E43012C6143FEB8F1C3E6620EBEC /* FIRAuthNotificationManager.m in Sources */ = {isa = PBXBuildFile; fileRef = D4FFEA6FD881113D9263C10F0E9A4FA8 /* FIRAuthNotificationManager.m */; }; + 001CDDCC8E85344405B934355E258A91 /* RLMSyncCredentials.h in Copy . Public Headers */ = {isa = PBXBuildFile; fileRef = 319C651F668A24B16876B0232DED9873 /* RLMSyncCredentials.h */; }; + 008746183140E0958AA87D2F41556D91 /* RLMPlatform.h in Headers */ = {isa = PBXBuildFile; fileRef = 077A4146A733517C3C1626D699546AAD /* RLMPlatform.h */; }; + 00AB43685CBED3B7AD00182B53F86840 /* FIRDatabase.h in Headers */ = {isa = PBXBuildFile; fileRef = BAF0DB110289DA7508DF42DCFBAE5B29 /* FIRDatabase.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 00D43E265045F7F9FC9F3B2A72BC6961 /* FRepo.m in Sources */ = {isa = PBXBuildFile; fileRef = 3A63A9AECC089F84F0DA8D356F4C9803 /* FRepo.m */; }; + 01731BF5EA2079465121277427E40F42 /* FImmutableSortedDictionary.h in Headers */ = {isa = PBXBuildFile; fileRef = F1A05FAEA1549862CE321111DE9249E5 /* FImmutableSortedDictionary.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 019DFBE6A878A1E018B219750FBB7E7C /* FIRAuthErrorUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = D339920DDA4CE86D263FD3AC7A8CDEB8 /* FIRAuthErrorUtils.m */; }; + 01C1B2B02BAAE2DE1C66EBA7E5C9250B /* FPruneForest.m in Sources */ = {isa = PBXBuildFile; fileRef = 7E8E26C4F9EEB25BE0767CF34183AF75 /* FPruneForest.m */; }; + 020E93115850E53221B24270F4A7EA9A /* c.h in Headers */ = {isa = PBXBuildFile; fileRef = 3193B3EA2ECEEFC05137F5A4028FAA82 /* c.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 027F1DD9944F11611F6F5EE85DFB5CAD /* RLMThreadSafeReference.h in Copy . Public Headers */ = {isa = PBXBuildFile; fileRef = 45F21713D2B7D52DE8A90B302E56361E /* RLMThreadSafeReference.h */; }; + 02A7F0FA9D1EC3138DC8BE7005182186 /* FIRCreateAuthURIRequest.m in Sources */ = {isa = PBXBuildFile; fileRef = D2ABAC761081AD01AC92C51C5C9C334F /* FIRCreateAuthURIRequest.m */; }; + 03114700A669F1A044C4269DDB1220C0 /* FIRInstanceIDTokenDeleteOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 5FA6AF7BA09A4F02044C8A3B46C08089 /* FIRInstanceIDTokenDeleteOperation.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 03803129ED3022E0067FA0280786B0BA /* posix_logger.h in Headers */ = {isa = PBXBuildFile; fileRef = B98BF99DA1BF369D14433020F9602923 /* posix_logger.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 03AA0FE4C64D07830E5E6F0A1D715A43 /* FConnection.m in Sources */ = {isa = PBXBuildFile; fileRef = E00FB06CA2BE3CB143CCB541D9FF432F /* FConnection.m */; }; + 03ECF435991F8E4D3203E04DCFED6E03 /* RLMObservation.mm in Sources */ = {isa = PBXBuildFile; fileRef = 317104CE9CF18B885952E493FE2C9863 /* RLMObservation.mm */; settings = {COMPILER_FLAGS = "-DREALM_HAVE_CONFIG -DREALM_COCOA_VERSION='@\"3.17.3\"' -D__ASSERTMACROS__ -DREALM_ENABLE_SYNC"; }; }; + 040BF6B6B918ADDA5656691F5C0A4114 /* FIRGameCenterAuthCredential.m in Sources */ = {isa = PBXBuildFile; fileRef = 686AA38529DF6CBAA5527903BB3713C4 /* FIRGameCenterAuthCredential.m */; }; + 0448EFE289989909BD4502E2F074930B /* env_posix.cc in Sources */ = {isa = PBXBuildFile; fileRef = AD761357D66650C8939FDD11F504EDB0 /* env_posix.cc */; settings = {COMPILER_FLAGS = "-DOS_MACOSX -DLEVELDB_PLATFORM_POSIX -fno-objc-arc"; }; }; + 0470E4BC93E49918ABBD93EB58CF6B47 /* FIRGetAccountInfoResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 98CC55D7B263D085C9BBC58494F20747 /* FIRGetAccountInfoResponse.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 04992F5E5C8016DB87252CC306AF6053 /* FPruneForest.h in Headers */ = {isa = PBXBuildFile; fileRef = 9E3C8531B93F2D03226A887AA398BCF6 /* FPruneForest.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 04CBFDD9C0C9119205A8C77C0C4E2774 /* RLMResults.h in Headers */ = {isa = PBXBuildFile; fileRef = 75556F5ED89B4574623EB21206A6796D /* RLMResults.h */; }; + 04F4A675FDF2BD14770B394DB487181A /* FirebaseCore-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 178175168534476B25D815CCE09FFBAA /* FirebaseCore-dummy.m */; }; + 0525F352F88A98A548A5E4E99042065E /* FIRInstanceIDTokenOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 5DADF70A784364C3ACC5993CB98C80DB /* FIRInstanceIDTokenOperation.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 0559BE32654A74F19F60D6EA197ED857 /* RLMProperty_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 403DDE32930258D77204697883A2E4AD /* RLMProperty_Private.h */; }; + 05795030216F1D4D1A6B48EEB3174F4A /* schema.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 76EF4FECC523C278D692A2182682D711 /* schema.cpp */; settings = {COMPILER_FLAGS = "-DREALM_HAVE_CONFIG -DREALM_COCOA_VERSION='@\"3.17.3\"' -D__ASSERTMACROS__ -DREALM_ENABLE_SYNC"; }; }; + 05A5A996673E3D24FD8C5032D2D09ABA /* memtable.cc in Sources */ = {isa = PBXBuildFile; fileRef = EC04E3FAE92FE1249F2540C622DB82F5 /* memtable.cc */; settings = {COMPILER_FLAGS = "-DOS_MACOSX -DLEVELDB_PLATFORM_POSIX -fno-objc-arc"; }; }; + 06017FB2CB0527E5C1440238625E24A2 /* RLMSchema_Private.h in Copy . Private Headers */ = {isa = PBXBuildFile; fileRef = 4BD117894C2FCA8640DAFFFCF5B5C23D /* RLMSchema_Private.h */; }; + 0617314CA1022A4ADE49D659461F2ECE /* RLMJSONModels.m in Sources */ = {isa = PBXBuildFile; fileRef = A35583ECCBCEB0999189C8A13C1E7079 /* RLMJSONModels.m */; settings = {COMPILER_FLAGS = "-DREALM_HAVE_CONFIG -DREALM_COCOA_VERSION='@\"3.17.3\"' -D__ASSERTMACROS__ -DREALM_ENABLE_SYNC"; }; }; + 062B8C73B8DB1C4A45282999CFA7CE8C /* keychain_helper.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 698CE8D8642001969026B1A83C9EE1E0 /* keychain_helper.cpp */; settings = {COMPILER_FLAGS = "-DREALM_HAVE_CONFIG -DREALM_COCOA_VERSION='@\"3.17.3\"' -D__ASSERTMACROS__ -DREALM_ENABLE_SYNC"; }; }; + 06490230A5C3A0C774280AD8D1775C8A /* FIRCreateAuthURIResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = F8DAE815AAC1D460EF6E0B3613DFF6AD /* FIRCreateAuthURIResponse.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 0699E61717F65850BA5D78B7278A043C /* FIndexedNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 15700BCCF72D99AE9843DAAFC1B6C3D9 /* FIndexedNode.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 07B4E1113A960921C57CFEA26293FDA3 /* RLMCollection_Private.h in Copy . Private Headers */ = {isa = PBXBuildFile; fileRef = BEFBB7C830DDC83D80AD2F74F3EBA126 /* RLMCollection_Private.h */; }; + 07C6751526EFADA832A1A7A639746D5D /* RLMPlatform.h in Copy . Public Headers */ = {isa = PBXBuildFile; fileRef = 077A4146A733517C3C1626D699546AAD /* RLMPlatform.h */; }; + 07CE324E99D6720B4F73C864A80199E8 /* testharness.h in Headers */ = {isa = PBXBuildFile; fileRef = B11165CE850B96B457E475B8F0D2B618 /* testharness.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 08242B919268F8683EB23AAD2165B37A /* logging.cc in Sources */ = {isa = PBXBuildFile; fileRef = F9220BA54BBDA9DFF1C2C3A090DFA6FA /* logging.cc */; settings = {COMPILER_FLAGS = "-DOS_MACOSX -DLEVELDB_PLATFORM_POSIX -fno-objc-arc"; }; }; 083362BCF3EA85FE13F2EB221A209C42 /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D984BE5444A65E2FEE90297457AF9AA3 /* Security.framework */; }; - 087C55FF14BBD7924D2604E362E05E2B /* FEmptyNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 2D891FB6556F9D956EB6BEDCB751DBC9 /* FEmptyNode.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 088158F117D45FEEFC61B017634766D5 /* pb_encode.h in Headers */ = {isa = PBXBuildFile; fileRef = 2E90DC5761B0C1820542E5FDA3CB58E9 /* pb_encode.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 08F09B2728494409BD2DC9C7FD33C7E7 /* FCompoundHash.m in Sources */ = {isa = PBXBuildFile; fileRef = E17650BCE5DAA3100577549FA2BBFD06 /* FCompoundHash.m */; }; - 098D63085B26AE578DD4BF02C3789A57 /* FIRInstanceIDBackupExcludedPlist.h in Headers */ = {isa = PBXBuildFile; fileRef = 4DC4DA200959AF34BC53A06B37D1B29F /* FIRInstanceIDBackupExcludedPlist.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 09BDD20325C9A9075829E9D950E7650B /* RLMClassInfo.mm in Sources */ = {isa = PBXBuildFile; fileRef = AAB3C145E6056757861BA936291ABC7F /* RLMClassInfo.mm */; settings = {COMPILER_FLAGS = "-DREALM_HAVE_CONFIG -DREALM_COCOA_VERSION='@\"3.17.3\"' -D__ASSERTMACROS__ -DREALM_ENABLE_SYNC"; }; }; - 0A01FF0884FAF5689C189235DFDEE9F3 /* FViewProcessorResult.h in Headers */ = {isa = PBXBuildFile; fileRef = 570EED89545EE847A5FA7530B8E03517 /* FViewProcessorResult.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 0A396C7F83D1C18BCE1E32C9B0200B96 /* FAuthTokenProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = FFD9847BC8112C92BE7316A67739B7FB /* FAuthTokenProvider.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 0A91224F2F6B47A058CB360227247938 /* FValueEventRegistration.h in Headers */ = {isa = PBXBuildFile; fileRef = C4561E7A49EDD9FA4DB6BB3158DA956F /* FValueEventRegistration.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 0B69E2D388C15A4FAAAFAE4DA2B94502 /* thread_safe_reference.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3DF2F499DB437D0FF2DBC83A20F5A7E0 /* thread_safe_reference.cpp */; settings = {COMPILER_FLAGS = "-DREALM_HAVE_CONFIG -DREALM_COCOA_VERSION='@\"3.17.3\"' -D__ASSERTMACROS__ -DREALM_ENABLE_SYNC"; }; }; - 0BE201DEFB1A5977637A6C37FFD846CA /* realm_coordinator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9C019372595DED9AB88F4623CEFC0F83 /* realm_coordinator.cpp */; settings = {COMPILER_FLAGS = "-DREALM_HAVE_CONFIG -DREALM_COCOA_VERSION='@\"3.17.3\"' -D__ASSERTMACROS__ -DREALM_ENABLE_SYNC"; }; }; - 0BFBD5419A81C51C524FE08FC0E3F3EE /* FMerge.h in Headers */ = {isa = PBXBuildFile; fileRef = 63DFBBA4C20D77335FAA691AC209CEAC /* FMerge.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 0BFFFE564365C57BC41A964ECB45931F /* FTrackedQuery.h in Headers */ = {isa = PBXBuildFile; fileRef = AB3829D8AC7F13572C6781D8AA526776 /* FTrackedQuery.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 0CDE6ED0EDB91F20D5C15DB8E860D111 /* slice.h in Headers */ = {isa = PBXBuildFile; fileRef = 8D02D7FE2710571FA669070AEF471093 /* slice.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 0D32143B4F328D455DE47992A49EA6E1 /* FIRInstanceIDKeyPairUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 227565AD60546A76F3D5D196E85DF731 /* FIRInstanceIDKeyPairUtilities.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 0DA6A4EBE519B3DE88E0E007577BDAE8 /* FOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = FEFC2BB53EA3D8994C1ACC0F17ED92FC /* FOperation.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 0EE42245E106C5A5E105A78B15B801B9 /* GULReachabilityMessageCode.h in Headers */ = {isa = PBXBuildFile; fileRef = DD648D41267E573F43282A7DA40D2E04 /* GULReachabilityMessageCode.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 0FC683562FA07E8AF2EF55D8B2167960 /* FKeyIndex.m in Sources */ = {isa = PBXBuildFile; fileRef = 89BF3317E8CD6395BE7C89F1FED23C69 /* FKeyIndex.m */; }; - 0FF0608694CC8EF2CBF1D989CCC1BC37 /* Realm.h in Copy . Public Headers */ = {isa = PBXBuildFile; fileRef = 1A2481DACFF8B25080AC675078AA9854 /* Realm.h */; }; - 102483ED3C7746B873950801E23DE555 /* RLMObjectStore.h in Headers */ = {isa = PBXBuildFile; fileRef = 05ECCE509C554602AD75019EF6BE5DFC /* RLMObjectStore.h */; }; - 10C1738591FDCE0FF984AAC9EEE47CD3 /* FPendingPut.m in Sources */ = {isa = PBXBuildFile; fileRef = A56CAC7090FE7B4BD4B6F308D829EF06 /* FPendingPut.m */; }; - 10F9C4D481A6780BAAEC1DCCE89D72A5 /* shared_realm.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 21AC6BB5104E12F7C39FD17A2E20BD12 /* shared_realm.cpp */; settings = {COMPILER_FLAGS = "-DREALM_HAVE_CONFIG -DREALM_COCOA_VERSION='@\"3.17.3\"' -D__ASSERTMACROS__ -DREALM_ENABLE_SYNC"; }; }; - 1154DFE44161CD06436BDAC92EB001EB /* FIRInstanceIDCheckinPreferences+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = D485EF8A0C92ECD8465BD71A0E73FCB6 /* FIRInstanceIDCheckinPreferences+Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 11843DA835CFC2BEA127A90B33B37DB2 /* FIRInstanceIDConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = 5BE74820DD643E7AE1AD76F84A71451A /* FIRInstanceIDConstants.m */; }; - 118E2DBA6435361849EBB6209B0EE10C /* FIRInstanceIDAuthService.m in Sources */ = {isa = PBXBuildFile; fileRef = B88E7704EFFE4554AC66D6A2F8C99069 /* FIRInstanceIDAuthService.m */; }; - 11A4E5A788648DA6EC3AA5C7207D20F9 /* RLMOptionalBase.h in Headers */ = {isa = PBXBuildFile; fileRef = A1E1D517209C3F2ADEFC8A4A06A7007B /* RLMOptionalBase.h */; }; - 11D6258E24BA267419F96E4515902AC1 /* FTupleTSN.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AA7FAF474EB1EB3D0F6C5C5D30D54E5 /* FTupleTSN.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 12A94B085B960FFF94A98BCF9F6E27E0 /* ObjectiveCSupport.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8C595CE53C956B40B0149846F8FD4C76 /* ObjectiveCSupport.swift */; }; - 12F011A1AC64F875E04D2EFF3DC2CB42 /* FListenProvider.m in Sources */ = {isa = PBXBuildFile; fileRef = C51830307EA9C530EEE538B2389427A0 /* FListenProvider.m */; }; - 13E9047C864F32E679D81C9C2A300B53 /* FIRInstanceIDVersionUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = D0783C531C600A880AB8D38127D7E674 /* FIRInstanceIDVersionUtilities.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 14A82A4E92B4D8451F67924EFB51B52F /* FValidation.m in Sources */ = {isa = PBXBuildFile; fileRef = 70C317AAC76D178FE87D3ED351931099 /* FValidation.m */; }; - 151EC36B66D131E8707B82708A926590 /* FIRDependency.m in Sources */ = {isa = PBXBuildFile; fileRef = 9FCD78B89FA06B11E1602820B62E0B26 /* FIRDependency.m */; }; - 15FAD81F40C375C5E394EEA904697379 /* port_posix_sse.cc in Sources */ = {isa = PBXBuildFile; fileRef = 6882CDEDA0F009416E43F9D067403556 /* port_posix_sse.cc */; settings = {COMPILER_FLAGS = "-DOS_MACOSX -DLEVELDB_PLATFORM_POSIX -fno-objc-arc"; }; }; - 1614C1F4BAA773D84CFFCD82E126FD55 /* comparator.cc in Sources */ = {isa = PBXBuildFile; fileRef = DC08EC17D19A33377F52A2114ECA4031 /* comparator.cc */; settings = {COMPILER_FLAGS = "-DOS_MACOSX -DLEVELDB_PLATFORM_POSIX -fno-objc-arc"; }; }; - 167D0E24C4EB049C4651FD62969846AE /* FDataEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 71195E85F8BD8A2222CD16F8703FAC19 /* FDataEvent.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 179A70B241D879BE5A6DBB825270FABF /* logging.h in Headers */ = {isa = PBXBuildFile; fileRef = 11D01DD003F31171CE7B17167EA12D67 /* logging.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 17CE12E3F777B243FCE5AC6201AEF303 /* RealmConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 85F06AEF7F1478A710C14029C6CA61EA /* RealmConfiguration.swift */; }; - 17E74A0C302C627A1374F313FA16E7EE /* SwiftVersion.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0C2B4EB5465606120A31E46F2FB7CEF /* SwiftVersion.swift */; }; - 1825521EDC0A60EAB03C0E8AAA22C25A /* network_reachability_observer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 09E3B9A2D995E7B995D465A6C14176BE /* network_reachability_observer.cpp */; settings = {COMPILER_FLAGS = "-DREALM_HAVE_CONFIG -DREALM_COCOA_VERSION='@\"3.17.3\"' -D__ASSERTMACROS__ -DREALM_ENABLE_SYNC"; }; }; - 1840FC1F2A9DFBF3032E00BD359C0272 /* repair.cc in Sources */ = {isa = PBXBuildFile; fileRef = A5340C02A073613C483C6B33B80F3B4F /* repair.cc */; settings = {COMPILER_FLAGS = "-DOS_MACOSX -DLEVELDB_PLATFORM_POSIX -fno-objc-arc"; }; }; - 189B917CCA9C7E406FB6E97B6B5A68B2 /* RLMRealmConfiguration+Sync.h in Copy . Public Headers */ = {isa = PBXBuildFile; fileRef = 595D941028421AE2555618A08AEE4B69 /* RLMRealmConfiguration+Sync.h */; }; - 1942F7D3B7722A5637C3FC0BE44B1E6C /* SwiftyJSON-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = F9EE53CE4FAE921E2315618D5706DF83 /* SwiftyJSON-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 19F765EA7211C1AB6CAA21972C191E67 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0781231D907887B1D7DF0E005F108FF7 /* Foundation.framework */; }; - 1A0FAB32FF2EA8DD04F21306E3BB24ED /* GULMutableDictionary.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D623542074868ED96FD9D908BB1E6A1 /* GULMutableDictionary.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 1A2F7B017E1D536C49FE43D267EB5019 /* FKeepSyncedEventRegistration.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A726C02EE21EB72AC5CC440E03F2AE0 /* FKeepSyncedEventRegistration.m */; }; - 1AB625F98492E763FD0FC55BCE42AC61 /* write_batch_internal.h in Headers */ = {isa = PBXBuildFile; fileRef = ED24953FC45339D3E47A22935D3EFDC0 /* write_batch_internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 1ADA42F8A33E1931674AF9DFA3F97725 /* RLMSyncUtil.h in Copy . Public Headers */ = {isa = PBXBuildFile; fileRef = FCCDBA4C00C13320C4B739A41B8DF480 /* RLMSyncUtil.h */; }; - 1B00F4426C97B3BAC9C22FDD4B08D771 /* port.h in Headers */ = {isa = PBXBuildFile; fileRef = F8B02D4182CE4347FF5C653EBAEEC73A /* port.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 1BE1B577C737CD0E8EE51B11CD199F8F /* FTupleObjectNode.m in Sources */ = {isa = PBXBuildFile; fileRef = A22B0302CF4C8B9EF16E9411F53E2CA8 /* FTupleObjectNode.m */; }; - 1C2516CB0209BB6C75307C0FF8392883 /* FConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = 1FE22062253F86EBDE8DBC1E4AF7D5A4 /* FConstants.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 1E2ED89F2E2217F77412251EADE23BCC /* testutil.cc in Sources */ = {isa = PBXBuildFile; fileRef = 4D76E5B55051BE4BEB78A09CAB455BB2 /* testutil.cc */; settings = {COMPILER_FLAGS = "-DOS_MACOSX -DLEVELDB_PLATFORM_POSIX -fno-objc-arc"; }; }; - 1E7F350E9A6AA211C53A28F58D22A9F7 /* FCancelEvent.m in Sources */ = {isa = PBXBuildFile; fileRef = 44A4A8DDE5F1F353006691D0DFB1DCF9 /* FCancelEvent.m */; }; - 1E895BA1D1C67BA6B467D4FE91D5DBCB /* FImmutableSortedSet.m in Sources */ = {isa = PBXBuildFile; fileRef = B445143D10CCECEA2127F8644BFF5C7C /* FImmutableSortedSet.m */; }; - 1EB9E61D79FD9E9A446FA26A9F1F6E0F /* FTupleBoolBlock.m in Sources */ = {isa = PBXBuildFile; fileRef = 6C34EFABCF8CB239462BA6490EDC257D /* FTupleBoolBlock.m */; }; - 1EE0A2195499958D9E20D04E9D69490E /* GULSwizzler.h in Headers */ = {isa = PBXBuildFile; fileRef = 6BC9F0DC725D2ADF77D9B413589C76B7 /* GULSwizzler.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 1F24DD2EA5D55BB8B389B848DE2A5A2D /* RLMSyncManager.mm in Sources */ = {isa = PBXBuildFile; fileRef = 415713C0C4491CDFF625AC7F54AEC1A9 /* RLMSyncManager.mm */; settings = {COMPILER_FLAGS = "-DREALM_HAVE_CONFIG -DREALM_COCOA_VERSION='@\"3.17.3\"' -D__ASSERTMACROS__ -DREALM_ENABLE_SYNC"; }; }; - 1F8CA46274574BF041AD357C27838B08 /* FUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 638DAB50762126AF2B0062ECA7459CA2 /* FUtilities.m */; }; - 204095FD545C40968CFF9BF74857D17C /* FIRInstanceIDCheckinPreferences.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A02C8CD9C2A5C27125D0829DB90EDF3 /* FIRInstanceIDCheckinPreferences.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 2079693D28F330798E0D092EC639FA6D /* RLMConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = E67E35298ED63F3E67572FBE23154F5A /* RLMConstants.m */; settings = {COMPILER_FLAGS = "-DREALM_HAVE_CONFIG -DREALM_COCOA_VERSION='@\"3.17.3\"' -D__ASSERTMACROS__ -DREALM_ENABLE_SYNC"; }; }; - 20D2ACB4361E2A08BB19E5FBA9421922 /* GULAppDelegateSwizzler.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F53AC4CE8E33751494D1B47F8E19C09 /* GULAppDelegateSwizzler.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 2143F4F92C824822E84EB8E284058094 /* RLMResults_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 555A139457E8AA4030271B5DB035C1CC /* RLMResults_Private.h */; }; - 21DDC5749DF3307ACB67EACCE392BC3D /* RLMObject.h in Headers */ = {isa = PBXBuildFile; fileRef = A4AF2035141DF1584A2FCAFE8F64D88C /* RLMObject.h */; }; - 2302C8229E8F0EFE0EA40A08B426F3FD /* port_posix.cc in Sources */ = {isa = PBXBuildFile; fileRef = C278A1CDFADAE92EA4CF7C48A8BDA710 /* port_posix.cc */; settings = {COMPILER_FLAGS = "-DOS_MACOSX -DLEVELDB_PLATFORM_POSIX -fno-objc-arc"; }; }; - 232462B42CFB86A76B2E3EF883CCBB96 /* FTupleRemovedQueriesEvents.h in Headers */ = {isa = PBXBuildFile; fileRef = 0956F4B27D9C4B4CDAACF7E2732B439B /* FTupleRemovedQueriesEvents.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 085A1518150E2D34133216FCDFB65780 /* FTupleStringNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 5298DB7938311C818199F20BD5E9B17B /* FTupleStringNode.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 086F25F7ED9C1C0C6D04FF6568F2C1E0 /* FTrackedQuery.h in Headers */ = {isa = PBXBuildFile; fileRef = D2D4EE74C04ED8410E1323DF06E8882A /* FTrackedQuery.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 088EC5A32ADD5E754C1A9917F979C6E8 /* repair.cc in Sources */ = {isa = PBXBuildFile; fileRef = A2844654F2753C45219E09FCC969FDC3 /* repair.cc */; settings = {COMPILER_FLAGS = "-DOS_MACOSX -DLEVELDB_PLATFORM_POSIX -fno-objc-arc"; }; }; + 09BDD20325C9A9075829E9D950E7650B /* RLMClassInfo.mm in Sources */ = {isa = PBXBuildFile; fileRef = A30268BFBB92AA06C4B62D2E79D572BD /* RLMClassInfo.mm */; settings = {COMPILER_FLAGS = "-DREALM_HAVE_CONFIG -DREALM_COCOA_VERSION='@\"3.17.3\"' -D__ASSERTMACROS__ -DREALM_ENABLE_SYNC"; }; }; + 0A55887ED8E9E723A3849B31F8924F6F /* format.cc in Sources */ = {isa = PBXBuildFile; fileRef = E0873E6476F1CE78473958D50C2CC017 /* format.cc */; settings = {COMPILER_FLAGS = "-DOS_MACOSX -DLEVELDB_PLATFORM_POSIX -fno-objc-arc"; }; }; + 0AD1615904922D45A3D282CF3DD12D13 /* FIRAuthProvider.m in Sources */ = {isa = PBXBuildFile; fileRef = FD258AD86496B2B6B7342C5934F2F1B3 /* FIRAuthProvider.m */; }; + 0B5872127B8AEFA27DD36BB387DDEB65 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0781231D907887B1D7DF0E005F108FF7 /* Foundation.framework */; }; + 0B69E2D388C15A4FAAAFAE4DA2B94502 /* thread_safe_reference.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 89CCF1C40EB92C7E6EE130415FE2A93C /* thread_safe_reference.cpp */; settings = {COMPILER_FLAGS = "-DREALM_HAVE_CONFIG -DREALM_COCOA_VERSION='@\"3.17.3\"' -D__ASSERTMACROS__ -DREALM_ENABLE_SYNC"; }; }; + 0B8306395F299B4E0425E213C3129E41 /* FRepoManager.m in Sources */ = {isa = PBXBuildFile; fileRef = E2B71F30B223EE0B24C4766D7B451AAF /* FRepoManager.m */; }; + 0BE201DEFB1A5977637A6C37FFD846CA /* realm_coordinator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 48FCC86FEB7E9E854C3B3D6964303499 /* realm_coordinator.cpp */; settings = {COMPILER_FLAGS = "-DREALM_HAVE_CONFIG -DREALM_COCOA_VERSION='@\"3.17.3\"' -D__ASSERTMACROS__ -DREALM_ENABLE_SYNC"; }; }; + 0CD30512A31005689D7855FD2E2E7BD2 /* FPersistentConnection.m in Sources */ = {isa = PBXBuildFile; fileRef = 9290926BBBB928FA3B8C2DB305F0C4D5 /* FPersistentConnection.m */; }; + 0CDC36B37BEED3C839D93A2225042E71 /* two_level_iterator.cc in Sources */ = {isa = PBXBuildFile; fileRef = AD52B279EA2AC09169D29364CFD23F6F /* two_level_iterator.cc */; settings = {COMPILER_FLAGS = "-DOS_MACOSX -DLEVELDB_PLATFORM_POSIX -fno-objc-arc"; }; }; + 0D4AE01A4FE5367AD9CD8DB473B837EA /* FKeepSyncedEventRegistration.m in Sources */ = {isa = PBXBuildFile; fileRef = 1BD37A5203C1973DBFE2C823214C754B /* FKeepSyncedEventRegistration.m */; }; + 0D9B121ABC27DB66F6CA266419042FB5 /* FIRInstanceIDCombinedHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 0217F453A998FB4ED56D2B97E78D63E0 /* FIRInstanceIDCombinedHandler.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 0DDE4BB5F9891DC10958B327B3B705AE /* FIRAuthAPNSTokenType.h in Headers */ = {isa = PBXBuildFile; fileRef = 7F0242E2488B47778EAF0B955381FEE1 /* FIRAuthAPNSTokenType.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0E935E9439DF4266867D4A1105881127 /* GULLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = 98D314B7B00C1663199A813DACDC7F17 /* GULLogger.m */; }; + 0EEF0BA1DB46CDBB2BC94032D8218708 /* FIRPhoneAuthCredential_Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 6FF972AF8902F39BEB6F97A7C7CBBEEB /* FIRPhoneAuthCredential_Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 0F388AA034B0DEC0B193E495F0FF1AC2 /* FIRVerifyPasswordResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 01DFF38291F51A03FC2D066546D96984 /* FIRVerifyPasswordResponse.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 0F431EE0EC5C388B540A17F26E79F6F2 /* FIRDatabaseReference.h in Headers */ = {isa = PBXBuildFile; fileRef = 843CDCE82343D5064FB5A924E2CA6C50 /* FIRDatabaseReference.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0F7C36E5F433299CB48B2DD6AE34370B /* FIRResetPasswordResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = B173555413A897913F96AC06E1A920CD /* FIRResetPasswordResponse.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 0FAFAF7453DE3A586665182DDFB46903 /* FIRAuthCredential_Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 04092C5B41E3A06BCDADE9378D70A572 /* FIRAuthCredential_Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 0FED20A1F90329C691140CC2E3A0625F /* FTupleTSN.h in Headers */ = {isa = PBXBuildFile; fileRef = 58F2FAAB9283C92807C1C5044B43D38F /* FTupleTSN.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 0FF0608694CC8EF2CBF1D989CCC1BC37 /* Realm.h in Copy . Public Headers */ = {isa = PBXBuildFile; fileRef = B95BF4C35448D59864B6247257FBF27A /* Realm.h */; }; + 10179F085E5671DE26730947F60800E8 /* FNodeFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 78F1DE95DF34A9605B649CB07D488C7A /* FNodeFilter.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 102483ED3C7746B873950801E23DE555 /* RLMObjectStore.h in Headers */ = {isa = PBXBuildFile; fileRef = 490954DCB8534A557B489D042124D4AB /* RLMObjectStore.h */; }; + 10D6A2324EE0FC942221156CE82E7964 /* FIRIdentityToolkitRequest.m in Sources */ = {isa = PBXBuildFile; fileRef = BC6519253F5B94D10F2249F7B15002CF /* FIRIdentityToolkitRequest.m */; }; + 10DB5625E4E4234E614C9F215504A572 /* FIRInstanceIDKeyPair.h in Headers */ = {isa = PBXBuildFile; fileRef = 3CA4053F3021A8F8E3B6EF7EC08A49B8 /* FIRInstanceIDKeyPair.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 10E318179F4D8BE9FE6334BCBEACE333 /* merger.h in Headers */ = {isa = PBXBuildFile; fileRef = 5AC2F598FE870D4139CC3B2A48C6695A /* merger.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 10F9C4D481A6780BAAEC1DCCE89D72A5 /* shared_realm.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 266E6E4B14ED9DCDEE8A2AC2201E5DF0 /* shared_realm.cpp */; settings = {COMPILER_FLAGS = "-DREALM_HAVE_CONFIG -DREALM_COCOA_VERSION='@\"3.17.3\"' -D__ASSERTMACROS__ -DREALM_ENABLE_SYNC"; }; }; + 11A4E5A788648DA6EC3AA5C7207D20F9 /* RLMOptionalBase.h in Headers */ = {isa = PBXBuildFile; fileRef = E55A55CE8C7BE5281B75CF2D9A69ABEF /* RLMOptionalBase.h */; }; + 11D407EC984DEEDC806806352D5F46B5 /* FIRComponentContainer.h in Headers */ = {isa = PBXBuildFile; fileRef = 312694387F111886B150F37D1EAA0F0F /* FIRComponentContainer.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 122D5142771C96F1FF6BF9B21CE0176D /* FIRAuthExceptionUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = 70EB793A78384653BFCB7C98051B8665 /* FIRAuthExceptionUtils.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 12589C053B0F8DF0B2686922B17D9B77 /* FIRInstanceIDAuthKeyChain.h in Headers */ = {isa = PBXBuildFile; fileRef = 3E69242FCA63EC421BBA8B9B440B2757 /* FIRInstanceIDAuthKeyChain.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 125921D937F09B91F4E61FCA34D51ACB /* FIRAuthTokenResult.h in Headers */ = {isa = PBXBuildFile; fileRef = 02AD731D1132F99C1F91288672B7E1F9 /* FIRAuthTokenResult.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 12A94B085B960FFF94A98BCF9F6E27E0 /* ObjectiveCSupport.swift in Sources */ = {isa = PBXBuildFile; fileRef = B2CF6DB72820D6358D225A175ADCE45B /* ObjectiveCSupport.swift */; }; + 130571E8CBBFE1AE9FBA4EA913415889 /* FIRTransactionResult_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 73B8D32ABF17CCF5F69C8FE894A47560 /* FIRTransactionResult_Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 13199761E00A69389D85D3126FF8896D /* c.cc in Sources */ = {isa = PBXBuildFile; fileRef = F7E5B6134E7807C8BFD150B54EB04E63 /* c.cc */; settings = {COMPILER_FLAGS = "-DOS_MACOSX -DLEVELDB_PLATFORM_POSIX -fno-objc-arc"; }; }; + 1372E891D85024999394DD5FE6AA1F39 /* FLevelDBStorageEngine.m in Sources */ = {isa = PBXBuildFile; fileRef = 720DF860890927AC616F3FC98C5A49D2 /* FLevelDBStorageEngine.m */; }; + 137E0310D045404D5219A1A7A1FA3627 /* FIRAppAssociationRegistration.m in Sources */ = {isa = PBXBuildFile; fileRef = AA92A4F85E2993BEF1FDC4B0828FD863 /* FIRAppAssociationRegistration.m */; }; + 13D75CF671B887E10680CDE4BD01BF25 /* GULOriginalIMPConvenienceMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = 85828CAF2C09013792F5B4A6BF3737DE /* GULOriginalIMPConvenienceMacros.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 15A16A93D14131A3F84FCE5C68A2744C /* APLevelDB.mm in Sources */ = {isa = PBXBuildFile; fileRef = 8F8725D4D36E8CE22102EA3CF7AABC89 /* APLevelDB.mm */; }; + 1621578D24B3E62A697D883927C04CCE /* FStringUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = BE8C57275FEE5A96EAF32878ECB57356 /* FStringUtilities.m */; }; + 16494F2DD6581F04DA5EAF6AF07426B6 /* FIRInstanceIDCheckinService.m in Sources */ = {isa = PBXBuildFile; fileRef = 40827A77ECF85BE14435A8DE114C9F72 /* FIRInstanceIDCheckinService.m */; }; + 167E578E3091F367391C1B6A80FA1134 /* builder.h in Headers */ = {isa = PBXBuildFile; fileRef = 4B64FA0261C5F960F5C2637B3A67D9A8 /* builder.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 16C03AEAAA207D4E4EB43940792D0A80 /* FTupleObjects.m in Sources */ = {isa = PBXBuildFile; fileRef = 74D06664137D959297922DA443A7C806 /* FTupleObjects.m */; }; + 174A0B6249A2E9D2F32293B107DC48C5 /* FWriteTreeRef.m in Sources */ = {isa = PBXBuildFile; fileRef = E1A67A806445D107C967D96A37989861 /* FWriteTreeRef.m */; }; + 17558369C8A161DF2C7AF1FB3C304A16 /* GTMNSString+URLArguments.h in Headers */ = {isa = PBXBuildFile; fileRef = B9A97640DFEEF7D761C970C50156C2EB /* GTMNSString+URLArguments.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 1771DB80A60CA8E03A9C247B064907F3 /* FIRNoopAuthTokenProvider.m in Sources */ = {isa = PBXBuildFile; fileRef = C3A2B47BD9C50714D55D9ED9B48F383F /* FIRNoopAuthTokenProvider.m */; }; + 17C22A2777401B54BBD5CDF7A35141B1 /* FIndexedFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 712C1E55D4371809FAD6F7FA6F17FDB3 /* FIndexedFilter.m */; }; + 17CE12E3F777B243FCE5AC6201AEF303 /* RealmConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = FF1F0D9FEC1CCD9F4E4835A60D397CD6 /* RealmConfiguration.swift */; }; + 17E74A0C302C627A1374F313FA16E7EE /* SwiftVersion.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5138AAF10184F6333F18F47C379CE068 /* SwiftVersion.swift */; }; + 180845F393836A02543A388CB23F0574 /* FTree.m in Sources */ = {isa = PBXBuildFile; fileRef = 7D6E0609F0193400CB0FA596A38187CA /* FTree.m */; }; + 180AFB754C60D7F7534626802A6B169E /* db_iter.cc in Sources */ = {isa = PBXBuildFile; fileRef = E8EA673105DF649516D896FF2A1D3271 /* db_iter.cc */; settings = {COMPILER_FLAGS = "-DOS_MACOSX -DLEVELDB_PLATFORM_POSIX -fno-objc-arc"; }; }; + 1825521EDC0A60EAB03C0E8AAA22C25A /* network_reachability_observer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8CE6705149DB9563E4B9089C447FE13C /* network_reachability_observer.cpp */; settings = {COMPILER_FLAGS = "-DREALM_HAVE_CONFIG -DREALM_COCOA_VERSION='@\"3.17.3\"' -D__ASSERTMACROS__ -DREALM_ENABLE_SYNC"; }; }; + 1848BA42E00418DEAC9D14B153D80DED /* FIRGoogleAuthProvider.m in Sources */ = {isa = PBXBuildFile; fileRef = 01EC900101CCA4D1956B581D912FF8F3 /* FIRGoogleAuthProvider.m */; }; + 189B917CCA9C7E406FB6E97B6B5A68B2 /* RLMRealmConfiguration+Sync.h in Copy . Public Headers */ = {isa = PBXBuildFile; fileRef = 76064AC4B09D665012247BAC6BEDCE87 /* RLMRealmConfiguration+Sync.h */; }; + 18CD94DE0398CC105A1CCEFAA96B5448 /* FIRInstanceIDCheckinPreferences+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = A3EF8A21484153FA9DA1FE98B50D6CDE /* FIRInstanceIDCheckinPreferences+Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 191B249AD50B6F097EBC94368F717AAE /* fbase64.c in Sources */ = {isa = PBXBuildFile; fileRef = 371E92FE1D34B870CA3743CEE73E7984 /* fbase64.c */; }; + 1927674FA0FA18E281C910900238E231 /* FIRBundleUtil.h in Headers */ = {isa = PBXBuildFile; fileRef = D249EE3C1F1AE3145A4FA75BA01E3BA3 /* FIRBundleUtil.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 19409942A61AE6DAE5FC6C8F69ACC238 /* GULReachabilityChecker+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = F70514697574A528AFF8943BE38EB4AB /* GULReachabilityChecker+Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 1942F7D3B7722A5637C3FC0BE44B1E6C /* SwiftyJSON-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = DD9C8F77BE81575237462FF1AB4EF3B0 /* SwiftyJSON-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 19BE6E4716313383ABF54E139C45073A /* GULNetwork.m in Sources */ = {isa = PBXBuildFile; fileRef = 6AFCE690970721A963DCA28123A6FFA0 /* GULNetwork.m */; }; + 19C343E9A3D7850872AAC50AED66BACF /* GTMNSDictionary+URLArguments.h in Headers */ = {isa = PBXBuildFile; fileRef = 6CF48DCA91CEE349F0FC30621352C93B /* GTMNSDictionary+URLArguments.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 19D49CC9A97AA4978481E8C4E213B5B2 /* FIRGoogleAuthCredential.m in Sources */ = {isa = PBXBuildFile; fileRef = 4D0C3BE5FF13129641494D44A5B3A232 /* FIRGoogleAuthCredential.m */; }; + 19FFE9AD521F97F3960D81E5A212FF32 /* builder.cc in Sources */ = {isa = PBXBuildFile; fileRef = CB2DAE7D3D5AFAB38EABD9504C19A74C /* builder.cc */; settings = {COMPILER_FLAGS = "-DOS_MACOSX -DLEVELDB_PLATFORM_POSIX -fno-objc-arc"; }; }; + 1A13C08F196CDE0A1FD912E95CC54236 /* GULUserDefaults.h in Headers */ = {isa = PBXBuildFile; fileRef = DF2A2CC608AD49F3BAC267FD038414A6 /* GULUserDefaults.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 1A2E729731F6C24524077FBED140C6BF /* block.h in Headers */ = {isa = PBXBuildFile; fileRef = 4F0055900DA4C9C64FA802E4594AAFEF /* block.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 1A745B98502E6667822FAE54499C82B7 /* FPathIndex.h in Headers */ = {isa = PBXBuildFile; fileRef = 931B7F66FB9024BCD0629F03799B167F /* FPathIndex.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 1ADA42F8A33E1931674AF9DFA3F97725 /* RLMSyncUtil.h in Copy . Public Headers */ = {isa = PBXBuildFile; fileRef = 51A3B651AD393C33184960AABD78F452 /* RLMSyncUtil.h */; }; + 1B56AAD268CC1F5F4767D2968FEC6468 /* FTuplePathValue.h in Headers */ = {isa = PBXBuildFile; fileRef = DFD915F32B415D7FFD3667671334CCD1 /* FTuplePathValue.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 1B79AF24128183E3CD09BCE52E53298C /* FIRDatabase.m in Sources */ = {isa = PBXBuildFile; fileRef = D49BBBB24DB37669F35254F5C6B5B9C4 /* FIRDatabase.m */; }; + 1B95A14A156D4F942D4F9A63A5C60A49 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0781231D907887B1D7DF0E005F108FF7 /* Foundation.framework */; }; + 1BADEA0AD16CACCD49FF3179515324AD /* FIRVerifyCustomTokenResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 3E78C4F1EC10ED9AF2331B2325B87B47 /* FIRVerifyCustomTokenResponse.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 1C92988FEEFFB8E199D4842BE8FE34B7 /* FIRAuthWebViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 56F46E70C63C9CBB205FCC9E75F1E3B4 /* FIRAuthWebViewController.m */; }; + 1C950109D8A2A60057C2E820192B060D /* FIRAuthURLPresenter.h in Headers */ = {isa = PBXBuildFile; fileRef = 664EC5306CF77A245F5C91B7925505E1 /* FIRAuthURLPresenter.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 1C955D0A14A74318A5B51332F6FB29B1 /* FIRAuthRPCResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 7726B8A5EB71F990F78266CE9A5615DD /* FIRAuthRPCResponse.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 1D492B1A7C1BA280D900348D23F66BEC /* FIRDatabaseReference.m in Sources */ = {isa = PBXBuildFile; fileRef = 079773EBA3C2C5C334385ABE31712383 /* FIRDatabaseReference.m */; }; + 1D5E83658FF14F64E7791B2FF3896E44 /* testutil.cc in Sources */ = {isa = PBXBuildFile; fileRef = CE815CF6EA113F8A2367B74C0DC06C76 /* testutil.cc */; settings = {COMPILER_FLAGS = "-DOS_MACOSX -DLEVELDB_PLATFORM_POSIX -fno-objc-arc"; }; }; + 1EDB11576E2B810A33918B1CCAFB4BBD /* filter_block.cc in Sources */ = {isa = PBXBuildFile; fileRef = 7378B0C7211B514906A1311BE05739A8 /* filter_block.cc */; settings = {COMPILER_FLAGS = "-DOS_MACOSX -DLEVELDB_PLATFORM_POSIX -fno-objc-arc"; }; }; + 1F24DD2EA5D55BB8B389B848DE2A5A2D /* RLMSyncManager.mm in Sources */ = {isa = PBXBuildFile; fileRef = 10BD96D87CE24BF448FD1E1ED1BEEB76 /* RLMSyncManager.mm */; settings = {COMPILER_FLAGS = "-DREALM_HAVE_CONFIG -DREALM_COCOA_VERSION='@\"3.17.3\"' -D__ASSERTMACROS__ -DREALM_ENABLE_SYNC"; }; }; + 2079693D28F330798E0D092EC639FA6D /* RLMConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = 5AA0C14D59EEFFA0D9EBD6F0B814B48D /* RLMConstants.m */; settings = {COMPILER_FLAGS = "-DREALM_HAVE_CONFIG -DREALM_COCOA_VERSION='@\"3.17.3\"' -D__ASSERTMACROS__ -DREALM_ENABLE_SYNC"; }; }; + 20E2686C8543B1987D416214D53646E5 /* FAckUserWrite.m in Sources */ = {isa = PBXBuildFile; fileRef = AD3957E2C653C89360E7086E824EF347 /* FAckUserWrite.m */; }; + 2143F4F92C824822E84EB8E284058094 /* RLMResults_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 49E8998024BDCEBA0D417DED78B7A72B /* RLMResults_Private.h */; }; + 214F8FCFF62365EA0C90079088F84A49 /* GoogleToolboxForMac-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 733D2C3DCAE532480631343DF2DE5F8C /* GoogleToolboxForMac-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 215D1BF26B0115EAF8D2ED30B2F57FA9 /* iterator.cc in Sources */ = {isa = PBXBuildFile; fileRef = EEE9128D2C8E311A51541B4375FB1152 /* iterator.cc */; settings = {COMPILER_FLAGS = "-DOS_MACOSX -DLEVELDB_PLATFORM_POSIX -fno-objc-arc"; }; }; + 2185D4A86DC350B9047D22B435D38700 /* FChildrenNode.h in Headers */ = {isa = PBXBuildFile; fileRef = BBC35D37B27896B3E80B6AADA347A902 /* FChildrenNode.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 2194C60EB8DD1C17989A6367D2F2BC2C /* GTMSessionFetcher.h in Headers */ = {isa = PBXBuildFile; fileRef = A802538D247C82A4FF30DCC8D9ABFDFC /* GTMSessionFetcher.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 21DDC5749DF3307ACB67EACCE392BC3D /* RLMObject.h in Headers */ = {isa = PBXBuildFile; fileRef = 253D0BC75A7429141DD68D630377A630 /* RLMObject.h */; }; + 21E7ED9CD03BD98825E9FFBD8AA42764 /* FIRSignInWithGameCenterRequest.m in Sources */ = {isa = PBXBuildFile; fileRef = 75851C3EA0A56EB53D95CC2A2960DF4A /* FIRSignInWithGameCenterRequest.m */; }; + 21F5A7FF246F95E5EB43B3F835CA4C64 /* FIRDependency.h in Headers */ = {isa = PBXBuildFile; fileRef = 68D05D808E354EB24B2095B30F1C9412 /* FIRDependency.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 231CA44E528D5D6FFD77BAD97792B17E /* FirebaseCore.h in Headers */ = {isa = PBXBuildFile; fileRef = 032BB8894E2D66B49610113240881411 /* FirebaseCore.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 23249587DCA3528E4FE0795B1EE6F143 /* GULAppEnvironmentUtil.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CB127B0EF3C6CC65015F2A14A64229D /* GULAppEnvironmentUtil.m */; }; 235AC15AE371809F1467428D022D01CC /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0781231D907887B1D7DF0E005F108FF7 /* Foundation.framework */; }; - 23BCA5D9E3074CAC2793EF3705AD4B8F /* FStringUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = FE6911E08C9C60005A1F832BBA21898C /* FStringUtilities.m */; }; - 23CD4E9048AE540E63359773CD360CA2 /* FCachePolicy.m in Sources */ = {isa = PBXBuildFile; fileRef = 254364C2F39D555980C6E8A0AC05D68A /* FCachePolicy.m */; }; - 2435103B6E32D5B5A5E612755C06DCCE /* FIRTransactionResult_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 0AE8BF278FA2DE959D77D7C0F99892E5 /* FIRTransactionResult_Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 24E938D0969282690C6E5BE66BC8DB9A /* FValueIndex.m in Sources */ = {isa = PBXBuildFile; fileRef = F5DDED695B9F822AC7E55E13C7D37D21 /* FValueIndex.m */; }; - 2567E0E7C84D8E93CFBD4407ADD380BA /* testharness.h in Headers */ = {isa = PBXBuildFile; fileRef = D2BF564255C58BF3DD39C2C463E6CAD3 /* testharness.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 2611134890F39153D53E85E22CC94D76 /* FArraySortedDictionary.h in Headers */ = {isa = PBXBuildFile; fileRef = 1DBF9F9EC5E9DE9E41EFB0868C4C8A4F /* FArraySortedDictionary.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 275FE0EF169BC7756624669320596386 /* block_builder.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B8F1094B09DD1FC2F583026C6939BF3 /* block_builder.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 2999DE7CB85A63BA6EAE75A0D6E7E701 /* FEventRaiser.h in Headers */ = {isa = PBXBuildFile; fileRef = 42771769BD253F13FD4184175F0EF52E /* FEventRaiser.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 2AFF3281F38F0F6BD2AEFC55BD8447D2 /* FIRInstanceIDKeyPairStore.h in Headers */ = {isa = PBXBuildFile; fileRef = 534C5C59B17DB02D034ADCB92BF3CA51 /* FIRInstanceIDKeyPairStore.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 2B374445507BAC21E6FDCE6318EB1023 /* RealmCollection.swift in Sources */ = {isa = PBXBuildFile; fileRef = 12DD1ACB14D5310062FDAA97B3DF1732 /* RealmCollection.swift */; }; - 2B3A48977D07D38DB09EE6E16AB8A4C5 /* RLMObjectBase.h in Copy . Public Headers */ = {isa = PBXBuildFile; fileRef = 7942954AE22002E8BCC798DDAB414DF0 /* RLMObjectBase.h */; }; - 2B86786011DFC3D4A82AF526C89E73D1 /* FIRInstanceIDTokenManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 468C3CBBC0059F4102A666C15EB466C0 /* FIRInstanceIDTokenManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 2BF6FBC0A64BF107C5D64C61F1397770 /* SwiftyJSON-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 6C0FDC5A901061D4647C269C1223E966 /* SwiftyJSON-dummy.m */; }; - 2C3B184BED83E687B4532E6E142BB9F0 /* FTransformedEnumerator.h in Headers */ = {isa = PBXBuildFile; fileRef = CE37DFB9E42D0DA8E4C7BC9A7DB7A995 /* FTransformedEnumerator.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 2C48C1B2EF74AD4B05566974D8F98ACB /* FTuplePathValue.m in Sources */ = {isa = PBXBuildFile; fileRef = 5AFD917C105355EC1304F66D777BD022 /* FTuplePathValue.m */; }; - 2C5DC5323A6960F5A46F85C302FDC813 /* FIRLibrary.h in Headers */ = {isa = PBXBuildFile; fileRef = BC14A157593EA8A559A3EC68470E0233 /* FIRLibrary.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 2CE719CB910279F3B5F1F3061AA29C3D /* FIRInstanceIDURLQueryItem.h in Headers */ = {isa = PBXBuildFile; fileRef = CD6585AC9D15B34FB6FF757AFBAC5FA8 /* FIRInstanceIDURLQueryItem.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 2DB8081F77DBD9C75B000158631A8F5B /* skiplist.h in Headers */ = {isa = PBXBuildFile; fileRef = 4FC7EC69CE16F71F6F735F6535B6BC03 /* skiplist.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 2E7F48A4584678C868BC9000F1C3D3E5 /* FIRInstanceIDTokenStore.h in Headers */ = {isa = PBXBuildFile; fileRef = 953EF2BD32497560790AA08AE9B2D057 /* FIRInstanceIDTokenStore.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 2EB524669ADE8B03DE422CFE82A6EC8D /* GULNetworkURLSession.m in Sources */ = {isa = PBXBuildFile; fileRef = A116FCD593C7527EAAA12F1527DC47E7 /* GULNetworkURLSession.m */; }; - 2F616AF3528642CE8B719BB89679E8FE /* dumpfile.h in Headers */ = {isa = PBXBuildFile; fileRef = 646B5BD7E481625B298D4EC2B3F903EE /* dumpfile.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 301955A8C9DDB9D6E910AAA2068F674F /* FViewProcessor.m in Sources */ = {isa = PBXBuildFile; fileRef = 66837E41AD88DE28BEF72385963ABB41 /* FViewProcessor.m */; }; - 30344056A02C99E86A1D59E053E59C11 /* GULNetworkLoggerProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = EC54C34DA74E3DAF3DFC93DCE5B6E940 /* GULNetworkLoggerProtocol.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 306C6ABF32BC5765035C44DD9F3193E6 /* leveldb-library-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 2271BF2B610000B35AF3317E38D1C8E5 /* leveldb-library-dummy.m */; }; - 308D09E5F185626963A90B153383962E /* write_batch.h in Headers */ = {isa = PBXBuildFile; fileRef = 498CCCF8ABE35F7A0B071FCB3FCB3473 /* write_batch.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 30DCE0A71C5CCB594E832293E51BD235 /* RLMProperty.h in Headers */ = {isa = PBXBuildFile; fileRef = F35E730FB06ECB2418569BB95F3A5BD1 /* RLMProperty.h */; }; - 30E6C0B5D27FDD48D60BB0259010B33F /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D984BE5444A65E2FEE90297457AF9AA3 /* Security.framework */; }; - 30FA0E2D46C6E748397A94268874E270 /* GULAppEnvironmentUtil.h in Headers */ = {isa = PBXBuildFile; fileRef = 380E7FEB1E34817223258CC2E47839B8 /* GULAppEnvironmentUtil.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 31AF8276B4D68924E1E7A72978A48A57 /* FIRInstanceIDKeyPairUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = A698D1510223E0932B451B1E628DA832 /* FIRInstanceIDKeyPairUtilities.m */; }; - 321059373448941AC98D26C0DCD041CD /* FIRInstanceIDStore.h in Headers */ = {isa = PBXBuildFile; fileRef = 2BC2DDD408D1D4F3246A5DADD01744BC /* FIRInstanceIDStore.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 32A9C57D813527201AB8236B8151591D /* FTupleTransaction.h in Headers */ = {isa = PBXBuildFile; fileRef = 5257E36D799E88544790C001F9D2E3DB /* FTupleTransaction.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 32D4873D9CE7533E2B8FB5A5A780AFC4 /* FImmutableSortedDictionary.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D2DA84A9FA77488723EC0F2E643180A /* FImmutableSortedDictionary.m */; }; - 335794B41F65E19C1872A69C350EA142 /* FCompleteChildSource.h in Headers */ = {isa = PBXBuildFile; fileRef = 2E254EAD6B039FB25D501597D8E756B9 /* FCompleteChildSource.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 33719F038DA70F5FD655C990F7E73EBC /* RLMOptionalBase.h in Copy . Private Headers */ = {isa = PBXBuildFile; fileRef = A1E1D517209C3F2ADEFC8A4A06A7007B /* RLMOptionalBase.h */; }; - 338EFA3349C82FBD50E8DAB935B99E87 /* RLMRealmConfiguration_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 7548F3A5D14CC65B8C5F2FB458CA1B24 /* RLMRealmConfiguration_Private.h */; }; - 33CA2DC63C9A1AED41C6B0CDCE17D3B3 /* FIRInstanceID.h in Headers */ = {isa = PBXBuildFile; fileRef = F1B94CB9EEA07CECCE673771A5DFC778 /* FIRInstanceID.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 33CEDE6B29DAEDEBBF8364EE925BCAFC /* FIRInstanceIDTokenFetchOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 4D4E000B7FC260074F439925ACF6BEA6 /* FIRInstanceIDTokenFetchOperation.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 33D2B90C853A02E13E500B832FD0913A /* env.h in Headers */ = {isa = PBXBuildFile; fileRef = 18F57C63543E48918260382B3C0AC92E /* env.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 33F23BBE37EA1AA2EA34CA1F9C48B952 /* FirebaseCore.h in Headers */ = {isa = PBXBuildFile; fileRef = A5C0F17E53B197BDB6824B6E65955619 /* FirebaseCore.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 34C8D69599A44DD0AE50458B98790DEB /* pb_common.h in Headers */ = {isa = PBXBuildFile; fileRef = B62AE3C306534561AAD91028899CCC32 /* pb_common.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 354BE05906E0CB457569A8E29F9D8532 /* Realm.swift in Sources */ = {isa = PBXBuildFile; fileRef = E5F094D4D975B057F576217E1658E1F6 /* Realm.swift */; }; - 35775FB898E095199DC5656316207802 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0781231D907887B1D7DF0E005F108FF7 /* Foundation.framework */; }; - 35B2A2AB3FE3A3974DDBB379AE552931 /* RLMObjectBase_Private.h in Copy . Private Headers */ = {isa = PBXBuildFile; fileRef = B327834213EA2CFC6D5EC9C13EF7BDC6 /* RLMObjectBase_Private.h */; }; - 35DABF601CDF7507C69B8691A0596AAD /* coding.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B6BEBECA682714CDF79E4FA16552AEA /* coding.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 362EB52C93D796F0C9A5B070464E02B2 /* RLMSyncManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 2A93CA792659C6696C79342357059587 /* RLMSyncManager.h */; }; - 367DDD4723A03B00CB48CC3DBD8FCCF8 /* RLMThreadSafeReference.mm in Sources */ = {isa = PBXBuildFile; fileRef = 80AD45270824FB9D5E197366D7C854C0 /* RLMThreadSafeReference.mm */; settings = {COMPILER_FLAGS = "-DREALM_HAVE_CONFIG -DREALM_COCOA_VERSION='@\"3.17.3\"' -D__ASSERTMACROS__ -DREALM_ENABLE_SYNC"; }; }; - 3714B6A3B2108658EDD63F97A6F25291 /* FIRDataSnapshot_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = F513B682A0902B1AF982E39670F168F7 /* FIRDataSnapshot_Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 37420BD74319517ED4C55390EA8E250E /* RLMObjectStore.h in Copy . Private Headers */ = {isa = PBXBuildFile; fileRef = 05ECCE509C554602AD75019EF6BE5DFC /* RLMObjectStore.h */; }; - 37EA53AE98E2B10E69313ACE6EADF123 /* testutil.h in Headers */ = {isa = PBXBuildFile; fileRef = 00B12DB8DF44E90725FF75F399D710F7 /* testutil.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 38EDCB6B0C1491BC14B16B4E986DA00E /* FTupleSetIdPath.h in Headers */ = {isa = PBXBuildFile; fileRef = 96A064E42F4DAAF2385416A19D627D1C /* FTupleSetIdPath.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 3939EF918D949A06D0E5FB355C1E9B36 /* RLMSyncSubscription.mm in Sources */ = {isa = PBXBuildFile; fileRef = D2A9C94A856AA8185FE955767793455B /* RLMSyncSubscription.mm */; settings = {COMPILER_FLAGS = "-DREALM_HAVE_CONFIG -DREALM_COCOA_VERSION='@\"3.17.3\"' -D__ASSERTMACROS__ -DREALM_ENABLE_SYNC"; }; }; - 39CE000BD61CD17BDA98F791C07EAE63 /* table_builder.cc in Sources */ = {isa = PBXBuildFile; fileRef = C0BC0A402DD574D3C18E3DED9FEFFE12 /* table_builder.cc */; settings = {COMPILER_FLAGS = "-DOS_MACOSX -DLEVELDB_PLATFORM_POSIX -fno-objc-arc"; }; }; - 3A8E7FC71B4E275869756EBC863BAE05 /* FArraySortedDictionary.m in Sources */ = {isa = PBXBuildFile; fileRef = 20935CAEED9983B9F3F0D3330DEDCC67 /* FArraySortedDictionary.m */; }; - 3AA01C9CFF435DAC5A612ACDFD7794B5 /* FIRAppAssociationRegistration.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A7501BF49CE61E83A923D8588BFF72D /* FIRAppAssociationRegistration.m */; }; - 3ABA3B497CD34014B40A742D3513F1AD /* FIndexedNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 5BDB03EEE7AF7372DC965DB46E6F9355 /* FIndexedNode.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 3AF47855221B8317A519B7089F5B7962 /* FImmutableTree.h in Headers */ = {isa = PBXBuildFile; fileRef = 7D2B31B9DC9417DBA072028C7544648D /* FImmutableTree.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 3BB390F64E1BBF9A33A4CCA0158DC689 /* FIRInstanceIDCheckinStore.h in Headers */ = {isa = PBXBuildFile; fileRef = E11FE26D659D2DB40B62C615A8BB4FDD /* FIRInstanceIDCheckinStore.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 3BD063008F14A0D06586F954907110D9 /* Sync.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4B7E0C0A6A08418336DEB36B566B336A /* Sync.swift */; }; - 3C2CAC2C64AC199613434D9712AB67CD /* FLLRBNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 2FE16464C8B5AED5E827AE2B5AD8D75B /* FLLRBNode.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 3C43060D0C4248193D0C4288CB1207AB /* GULReachabilityChecker.m in Sources */ = {isa = PBXBuildFile; fileRef = 6C7E50031E5AA0C49FC2904B0F52E927 /* GULReachabilityChecker.m */; }; - 3CAC503A5DAA8D2DFB6895C2F4F46591 /* LinkingObjects.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3DBA7F7E33E765B5EF83F01853E4A8D3 /* LinkingObjects.swift */; }; - 3DF4429300F96713350379258EA8AB1A /* FIRComponent.m in Sources */ = {isa = PBXBuildFile; fileRef = 72B2D1ED02C0D21DB70B617D705A65C1 /* FIRComponent.m */; }; - 3E402733BBC6CB51F219ACA5C74ACAFC /* FLevelDBStorageEngine.h in Headers */ = {isa = PBXBuildFile; fileRef = A72EFF634E4D3BF54875061C0C717FA9 /* FLevelDBStorageEngine.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 3E725E644BD03962B59F11CD52FEB12E /* FTupleOnDisconnect.m in Sources */ = {isa = PBXBuildFile; fileRef = DE74BA9A039AED146C805A3B335A5A45 /* FTupleOnDisconnect.m */; }; - 3F1FFD9026407362B69B89319F8821AB /* RLMSyncPermission.mm in Sources */ = {isa = PBXBuildFile; fileRef = FD4F5D9D774C3ECB3E407B0716CFC2C9 /* RLMSyncPermission.mm */; settings = {COMPILER_FLAGS = "-DREALM_HAVE_CONFIG -DREALM_COCOA_VERSION='@\"3.17.3\"' -D__ASSERTMACROS__ -DREALM_ENABLE_SYNC"; }; }; - 3F7E821A0482CB5AA91D1A6418C07A48 /* RLMSchema_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = F7C0667A3A1C1CFC512A5112FA3856C1 /* RLMSchema_Private.h */; }; - 3F8B41D3A1A16AC9BAB206EDE011D08B /* GULNetwork.m in Sources */ = {isa = PBXBuildFile; fileRef = 3E64B20CD2651D359E1075FA9DD005A4 /* GULNetwork.m */; }; - 3FD731C6E78A2654DB5A945B4A162A1D /* cache.cc in Sources */ = {isa = PBXBuildFile; fileRef = D003DDA0EC59D5AF7F0AB5B68744B89B /* cache.cc */; settings = {COMPILER_FLAGS = "-DOS_MACOSX -DLEVELDB_PLATFORM_POSIX -fno-objc-arc"; }; }; - 4080010AB6135A7A1A819611ACC23777 /* GULOriginalIMPConvenienceMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = 196FCC22FC28B70022611585557A4C06 /* GULOriginalIMPConvenienceMacros.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 40BBCE59B55AF4DACDD206A0A4D9F68D /* FTransformedEnumerator.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C73AAF89E19AD8B6BB739BFB4772943 /* FTransformedEnumerator.m */; }; - 40E5F48D173FC8A5A47F91D1BCFC7A6B /* FTreeSortedDictionary.h in Headers */ = {isa = PBXBuildFile; fileRef = C64F69CF4FCDC501D724405FB5B9B11D /* FTreeSortedDictionary.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 41A81452441B42D5FA63B6F7DF2B8E34 /* FConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = 68A72EF067B60F56D8A99F7E34997541 /* FConstants.m */; }; - 42243F8F8A3A333A3543A3798E0BB9B2 /* ObjectiveCSupport+Sync.swift in Sources */ = {isa = PBXBuildFile; fileRef = F50E9C77DCFF0E376F74FEB5C6932CFC /* ObjectiveCSupport+Sync.swift */; }; - 42542065ED59364C2DD90417D7157E7F /* FAtomicNumber.h in Headers */ = {isa = PBXBuildFile; fileRef = AE0E09EEA6DEC893BD7EC371D0DF0F05 /* FAtomicNumber.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 42963C0329E015530ABD258B78D24881 /* GULLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = 59CED40174F5C78767B17971C6B50E34 /* GULLogger.m */; }; - 42A4E95D960E07E9141C6ADE411F9B59 /* FRepoInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 13DEB74003ED0A38243362A12E796250 /* FRepoInfo.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 433112B086BBEA5702FC83E692DF3373 /* table_builder.h in Headers */ = {isa = PBXBuildFile; fileRef = 8E6980A91892A04189B1AD9965A13E49 /* table_builder.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 4346A89B7AF2440D62CB3A1323E9F399 /* FViewCache.m in Sources */ = {isa = PBXBuildFile; fileRef = CB496417C83C32CC1293322F7690355F /* FViewCache.m */; }; - 436803A8CCC81A15C5EA20B71B444217 /* RealmSwift-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 9A240BB32B4FF323AF9B910237F47F34 /* RealmSwift-dummy.m */; }; - 44186E829424F8B1EB574853B7B8D83E /* RLMManagedArray.mm in Sources */ = {isa = PBXBuildFile; fileRef = 87DAAA3F88EE9947811324BCE945DF30 /* RLMManagedArray.mm */; settings = {COMPILER_FLAGS = "-DREALM_HAVE_CONFIG -DREALM_COCOA_VERSION='@\"3.17.3\"' -D__ASSERTMACROS__ -DREALM_ENABLE_SYNC"; }; }; - 4449930806D958FF8C7CE7943E67CDC0 /* FIRAnalyticsConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = 12E00CD98290A1BBF996B5E841380B15 /* FIRAnalyticsConfiguration.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 448F087F0DC22F891D5C3815CD4FD089 /* FRepo.h in Headers */ = {isa = PBXBuildFile; fileRef = E4570B8C7E368DD4DD267728B778CB3E /* FRepo.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 44A3CC1F4A0184EA4308346F3B72348A /* FIRInstanceIDKeyPair.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F9030C96551DEC962ACBAA8C5AAC5B1 /* FIRInstanceIDKeyPair.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 453D09C210A62983622D9B3033351E47 /* fbase64.c in Sources */ = {isa = PBXBuildFile; fileRef = F78421F029BB8A8E02A400B723189AA1 /* fbase64.c */; }; - 454625BA43AE4C37232509879769989B /* binding_callback_thread_observer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9ABCE100DA703E4DA46A38A32DF9C959 /* binding_callback_thread_observer.cpp */; settings = {COMPILER_FLAGS = "-DREALM_HAVE_CONFIG -DREALM_COCOA_VERSION='@\"3.17.3\"' -D__ASSERTMACROS__ -DREALM_ENABLE_SYNC"; }; }; - 454FF64DD0394109221C8D54F68646E9 /* results.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5B724C3E39CCECCC560D97BFF4386417 /* results.cpp */; settings = {COMPILER_FLAGS = "-DREALM_HAVE_CONFIG -DREALM_COCOA_VERSION='@\"3.17.3\"' -D__ASSERTMACROS__ -DREALM_ENABLE_SYNC"; }; }; - 45DB8808E237BFE0D914D3D3FAE55860 /* RLMAccessor.h in Headers */ = {isa = PBXBuildFile; fileRef = 96D7B586A22D0FDF6C502794CD097BB2 /* RLMAccessor.h */; }; - 45EDE7CCF5471B181EA12B3C8FC66F4D /* Util.swift in Sources */ = {isa = PBXBuildFile; fileRef = B295EE4778194C05D9AE2594C78EDE0C /* Util.swift */; }; - 460F37E184A137C90C4D748177F68E76 /* RLMSchema.mm in Sources */ = {isa = PBXBuildFile; fileRef = B05B881816751106CA8912C1D9F7A355 /* RLMSchema.mm */; settings = {COMPILER_FLAGS = "-DREALM_HAVE_CONFIG -DREALM_COCOA_VERSION='@\"3.17.3\"' -D__ASSERTMACROS__ -DREALM_ENABLE_SYNC"; }; }; + 23CEC63836483B991D27B31C9A631A22 /* FTupleUserCallback.h in Headers */ = {isa = PBXBuildFile; fileRef = A221084F76B8EF12399B79FF37C7C018 /* FTupleUserCallback.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 24005D187C20279BBC05C8819E3F19AB /* filename.h in Headers */ = {isa = PBXBuildFile; fileRef = 8295AFFB6E5D0634BBC1EC87B3D404C0 /* filename.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 246D7D62B14D75AD2A1235AD0FB976B2 /* FIRGetAccountInfoRequest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8086BDCAF2450AD0C34B61108E12D23E /* FIRGetAccountInfoRequest.m */; }; + 24CE08D6F574523975143D0D2A1D500C /* GTMSessionUploadFetcher.m in Sources */ = {isa = PBXBuildFile; fileRef = B9EACBD1ED6FC861499CD9D6E44DB3F4 /* GTMSessionUploadFetcher.m */; }; + 25C5B4797E3466DB43189562A98E15A1 /* FirebaseAuth-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 8165FB9ADE22631BBE3200B60A6CF17E /* FirebaseAuth-dummy.m */; }; + 2628F4188441BB778F7811A7A0B7BC92 /* FValueIndex.m in Sources */ = {isa = PBXBuildFile; fileRef = 48EAB618D8FFF168760FB3FA884AA7EE /* FValueIndex.m */; }; + 26BDAB0A2157C490DF27928E3EA69B25 /* snapshot.h in Headers */ = {isa = PBXBuildFile; fileRef = D561260D45C0F504BA5213746D8446C4 /* snapshot.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 27E1EB61D2A697FED504CBCD6A2F29E7 /* FChildEventRegistration.h in Headers */ = {isa = PBXBuildFile; fileRef = C1EABB42C0837B34F36F303B99C6C817 /* FChildEventRegistration.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 280800A9BE200158C6118D6D9EC63CE8 /* FIREmailLinkSignInRequest.h in Headers */ = {isa = PBXBuildFile; fileRef = 5F9A796BDA5E22A8B72A206AA04EF4BF /* FIREmailLinkSignInRequest.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 289EF8A44392DC9E5733D342F8544E47 /* FIRUser.m in Sources */ = {isa = PBXBuildFile; fileRef = 0FEF3A5DDD2A1096864DECC4938C56B0 /* FIRUser.m */; }; + 28E37800CBA0BC54A76CCCF3F8E3069C /* FTupleObjectNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 46B7687FD3EE101278137DB4F2D15F76 /* FTupleObjectNode.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 293DA1DCB533474769C2C695705B6EB6 /* FLLRBEmptyNode.h in Headers */ = {isa = PBXBuildFile; fileRef = E05DDD2D325CEA2146BBFBCF38ACF69B /* FLLRBEmptyNode.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 294E2E5CC27122135E01C1BB516FB24E /* GULUserDefaults.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E505AEB51C810ECED7D9CDB59039119 /* GULUserDefaults.m */; }; + 2A9DA4E41CB45BA7A28FB56B1D11A15C /* FIRInstanceIDStringEncoding.h in Headers */ = {isa = PBXBuildFile; fileRef = 3445F529774697D3E284BAEF8861D67E /* FIRInstanceIDStringEncoding.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 2B34452C6CC518DA2E9C9B45EDEE3E31 /* FServerValues.h in Headers */ = {isa = PBXBuildFile; fileRef = 36495A048833A2B960CF63D1AE73C26B /* FServerValues.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 2B374445507BAC21E6FDCE6318EB1023 /* RealmCollection.swift in Sources */ = {isa = PBXBuildFile; fileRef = 90719D6571B23A2A07893FE9B770DF02 /* RealmCollection.swift */; }; + 2B3A48977D07D38DB09EE6E16AB8A4C5 /* RLMObjectBase.h in Copy . Public Headers */ = {isa = PBXBuildFile; fileRef = A3A96C2678D44EFE4DBF723EE5A72C55 /* RLMObjectBase.h */; }; + 2BF6FBC0A64BF107C5D64C61F1397770 /* SwiftyJSON-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = CD103BD0CDFCBB1CD45B31DDA77C2CD2 /* SwiftyJSON-dummy.m */; }; + 2CBF90AAAA202FF2CEDA725FC71D2E7A /* FIRDatabaseComponent.m in Sources */ = {isa = PBXBuildFile; fileRef = 37DF19FC2B88C9423419C6300C786538 /* FIRDatabaseComponent.m */; }; + 2CD9B100D3B312ACE54BD8B02587D909 /* FRepoManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 23D468811C0D949050562E629BEE98D8 /* FRepoManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 2D170EDC134E39AB9C54FD38597AF22E /* FParsedUrl.m in Sources */ = {isa = PBXBuildFile; fileRef = 61CC9128F00CD21B6646A5F75278EFA6 /* FParsedUrl.m */; }; + 2D336BF7AC4BDF1592764F2E20FB6C7C /* filter_block.h in Headers */ = {isa = PBXBuildFile; fileRef = 358CEC6E846D137CE8EF2BC2CB08A915 /* filter_block.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 2D409195D7D6E5367FB375989DB87B43 /* FIRLogger.h in Headers */ = {isa = PBXBuildFile; fileRef = 713A2E8223BF33493CC27B47DA2C2855 /* FIRLogger.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 2DE6DB21FDC5FD28D689A3879727CE44 /* FWriteTree.h in Headers */ = {isa = PBXBuildFile; fileRef = FC428D41E465FE75C6E949EF7AB1007F /* FWriteTree.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 2EABB349C601E16ACEFDC5D3C6B8A7C4 /* FIRInstanceIDKeychain.h in Headers */ = {isa = PBXBuildFile; fileRef = 094A227E5B0F04ED175DA6A90F5625CD /* FIRInstanceIDKeychain.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 2FC0DFD3EC36A4DFA2E3146FD25E01E9 /* env.h in Headers */ = {isa = PBXBuildFile; fileRef = DE438E52F0A7E6FEC61F2FAB8696BB65 /* env.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 2FC1AA8E7C1CF5D3E6138444BE9B0721 /* FIRInstanceIDAPNSInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = B24867D9CD2585E9435AF8FEA4434AD0 /* FIRInstanceIDAPNSInfo.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 30A6435367C0B7A1DEA0AA67DFB8B537 /* GTMMethodCheck.h in Headers */ = {isa = PBXBuildFile; fileRef = D39DCF3ED077FEA3B7C06ECEEB763966 /* GTMMethodCheck.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 30DCE0A71C5CCB594E832293E51BD235 /* RLMProperty.h in Headers */ = {isa = PBXBuildFile; fileRef = F3462F1A580FE4DE43C18CEE86254352 /* RLMProperty.h */; }; + 3126ADBC02B6176277A70430FFECAB13 /* FIRSetAccountInfoRequest.h in Headers */ = {isa = PBXBuildFile; fileRef = A41FF1A78EECBB87CA75CE6ECE23D234 /* FIRSetAccountInfoRequest.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 31402E305267AAE1862905939AE0828A /* FKeyIndex.m in Sources */ = {isa = PBXBuildFile; fileRef = 415E965384979083FA16A4BE75038648 /* FKeyIndex.m */; }; + 31987CBFCBE3DD4ED0D4B9E40133CAB7 /* FIRComponentType.h in Headers */ = {isa = PBXBuildFile; fileRef = F66B9F3E79A18CD1B62CE109D42EEA25 /* FIRComponentType.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 31D189A821E4E9D5CE0945E6CCE4ED96 /* FIRSetAccountInfoResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = AA289684F1112D0416DEC76337B8E5F2 /* FIRSetAccountInfoResponse.m */; }; + 31F7613353D040F005DAF772F0CE39D3 /* FSparseSnapshotTree.h in Headers */ = {isa = PBXBuildFile; fileRef = E03DD375627DAB4A5A87B9185F44E20A /* FSparseSnapshotTree.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 31FCDC89E276020D3EC6F710F841D4D3 /* FSyncTree.m in Sources */ = {isa = PBXBuildFile; fileRef = 01CC685F23F5952E47D06AAC8F40127D /* FSyncTree.m */; }; + 321EE48B153BDFE55127BCC86BC0EB77 /* FChildEventRegistration.m in Sources */ = {isa = PBXBuildFile; fileRef = 05A04223649CC9528E3BE62992DCC774 /* FChildEventRegistration.m */; }; + 32215F4D95D6F24D9957522BF5333E95 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0781231D907887B1D7DF0E005F108FF7 /* Foundation.framework */; }; + 3222CA30C5E565B8F7E168A6C5A0A635 /* port.h in Headers */ = {isa = PBXBuildFile; fileRef = D5DA52F517F853D0C6C5CFADBCB08541 /* port.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 327B62AFE20D89C73AC34CBF1B850841 /* FIRAdditionalUserInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 960C042647A3ED6C8C00814EE00B41CC /* FIRAdditionalUserInfo.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 32F94671CE8ECAC353C729F2415EB4E9 /* coding.h in Headers */ = {isa = PBXBuildFile; fileRef = C3CA75049D935FF1CBA90C362ABA4576 /* coding.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 33719F038DA70F5FD655C990F7E73EBC /* RLMOptionalBase.h in Copy . Private Headers */ = {isa = PBXBuildFile; fileRef = E55A55CE8C7BE5281B75CF2D9A69ABEF /* RLMOptionalBase.h */; }; + 33740283CA6E3E4A8AC9615FF73F0916 /* GTMSessionFetcher.m in Sources */ = {isa = PBXBuildFile; fileRef = 3D0E589ABCC22FD1F7DE955BAF9421EB /* GTMSessionFetcher.m */; }; + 3386BD6CFF00C88438C85565575597DA /* FIRVerifyPasswordRequest.m in Sources */ = {isa = PBXBuildFile; fileRef = AC0CACDC3D144446C0DB8CFDAE09CFF9 /* FIRVerifyPasswordRequest.m */; }; + 338EFA3349C82FBD50E8DAB935B99E87 /* RLMRealmConfiguration_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 3CA7730B596A939B000074A39900B638 /* RLMRealmConfiguration_Private.h */; }; + 349DC3C4B32CE2E5205B39C2E2FDE90E /* Pods-shlack-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 365DF144F3775DC7733C55B5A3A2B6FE /* Pods-shlack-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 34ED3BC9F91DF90025A4C303A883FD84 /* FParsedUrl.h in Headers */ = {isa = PBXBuildFile; fileRef = 5081E64B331779B3C3A43EF3AD04343E /* FParsedUrl.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 35082E3DD1133379D4A39AB47A7BE551 /* FIRActionCodeSettings.h in Headers */ = {isa = PBXBuildFile; fileRef = 800A285036A1C72C13CE84856A6DF915 /* FIRActionCodeSettings.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 354BE05906E0CB457569A8E29F9D8532 /* Realm.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE836EB59B7C7FE3BB95048018544524 /* Realm.swift */; }; + 35A1DE67C9D2B9817159EEB35DAAAACF /* FNamedNode.m in Sources */ = {isa = PBXBuildFile; fileRef = CB7A91BB382F392D09E24306C077E99F /* FNamedNode.m */; }; + 35B2A2AB3FE3A3974DDBB379AE552931 /* RLMObjectBase_Private.h in Copy . Private Headers */ = {isa = PBXBuildFile; fileRef = 60B37E75EDF9313CCCA5B9F5E3EE724B /* RLMObjectBase_Private.h */; }; + 362EB52C93D796F0C9A5B070464E02B2 /* RLMSyncManager.h in Headers */ = {isa = PBXBuildFile; fileRef = BF6D835DCAA2CE049A0B15AB22681ACE /* RLMSyncManager.h */; }; + 365C633859A9E911AECBA30BF7B211D5 /* FirebaseInstanceID-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 34B70BF1D157DDBF3CE24B3D3F6689EB /* FirebaseInstanceID-dummy.m */; }; + 367DDD4723A03B00CB48CC3DBD8FCCF8 /* RLMThreadSafeReference.mm in Sources */ = {isa = PBXBuildFile; fileRef = 369C78DEF4C634414A21D2E08A7F86AC /* RLMThreadSafeReference.mm */; settings = {COMPILER_FLAGS = "-DREALM_HAVE_CONFIG -DREALM_COCOA_VERSION='@\"3.17.3\"' -D__ASSERTMACROS__ -DREALM_ENABLE_SYNC"; }; }; + 36A4962EC022E0487195921115539CC3 /* FIRCreateAuthURIRequest.h in Headers */ = {isa = PBXBuildFile; fileRef = D5FA0F8FFB172F36D623B335B827A630 /* FIRCreateAuthURIRequest.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 36BBA1AA975253D63AE25B25D9C3E6EA /* dumpfile.cc in Sources */ = {isa = PBXBuildFile; fileRef = 953A7128CE9476055E2510BA47220556 /* dumpfile.cc */; settings = {COMPILER_FLAGS = "-DOS_MACOSX -DLEVELDB_PLATFORM_POSIX -fno-objc-arc"; }; }; + 36F3FA1EAACA0805646A70DC3107426D /* FWriteRecord.h in Headers */ = {isa = PBXBuildFile; fileRef = 0218B74CC13521AEEEFE4AA9AC07CB8D /* FWriteRecord.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 3736E3133D784C5BB341CE17A7DE4088 /* FIRAuthOperationType.h in Headers */ = {isa = PBXBuildFile; fileRef = 6E2F9203F1A40BC3FABB837D6456E0A8 /* FIRAuthOperationType.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 37420BD74319517ED4C55390EA8E250E /* RLMObjectStore.h in Copy . Private Headers */ = {isa = PBXBuildFile; fileRef = 490954DCB8534A557B489D042124D4AB /* RLMObjectStore.h */; }; + 377B3E36A8E0809E3B61BED76F307E79 /* GoogleToolboxForMac-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 39F36EB7E6D9A494ADEFB648FCC6AF40 /* GoogleToolboxForMac-dummy.m */; }; + 37D20733893A2A09A3AD70D003A884CE /* FIRFacebookAuthCredential.h in Headers */ = {isa = PBXBuildFile; fileRef = 6649521C65EC8F74445299C949873B45 /* FIRFacebookAuthCredential.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 37D78FD4405AEA9859FD7944A8510953 /* FIRAuthTokenResult_Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 35E8BA233A68904EAB3436AEDB9989A9 /* FIRAuthTokenResult_Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 38448CC00A05D22B07069211A986F0E1 /* FIRInstanceIDKeychain.m in Sources */ = {isa = PBXBuildFile; fileRef = 5CC2314E0B43D04B02C2843E95525FB8 /* FIRInstanceIDKeychain.m */; }; + 38A8D1231D1E80FDACBDDBBA90F5F15E /* FSRWebSocket.m in Sources */ = {isa = PBXBuildFile; fileRef = 8CDC780159B55410507B3752000BAECD /* FSRWebSocket.m */; }; + 38BD4326B57F0B24FA226252CB0A9F8B /* FIREmailAuthProvider.m in Sources */ = {isa = PBXBuildFile; fileRef = 1AF8487CBD0C3D0EB12AC4C5178FC94A /* FIREmailAuthProvider.m */; }; + 38EF7B980BA448034510F7A25727F216 /* FTupleTSN.m in Sources */ = {isa = PBXBuildFile; fileRef = D66EBE81F91C4172FD1DF68C78475D81 /* FTupleTSN.m */; }; + 3939EF918D949A06D0E5FB355C1E9B36 /* RLMSyncSubscription.mm in Sources */ = {isa = PBXBuildFile; fileRef = 7E70F725C50E3934DFC2D68476DA8C15 /* RLMSyncSubscription.mm */; settings = {COMPILER_FLAGS = "-DREALM_HAVE_CONFIG -DREALM_COCOA_VERSION='@\"3.17.3\"' -D__ASSERTMACROS__ -DREALM_ENABLE_SYNC"; }; }; + 39742CCADC8C2DC0D6F5E3F2131C7824 /* FTrackedQueryManager.m in Sources */ = {isa = PBXBuildFile; fileRef = F1B5CCDFB0BAAB70AA2D75AE5B3A89B0 /* FTrackedQueryManager.m */; }; + 39CE983566E102863D23A7EBE686DCF5 /* FIRErrors.h in Headers */ = {isa = PBXBuildFile; fileRef = 9FFF2ED0EC5A40671406A6A3A4FA6789 /* FIRErrors.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 39F982FDB383C344825CF5ED849956CB /* FIRSignUpNewUserResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = B218C6A133EF5CC9F3B50BCF89EDA9FD /* FIRSignUpNewUserResponse.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 3A7D5C8C1916B5916221962A14B38252 /* table_builder.h in Headers */ = {isa = PBXBuildFile; fileRef = 3ED160332E24F454510A2975E92DC7B4 /* table_builder.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 3B31D61A8651CB1181380896EF4B4A26 /* format.h in Headers */ = {isa = PBXBuildFile; fileRef = 42614DC729A6DCAAA9230BC763AE71F0 /* format.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 3B6129338EF70774C743AA339A7C5E8D /* FIRInstanceIDCheckinPreferences+Internal.m in Sources */ = {isa = PBXBuildFile; fileRef = 6785C988ACE77DDC69C3D13099575326 /* FIRInstanceIDCheckinPreferences+Internal.m */; }; + 3B6D109494E2D492807D67F1B8C647A3 /* FIRInstanceIDStore.m in Sources */ = {isa = PBXBuildFile; fileRef = D01DA25054F62F7A139DBD353DF6C260 /* FIRInstanceIDStore.m */; }; + 3BD063008F14A0D06586F954907110D9 /* Sync.swift in Sources */ = {isa = PBXBuildFile; fileRef = E7EB9918F5E535EAD721D9354B856C44 /* Sync.swift */; }; + 3C73939A542282AB7144788D05FFD4A1 /* FirebaseDatabase-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F186BFBD23EE125311E4AB45F99CF84 /* FirebaseDatabase-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 3CAC503A5DAA8D2DFB6895C2F4F46591 /* LinkingObjects.swift in Sources */ = {isa = PBXBuildFile; fileRef = AC5C463C527B8A9BBC85C66035796FE8 /* LinkingObjects.swift */; }; + 3D0AD687EE72E2FA6F5197F386D2AA86 /* FTupleRemovedQueriesEvents.h in Headers */ = {isa = PBXBuildFile; fileRef = F190377A8066F6FA86F87932D6F9604E /* FTupleRemovedQueriesEvents.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 3D75C9B105EB39A9CC7CB49F1997BC87 /* FIRInstanceIDCheckinStore.h in Headers */ = {isa = PBXBuildFile; fileRef = 2FD12836152CA9E3F0A98BB1ABFA18E8 /* FIRInstanceIDCheckinStore.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 3D78EA39BD95295FE188B211E3BF0249 /* FIRAdditionalUserInfo_Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = CBD0FC7BF8275E150CD0B01E5D7C3C57 /* FIRAdditionalUserInfo_Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 3D7FC56600B291E9A3546871297D3B02 /* GULNetworkConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = 645A519F82D777141DD6012C56592B78 /* GULNetworkConstants.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 3D9CA39B8D56123C499EC201073B1DBE /* FirebaseCore-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = D9D70557FC61E750FDB0051AC59343E2 /* FirebaseCore-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 3DA335784177B91FCE1E8D5B290E027C /* FIRActionCodeSettings.m in Sources */ = {isa = PBXBuildFile; fileRef = 9848DC38F61C072F9EFD459DC7F1D2E2 /* FIRActionCodeSettings.m */; }; + 3DC329DCFCCB792A37BC7C149DCAC0E4 /* dumpfile.h in Headers */ = {isa = PBXBuildFile; fileRef = BEB7251CD6F4DDFB313EFEE8739A506B /* dumpfile.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 3DE16030D99B9D95BEB8D0C657BA7C0F /* FIRSendVerificationCodeResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 9C18287BBE1F9EE7CADB21C90C0736BE /* FIRSendVerificationCodeResponse.m */; }; + 3EA1F32FD446FE4B668EBD02252EBA76 /* FIRInstanceIDCheckinService.h in Headers */ = {isa = PBXBuildFile; fileRef = 87B067CF88F9934DF556AE2863AD79F7 /* FIRInstanceIDCheckinService.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 3EC9D2BF2C4A3254E868211F213F261A /* FValueEventRegistration.m in Sources */ = {isa = PBXBuildFile; fileRef = E15AD84E865CA3368A0C52D6750D6BAE /* FValueEventRegistration.m */; }; + 3F1FFD9026407362B69B89319F8821AB /* RLMSyncPermission.mm in Sources */ = {isa = PBXBuildFile; fileRef = 6DF2FEAF06B70077096EA222B4FC3EFF /* RLMSyncPermission.mm */; settings = {COMPILER_FLAGS = "-DREALM_HAVE_CONFIG -DREALM_COCOA_VERSION='@\"3.17.3\"' -D__ASSERTMACROS__ -DREALM_ENABLE_SYNC"; }; }; + 3F7E821A0482CB5AA91D1A6418C07A48 /* RLMSchema_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 4BD117894C2FCA8640DAFFFCF5B5C23D /* RLMSchema_Private.h */; }; + 40625BEAC014CED883DB85E63CAD155F /* version_set.cc in Sources */ = {isa = PBXBuildFile; fileRef = 2BA024687FB6DB667E32B4EB66307C83 /* version_set.cc */; settings = {COMPILER_FLAGS = "-DOS_MACOSX -DLEVELDB_PLATFORM_POSIX -fno-objc-arc"; }; }; + 41867C5907F48811037991EDFBB594B2 /* FTupleObjects.h in Headers */ = {isa = PBXBuildFile; fileRef = 840809733AFDA8C2C8BF80FEA474063E /* FTupleObjects.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 41B39C95E4624DD699F12845E953DABC /* FIRGitHubAuthCredential.h in Headers */ = {isa = PBXBuildFile; fileRef = D38E5B0DBCD3127BFE2F9E6AADAAAC01 /* FIRGitHubAuthCredential.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 41FB2D5EC9A22F150D50AC0F1EF8E30A /* FTupleRemovedQueriesEvents.m in Sources */ = {isa = PBXBuildFile; fileRef = F2EE2AA613D0898F5C0B348699708685 /* FTupleRemovedQueriesEvents.m */; }; + 420DE024D7EBE55CBE5150941996B3B6 /* FAtomicNumber.h in Headers */ = {isa = PBXBuildFile; fileRef = 8037AE9DE81A8F53FAB75B109848DDB9 /* FAtomicNumber.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 42243F8F8A3A333A3543A3798E0BB9B2 /* ObjectiveCSupport+Sync.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C02F64E3B8AF0F1985EDA70517FDF04 /* ObjectiveCSupport+Sync.swift */; }; + 4291BC4A1556236445318BFE61306E48 /* GTMSessionFetcherService.h in Headers */ = {isa = PBXBuildFile; fileRef = 1BD203F642850FB99D53FF90B3648713 /* GTMSessionFetcherService.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 431E843432456C45315F39D21F5ABE9E /* FLeafNode.m in Sources */ = {isa = PBXBuildFile; fileRef = CFDEEDC12876FEF79A7C191F2F234989 /* FLeafNode.m */; }; + 4363682DB725798957489B019DDEA63F /* FIRUserMetadata_Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 759562FE71043082EA077DA28A7CB242 /* FIRUserMetadata_Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 436803A8CCC81A15C5EA20B71B444217 /* RealmSwift-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = A51683E4164EB54C25E8A31D5FD9FA8B /* RealmSwift-dummy.m */; }; + 43D42F1B5A3E32CD764347F5D43D5E17 /* FTreeSortedDictionaryEnumerator.h in Headers */ = {isa = PBXBuildFile; fileRef = C317BD0AB08496ED654FB2E03745B9E3 /* FTreeSortedDictionaryEnumerator.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 43DA7760CC5AEF486E6154912A9939BB /* FTypedefs_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 263856EB11737FC99187DE4601B56CB6 /* FTypedefs_Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 44186E829424F8B1EB574853B7B8D83E /* RLMManagedArray.mm in Sources */ = {isa = PBXBuildFile; fileRef = A852D81D7C81BE821C6A17C3A140C59E /* RLMManagedArray.mm */; settings = {COMPILER_FLAGS = "-DREALM_HAVE_CONFIG -DREALM_COCOA_VERSION='@\"3.17.3\"' -D__ASSERTMACROS__ -DREALM_ENABLE_SYNC"; }; }; + 4493C04BA24226C21AD9BECDF6E388EE /* FUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 493A4671FC982E50E1722AAC3D936C82 /* FUtilities.m */; }; + 454625BA43AE4C37232509879769989B /* binding_callback_thread_observer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F65031AC8F02E3E0CC4A8E8ABE584CD8 /* binding_callback_thread_observer.cpp */; settings = {COMPILER_FLAGS = "-DREALM_HAVE_CONFIG -DREALM_COCOA_VERSION='@\"3.17.3\"' -D__ASSERTMACROS__ -DREALM_ENABLE_SYNC"; }; }; + 45486731D3ADAF8F3DD33EA425739683 /* FQueryParams.m in Sources */ = {isa = PBXBuildFile; fileRef = F76739191D142DA6D95DAC5D6196997D /* FQueryParams.m */; }; + 454FF64DD0394109221C8D54F68646E9 /* results.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5718911B1B9EDB57BAAA9758DC7DAB88 /* results.cpp */; settings = {COMPILER_FLAGS = "-DREALM_HAVE_CONFIG -DREALM_COCOA_VERSION='@\"3.17.3\"' -D__ASSERTMACROS__ -DREALM_ENABLE_SYNC"; }; }; + 458C5A6340B9F46E24BCA01B1ECBD678 /* FOverwrite.m in Sources */ = {isa = PBXBuildFile; fileRef = 92FAADBDA4EFC457B8E526B091845F04 /* FOverwrite.m */; }; + 45DB8808E237BFE0D914D3D3FAE55860 /* RLMAccessor.h in Headers */ = {isa = PBXBuildFile; fileRef = 112C9645A6188F09F438B736FC62A9C2 /* RLMAccessor.h */; }; + 45EDE7CCF5471B181EA12B3C8FC66F4D /* Util.swift in Sources */ = {isa = PBXBuildFile; fileRef = ABF36141FBECA785CC48607985706346 /* Util.swift */; }; + 460F37E184A137C90C4D748177F68E76 /* RLMSchema.mm in Sources */ = {isa = PBXBuildFile; fileRef = A903005631AC9C5FADFC6C5A126FCC45 /* RLMSchema.mm */; settings = {COMPILER_FLAGS = "-DREALM_HAVE_CONFIG -DREALM_COCOA_VERSION='@\"3.17.3\"' -D__ASSERTMACROS__ -DREALM_ENABLE_SYNC"; }; }; 464450D037D17ED5EE2322E180A6A9F5 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0781231D907887B1D7DF0E005F108FF7 /* Foundation.framework */; }; - 464548BF9572BD0D28E8C2FA9748F1CC /* RLMObject_Private.h in Copy . Private Headers */ = {isa = PBXBuildFile; fileRef = 59757D47E77C9DE2758C39FF4FD6960B /* RLMObject_Private.h */; }; - 4693044AAE649819BFFAFAF181E5F194 /* FIRDataSnapshot.m in Sources */ = {isa = PBXBuildFile; fileRef = A24F3E1A7929B59A3F2A4A4F9E2D210B /* FIRDataSnapshot.m */; }; - 469B9DA599A5FCC6C177A5D471627099 /* FValidation.h in Headers */ = {isa = PBXBuildFile; fileRef = 193B7FBB7A9C97AB0ED07793BB176DE4 /* FValidation.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 46CD75B822E8AD2C51BE1039C2BB80F3 /* FOperationSource.m in Sources */ = {isa = PBXBuildFile; fileRef = 4AC85087165273E9FAA51A309487E8F7 /* FOperationSource.m */; }; - 46DB3B00C18339C9001A96947F8354CD /* FStorageEngine.h in Headers */ = {isa = PBXBuildFile; fileRef = 53A45680DF1A6981F49774BA0C52F49A /* FStorageEngine.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 46EC148D44AC8265517FE34F53B07BAE /* Realm-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 6B29E92CB2178FD9BE0EA04127DF77D2 /* Realm-dummy.m */; }; - 471980AEC51B1D14E068B57ACD4D5F04 /* FIndexedFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = D800A318A29E77159C89E61B406CAC6A /* FIndexedFilter.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 47269FF4C9E873CA8CE6A1EF95FDD906 /* RLMSwiftSupport.m in Sources */ = {isa = PBXBuildFile; fileRef = E4EC468C7B68B6E00EDAF9F470F80973 /* RLMSwiftSupport.m */; settings = {COMPILER_FLAGS = "-DREALM_HAVE_CONFIG -DREALM_COCOA_VERSION='@\"3.17.3\"' -D__ASSERTMACROS__ -DREALM_ENABLE_SYNC"; }; }; - 475C32DE27B421CEC1D91F06B8E56C80 /* FirebaseCore-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 4F6804AF3CC99DDBFC096E15FC0E867A /* FirebaseCore-dummy.m */; }; - 47F57B37033CB9AE138264B78F352789 /* APLevelDB.mm in Sources */ = {isa = PBXBuildFile; fileRef = 333C12F1E38DA147596F45D3EF0708DC /* APLevelDB.mm */; }; - 48158E5AE1651ECD67C8F1CFB14E9B04 /* sync_file.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 86BD7026584FB526028C8F797D7961AE /* sync_file.cpp */; settings = {COMPILER_FLAGS = "-DREALM_HAVE_CONFIG -DREALM_COCOA_VERSION='@\"3.17.3\"' -D__ASSERTMACROS__ -DREALM_ENABLE_SYNC"; }; }; - 4826892C57326EA27CF9DA1C3E5E1209 /* crc32c.cc in Sources */ = {isa = PBXBuildFile; fileRef = 427CD3BA94C49C7D6C2B23D08F0FEFA9 /* crc32c.cc */; settings = {COMPILER_FLAGS = "-DOS_MACOSX -DLEVELDB_PLATFORM_POSIX -fno-objc-arc"; }; }; - 48279784E05FCDAA6A1AC5FDD4BC5EE4 /* FPersistentConnection.h in Headers */ = {isa = PBXBuildFile; fileRef = D70A40616A72588714BC21FC80946CBD /* FPersistentConnection.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 490A2A7CEE593B12A2591ECC7AD538A8 /* FSparseSnapshotTree.m in Sources */ = {isa = PBXBuildFile; fileRef = 7B06A3465967CF33A3CC199936547FCF /* FSparseSnapshotTree.m */; }; - 49F5B82C29710453011ED5F892B91B96 /* FRepoManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 45A051CC54545D97B59C291534A1D1CB /* FRepoManager.m */; }; - 49FA9CFB7506743456F5027040F01EEA /* FViewProcessor.h in Headers */ = {isa = PBXBuildFile; fileRef = 56514FFC97467B4FF78779F66B4328D2 /* FViewProcessor.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 4A06A40947D67793C060F17D43805688 /* RLMSyncCredentials.m in Sources */ = {isa = PBXBuildFile; fileRef = 0287EDA0E300BF3B5C3C6674FC6FF9EA /* RLMSyncCredentials.m */; settings = {COMPILER_FLAGS = "-DREALM_HAVE_CONFIG -DREALM_COCOA_VERSION='@\"3.17.3\"' -D__ASSERTMACROS__ -DREALM_ENABLE_SYNC"; }; }; - 4AEF8B4ADA6D10819FCE00ABF8F4CE48 /* FIRInstanceIDCheckinPreferences.m in Sources */ = {isa = PBXBuildFile; fileRef = 412BF47C340E394AF8A525A4774A6693 /* FIRInstanceIDCheckinPreferences.m */; }; - 4B974AFF6719ECCF98CF3522E6FC8213 /* RLMNetworkClient.mm in Sources */ = {isa = PBXBuildFile; fileRef = E3592EF7BCC6B77368F5B92F993050FB /* RLMNetworkClient.mm */; settings = {COMPILER_FLAGS = "-DREALM_HAVE_CONFIG -DREALM_COCOA_VERSION='@\"3.17.3\"' -D__ASSERTMACROS__ -DREALM_ENABLE_SYNC"; }; }; - 4BD25F2503F89F3C6142F669AA60181F /* bloom.cc in Sources */ = {isa = PBXBuildFile; fileRef = 9803894BB3093DD53DB8CF7B6F05A62F /* bloom.cc */; settings = {COMPILER_FLAGS = "-DOS_MACOSX -DLEVELDB_PLATFORM_POSIX -fno-objc-arc"; }; }; - 4C07D5EE73434560F219A6938903F12E /* FIRInstanceIDAuthKeyChain.h in Headers */ = {isa = PBXBuildFile; fileRef = F07997ECC199F8251298FED988C18D3B /* FIRInstanceIDAuthKeyChain.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 4C69954412F49183F7CCE778A5AB56F4 /* FIRInstanceIDKeychain.m in Sources */ = {isa = PBXBuildFile; fileRef = 42E165143E04061420005C3CC9D3B9C4 /* FIRInstanceIDKeychain.m */; }; - 4C8DC5BA6AEFBABEAC2BA78ABD76C05E /* FIRDatabaseComponent.h in Headers */ = {isa = PBXBuildFile; fileRef = 8DA99E6A2FCFE520F99D00E83CA380E4 /* FIRDatabaseComponent.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 4CB86817A316CD4A9F3EAE62FB4ACB96 /* FValueIndex.h in Headers */ = {isa = PBXBuildFile; fileRef = 2D2A5A7F700CD01C27DA42AE076A7355 /* FValueIndex.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 4E2B9CC4DC53413EFD971C628FEBC58B /* FPathIndex.h in Headers */ = {isa = PBXBuildFile; fileRef = 2DB2A085966F45C3A818CBC14047E6D6 /* FPathIndex.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 4ED2955C86A5C26309952FF8FFC09569 /* FCachePolicy.h in Headers */ = {isa = PBXBuildFile; fileRef = B8381E1F386EC4FCEAE004E579361FFB /* FCachePolicy.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 4EDD0741723B7698A49018C0F58BF057 /* YMTGetDeviceName.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3D2D6183AF49702E75CD5060B8B6B996 /* YMTGetDeviceName.swift */; }; - 4EF14159271332EE075771C3585198CB /* FQueryParams.m in Sources */ = {isa = PBXBuildFile; fileRef = AD6F935AF337404801EF7299D23DE75C /* FQueryParams.m */; }; - 4EF25A23AD2C3121B8FAC312055528F4 /* FTypedefs.h in Headers */ = {isa = PBXBuildFile; fileRef = B8636D2B4EF08CCD366144BC9E047E5B /* FTypedefs.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 4F9E9EF65CB8E735FF07096C03C8E552 /* RLMObject_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 59757D47E77C9DE2758C39FF4FD6960B /* RLMObject_Private.h */; }; - 4FC6CD8B0027503FCC30CE8D0CCFB903 /* FIRInstanceIDCombinedHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 3E57E32692DD986A3AF9041B520C8991 /* FIRInstanceIDCombinedHandler.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 4FC706C02447823974080F724C244754 /* FTypedefs_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = F57744E663AE1E78FE543630E9F2A139 /* FTypedefs_Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 50680A102BA5CE8A3D171E1041D720A9 /* external_commit_helper.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 58566803A75C6624E8A4ECC7CACC1009 /* external_commit_helper.cpp */; settings = {COMPILER_FLAGS = "-DREALM_HAVE_CONFIG -DREALM_COCOA_VERSION='@\"3.17.3\"' -D__ASSERTMACROS__ -DREALM_ENABLE_SYNC"; }; }; - 509F33BADA937F1FA75BE86611E08911 /* FIRDatabaseReference.h in Headers */ = {isa = PBXBuildFile; fileRef = 0AA3340ECD599FE3AA8DEF6ACFD38A80 /* FIRDatabaseReference.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 50B053C7B8DD54FF911DCD2CFC222DBA /* FIRInstanceIDStringEncoding.h in Headers */ = {isa = PBXBuildFile; fileRef = BC7FD05162AB136A2A18FD34147587FC /* FIRInstanceIDStringEncoding.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 50ECA21E528DB9D880C7ACABDED9A9F0 /* FChildEventRegistration.m in Sources */ = {isa = PBXBuildFile; fileRef = 48D27D6942CCE9C373AFF71C8EB1638C /* FChildEventRegistration.m */; }; - 511934046C224E6019ED3221480F341C /* FIRBundleUtil.h in Headers */ = {isa = PBXBuildFile; fileRef = 5A0E1E84910D7F5F5112C8CCA2535BED /* FIRBundleUtil.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 52B36E9BD0987C1C076179244C715689 /* FTrackedQueryManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 7F5ED259268F12D89F28441E903186EE /* FTrackedQueryManager.m */; }; - 52D1E98FE881863378F5E0CC12E72BE7 /* RLMCollection_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = F59BC7A16A66FA14351F20FA2BBFFEAF /* RLMCollection_Private.h */; }; + 464548BF9572BD0D28E8C2FA9748F1CC /* RLMObject_Private.h in Copy . Private Headers */ = {isa = PBXBuildFile; fileRef = 13A0DFB91F5EBB15E52FAD0BCC8F0D6B /* RLMObject_Private.h */; }; + 46EC148D44AC8265517FE34F53B07BAE /* Realm-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = DAC356C4713FBF936C5936751E518197 /* Realm-dummy.m */; }; + 47269FF4C9E873CA8CE6A1EF95FDD906 /* RLMSwiftSupport.m in Sources */ = {isa = PBXBuildFile; fileRef = 834519348EA9354FA135B93DE1146B13 /* RLMSwiftSupport.m */; settings = {COMPILER_FLAGS = "-DREALM_HAVE_CONFIG -DREALM_COCOA_VERSION='@\"3.17.3\"' -D__ASSERTMACROS__ -DREALM_ENABLE_SYNC"; }; }; + 47411C86EF79DD30157B5188E8247267 /* testharness.cc in Sources */ = {isa = PBXBuildFile; fileRef = 8CBDE858ADC53E69AA81D87E345D2FA0 /* testharness.cc */; settings = {COMPILER_FLAGS = "-DOS_MACOSX -DLEVELDB_PLATFORM_POSIX -fno-objc-arc"; }; }; + 479CF759F2C24E22ADBBC4761A6465BD /* merger.cc in Sources */ = {isa = PBXBuildFile; fileRef = AC836764EE632A171018079BA24C6F94 /* merger.cc */; settings = {COMPILER_FLAGS = "-DOS_MACOSX -DLEVELDB_PLATFORM_POSIX -fno-objc-arc"; }; }; + 48158E5AE1651ECD67C8F1CFB14E9B04 /* sync_file.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D51E7B7896D14EC8B294A3A9267E9BEF /* sync_file.cpp */; settings = {COMPILER_FLAGS = "-DREALM_HAVE_CONFIG -DREALM_COCOA_VERSION='@\"3.17.3\"' -D__ASSERTMACROS__ -DREALM_ENABLE_SYNC"; }; }; + 4848ED06C6BF504B285FCDFE7F52680B /* GULAppDelegateSwizzler_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 3A6A3A305FA74E69E99FF8ECF47B12B4 /* GULAppDelegateSwizzler_Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 48654D73AD7E617BE4453F47E4A9F16A /* FDataEvent.m in Sources */ = {isa = PBXBuildFile; fileRef = 7B4C8086099D45DE9C56B5A1B6BE00E1 /* FDataEvent.m */; }; + 48C7C90B51E7C8E2CA7AED4E7A99DC0C /* FTrackedQueryManager.h in Headers */ = {isa = PBXBuildFile; fileRef = A402DA57E0EEAE3B5CCEC9A8E53AB314 /* FTrackedQueryManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 491C250B52A1F76C7DDBB46C8E3EF681 /* histogram.h in Headers */ = {isa = PBXBuildFile; fileRef = 7D3D5920517A5D2B9A06D4434A0F2581 /* histogram.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 49DF631CA0BB2A0E452DEFB7190C5563 /* Pods-shlack-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 0227489CA87528683D15854631C1E35F /* Pods-shlack-dummy.m */; }; + 49F654E38AF63DE139C6EB4045995C3A /* FTupleNodePath.h in Headers */ = {isa = PBXBuildFile; fileRef = 41D26BD3734A72793ED5E83ECF7860EB /* FTupleNodePath.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 4A06A40947D67793C060F17D43805688 /* RLMSyncCredentials.m in Sources */ = {isa = PBXBuildFile; fileRef = 35165AAD2F2326C05636F3180530013B /* RLMSyncCredentials.m */; settings = {COMPILER_FLAGS = "-DREALM_HAVE_CONFIG -DREALM_COCOA_VERSION='@\"3.17.3\"' -D__ASSERTMACROS__ -DREALM_ENABLE_SYNC"; }; }; + 4A799959BF54A54F741C852347C2CB23 /* FIRAuthNotificationManager.h in Headers */ = {isa = PBXBuildFile; fileRef = EEAE026D72736A8213FE655A02440501 /* FIRAuthNotificationManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 4ABC1B7C3ED25D6B7FEFD3B48FEC5F6E /* FIROptions.m in Sources */ = {isa = PBXBuildFile; fileRef = C750EF5E14526F4E479B93E01D08B2A6 /* FIROptions.m */; }; + 4B6B7556ED79BC459A815A5710E79B96 /* FIRVersion.h in Headers */ = {isa = PBXBuildFile; fileRef = E39B3D2280A946B6D0D2A5BE820ABAE6 /* FIRVersion.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 4B974AFF6719ECCF98CF3522E6FC8213 /* RLMNetworkClient.mm in Sources */ = {isa = PBXBuildFile; fileRef = EBB1E781F01648C5B0C8E97711ECD03F /* RLMNetworkClient.mm */; settings = {COMPILER_FLAGS = "-DREALM_HAVE_CONFIG -DREALM_COCOA_VERSION='@\"3.17.3\"' -D__ASSERTMACROS__ -DREALM_ENABLE_SYNC"; }; }; + 4BE11D31255CC71007320EF18BB12E32 /* FCachePolicy.h in Headers */ = {isa = PBXBuildFile; fileRef = A718FE3CB3E9E72D3C3D51588333B8BF /* FCachePolicy.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 4C0DF21417D4ECF5A3BEC50D4E714596 /* FIRGitHubAuthProvider.m in Sources */ = {isa = PBXBuildFile; fileRef = 2D7969C0322A3552E87D408FFD4DA638 /* FIRGitHubAuthProvider.m */; }; + 4C14EF2A6659CB6F5A1FC32EDCDCC980 /* options.cc in Sources */ = {isa = PBXBuildFile; fileRef = 413F01E61AE1A7FEF3610C804F1720B6 /* options.cc */; settings = {COMPILER_FLAGS = "-DOS_MACOSX -DLEVELDB_PLATFORM_POSIX -fno-objc-arc"; }; }; + 4C32BEB8014C9FAB5758395D795AC26A /* FIRInstanceIDURLQueryItem.m in Sources */ = {isa = PBXBuildFile; fileRef = A4D0E010BEBCAA24A0EAA4DE3CE70AE3 /* FIRInstanceIDURLQueryItem.m */; }; + 4CF0D4572C296534488C3783C273AB51 /* FIRAuthRequestConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = 9610649D5B7A1EF3E78027C64CC1F65B /* FIRAuthRequestConfiguration.m */; }; + 4D12EA0AE433BB38FBF7E280812E4C0A /* write_batch.h in Headers */ = {isa = PBXBuildFile; fileRef = BA976B92FFBCEED91BE98519675F0B62 /* write_batch.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 4D67AE655A8DE85824566EE03F27E24C /* FIRUser_Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 4C46FD680D471DE9583EB8462F8077E0 /* FIRUser_Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 4DB74BA67133DABDBBEA06D6CAA84400 /* FIREmailLinkSignInResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = C8DC72B67236FE29F3D8728B02665927 /* FIREmailLinkSignInResponse.m */; }; + 4DE112CADBE67AF755A329A37E015B19 /* leveldb-library-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = EE78392C8BAF863D7E3378CEB3256B53 /* leveldb-library-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 4E14E0EFA7E24C8F1358938D2FBD2342 /* FIRUserInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 3363F73C45183AA1BF9BDFFAF760A816 /* FIRUserInfo.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 4E9D83D9D4AB6F5C97947A10C88849AD /* FIREmailAuthProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = 1575BDC8A44D345110381020E5A4D9D4 /* FIREmailAuthProvider.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 4ED8EAFC50973087BF2FD82F42F51927 /* FTuplePathValue.m in Sources */ = {isa = PBXBuildFile; fileRef = 128321EB1AAE6BC36CA4C01CE6C4EB68 /* FTuplePathValue.m */; }; + 4EDD0741723B7698A49018C0F58BF057 /* YMTGetDeviceName.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9B994AACC237C8237D8EC966A01A5CD0 /* YMTGetDeviceName.swift */; }; + 4F9BAC895831F59C1C87BF85FE83417F /* FEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = C850DE357FE20D83A24CF35AA8C9FBD7 /* FEvent.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 4F9E9EF65CB8E735FF07096C03C8E552 /* RLMObject_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 13A0DFB91F5EBB15E52FAD0BCC8F0D6B /* RLMObject_Private.h */; }; + 50680A102BA5CE8A3D171E1041D720A9 /* external_commit_helper.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F1E6130103C2603AE95565CA88C72C7A /* external_commit_helper.cpp */; settings = {COMPILER_FLAGS = "-DREALM_HAVE_CONFIG -DREALM_COCOA_VERSION='@\"3.17.3\"' -D__ASSERTMACROS__ -DREALM_ENABLE_SYNC"; }; }; + 5076ACB270A7DE2A04F8091917E9BFC9 /* FIRConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = BC40C66BD83DECB298E2743CB33068FB /* FIRConfiguration.m */; }; + 50F1E00B4C3A7470121B4FD4993C25B2 /* FIRSecureTokenResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 38E5895CFB3AA2C62927A8566D4688AC /* FIRSecureTokenResponse.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 51AE623FACAC8C0C7207D1EF9ECBCEA0 /* FTupleBoolBlock.h in Headers */ = {isa = PBXBuildFile; fileRef = C13170C2475D2B45CEBCBF43AFC370E9 /* FTupleBoolBlock.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 51C11E9AAC8A4286D01BC577C6171030 /* FTupleSetIdPath.h in Headers */ = {isa = PBXBuildFile; fileRef = 063868A7238E402A87C1FA6918D34928 /* FTupleSetIdPath.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 51D2A2EA65E0C91A4E7972C91209BFEF /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0781231D907887B1D7DF0E005F108FF7 /* Foundation.framework */; }; + 51F77471D615A71E990A40083999E363 /* FIRSecureTokenRequest.m in Sources */ = {isa = PBXBuildFile; fileRef = EF0F1B2565A2FD3D55B18F997286577A /* FIRSecureTokenRequest.m */; }; + 52B80DEDCD7B545AB78AA1146BA4CE2A /* FIRRetryHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = 6B278F87F04C5AB3C4A75C6668BBFBCF /* FIRRetryHelper.m */; }; + 52D1E98FE881863378F5E0CC12E72BE7 /* RLMCollection_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = BEFBB7C830DDC83D80AD2F74F3EBA126 /* RLMCollection_Private.h */; }; 530EC7E20DB092A84F13DFAF89701619 /* Realm.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9E8DC05D460737D52C44DF9E4CE31A70 /* Realm.framework */; }; - 5393FECDEA4955E523BDAFFD9ED07EBC /* FUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = C02827617ADFCC7B76ECFD4A586D4CE4 /* FUtilities.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 53CECFA59A5B245E70074845D4780B9E /* FKeepSyncedEventRegistration.h in Headers */ = {isa = PBXBuildFile; fileRef = 33708D4C6B415884B8D564FE3E539048 /* FKeepSyncedEventRegistration.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 54F084CA1A6FCA5878B5B017B585A1B7 /* FSnapshotUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 0377DDD8FA2E69276B2741A5A55C1E95 /* FSnapshotUtilities.m */; }; - 5597DEC5A26E41DDC9AD5B0C63F30822 /* FSyncTree.h in Headers */ = {isa = PBXBuildFile; fileRef = 8A182903ADBE84DBC8D9404EC7E37BC3 /* FSyncTree.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 55E8E81546A77ECC6ED61BB0975EDE1A /* mutexlock.h in Headers */ = {isa = PBXBuildFile; fileRef = A954D946069AAC616E37E3600F91D0EE /* mutexlock.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 55EB4BD5AA489C1B932393E9CD151E6F /* FPriorityIndex.m in Sources */ = {isa = PBXBuildFile; fileRef = 98BC557003393E5B6A222C403A5E06FE /* FPriorityIndex.m */; }; - 55F467EEDA0C8D8A3E5F857A534D0116 /* FIRInstanceIDBackupExcludedPlist.m in Sources */ = {isa = PBXBuildFile; fileRef = 62F769A62377AE074D83BF833BDCEC4B /* FIRInstanceIDBackupExcludedPlist.m */; }; - 57111B91E454A1307A836BE4A468F962 /* FIRInstanceIDURLQueryItem.m in Sources */ = {isa = PBXBuildFile; fileRef = 8D4ABB7A14D42E4D4BAEF3596AA2CC1C /* FIRInstanceIDURLQueryItem.m */; }; - 572D63DEB6D5CE940424A804F3BACEDF /* FIndex.m in Sources */ = {isa = PBXBuildFile; fileRef = 694F140A39301B31EFDB6F309BBA679A /* FIndex.m */; }; - 575D249D39C78A685FB26CB1C93346AC /* RLMAccessor.h in Copy . Private Headers */ = {isa = PBXBuildFile; fileRef = 96D7B586A22D0FDF6C502794CD097BB2 /* RLMAccessor.h */; }; - 58624A6EE6756DEB49C91296E485EABD /* thread_annotations.h in Headers */ = {isa = PBXBuildFile; fileRef = 91C18286D15353ED3C01C3ED4A05D208 /* thread_annotations.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 59021531A88C5EADB9A936E3DE80BF7E /* RLMSyncUser.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F0030D3F3857B4FD841715519213499 /* RLMSyncUser.h */; }; - 59204B221518A61CC5194E7A712A7064 /* sync_session.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 61A8B72D704CBD8227ED3877697FF6C1 /* sync_session.cpp */; settings = {COMPILER_FLAGS = "-DREALM_HAVE_CONFIG -DREALM_COCOA_VERSION='@\"3.17.3\"' -D__ASSERTMACROS__ -DREALM_ENABLE_SYNC"; }; }; - 599FED6060274B5F71E088500A84E5B5 /* FTupleNodePath.h in Headers */ = {isa = PBXBuildFile; fileRef = 1C45751A5BA07489251DF56FA3C434A4 /* FTupleNodePath.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 59C1A5BCD90F5014BB332BE28207B49E /* FLeafNode.h in Headers */ = {isa = PBXBuildFile; fileRef = EDD95CB096AB50883B64E3CC5BAFFD18 /* FLeafNode.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 5A1F765155A4BD2A3A7A12DE2ED89727 /* db_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 54594BC3ECF721AE29252010C2CD5A87 /* db_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 5A47B09C86EE1E3AC3ABE08A52C6A280 /* FSnapshotHolder.m in Sources */ = {isa = PBXBuildFile; fileRef = 81EDD38A0060B334DEA96CA47D652562 /* FSnapshotHolder.m */; }; - 5A7722B38AD640648077066AE9DD4579 /* FIRApp.h in Headers */ = {isa = PBXBuildFile; fileRef = B5D6FA8C66D85AB30DE497D5E4747D0E /* FIRApp.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 5B6D92BC9A212E010B1DD36E6EAF5816 /* FIROptionsInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = F170D44A0009688D7CD2744A00CD1C0A /* FIROptionsInternal.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 5CE63A0A83E8178DD30757AF9FDB4A21 /* FirebaseInstanceID-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = D0269142D09862C6237479D4D5F1D535 /* FirebaseInstanceID-dummy.m */; }; - 5D574DE590E3828C62C092888E7BD04E /* FListenProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = 92EB02F6240A5D7F8BB826B9D700C38F /* FListenProvider.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 5E18C465C2F38DE6437599199415EA6A /* object_notifier.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 77B4B9F1A58E8CB4ECDD87BC6B7E1A5C /* object_notifier.cpp */; settings = {COMPILER_FLAGS = "-DREALM_HAVE_CONFIG -DREALM_COCOA_VERSION='@\"3.17.3\"' -D__ASSERTMACROS__ -DREALM_ENABLE_SYNC"; }; }; - 5E2CAB2BFF770FB45251BE3DE5B0525A /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0CCB3D4218A4B964440ADC5F707063C9 /* SystemConfiguration.framework */; }; - 5EBE509B62EC6ED972B747240326E420 /* FImmutableTree.m in Sources */ = {isa = PBXBuildFile; fileRef = EFE335DC5B8FCE0CE211BB9D7AC93D2D /* FImmutableTree.m */; }; - 5FC48233A9A091A5AD41F48C246425B6 /* FTupleObjects.m in Sources */ = {isa = PBXBuildFile; fileRef = 3228708E5B58D25AAB313EA309F84449 /* FTupleObjects.m */; }; - 604A6E676D3E9F0B60D498B29087440F /* FListenComplete.h in Headers */ = {isa = PBXBuildFile; fileRef = CB0C08D683CB74133843957838435D95 /* FListenComplete.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 614CE4573B0907EFF220820EC4ABAAB8 /* RLMPredicateUtil.mm in Sources */ = {isa = PBXBuildFile; fileRef = FE0D276AFD1DA80923B78F332D3CCDA0 /* RLMPredicateUtil.mm */; settings = {COMPILER_FLAGS = "-DREALM_HAVE_CONFIG -DREALM_COCOA_VERSION='@\"3.17.3\"' -D__ASSERTMACROS__ -DREALM_ENABLE_SYNC"; }; }; - 61AACF7D778FB8C863D23AF6BE47428C /* FIRErrors.m in Sources */ = {isa = PBXBuildFile; fileRef = A9C1EA42FABA879D36D4C65391FF08D3 /* FIRErrors.m */; }; - 62BBCD55C73E582B75FA15837CE764F0 /* RLMSyncConfiguration_Private.h in Copy . Private Headers */ = {isa = PBXBuildFile; fileRef = A7787FE428147EE7C12C5F94C299406A /* RLMSyncConfiguration_Private.h */; }; - 62BC8EE3772D71C39FB6F17E0C02FDB5 /* FLLRBEmptyNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 83CB9A5B9D8361C11A6AECBE0F8232B4 /* FLLRBEmptyNode.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 63A29BF842C6183B5B1E9E66CC53BA5C /* NSError+RLMSync.h in Headers */ = {isa = PBXBuildFile; fileRef = E0EAE40F22B9636DEA4D7400330F2622 /* NSError+RLMSync.h */; }; - 63A6EF89158BA0342A88A70BCDB53F0C /* FirebaseDatabase-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 486A4C9FC893D0234AB58A405C818C98 /* FirebaseDatabase-dummy.m */; }; - 63B0EC6CAC90CEFAC78E8A5D3B9E6E98 /* FIROptions.h in Headers */ = {isa = PBXBuildFile; fileRef = EB1E7E0D62BED5CF76CB85CADCDD4976 /* FIROptions.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 640B42CA70E9ABF7F582CB9E0CFDAED1 /* FServerValues.m in Sources */ = {isa = PBXBuildFile; fileRef = 87C85E96D635FCAE4D9AE6E75721DDFD /* FServerValues.m */; }; - 641CAB751A57A733817D57461845D6AA /* options.h in Headers */ = {isa = PBXBuildFile; fileRef = 47B7F04C40333858D84A0FBCB76E331E /* options.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 6465A5A987FAE40B74C9CF3B550801B3 /* GULNSData+zlib.m in Sources */ = {isa = PBXBuildFile; fileRef = ABA4AD7A43DEC81F10C2FF0F2DD9B30C /* GULNSData+zlib.m */; }; - 648F04177C4BC891109B92714CE3463D /* arena.cc in Sources */ = {isa = PBXBuildFile; fileRef = 3DFAA0F16D1348D8C2B1658D9FEEBA6F /* arena.cc */; settings = {COMPILER_FLAGS = "-DOS_MACOSX -DLEVELDB_PLATFORM_POSIX -fno-objc-arc"; }; }; - 657237B8B4F32B13EDF3F4C2DC948AB2 /* FTupleRemovedQueriesEvents.m in Sources */ = {isa = PBXBuildFile; fileRef = DECAFEFD54355961D884C28EFB32AB6C /* FTupleRemovedQueriesEvents.m */; }; - 6573DD72CD06404672E18390A2602965 /* FStringUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = B2B9E5A00C7EB75B2E5B9C70F8A3F5C2 /* FStringUtilities.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 6595BA905B0AABEB781AEC9D767E3E7B /* FIRNoopAuthTokenProvider.m in Sources */ = {isa = PBXBuildFile; fileRef = B21649DAB208CD435F380FE208887827 /* FIRNoopAuthTokenProvider.m */; }; - 665633ABBD58BB3047C3CAEBBDA8BD87 /* version_edit.cc in Sources */ = {isa = PBXBuildFile; fileRef = 4DCEFEF627F0A21FD0FBFA3A901ABD16 /* version_edit.cc */; settings = {COMPILER_FLAGS = "-DOS_MACOSX -DLEVELDB_PLATFORM_POSIX -fno-objc-arc"; }; }; - 66D7DE4033C45513046A77C2D9AF9051 /* FIRAppAssociationRegistration.h in Headers */ = {isa = PBXBuildFile; fileRef = F223C5E7C9503F5B2EF5BE4BE2F6B569 /* FIRAppAssociationRegistration.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 67678431D3A6F33137299F4DFF8C163B /* FIRComponentContainer.m in Sources */ = {isa = PBXBuildFile; fileRef = 43651A7A75597B228F098861DBC219A6 /* FIRComponentContainer.m */; }; - 681D0D7ABD4EEF662BBAAE52BE68C38A /* index_set.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BF86AAC42DF8F3CD8DC22A4D7C2A61EE /* index_set.cpp */; settings = {COMPILER_FLAGS = "-DREALM_HAVE_CONFIG -DREALM_COCOA_VERSION='@\"3.17.3\"' -D__ASSERTMACROS__ -DREALM_ENABLE_SYNC"; }; }; - 683F3AB4D4B5562CB7B72B6D7EA4BF3D /* dbformat.h in Headers */ = {isa = PBXBuildFile; fileRef = EFA876E4747BF8F66B3330D12C6A19EE /* dbformat.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 68891E63B5F1AD4EE23A3AD4C789DE4E /* write_batch.cc in Sources */ = {isa = PBXBuildFile; fileRef = B56350CA13386B3EDDF4C194E49F7121 /* write_batch.cc */; settings = {COMPILER_FLAGS = "-DOS_MACOSX -DLEVELDB_PLATFORM_POSIX -fno-objc-arc"; }; }; - 6916DB010C26CB84795B779931BCC477 /* FNode.h in Headers */ = {isa = PBXBuildFile; fileRef = E25D56E2AE9DF5D7E8862DDD3EA38BBC /* FNode.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 69ADB70566C8C4702F74025C890DE9F9 /* histogram.cc in Sources */ = {isa = PBXBuildFile; fileRef = 288231BE0CA63DA6DBCB712EEED7FA93 /* histogram.cc */; settings = {COMPILER_FLAGS = "-DOS_MACOSX -DLEVELDB_PLATFORM_POSIX -fno-objc-arc"; }; }; - 69D81130D8B7B9D7748BC1A9A8FD268D /* FImmutableSortedDictionary.h in Headers */ = {isa = PBXBuildFile; fileRef = 1657E98838AEFEC85EE8EC91FE676CEF /* FImmutableSortedDictionary.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 69F1F21E8FB2AD9011E8158993F26E08 /* RLMSyncPermissionResults.mm in Sources */ = {isa = PBXBuildFile; fileRef = C85318A5572C789B14E88E04BC7C5B17 /* RLMSyncPermissionResults.mm */; settings = {COMPILER_FLAGS = "-DREALM_HAVE_CONFIG -DREALM_COCOA_VERSION='@\"3.17.3\"' -D__ASSERTMACROS__ -DREALM_ENABLE_SYNC"; }; }; - 6AB120FD903157BB8F1DC639534E3B4E /* RLMObjectStore.mm in Sources */ = {isa = PBXBuildFile; fileRef = 39468BF6D2F36C7C55A25207EFAA8400 /* RLMObjectStore.mm */; settings = {COMPILER_FLAGS = "-DREALM_HAVE_CONFIG -DREALM_COCOA_VERSION='@\"3.17.3\"' -D__ASSERTMACROS__ -DREALM_ENABLE_SYNC"; }; }; - 6AEB7CAD2CD0A97198B8985167A78184 /* format.cc in Sources */ = {isa = PBXBuildFile; fileRef = 6D78BA6A29CBA8D77405C6D5EA97EBF6 /* format.cc */; settings = {COMPILER_FLAGS = "-DOS_MACOSX -DLEVELDB_PLATFORM_POSIX -fno-objc-arc"; }; }; - 6B32D1AA07C83B4EC4583C10F922DBB2 /* two_level_iterator.h in Headers */ = {isa = PBXBuildFile; fileRef = 4F302E9739C8CBFB76BCACDF6AA11384 /* two_level_iterator.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 6B4D5A61549502A1A5A033028F44FB03 /* FEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = F1A346D79A9034136582F63EFD3EB351 /* FEvent.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 6B68AF03C74656AAC471724C600AF799 /* RLMArray.h in Copy . Public Headers */ = {isa = PBXBuildFile; fileRef = 07494D9319896DC230E1E6E753B2057D /* RLMArray.h */; }; - 6C4A33C73EC1DF7E5DD4B0D0194985FC /* hash.cc in Sources */ = {isa = PBXBuildFile; fileRef = 486CBCA5F01350802AD975849019BE61 /* hash.cc */; settings = {COMPILER_FLAGS = "-DOS_MACOSX -DLEVELDB_PLATFORM_POSIX -fno-objc-arc"; }; }; - 6CB0FB8CDEBA44EA97F54C01AC1D5EA3 /* FConnection.h in Headers */ = {isa = PBXBuildFile; fileRef = DA6636537C30A4AB828E1936648CBDF7 /* FConnection.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 6CB1633C99EB08C62B0EEBB2FCC37928 /* FIRTransactionResult.h in Headers */ = {isa = PBXBuildFile; fileRef = DD227D6A09345E978BED5BDFCE2AF31A /* FIRTransactionResult.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 6CDAFF065BD8A6ADE3ADC77B2D55910B /* dumpfile.cc in Sources */ = {isa = PBXBuildFile; fileRef = AC107BA1A8279B39F9D35818356DDC0C /* dumpfile.cc */; settings = {COMPILER_FLAGS = "-DOS_MACOSX -DLEVELDB_PLATFORM_POSIX -fno-objc-arc"; }; }; - 6D01C98859956F431A1A5A8F4935618D /* log_writer.cc in Sources */ = {isa = PBXBuildFile; fileRef = 254D15F0BED38402FA64F2CE897BD30D /* log_writer.cc */; settings = {COMPILER_FLAGS = "-DOS_MACOSX -DLEVELDB_PLATFORM_POSIX -fno-objc-arc"; }; }; - 6DC14A98DA70552D1F41941379E1C12F /* FPath.h in Headers */ = {isa = PBXBuildFile; fileRef = 91177B2C1BF38D47F96DBEAA6C4CAE9F /* FPath.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 6E2345265634FAF934516FC941A5EC4E /* object_store.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 483464A3244B7A27FCE5CFE8C8B32C56 /* object_store.cpp */; settings = {COMPILER_FLAGS = "-DREALM_HAVE_CONFIG -DREALM_COCOA_VERSION='@\"3.17.3\"' -D__ASSERTMACROS__ -DREALM_ENABLE_SYNC"; }; }; - 6E3ABB910E00E401B0DD252DA094AA9D /* RLMObjectBase_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = B327834213EA2CFC6D5EC9C13EF7BDC6 /* RLMObjectBase_Private.h */; }; - 6E825F74A8483ED71BC56E49623D82AF /* leveldb-library-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 908EE5E0CDF43673D9D5118565302B27 /* leveldb-library-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 6EC0A404C503642B9540E4D86DE133DC /* FChildrenNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 3D9B75AAAF457BEDD93B15CC2445F03E /* FChildrenNode.m */; }; - 6F318885B392F65A5B1ABE15D11E5E54 /* FOverwrite.h in Headers */ = {isa = PBXBuildFile; fileRef = B53AF1C2D84F65BD0ADB7381E127554D /* FOverwrite.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 6F53DEEC73A0B0613D86DF003E28CF6D /* FEventRaiser.m in Sources */ = {isa = PBXBuildFile; fileRef = 21AFDDA117E511A3402F681BF627D41D /* FEventRaiser.m */; }; - 6FEF41DE89B6CEFB2DBEF80A9AC7156A /* nanopb-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = FD108C2E1B33C5F684030636825D9779 /* nanopb-dummy.m */; }; - 708B6BACBCA8822078071F2D56875615 /* arena.h in Headers */ = {isa = PBXBuildFile; fileRef = E6D7E4600AC09D13EA4BAABBB5A41DF8 /* arena.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 70AD94B7C775E0EBA01CD2A9C6B3ECE2 /* sync_metadata.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E060BE00308AB7327E6FCDBD68637C67 /* sync_metadata.cpp */; settings = {COMPILER_FLAGS = "-DREALM_HAVE_CONFIG -DREALM_COCOA_VERSION='@\"3.17.3\"' -D__ASSERTMACROS__ -DREALM_ENABLE_SYNC"; }; }; - 70BCE5BACB52D99796645EE3A451B783 /* Object.swift in Sources */ = {isa = PBXBuildFile; fileRef = 367FC09A1CDE1772FA3C07D07C9EBFDD /* Object.swift */; }; - 711F328A420EA8F145A6DD9892583604 /* dbformat.cc in Sources */ = {isa = PBXBuildFile; fileRef = 6407733308EDDEA57E305164F4C21FFF /* dbformat.cc */; settings = {COMPILER_FLAGS = "-DOS_MACOSX -DLEVELDB_PLATFORM_POSIX -fno-objc-arc"; }; }; - 7284B96124EB53659E5A38AB5BFD20F7 /* FCacheNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 392BC607F30B1432035F81920C54708B /* FCacheNode.m */; }; - 7286264FC0A5E019FEABDCEAEAB8B3D2 /* FIRInstanceIDKeychain.h in Headers */ = {isa = PBXBuildFile; fileRef = 4D650E035292728FB6762A033D55D90E /* FIRInstanceIDKeychain.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 72E7BB1C714620C56A727A1A738E407E /* FAuthTokenProvider.m in Sources */ = {isa = PBXBuildFile; fileRef = 03D8E809717EA857929080A649048E9A /* FAuthTokenProvider.m */; }; - 7317B7F1DFE34E13DD05E12C850C8E07 /* FAckUserWrite.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D8271AC3A1562894E9BBA64D08E59E0 /* FAckUserWrite.m */; }; - 733AAF70FA2B5DDC0CD79A50F9C3F6A7 /* FNextPushId.m in Sources */ = {isa = PBXBuildFile; fileRef = A9A562BB6C6729A8501A16A3E398F8AC /* FNextPushId.m */; }; - 735501937719350BBE1C05E37ED35245 /* cache.h in Headers */ = {isa = PBXBuildFile; fileRef = CE9076D2CAC3B5B43EB2296148146AC6 /* cache.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 73F18C354CA89D79D302A0817D8D62E7 /* FCompoundWrite.m in Sources */ = {isa = PBXBuildFile; fileRef = 53BD8835502113C574C389F5F72FDF16 /* FCompoundWrite.m */; }; - 741C03033F309FB2142079B2717CFF3D /* FIRInstanceIDLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E3982B4A4CB2A959FEFE70C317ABBC0 /* FIRInstanceIDLogger.m */; }; - 74539FCF34ADA67ED8CA7CFAB2ABF861 /* RLMSyncManager.h in Copy . Public Headers */ = {isa = PBXBuildFile; fileRef = 2A93CA792659C6696C79342357059587 /* RLMSyncManager.h */; }; - 74B26298C53292901BDABE21139B96F7 /* filter_block.cc in Sources */ = {isa = PBXBuildFile; fileRef = E87085B271DE4E3CA9D2160D5965A6A4 /* filter_block.cc */; settings = {COMPILER_FLAGS = "-DOS_MACOSX -DLEVELDB_PLATFORM_POSIX -fno-objc-arc"; }; }; - 74DDFA35D83DAE10FE63680F4CFAEE64 /* FIRBundleUtil.m in Sources */ = {isa = PBXBuildFile; fileRef = B071D3FE29E413E7ABBBA61B6E5971EC /* FIRBundleUtil.m */; }; - 758E76A0B104032E0845A1BE67313B63 /* pb_encode.c in Sources */ = {isa = PBXBuildFile; fileRef = 71C3B1AD58B91309FE32954E2674450A /* pb_encode.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc -fno-objc-arc"; }; }; - 75E6FAB9FB0C583F6D775936DA797569 /* RLMObjectBase_Dynamic.h in Headers */ = {isa = PBXBuildFile; fileRef = 245AEE12E9DD59A61D7FB118B8520137 /* RLMObjectBase_Dynamic.h */; }; - 772DE42A9C5A47247E8D29118F0F1618 /* FParsedUrl.h in Headers */ = {isa = PBXBuildFile; fileRef = 88A4F67DE1A86BC644DF0C48A938B7BD /* FParsedUrl.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 79120D7382A3564038E796B8872271AC /* Property.swift in Sources */ = {isa = PBXBuildFile; fileRef = 790E6D42214C2EC39D767F3CEBE0D7B9 /* Property.swift */; }; - 7924CB64C9AFC6A4FB9E4C34DB141B59 /* list.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 22C7E12BCB53FE4ED89AEFABE4229ADD /* list.cpp */; settings = {COMPILER_FLAGS = "-DREALM_HAVE_CONFIG -DREALM_COCOA_VERSION='@\"3.17.3\"' -D__ASSERTMACROS__ -DREALM_ENABLE_SYNC"; }; }; - 7950EEDA3F8DB3450295A15830219E5B /* db_impl.cc in Sources */ = {isa = PBXBuildFile; fileRef = 7F05C8D80949A3129C0089DFF2EE9478 /* db_impl.cc */; settings = {COMPILER_FLAGS = "-DOS_MACOSX -DLEVELDB_PLATFORM_POSIX -fno-objc-arc"; }; }; - 79C2937BB9C843004E552AC86CA18351 /* FSparseSnapshotTree.h in Headers */ = {isa = PBXBuildFile; fileRef = CE7E7363C8FCB3A0EDFFA7EB43B370B3 /* FSparseSnapshotTree.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 79C9EC9876F6E009EA8231E31C1766C8 /* histogram.h in Headers */ = {isa = PBXBuildFile; fileRef = 4F423D73A7D310CD1CBBD58AD48A9EEC /* histogram.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 79D93E5E4C97043AE3FED866FC73A6AE /* filter_policy.h in Headers */ = {isa = PBXBuildFile; fileRef = 31800C2488B08FF45979A152907DF412 /* filter_policy.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 7A5FD87D45CAD8F66924C764150A2008 /* RLMUtil.mm in Sources */ = {isa = PBXBuildFile; fileRef = A74BE1C3B38E191CFE615E651EB7BE2A /* RLMUtil.mm */; settings = {COMPILER_FLAGS = "-DREALM_HAVE_CONFIG -DREALM_COCOA_VERSION='@\"3.17.3\"' -D__ASSERTMACROS__ -DREALM_ENABLE_SYNC"; }; }; - 7A60B0EF77D62E4ED6A672FB23C175BF /* RLMSyncPermission.h in Headers */ = {isa = PBXBuildFile; fileRef = B97D20AB8D7A1D8E6A813743AE731ECB /* RLMSyncPermission.h */; }; - 7B4CE5C84161E2BFE477F42DFD634382 /* SwiftyJSON.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47D78AA3536A7E72F9E0CCBBB0289C6B /* SwiftyJSON.swift */; }; - 7BCD85EDCD620F98A99D75A3BBA4CDA7 /* RLMRealm_Private.h in Copy . Private Headers */ = {isa = PBXBuildFile; fileRef = 111A5A6ED76A0D9FF9C46BA259A8C94E /* RLMRealm_Private.h */; }; - 7BF5C0177D0DBD22916AAA3A64A4D360 /* NSError+FIRInstanceID.h in Headers */ = {isa = PBXBuildFile; fileRef = 4BBC90E46D2D567A9C5DB776BC55647B /* NSError+FIRInstanceID.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 7C30E432CD5CDDA965933F169A29B028 /* async_open_task.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69D541F5C1FEFAB528298D80DA53DD16 /* async_open_task.cpp */; settings = {COMPILER_FLAGS = "-DREALM_HAVE_CONFIG -DREALM_COCOA_VERSION='@\"3.17.3\"' -D__ASSERTMACROS__ -DREALM_ENABLE_SYNC"; }; }; - 7C86A204BA12336790C942D4BB33B6AC /* port_example.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BB3D4CC8A0C10310703AA55D8015BA9 /* port_example.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 7C987D1A3273BE0263F4A042E6FA4C9D /* pb_decode.c in Sources */ = {isa = PBXBuildFile; fileRef = B8E7B3DDFD971E4411F95C63DC91781D /* pb_decode.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc -fno-objc-arc"; }; }; - 7CC7F71286CFFEB9CBF248533FD85AA5 /* FIRInstanceIDKeyPairStore.m in Sources */ = {isa = PBXBuildFile; fileRef = 1CAF821104A3EE66A918096C98AF7BE9 /* FIRInstanceIDKeyPairStore.m */; }; - 7D73FA27D8DB6464DD055F7FF0AFF9F0 /* FIROptions.m in Sources */ = {isa = PBXBuildFile; fileRef = 605C8CBA2775EE42C197990788F44817 /* FIROptions.m */; }; - 7D821C302B7F3FD0322BA2B1F625C9C3 /* FIRInstanceIDTokenInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = DDE6548B905AB6BED00509498E3AC5FF /* FIRInstanceIDTokenInfo.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 7DF72EB06D10A634E886FFD6DC007E8F /* uuid.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 181FDD035B4B0C5DB394ECB1E11AF002 /* uuid.cpp */; settings = {COMPILER_FLAGS = "-DREALM_HAVE_CONFIG -DREALM_COCOA_VERSION='@\"3.17.3\"' -D__ASSERTMACROS__ -DREALM_ENABLE_SYNC"; }; }; - 7E5BE70443E370E84BECD288D939F429 /* FTupleTSN.m in Sources */ = {isa = PBXBuildFile; fileRef = ECDD3C59A0A1254B266D120502DBEE26 /* FTupleTSN.m */; }; - 7F170BA72C35DCF119134104398EFB11 /* FPruneForest.h in Headers */ = {isa = PBXBuildFile; fileRef = D01A95439B21FE07165AFA82B22A38BD /* FPruneForest.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 80261D5A40ADEB130CC0BE4956D72117 /* GULSwizzler.m in Sources */ = {isa = PBXBuildFile; fileRef = 141026FF3EBFBFECB80FC18937BA4BC6 /* GULSwizzler.m */; }; - 805B6A4102FE11758BCB2EEE030879C5 /* GULAppDelegateSwizzler.m in Sources */ = {isa = PBXBuildFile; fileRef = BCCCE66A2B27DF53585DF23808DE6B7F /* GULAppDelegateSwizzler.m */; }; - 806247B7A3B2AF97C0063199E886852E /* collection_change_builder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 169690598F4F35B5A48BC5DC8FA3CD14 /* collection_change_builder.cpp */; settings = {COMPILER_FLAGS = "-DREALM_HAVE_CONFIG -DREALM_COCOA_VERSION='@\"3.17.3\"' -D__ASSERTMACROS__ -DREALM_ENABLE_SYNC"; }; }; - 809950B1A7F2690C9BCE49DBE9DE541F /* log_writer.h in Headers */ = {isa = PBXBuildFile; fileRef = B1FE488050874954E1F8A35B399F9245 /* log_writer.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 8242A72F4B8C8E1C114E482B4541E20F /* GULLoggerLevel.h in Headers */ = {isa = PBXBuildFile; fileRef = 4FAE6D1A1E91ED0984156C20CB37B099 /* GULLoggerLevel.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 82652DD5B9BEB56F0207113EBA8CC371 /* FIRLogger.h in Headers */ = {isa = PBXBuildFile; fileRef = 86A048EF5F83CC152DE3FAE1AE8047A2 /* FIRLogger.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 828B14F9B993C8934105AE961047BDEA /* Realm.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A2481DACFF8B25080AC675078AA9854 /* Realm.h */; }; - 829814BE01FA7E3C0799BB792436F57B /* FIRErrorCode.h in Headers */ = {isa = PBXBuildFile; fileRef = 3DF61F0A3188A0CDD2831F96085441DA /* FIRErrorCode.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 82AF3B6AA1FC7603AD8734A8BF6F8943 /* RLMResults_Private.h in Copy . Private Headers */ = {isa = PBXBuildFile; fileRef = 555A139457E8AA4030271B5DB035C1CC /* RLMResults_Private.h */; }; - 82E23046F043EDDE41FF879C5E81CB2A /* FIRDatabaseQuery_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 53C097CBB058BD81846287E3694EBF2B /* FIRDatabaseQuery_Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 8345E22232C0ECDDDE2AFBF1206D3377 /* FIRInstanceIDAuthService.h in Headers */ = {isa = PBXBuildFile; fileRef = 2234724A5F7687743151FFE0F29C8F54 /* FIRInstanceIDAuthService.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 837F123E1D3D153241B30313B5DE3711 /* RLMRealmUtil.mm in Sources */ = {isa = PBXBuildFile; fileRef = A20EB07A8D79B5E5268EDD89188267B3 /* RLMRealmUtil.mm */; settings = {COMPILER_FLAGS = "-DREALM_HAVE_CONFIG -DREALM_COCOA_VERSION='@\"3.17.3\"' -D__ASSERTMACROS__ -DREALM_ENABLE_SYNC"; }; }; - 83DB6D64D2B864D383494E030E9302D7 /* FIRInstanceIDStringEncoding.m in Sources */ = {isa = PBXBuildFile; fileRef = 8931F5A3DF99DA2FCFF69A197DDB7176 /* FIRInstanceIDStringEncoding.m */; }; - 844C9668394CDDC2D9964B54F856A55A /* RLMListBase.h in Copy . Public Headers */ = {isa = PBXBuildFile; fileRef = AAFA7E75C9A5878917AA505C0CB45F70 /* RLMListBase.h */; }; - 845714625E3473FE314FFC542B720ACE /* FNextPushId.h in Headers */ = {isa = PBXBuildFile; fileRef = A9070054AB139029FDD2E0670A0318DC /* FNextPushId.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 84918A8266FE7D4C57625AE0E03CC287 /* FIRInstanceIDCheckinService.h in Headers */ = {isa = PBXBuildFile; fileRef = E2EDCBDB6DDAEEE2C14318AEB855E9E5 /* FIRInstanceIDCheckinService.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 85153BBBFAE458AEE15494A9B301664A /* port_posix.h in Headers */ = {isa = PBXBuildFile; fileRef = 951721F056BC808FE1FB0CC2A0D370FD /* port_posix.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 533C4A91650B5459EF9468F42B05C413 /* FIRInstanceIDStore.h in Headers */ = {isa = PBXBuildFile; fileRef = 4AE0A71A51049A0E47078626C0441792 /* FIRInstanceIDStore.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 5373800535FE8D5CDE1968DF449C2626 /* table.h in Headers */ = {isa = PBXBuildFile; fileRef = 04FFD5CBFD7BCCBCCD66E9BCD51A2E0B /* table.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 53780852A4A34C511566DC4441AB6BE5 /* FIRAdditionalUserInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 3C250A1012E94B50B941142D6A25706B /* FIRAdditionalUserInfo.m */; }; + 539EF0D9521DFE4E633F5733379D0E93 /* FNamedNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 6012B7E1E8E560B653653AEACAF1CFC3 /* FNamedNode.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 53ACE58E2DA0301258CD8148356594E3 /* GULSwizzler.m in Sources */ = {isa = PBXBuildFile; fileRef = EACFC133A569E8874D71BB324BE66FA4 /* GULSwizzler.m */; }; + 542837C8418FF262A9A75445CA5548CC /* table_cache.cc in Sources */ = {isa = PBXBuildFile; fileRef = FF7A42D6EDFEFF83540F9E8A78ED2AA1 /* table_cache.cc */; settings = {COMPILER_FLAGS = "-DOS_MACOSX -DLEVELDB_PLATFORM_POSIX -fno-objc-arc"; }; }; + 543E1B896FD5E66850D9D7976B11A562 /* FIRPhoneAuthCredential.m in Sources */ = {isa = PBXBuildFile; fileRef = 09A324045A31C8ADF8BB77597A9D589D /* FIRPhoneAuthCredential.m */; }; + 54FEAB0348B08D2F4282EB2FC0DE92E4 /* FIRBundleUtil.m in Sources */ = {isa = PBXBuildFile; fileRef = A26B1BF3D3D1CA8C963F3BAEDE9B752D /* FIRBundleUtil.m */; }; + 552E582321E724826A6D944C241166C2 /* GTMSessionFetcherLogging.h in Headers */ = {isa = PBXBuildFile; fileRef = 59E69C641B211AAF5A6680C1C3BC60D9 /* GTMSessionFetcherLogging.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 55587186083287C9DA985EB3676DA098 /* GULNSData+zlib.m in Sources */ = {isa = PBXBuildFile; fileRef = E6EDE7AD67976782F91B7CBB7F5E23AF /* GULNSData+zlib.m */; }; + 556867899DA891E89B8D04266121447D /* FIRServerValue.h in Headers */ = {isa = PBXBuildFile; fileRef = 63D97D80C930841A5BBB075B1043EEE6 /* FIRServerValue.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 5599937439BC55249E9D44283A20D696 /* FIRDeleteAccountResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 195F74E43FBD60AA31200764EAC912DC /* FIRDeleteAccountResponse.m */; }; + 55CB060CA3C5D3F753714F71D2732C05 /* FTupleTransaction.m in Sources */ = {isa = PBXBuildFile; fileRef = A8FA9E569B39A1DE8F0763FCCEA2BB7B /* FTupleTransaction.m */; }; + 55F97A811880E92E60ACDA33166F0669 /* FIRSignUpNewUserResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = BB9E2AED6FBD522A2CE5F863C5F5514A /* FIRSignUpNewUserResponse.m */; }; + 5664F796AC7372ED685E2925BBDB574F /* FIRSignInWithGameCenterRequest.h in Headers */ = {isa = PBXBuildFile; fileRef = 7F92614552A752024142C08FA27BFB18 /* FIRSignInWithGameCenterRequest.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 570188467191984AAFED1D7265ADAB70 /* FPathIndex.m in Sources */ = {isa = PBXBuildFile; fileRef = 8C67FC0A26ABE274C1B65C10C955EEA9 /* FPathIndex.m */; }; + 575D249D39C78A685FB26CB1C93346AC /* RLMAccessor.h in Copy . Private Headers */ = {isa = PBXBuildFile; fileRef = 112C9645A6188F09F438B736FC62A9C2 /* RLMAccessor.h */; }; + 577CBD0FD3FC3A9EBD5D31BF7FA765B0 /* GTMNSString+URLArguments.m in Sources */ = {isa = PBXBuildFile; fileRef = F1131702FCF50804F90B6CE53CC76202 /* GTMNSString+URLArguments.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 5809D2684FD006C0C6FFBE1AC94A2F68 /* coding.cc in Sources */ = {isa = PBXBuildFile; fileRef = 0825C64B1F30E1DEE973AEEE409989A9 /* coding.cc */; settings = {COMPILER_FLAGS = "-DOS_MACOSX -DLEVELDB_PLATFORM_POSIX -fno-objc-arc"; }; }; + 5813C76B4F9F9F596F945C6ECE37F79B /* GULNetworkConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = 00E0C362DBAB7522CAF8692550B87352 /* GULNetworkConstants.m */; }; + 587594098D2FF80187EFFC456A5FB306 /* FIRVerifyPasswordResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = EBF2291F70755348E2D5441C87E242AB /* FIRVerifyPasswordResponse.m */; }; + 58B258D2EBB75185565E532507EF33BC /* FIRInstanceIDConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = F45CB4E615D46548F5FE46BA0BDB05C7 /* FIRInstanceIDConstants.m */; }; + 58B6A43E8761C9440A50FF52CED196B1 /* FIRAuthAPNSToken.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B8C73044AF0FE20EF2301CE5E37B081 /* FIRAuthAPNSToken.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 58D26933FF5553FCB0B254A119699911 /* FIRAuthSettings.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D563D6BB4A5C51856E4CFB54B4AD255 /* FIRAuthSettings.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 59021531A88C5EADB9A936E3DE80BF7E /* RLMSyncUser.h in Headers */ = {isa = PBXBuildFile; fileRef = 874ADBD29C538221F2E792A14B1AB80F /* RLMSyncUser.h */; }; + 59204B221518A61CC5194E7A712A7064 /* sync_session.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2E241B23BEB8AA88993981E98BC563BB /* sync_session.cpp */; settings = {COMPILER_FLAGS = "-DREALM_HAVE_CONFIG -DREALM_COCOA_VERSION='@\"3.17.3\"' -D__ASSERTMACROS__ -DREALM_ENABLE_SYNC"; }; }; + 597F3CD5E420204B151A10745DAFAAD5 /* FIRAuth_Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 1B5130DAE005652C131153373B074566 /* FIRAuth_Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 59D156BE7019D6F3263338749F6DF493 /* FPriorityIndex.h in Headers */ = {isa = PBXBuildFile; fileRef = DCEB5AE1A0CBA7227C5DA65B0EF875CB /* FPriorityIndex.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 5A07754D03DCD8C5B5DA959012854418 /* FTreeNode.m in Sources */ = {isa = PBXBuildFile; fileRef = C8293996F0E2D6A64B2DF4C3861A775E /* FTreeNode.m */; }; + 5A6DAEC1A0441CCBD981F4B19B0B73A0 /* log_writer.cc in Sources */ = {isa = PBXBuildFile; fileRef = 85366F8E3898D45D85CEE2F8C70205A5 /* log_writer.cc */; settings = {COMPILER_FLAGS = "-DOS_MACOSX -DLEVELDB_PLATFORM_POSIX -fno-objc-arc"; }; }; + 5A8DB86D028E43409D81AC26B676F8BB /* GULNetworkLoggerProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = 67180CA04893BAB29BD7E7B0E486150E /* GULNetworkLoggerProtocol.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 5AA2E10387BDCE3981D7329C757B28BF /* FIRAuthSerialTaskQueue.m in Sources */ = {isa = PBXBuildFile; fileRef = DE815E82153434B0700F29ACB65F045C /* FIRAuthSerialTaskQueue.m */; }; + 5AC7366BA8AC66B193365397D4C3E2E9 /* FIRTwitterAuthProvider.m in Sources */ = {isa = PBXBuildFile; fileRef = 1CBF42CF5566A3ADFBB7380739A0B453 /* FIRTwitterAuthProvider.m */; }; + 5AD3FAEDD8C8D7E90BEF268182889E6D /* iterator.h in Headers */ = {isa = PBXBuildFile; fileRef = 9CD9BCD407DED5F2DDA00A180D12F8E9 /* iterator.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 5CD54968E47119C35DC1C8C9C837ECE1 /* options.h in Headers */ = {isa = PBXBuildFile; fileRef = 85D0B35D3F6C8AE536AE7FA7C37F2CA7 /* options.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 5D00701E18302D422898CAB3EEB3F8E5 /* slice.h in Headers */ = {isa = PBXBuildFile; fileRef = 32EC12462B9D39F14F0B8C3CFCB58150 /* slice.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 5D31045FF331C59A54CE8A2382FC0132 /* pb_decode.c in Sources */ = {isa = PBXBuildFile; fileRef = B86D8C22D13DB5E9A4ED3828066031EB /* pb_decode.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc -fno-objc-arc"; }; }; + 5D5A88532A65AC47252F3D2CC353C4E4 /* FIRAuthDataResult.h in Headers */ = {isa = PBXBuildFile; fileRef = BFABC8CEC73E272C69162ADE3CD09616 /* FIRAuthDataResult.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 5D67CD7251278632B32E973F1463D98B /* FPriorityIndex.m in Sources */ = {isa = PBXBuildFile; fileRef = ED9456BB37DDD86BB1D674494200C374 /* FPriorityIndex.m */; }; + 5E18C465C2F38DE6437599199415EA6A /* object_notifier.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3A048EA54D63E7A9BD39B4388DCA6B48 /* object_notifier.cpp */; settings = {COMPILER_FLAGS = "-DREALM_HAVE_CONFIG -DREALM_COCOA_VERSION='@\"3.17.3\"' -D__ASSERTMACROS__ -DREALM_ENABLE_SYNC"; }; }; + 5E83F44C36AB0281D550701F0C7EAFC7 /* FIRTransactionResult.h in Headers */ = {isa = PBXBuildFile; fileRef = B80E99B8D91DAE3ABE832CD321A2AB41 /* FIRTransactionResult.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 5EB426DE181C6802B0CF094BFC2A3691 /* FIRDataSnapshot_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 60EF9C184E17E4955ED1317A63DBB6A1 /* FIRDataSnapshot_Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 5EBE05C44319E23D5DCE8B6A1F0619E4 /* FIRDeleteAccountRequest.m in Sources */ = {isa = PBXBuildFile; fileRef = 46E90D13F1E9D86C7B0C2A9F3C5DF111 /* FIRDeleteAccountRequest.m */; }; + 5ED71719DFBC91245B968C8DA8D33431 /* FIRVerifyPhoneNumberResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = B3D72BF360EC0A16FA31CDF18D8453DB /* FIRVerifyPhoneNumberResponse.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 5F1C38CB1420B197AB2A8C34D5C68D69 /* FIRGitHubAuthProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = 844C21BAF3D357863CBABB78905C2C0F /* FIRGitHubAuthProvider.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 5F559CAA70A5B8BEC78388642DE85B8B /* FIRInstanceIDCheckinPreferences.h in Headers */ = {isa = PBXBuildFile; fileRef = 7F9D73E07FFF6147C23CA59AD34B92CA /* FIRInstanceIDCheckinPreferences.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 5F74B44FABE3677CFE8536DEC126918E /* FTupleOnDisconnect.h in Headers */ = {isa = PBXBuildFile; fileRef = 41ECA2E45BA02E9B11751E9D60D9A752 /* FTupleOnDisconnect.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 6009E1AE8A2EAFAEF30899C0A47C81A9 /* FIRGameCenterAuthProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = 2FC1BAB4346FFC3D7FFD8CC78684A7BA /* FIRGameCenterAuthProvider.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 603D2790EEE677DF7B30D3A0C4712A04 /* GULAppDelegateSwizzler.h in Headers */ = {isa = PBXBuildFile; fileRef = 04540068EF5284F0F3E837C96514AC2E /* GULAppDelegateSwizzler.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 605DDAD86929F28D184F96E12355C8F7 /* FArraySortedDictionary.h in Headers */ = {isa = PBXBuildFile; fileRef = BF87D2AFF0B91F316DB946AAC9D77EC7 /* FArraySortedDictionary.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 6080449E5CF300F956B4C1938D1CF00E /* db_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = F11C679C19610AAB159BBB07AFE9BE4B /* db_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 60907B0B3A580B5D6AE3A3C05678BB07 /* FAckUserWrite.h in Headers */ = {isa = PBXBuildFile; fileRef = 13666EFB797F97CB2462E213B71F7516 /* FAckUserWrite.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 60B7179FB6E52B0A2D310E540639A5CD /* env.cc in Sources */ = {isa = PBXBuildFile; fileRef = 5E5A0E050BA4CB73B1AAFB7BE90CE532 /* env.cc */; settings = {COMPILER_FLAGS = "-DOS_MACOSX -DLEVELDB_PLATFORM_POSIX -fno-objc-arc"; }; }; + 614CE4573B0907EFF220820EC4ABAAB8 /* RLMPredicateUtil.mm in Sources */ = {isa = PBXBuildFile; fileRef = 7F9304FEC6A0F08E28B774C336BCE525 /* RLMPredicateUtil.mm */; settings = {COMPILER_FLAGS = "-DREALM_HAVE_CONFIG -DREALM_COCOA_VERSION='@\"3.17.3\"' -D__ASSERTMACROS__ -DREALM_ENABLE_SYNC"; }; }; + 61B93C9BB819157C1C2945B9417987C4 /* FIRAuthExceptionUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = 9E06A1EBDB24838B3CF520C2AE1D1831 /* FIRAuthExceptionUtils.m */; }; + 61E0AEF259C0F2B0B23F85740F45E601 /* FIREmailLinkSignInRequest.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D6948FE6F5CCA55283F677AC65538E8 /* FIREmailLinkSignInRequest.m */; }; + 62293494A425F0D2F68AA040F51BFFE4 /* FIRResetPasswordResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 3566036C291C62F3116EDC651745054E /* FIRResetPasswordResponse.m */; }; + 62772729B512EEFB8E0397894ADC9335 /* FIRVerifyCustomTokenResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 15B25C69C90955FF88947196A3AFDD6C /* FIRVerifyCustomTokenResponse.m */; }; + 62A7C03C0C74A5003845042FB17181BB /* FValueEventRegistration.h in Headers */ = {isa = PBXBuildFile; fileRef = 6CA8DD45CC2AF137386C7D9460B27651 /* FValueEventRegistration.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 62AFDF3E524A8FA0CF6059E916B28C96 /* FImmutableTree.h in Headers */ = {isa = PBXBuildFile; fileRef = DA221695A4F6B98CD7044593667C01C4 /* FImmutableTree.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 62BBCD55C73E582B75FA15837CE764F0 /* RLMSyncConfiguration_Private.h in Copy . Private Headers */ = {isa = PBXBuildFile; fileRef = 1C54C0E8B35B80A544F2AE04C0026A92 /* RLMSyncConfiguration_Private.h */; }; + 6375F47F2ACED9C44465EBF4693D2369 /* GULAppDelegateSwizzler.m in Sources */ = {isa = PBXBuildFile; fileRef = 1975096C14821AA766EFBEE3A0253389 /* GULAppDelegateSwizzler.m */; }; + 63A29BF842C6183B5B1E9E66CC53BA5C /* NSError+RLMSync.h in Headers */ = {isa = PBXBuildFile; fileRef = 51063623BCA58E848432E19D54879107 /* NSError+RLMSync.h */; }; + 63C09B4124ED3FA3A46941C02A7AAE08 /* log_writer.h in Headers */ = {isa = PBXBuildFile; fileRef = 79F60D7CD69F106CB044C0B2FDAA96B1 /* log_writer.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 64280DA828E43299299776EBF456AD80 /* crc32c.h in Headers */ = {isa = PBXBuildFile; fileRef = 280BDC3BD29903DC8D284AE0D359866F /* crc32c.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 643024F91FEB3EBD849BB80854000FC7 /* FIRInstanceIDTokenStore.m in Sources */ = {isa = PBXBuildFile; fileRef = C437C241AA473E1646DF5EBF05007953 /* FIRInstanceIDTokenStore.m */; }; + 64429624ADE77105DDF7981DCB64CB0C /* FDataEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = EACA1A696255F6A798A17C054F2B66DC /* FDataEvent.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 6472F855E7A3C885B0C74456B339D238 /* FClock.m in Sources */ = {isa = PBXBuildFile; fileRef = C0F0C1B5DFB48FE8E8AE35973A00066A /* FClock.m */; }; + 650F02396D963DEDAABA8C7AF5663779 /* FIRInstanceIDBackupExcludedPlist.h in Headers */ = {isa = PBXBuildFile; fileRef = E30A4304036780C57A6A4C5FF8F0102B /* FIRInstanceIDBackupExcludedPlist.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 654A7B834504DCF57A3542F482C76F37 /* FLLRBNode.h in Headers */ = {isa = PBXBuildFile; fileRef = C6097F06E8257BEC5AB23AD81E0B1B9D /* FLLRBNode.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 655AD5B978F8E7CF3AD8287FE0908959 /* port_posix.h in Headers */ = {isa = PBXBuildFile; fileRef = A18613CEFEB8F5A09C34A72030A5744F /* port_posix.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 65806E0D869516636232A3ADB9AC0469 /* FIRDeleteAccountRequest.h in Headers */ = {isa = PBXBuildFile; fileRef = FFD643D3F704840F34C839384F691EFC /* FIRDeleteAccountRequest.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 6637551548E1A8E0D13DCBBD671ADFF8 /* FIRInstanceIDAuthService.h in Headers */ = {isa = PBXBuildFile; fileRef = 6B92E2949EF1A4543406805BB9147E84 /* FIRInstanceIDAuthService.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 66E8EA72947CB8F87BD2A98FB43E2806 /* FIREmailPasswordAuthCredential.h in Headers */ = {isa = PBXBuildFile; fileRef = CDF533775B27567B4BCE480F3F3B4ED6 /* FIREmailPasswordAuthCredential.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 672A73CA218B37497C5FFF3568311A5A /* FClock.h in Headers */ = {isa = PBXBuildFile; fileRef = F6BDFEE22A027EDA088B914A73075820 /* FClock.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 6737ABDAB0235C7B36B7C74D2C429F03 /* FKeyIndex.h in Headers */ = {isa = PBXBuildFile; fileRef = 19A89385F91044B0912780EECC14C715 /* FKeyIndex.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 673A9D46815F44D5F2BF307A1DE97D63 /* FIRDatabaseComponent.h in Headers */ = {isa = PBXBuildFile; fileRef = 06646823752E5DEE796F0F6DFD138917 /* FIRDatabaseComponent.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 67468DD2D2ED5F3BF785F1AC99911B8C /* FIRConfigurationInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 554A7411EC0903FC084B2A0C5A1CD496 /* FIRConfigurationInternal.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 67477EE10EFF7D25A80BD4BD0859B22C /* FIRDatabaseQuery.m in Sources */ = {isa = PBXBuildFile; fileRef = 050EEA7B488831E6AC9B7298410E6AE5 /* FIRDatabaseQuery.m */; }; + 674AA4DF0CE69E0D3BE917637DED0FAC /* atomic_pointer.h in Headers */ = {isa = PBXBuildFile; fileRef = 04110D59EBCF955D3B655A7CDA26D981 /* atomic_pointer.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 6765D45D5EF7CC59534B5A279C750F6D /* env_posix_test_helper.h in Headers */ = {isa = PBXBuildFile; fileRef = 507DF04A7C2E3B009DF585F571037580 /* env_posix_test_helper.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 67EB26207C724C8108CE50DB9D9A3BB2 /* FIRAuthStoredUserManager.h in Headers */ = {isa = PBXBuildFile; fileRef = B3521801B91A5CF75EC528344B8D2A77 /* FIRAuthStoredUserManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 681D0D7ABD4EEF662BBAAE52BE68C38A /* index_set.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7E5693E2D51AA01EA9C50FA68F17A918 /* index_set.cpp */; settings = {COMPILER_FLAGS = "-DREALM_HAVE_CONFIG -DREALM_COCOA_VERSION='@\"3.17.3\"' -D__ASSERTMACROS__ -DREALM_ENABLE_SYNC"; }; }; + 681E5B5AACB2E3A21F754E3A2B8D94CD /* GoogleUtilities-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 6E062538C34E992CE34F8605F95B29B9 /* GoogleUtilities-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 6890B762A8E619481C49B99D1C13EA66 /* FIRComponentType.m in Sources */ = {isa = PBXBuildFile; fileRef = 1C7461648B53892AA774581D4B45263F /* FIRComponentType.m */; }; + 6897B81387276A6E850D95D4B7B28A8F /* FIRInstanceIDConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = BA90D6EC748D1FF923CA0E636E0D223C /* FIRInstanceIDConstants.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 68B9CEC2CE2C0390717B90EBBE57082E /* GTMSessionFetcherService.m in Sources */ = {isa = PBXBuildFile; fileRef = BC943097B98BFD9A880A28D7331B52C3 /* GTMSessionFetcherService.m */; }; + 68D5E87D090BB54935B19060C8C28DE5 /* FRepoInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 4AD358AF8B8E457FBABF9186BFDB8714 /* FRepoInfo.m */; }; + 68DA5693019760B0AA38F070ED2A9035 /* FIRVerifyPhoneNumberRequest.h in Headers */ = {isa = PBXBuildFile; fileRef = 5A59EA50E30FBB945002961FC06E4138 /* FIRVerifyPhoneNumberRequest.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 69D059E09BF6657E7D417A40FEE60265 /* FImmutableSortedDictionary.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D209639A08210F13C606B111B26E02E /* FImmutableSortedDictionary.m */; }; + 69F1F21E8FB2AD9011E8158993F26E08 /* RLMSyncPermissionResults.mm in Sources */ = {isa = PBXBuildFile; fileRef = 07032503BF3ECE0B00F02E2D58B24F04 /* RLMSyncPermissionResults.mm */; settings = {COMPILER_FLAGS = "-DREALM_HAVE_CONFIG -DREALM_COCOA_VERSION='@\"3.17.3\"' -D__ASSERTMACROS__ -DREALM_ENABLE_SYNC"; }; }; + 6A0A55C709D3E435941EEB8ECC5AB703 /* filter_policy.cc in Sources */ = {isa = PBXBuildFile; fileRef = DF6870434F40F97F3366354A0E73E789 /* filter_policy.cc */; settings = {COMPILER_FLAGS = "-DOS_MACOSX -DLEVELDB_PLATFORM_POSIX -fno-objc-arc"; }; }; + 6A393EFE7D951D00F57C90A9DED07931 /* GULAppEnvironmentUtil.h in Headers */ = {isa = PBXBuildFile; fileRef = 1E3CC3A0903D2B06FBABD098A30B6D98 /* GULAppEnvironmentUtil.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 6AB120FD903157BB8F1DC639534E3B4E /* RLMObjectStore.mm in Sources */ = {isa = PBXBuildFile; fileRef = D34B33275ADF9D3D2FABDB52A29742BD /* RLMObjectStore.mm */; settings = {COMPILER_FLAGS = "-DREALM_HAVE_CONFIG -DREALM_COCOA_VERSION='@\"3.17.3\"' -D__ASSERTMACROS__ -DREALM_ENABLE_SYNC"; }; }; + 6ADA23709C4F6AB3A2881BA8ABC6187A /* FIRErrorCode.h in Headers */ = {isa = PBXBuildFile; fileRef = 92ADBAF3A2C7EC182800DA7081D2D816 /* FIRErrorCode.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 6ADBD95839028C929EE646F0B781C88F /* FIRDatabaseQuery_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 42B6E510B94EE2181DA5B0B4DD1BC413 /* FIRDatabaseQuery_Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 6AE65604FF7468EEA4AC2B0D82D7A240 /* FViewCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 514833201E9BE927812DDC98E5FC0105 /* FViewCache.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 6B273364FCA44FF4EF215791C4CE037B /* GULLogger.h in Headers */ = {isa = PBXBuildFile; fileRef = C557A1E2F035C3C0A8C291DAE00314A3 /* GULLogger.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 6B4925C31723B18E321A263497C5EC2C /* FCompoundHash.m in Sources */ = {isa = PBXBuildFile; fileRef = 06C874060D1EC0DEC948C3DEC25DB576 /* FCompoundHash.m */; }; + 6B68AF03C74656AAC471724C600AF799 /* RLMArray.h in Copy . Public Headers */ = {isa = PBXBuildFile; fileRef = 9651C433B718EAA10022E1613255A895 /* RLMArray.h */; }; + 6B92916224327E3A01E2DBDA591331BD /* FPendingPut.m in Sources */ = {isa = PBXBuildFile; fileRef = A00ED326371D2BC421C2156E30799399 /* FPendingPut.m */; }; + 6B96F5E4BA938AC937FA5EC4AAAEEF01 /* FCompoundWrite.m in Sources */ = {isa = PBXBuildFile; fileRef = 293017362BF588B7E01B3365BA0DD8D5 /* FCompoundWrite.m */; }; + 6BF26EC05FE80604B2099FD290BAE3CA /* NSData+FIRBase64.h in Headers */ = {isa = PBXBuildFile; fileRef = 087462F890EA07A514AE5B19CFEACFBC /* NSData+FIRBase64.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 6C1D7DEE287DDB9692F009669E4C438B /* GULApplication.h in Headers */ = {isa = PBXBuildFile; fileRef = 50B08459E8B6C646541EC049125FBE02 /* GULApplication.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 6C225EF695EF86B622BE2F945986E23A /* FIRUserInfoImpl.m in Sources */ = {isa = PBXBuildFile; fileRef = 492667D699F038B72A09DC04D580E502 /* FIRUserInfoImpl.m */; }; + 6D67724DF6EF00F1256022A115F1A9D2 /* FViewProcessor.h in Headers */ = {isa = PBXBuildFile; fileRef = E2776BBFB8F2BC2F2F3A2B7B48DB5D04 /* FViewProcessor.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 6D8089142D11A0867C6830631FDB7561 /* FIRGetOOBConfirmationCodeResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 47E38B24558AFB84F5A3086CB7B260DD /* FIRGetOOBConfirmationCodeResponse.m */; }; + 6E2345265634FAF934516FC941A5EC4E /* object_store.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BFB851610A9C9F3854A729AA8DACA460 /* object_store.cpp */; settings = {COMPILER_FLAGS = "-DREALM_HAVE_CONFIG -DREALM_COCOA_VERSION='@\"3.17.3\"' -D__ASSERTMACROS__ -DREALM_ENABLE_SYNC"; }; }; + 6E3ABB910E00E401B0DD252DA094AA9D /* RLMObjectBase_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 60B37E75EDF9313CCCA5B9F5E3EE724B /* RLMObjectBase_Private.h */; }; + 6FC3497AFE2C7FB13C01A0A5FA291683 /* FIRDependency.m in Sources */ = {isa = PBXBuildFile; fileRef = C3A230894F1686507A5AE71545855A27 /* FIRDependency.m */; }; + 6FE629176E6180DC8F3581CE510C1F9C /* FPersistentConnection.h in Headers */ = {isa = PBXBuildFile; fileRef = 8FAA8D07AD2C2F333B3892217980A2A0 /* FPersistentConnection.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 6FF2667B220A587085E399F8C2832154 /* GoogleUtilities-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 02D15912C2A468486D27EEB5C1155330 /* GoogleUtilities-dummy.m */; }; + 7017FC8CA015626F62BCD121C35CDA5A /* FIRErrors.m in Sources */ = {isa = PBXBuildFile; fileRef = AC621A3E56AA419AE4D56F0CC2BC8053 /* FIRErrors.m */; }; + 7088A19A43D14879BBF9D0C8F0E5DB2D /* FEventRaiser.h in Headers */ = {isa = PBXBuildFile; fileRef = 61811ADAE2CA0802F0E12A7F2003289B /* FEventRaiser.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 70913F9EFC3E1202E2E94F0B08C9E609 /* nanopb-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = DC93E8D49C0AEB2B4B0EF98FD1AD22F9 /* nanopb-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 70A41BAB6DD37491292B8D9E04186843 /* FIRAuthDefaultUIDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 4AD4B752DF2DA928435F3866BA819EDC /* FIRAuthDefaultUIDelegate.m */; }; + 70AD94B7C775E0EBA01CD2A9C6B3ECE2 /* sync_metadata.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7F1BF7AD2E69E15E5A1C40DBC28CCCC3 /* sync_metadata.cpp */; settings = {COMPILER_FLAGS = "-DREALM_HAVE_CONFIG -DREALM_COCOA_VERSION='@\"3.17.3\"' -D__ASSERTMACROS__ -DREALM_ENABLE_SYNC"; }; }; + 70BCE5BACB52D99796645EE3A451B783 /* Object.swift in Sources */ = {isa = PBXBuildFile; fileRef = C5E84A273D7C2C2723DBADD1DD6FAD97 /* Object.swift */; }; + 70BF12A39CACB86B5B5DA58B4070AC7E /* FIRDataSnapshot.m in Sources */ = {isa = PBXBuildFile; fileRef = 6C56F823A71B2B10C5A5807B71F8E09C /* FIRDataSnapshot.m */; }; + 71223F2AED236D6D347D5198E2525C66 /* FIRGetOOBConfirmationCodeRequest.h in Headers */ = {isa = PBXBuildFile; fileRef = 92BCC7C0CEAEC882638A0FE6B84F7795 /* FIRGetOOBConfirmationCodeRequest.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 713FDE9F8F750675BB3439EC739F002A /* FWriteTree.m in Sources */ = {isa = PBXBuildFile; fileRef = 6B54000B5D0C86BAF4316DBE71C1C1D9 /* FWriteTree.m */; }; + 7147CEAA6104E46E61A126423ACC59B8 /* FIRVersion.m in Sources */ = {isa = PBXBuildFile; fileRef = 66885C8EEEF8AA3E5154DD1E135C329D /* FIRVersion.m */; }; + 7151194003158CD528B545C78F779406 /* FPersistenceManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C776EFB57EF3F884ECC512EAC4060A6 /* FPersistenceManager.m */; }; + 71623F7E7B62E19B4929D3068660E480 /* NSData+SRB64Additions.m in Sources */ = {isa = PBXBuildFile; fileRef = 1C93662A36961564F04BFD14E042300E /* NSData+SRB64Additions.m */; }; + 719DD7D72FE51332812234481251428E /* FSyncPoint.h in Headers */ = {isa = PBXBuildFile; fileRef = C7281018F1EC1759BB0C1473B98221C2 /* FSyncPoint.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 71C8C1176D6DC101ED06B098878B4CCA /* FIRInstanceIDKeyPairStore.h in Headers */ = {isa = PBXBuildFile; fileRef = 952FE2409E0334273396C732E17D34F2 /* FIRInstanceIDKeyPairStore.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 71E5AE6DC74836D098A4052F9AB3ADBD /* FCacheNode.h in Headers */ = {isa = PBXBuildFile; fileRef = AC4BFBDF4DD6BB237FCC21FA55682814 /* FCacheNode.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 729832B522AF32A631C184A1575D714D /* FIRInstanceIDTokenStore.h in Headers */ = {isa = PBXBuildFile; fileRef = 33A41C9E357F72783A47CBE4CF871CB4 /* FIRInstanceIDTokenStore.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 739FF94C77F3E9759B090C53105AF265 /* FIRDataSnapshot.h in Headers */ = {isa = PBXBuildFile; fileRef = 34BF668BBDBF8FF1E6058B2D519D7E74 /* FIRDataSnapshot.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 73D1EFAB9DC8CDFD033AD30DCC9009AB /* FirebaseDatabase-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 080AC7491E280EAB86A811398B37F5C6 /* FirebaseDatabase-dummy.m */; }; + 74539FCF34ADA67ED8CA7CFAB2ABF861 /* RLMSyncManager.h in Copy . Public Headers */ = {isa = PBXBuildFile; fileRef = BF6D835DCAA2CE049A0B15AB22681ACE /* RLMSyncManager.h */; }; + 755CD5DD97560E5E58AA0E61B808E7C8 /* FIRAuthGlobalWorkQueue.m in Sources */ = {isa = PBXBuildFile; fileRef = 22DF7E43517DD24C74217D9C1DDC73EE /* FIRAuthGlobalWorkQueue.m */; }; + 756915BF467EC561A7F5BFA99F05A4DF /* FEmptyNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 0DB217C21D25DD57BD4ED01980863F57 /* FEmptyNode.m */; }; + 75E6FAB9FB0C583F6D775936DA797569 /* RLMObjectBase_Dynamic.h in Headers */ = {isa = PBXBuildFile; fileRef = AB3CBC258054D04865CFC4D83D2F660A /* RLMObjectBase_Dynamic.h */; }; + 75E77537DCBDAC6D15ECE7625F7985E6 /* FConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = 0D94AC28263D760FB28DB16254CD7EE0 /* FConstants.m */; }; + 7715F043C1F88C7C4BFCCD460FC2BB92 /* FIRDeleteAccountResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = D26725F1B56351CF328951B73016ACC5 /* FIRDeleteAccountResponse.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 77974FD688502F49A2EBBC74D0E28D36 /* FirebaseAuth-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = AACF28E1A2D2F9FE0BE171BBCFD045CA /* FirebaseAuth-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 7845CC98BD955B15246FD1461B3FDC1E /* FChange.m in Sources */ = {isa = PBXBuildFile; fileRef = C769CDE7B231925D815EFDBA051F88D8 /* FChange.m */; }; + 78EF5998C5051F95EF3ABE6EFBD1016D /* block_builder.h in Headers */ = {isa = PBXBuildFile; fileRef = B2419D687C8C33ED7CDCB06D4A7716AC /* block_builder.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 79120D7382A3564038E796B8872271AC /* Property.swift in Sources */ = {isa = PBXBuildFile; fileRef = A7F65EE630652D31A93CAF315876BEA5 /* Property.swift */; }; + 792155A425E7B5D1340C0C2AE3410AED /* arena.h in Headers */ = {isa = PBXBuildFile; fileRef = 4954F1C6715BCE4C0192048F26C6B961 /* arena.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 7924CB64C9AFC6A4FB9E4C34DB141B59 /* list.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 88C8E6FFB32B1A88056718CF862D4A79 /* list.cpp */; settings = {COMPILER_FLAGS = "-DREALM_HAVE_CONFIG -DREALM_COCOA_VERSION='@\"3.17.3\"' -D__ASSERTMACROS__ -DREALM_ENABLE_SYNC"; }; }; + 79D5405BDDA1F8D249E52F14A8F8BB00 /* FIndexedFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = EBEEAE107EDF9BD702B1A54392D08B63 /* FIndexedFilter.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 7A5FD87D45CAD8F66924C764150A2008 /* RLMUtil.mm in Sources */ = {isa = PBXBuildFile; fileRef = 652298EFA23E8B3F7711B8C9E0600FB2 /* RLMUtil.mm */; settings = {COMPILER_FLAGS = "-DREALM_HAVE_CONFIG -DREALM_COCOA_VERSION='@\"3.17.3\"' -D__ASSERTMACROS__ -DREALM_ENABLE_SYNC"; }; }; + 7A60B0EF77D62E4ED6A672FB23C175BF /* RLMSyncPermission.h in Headers */ = {isa = PBXBuildFile; fileRef = 50F9650492AACAF7C1049D722783270F /* RLMSyncPermission.h */; }; + 7A80D456CFA3F2231087CF987C0E5214 /* thread_annotations.h in Headers */ = {isa = PBXBuildFile; fileRef = BD95192D6A86F239E89F634D58DE2D01 /* thread_annotations.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 7ABCCE81C1D4D8F46ACDFDD52583D3D6 /* FViewCache.m in Sources */ = {isa = PBXBuildFile; fileRef = F0D013508DF2015BA0651D633AD5CCAF /* FViewCache.m */; }; + 7B026C3B2A9E88A7102771949B1F6CCD /* FIRSecureTokenService.h in Headers */ = {isa = PBXBuildFile; fileRef = DE5D6EAAAA8E630514B9684970ECC656 /* FIRSecureTokenService.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 7B4CE5C84161E2BFE477F42DFD634382 /* SwiftyJSON.swift in Sources */ = {isa = PBXBuildFile; fileRef = 00773D5CC228627FAB88FDD59074541D /* SwiftyJSON.swift */; }; + 7BADBF440C414D424DE79E1BD9E528F1 /* FListenComplete.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D31ED110C3A5C21CF71740C8DFA57C3 /* FListenComplete.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 7BCD85EDCD620F98A99D75A3BBA4CDA7 /* RLMRealm_Private.h in Copy . Private Headers */ = {isa = PBXBuildFile; fileRef = C1302589B0CD0B2305B36AEA7359B03E /* RLMRealm_Private.h */; }; + 7C30E432CD5CDDA965933F169A29B028 /* async_open_task.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B52BD06E070EF7C3FDEB2EF15008A73 /* async_open_task.cpp */; settings = {COMPILER_FLAGS = "-DREALM_HAVE_CONFIG -DREALM_COCOA_VERSION='@\"3.17.3\"' -D__ASSERTMACROS__ -DREALM_ENABLE_SYNC"; }; }; + 7D14948C94E3AF99617DB15903D749E7 /* FStorageEngine.h in Headers */ = {isa = PBXBuildFile; fileRef = 81E552747E514BC894B2FA2671AD4F62 /* FStorageEngine.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 7D760869D7B2CEBF58EF1F2CF066A00A /* pb_common.c in Sources */ = {isa = PBXBuildFile; fileRef = A25400298CE5C60EC7610EFADE099C6C /* pb_common.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc -fno-objc-arc -fno-objc-arc"; }; }; + 7D862ECB4EEF00A4344148BFBC7B5363 /* FIRSignInWithGameCenterResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 90C023251D69063DF88D89CF04B38F98 /* FIRSignInWithGameCenterResponse.m */; }; + 7DF72EB06D10A634E886FFD6DC007E8F /* uuid.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6E0EE3B7E8E983D0D36C98514377F88D /* uuid.cpp */; settings = {COMPILER_FLAGS = "-DREALM_HAVE_CONFIG -DREALM_COCOA_VERSION='@\"3.17.3\"' -D__ASSERTMACROS__ -DREALM_ENABLE_SYNC"; }; }; + 7E5F4275405E2A0BACD791613DC60A70 /* FRangedFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 2739BDBBDB736DDE2AD7D9AE3B0E7F23 /* FRangedFilter.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 7E7D497FCD82F21087AA27376D1ED07F /* FIRSecureTokenRequest.h in Headers */ = {isa = PBXBuildFile; fileRef = 9445A295A5DAAF312B3015CA3966FA7E /* FIRSecureTokenRequest.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 7E92602801F9A5416EA5BFEEC4AE5D05 /* FEventGenerator.h in Headers */ = {isa = PBXBuildFile; fileRef = 2731E026BEDB7B9C9FAF3E6588E4B25B /* FEventGenerator.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 7E9A6076710D4A12194D021E60770445 /* FIREmailPasswordAuthCredential.m in Sources */ = {isa = PBXBuildFile; fileRef = 59A3946729DF8775EAD48A7F5AF4E89D /* FIREmailPasswordAuthCredential.m */; }; + 7EE2631755396E5E09244010D2D4395F /* NSData+FIRBase64.m in Sources */ = {isa = PBXBuildFile; fileRef = F48585DCE51682F2C6A18945895BD823 /* NSData+FIRBase64.m */; }; + 7EF00976B7B59FE823B37F4CC64578B7 /* FIRMutableData_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 06879569ADF817D91E402710318AC768 /* FIRMutableData_Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 7F31ACB1D440D8C2AF4B6A64AC6361C6 /* FIRAuthCredential.h in Headers */ = {isa = PBXBuildFile; fileRef = C5E2DF89659131B98759E8ACB5590F54 /* FIRAuthCredential.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 7F5A038929C801CAA0A584D9B5223247 /* GTMDebugSelectorValidation.h in Headers */ = {isa = PBXBuildFile; fileRef = 89D494CBC93A35AE9100DDC587C9AB05 /* GTMDebugSelectorValidation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 8009AEA79C162CB61C9618286609254E /* FIRComponent.m in Sources */ = {isa = PBXBuildFile; fileRef = 241522859A23A26D32973D23832D41A2 /* FIRComponent.m */; }; + 806247B7A3B2AF97C0063199E886852E /* collection_change_builder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 90BBC5F4614361D6802C0955F5F7FD6F /* collection_change_builder.cpp */; settings = {COMPILER_FLAGS = "-DREALM_HAVE_CONFIG -DREALM_COCOA_VERSION='@\"3.17.3\"' -D__ASSERTMACROS__ -DREALM_ENABLE_SYNC"; }; }; + 809D68B3C0FB184F2793D4E35603D7EC /* FIRGetProjectConfigResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 6E4A4C75D82451B16C6FDF75CABD9C76 /* FIRGetProjectConfigResponse.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 80C1C249255E5E7C192F1AA39F87E526 /* logging.h in Headers */ = {isa = PBXBuildFile; fileRef = A8009E465002A5F884C0CC39887EDD8D /* logging.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 80D41A3F88EACB7D30C7069AC798C949 /* dbformat.cc in Sources */ = {isa = PBXBuildFile; fileRef = DD36DE2C77CBBCD9A6DD650CBC3C9FB9 /* dbformat.cc */; settings = {COMPILER_FLAGS = "-DOS_MACOSX -DLEVELDB_PLATFORM_POSIX -fno-objc-arc"; }; }; + 80FA43170606741FDD94FC95FE8AAC04 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0781231D907887B1D7DF0E005F108FF7 /* Foundation.framework */; }; + 819115413894135969ED6C69A01E3B1E /* FIRAuthStoredUserManager.m in Sources */ = {isa = PBXBuildFile; fileRef = BB71CB2A1269390295C83916A638536D /* FIRAuthStoredUserManager.m */; }; + 822E2B5D41C1606651D505C568071BE0 /* FIRInstanceIDTokenFetchOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E11605ED922BF3A9609BEDDA9D3A508 /* FIRInstanceIDTokenFetchOperation.m */; }; + 8275972F0A3DF38F593B6B398E299751 /* FListenProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = C6CB8D438BFF52322514E3602458A0EF /* FListenProvider.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 828B14F9B993C8934105AE961047BDEA /* Realm.h in Headers */ = {isa = PBXBuildFile; fileRef = B95BF4C35448D59864B6247257FBF27A /* Realm.h */; }; + 82AF3B6AA1FC7603AD8734A8BF6F8943 /* RLMResults_Private.h in Copy . Private Headers */ = {isa = PBXBuildFile; fileRef = 49E8998024BDCEBA0D417DED78B7A72B /* RLMResults_Private.h */; }; + 82BBB705967B07606B248C9AFB44A1BF /* status.h in Headers */ = {isa = PBXBuildFile; fileRef = 4053BAB64C893FA4E744547EE78692F2 /* status.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 831DF9A38AE5799AC6C182078691841D /* table_cache.h in Headers */ = {isa = PBXBuildFile; fileRef = 1BE36150E0751B05AB5171595A0C88DB /* table_cache.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 837F123E1D3D153241B30313B5DE3711 /* RLMRealmUtil.mm in Sources */ = {isa = PBXBuildFile; fileRef = E2BC63C278657C2953BC4542ED1A3AFE /* RLMRealmUtil.mm */; settings = {COMPILER_FLAGS = "-DREALM_HAVE_CONFIG -DREALM_COCOA_VERSION='@\"3.17.3\"' -D__ASSERTMACROS__ -DREALM_ENABLE_SYNC"; }; }; + 844C9668394CDDC2D9964B54F856A55A /* RLMListBase.h in Copy . Public Headers */ = {isa = PBXBuildFile; fileRef = 3E9412137487BB363BB73FF86053C103 /* RLMListBase.h */; }; 851727821EFE54325DA483D93F59ECDC /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0781231D907887B1D7DF0E005F108FF7 /* Foundation.framework */; }; - 853279E9E5069291C7441613E6FFD021 /* FSyncTree.m in Sources */ = {isa = PBXBuildFile; fileRef = 05C498C49A32DA6585EBCBFD67B1A11F /* FSyncTree.m */; }; - 8563A91F5B34102F91106899C36CABD4 /* RLMMigration.mm in Sources */ = {isa = PBXBuildFile; fileRef = 2C850F0AD955FD23E215626E3B366C2F /* RLMMigration.mm */; settings = {COMPILER_FLAGS = "-DREALM_HAVE_CONFIG -DREALM_COCOA_VERSION='@\"3.17.3\"' -D__ASSERTMACROS__ -DREALM_ENABLE_SYNC"; }; }; - 865223A402543238B142F54E0CC704C1 /* FAckUserWrite.h in Headers */ = {isa = PBXBuildFile; fileRef = D61B470737FFE1C7601893DC21314D77 /* FAckUserWrite.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 869817FC3DE2BAA4B7A06F2BD17137D6 /* FNodeFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 1661E3FEE42630FE0B5236BB3F2577C9 /* FNodeFilter.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 86CFAC06AA8D34293212722D18F00D06 /* FTreeSortedDictionaryEnumerator.h in Headers */ = {isa = PBXBuildFile; fileRef = A6B3C7817D724A8A3302400BAB56D778 /* FTreeSortedDictionaryEnumerator.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 86E1163A90BC6A5E152C9C107A904085 /* FIRServerValue.m in Sources */ = {isa = PBXBuildFile; fileRef = 8D6B8FADBAE7FB1230A0D81DCCDA471E /* FIRServerValue.m */; }; - 8703D25BE9A09A0DE8AEA23D81B22277 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0781231D907887B1D7DF0E005F108FF7 /* Foundation.framework */; }; - 877A82D57495B03675001EDD5F992FDA /* FClock.h in Headers */ = {isa = PBXBuildFile; fileRef = DE71A7191C2116236B7355C9D76DBCB3 /* FClock.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 87E5203F27F981D453D08EDD52531A39 /* FEventEmitter.m in Sources */ = {isa = PBXBuildFile; fileRef = 00CCB59A7C95A0138D0DA4F63246439C /* FEventEmitter.m */; }; - 8846F2912ABF0C6B220BD143696D580E /* placeholder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DA769F5B26F8DFE20783CC3A4D066FBC /* placeholder.cpp */; settings = {COMPILER_FLAGS = "-DREALM_HAVE_CONFIG -DREALM_COCOA_VERSION='@\"3.17.3\"' -D__ASSERTMACROS__ -DREALM_ENABLE_SYNC"; }; }; - 88AAB6B6877BEE6572920FD869CF0B88 /* GULAppEnvironmentUtil.m in Sources */ = {isa = PBXBuildFile; fileRef = BFACEC065260A9E95A074F61D414B71B /* GULAppEnvironmentUtil.m */; }; - 88E991830A7942EDA38F26455C79ACF1 /* RLMObjectSchema.h in Headers */ = {isa = PBXBuildFile; fileRef = 0A7BA7EC41A68FED52F0B766B16850E1 /* RLMObjectSchema.h */; }; - 89013B85D124A19EFD955DB1CBC4D8EB /* FIRInstanceIDAPNSInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 7717FA216AB30866451522599CA00940 /* FIRInstanceIDAPNSInfo.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 8951D2C6F15F72DA282CFEDAECCF7D12 /* RLMSyncConfiguration_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = A7787FE428147EE7C12C5F94C299406A /* RLMSyncConfiguration_Private.h */; }; - 89DBDFDBC60677DB58E108B7E0FB80AA /* FIRNoopAuthTokenProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = 95FD024F010448AE198FEAF40DA88040 /* FIRNoopAuthTokenProvider.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 8A035F396D4212373D49B979BB2DC0FB /* RLMObjectBase.h in Headers */ = {isa = PBXBuildFile; fileRef = 7942954AE22002E8BCC798DDAB414DF0 /* RLMObjectBase.h */; }; - 8A20C3885DBB6729AB0D563A850B471F /* FTreeNode.h in Headers */ = {isa = PBXBuildFile; fileRef = A434CC6C6809654C06366391491ECAF9 /* FTreeNode.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 8A4F0BDF204FDF791CEBC681038BEDC8 /* FIndex.h in Headers */ = {isa = PBXBuildFile; fileRef = 92F37DCB1BA5FBC85C39369C207ECDE4 /* FIndex.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 8B25BB4D72843101E625F8B976072A69 /* RLMCollection.h in Copy . Public Headers */ = {isa = PBXBuildFile; fileRef = A499F6893A04608DC60141646FDE36F7 /* RLMCollection.h */; }; - 8B47FDADF381146F6C99BA8D56ECCF69 /* iterator_wrapper.h in Headers */ = {isa = PBXBuildFile; fileRef = CB331BA83A88B234E835E5AC37B57317 /* iterator_wrapper.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 8BB88D3A188ACF6502A7FA274613A975 /* log_reader.h in Headers */ = {isa = PBXBuildFile; fileRef = 6AE2BAA186211C8905ADC2A9C875D796 /* log_reader.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 8BFCA8C54D6CCCBA9C872CCFF9B2A6F8 /* FirebaseDatabase-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 5DC24D9D371596510B2DFA6387EC24D9 /* FirebaseDatabase-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 8C1D4C15D505334F273F10641C406A7D /* FIRInstanceID+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 3EB756799EAEA078553AC4D8FAF16C12 /* FIRInstanceID+Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 8C317071D70E478CB1C89BA4168540B6 /* fifo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 796B83E4FFDD0989683310CDFC841154 /* fifo.cpp */; settings = {COMPILER_FLAGS = "-DREALM_HAVE_CONFIG -DREALM_COCOA_VERSION='@\"3.17.3\"' -D__ASSERTMACROS__ -DREALM_ENABLE_SYNC"; }; }; - 8C448BE9AD19EAA56EA6F6800ECCBAB4 /* FIRConfigurationInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 13F55E76F5010DDD421FA1B8CC990899 /* FIRConfigurationInternal.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 8C8F875BD56873932764EA80292BBFF9 /* status.h in Headers */ = {isa = PBXBuildFile; fileRef = 0E3A3666C5E309C2AD0750B6523FAEEC /* status.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 8CC21B72E7F7E7AFAF3E93DD08B5478B /* FIRMutableData_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = D939A2ACF7F13E9858F1B48C0EE9461A /* FIRMutableData_Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 8E3C329AAE9823F0E8197E963EED3441 /* primitive_list_notifier.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3290AA8D179B7452FFC34E591B70F890 /* primitive_list_notifier.cpp */; settings = {COMPILER_FLAGS = "-DREALM_HAVE_CONFIG -DREALM_COCOA_VERSION='@\"3.17.3\"' -D__ASSERTMACROS__ -DREALM_ENABLE_SYNC"; }; }; - 8E439E993FF2AB5312271CB55823AF3A /* version_set.h in Headers */ = {isa = PBXBuildFile; fileRef = D36D53D2F0E0BFCC1D057A9B62A272D8 /* version_set.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 8E8B6D09C3A12776629ECD08EF76AEB3 /* log_format.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B68ECFAB84178558737939B9D00275C /* log_format.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 8F1B4ED7DE1A5416F52004C5ABD2B2BC /* filter_policy.cc in Sources */ = {isa = PBXBuildFile; fileRef = 1524CFB671448079E284EA5A5F0D6C81 /* filter_policy.cc */; settings = {COMPILER_FLAGS = "-DOS_MACOSX -DLEVELDB_PLATFORM_POSIX -fno-objc-arc"; }; }; - 8F96571BA39895A2E3B8D9A1331F8AE4 /* RLMResults.h in Copy . Public Headers */ = {isa = PBXBuildFile; fileRef = 9843BC20AC2ED23810EDF684637C15C5 /* RLMResults.h */; }; - 8F9C5641E2A47A41F0658A7DD4762A65 /* comparator.h in Headers */ = {isa = PBXBuildFile; fileRef = 11BCE8CE1264A0F003A94E74A0278747 /* comparator.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9023EDC814EAC5D91060D88BBA0B2D97 /* FIRTransactionResult.m in Sources */ = {isa = PBXBuildFile; fileRef = EEDD89E782509485877D5E42C8185AF2 /* FIRTransactionResult.m */; }; - 90532F0B9596ACA6C38CC9E60A26CC96 /* RLMConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D045672218BD8A4309A41E3B34BF366 /* RLMConstants.h */; }; - 905B93A515F018DDBDE80FD872DAF0BC /* GULNetworkConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = 6360FE52FEB4053859DF02AF837D48CE /* GULNetworkConstants.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 9113541F7F594820653CE84625B3A61B /* c.h in Headers */ = {isa = PBXBuildFile; fileRef = E0112BE0C29F13D051D70B7999B8309D /* c.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 91C099F6DD43BA12AAD44EFACB888164 /* RLMListBase.mm in Sources */ = {isa = PBXBuildFile; fileRef = A27455128329242102E432E9B83E4A67 /* RLMListBase.mm */; settings = {COMPILER_FLAGS = "-DREALM_HAVE_CONFIG -DREALM_COCOA_VERSION='@\"3.17.3\"' -D__ASSERTMACROS__ -DREALM_ENABLE_SYNC"; }; }; - 92016BDC3C9C896AA3455626CA5FF37F /* FServerValues.h in Headers */ = {isa = PBXBuildFile; fileRef = C6398C5D1C3942760F749E8D98573534 /* FServerValues.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 92AB2306BDFD64E2FBFC0DE951F021AE /* RLMRealm_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 111A5A6ED76A0D9FF9C46BA259A8C94E /* RLMRealm_Private.h */; }; - 92E03C8D5DAA71B0B85CBBFDE9C6ECD1 /* merger.cc in Sources */ = {isa = PBXBuildFile; fileRef = D468814F8D40F17D4F6124DB099789CC /* merger.cc */; settings = {COMPILER_FLAGS = "-DOS_MACOSX -DLEVELDB_PLATFORM_POSIX -fno-objc-arc"; }; }; - 92FB390E9E6955EC5AA928ACBF8C78BD /* FImmutableSortedSet.h in Headers */ = {isa = PBXBuildFile; fileRef = 46F91C6D760ABDBFC4E8AD9AC05F5BF0 /* FImmutableSortedSet.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 937C3A5481D3748CCD6858DAA8F2A7A9 /* NSError+FIRInstanceID.m in Sources */ = {isa = PBXBuildFile; fileRef = DB627AADB9E69BF7C3D432DA8000EFF2 /* NSError+FIRInstanceID.m */; }; - 938CF3352C48DB113AFEF3E9CA0AFBCC /* RLMListBase.h in Copy . Private Headers */ = {isa = PBXBuildFile; fileRef = AAFA7E75C9A5878917AA505C0CB45F70 /* RLMListBase.h */; }; - 939DD4BD42800E7A5CEB47528F0F7635 /* FTupleTransaction.m in Sources */ = {isa = PBXBuildFile; fileRef = 23D4A3FF5DBFCDACD0C419B55E3541D8 /* FTupleTransaction.m */; }; - 93B066FDA71715358F0FF01E27E14B03 /* FIRInstanceIDTokenOperation+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 070F632279373DF6E2F7821FBA22B6F3 /* FIRInstanceIDTokenOperation+Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 9424F505D51CCC8333DCFBD70CE062C3 /* RLMSyncSessionRefreshHandle.mm in Sources */ = {isa = PBXBuildFile; fileRef = B65EF170836E480791C8C36BEBE84727 /* RLMSyncSessionRefreshHandle.mm */; settings = {COMPILER_FLAGS = "-DREALM_HAVE_CONFIG -DREALM_COCOA_VERSION='@\"3.17.3\"' -D__ASSERTMACROS__ -DREALM_ENABLE_SYNC"; }; }; - 942656920C39F8D9A85B8BBFE965446D /* FQueryParams.h in Headers */ = {isa = PBXBuildFile; fileRef = 774528B3F3430B49DD81A0CFFBBCE34C /* FQueryParams.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 944F16D6CA7AEF7F87D7FA356462C599 /* RLMConstants.h in Copy . Public Headers */ = {isa = PBXBuildFile; fileRef = 9D045672218BD8A4309A41E3B34BF366 /* RLMConstants.h */; }; - 949330637688F81710408C57176C951A /* RLMRealm+Sync.h in Copy . Public Headers */ = {isa = PBXBuildFile; fileRef = 95AB6CD34FBFFF81FD20C63CB991FB3C /* RLMRealm+Sync.h */; }; - 9605ED51000B604F5D892223E0228F8A /* FIRInstanceIDCheckinPreferences_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 58E5A2E85D3A882C01D7831D09EBC379 /* FIRInstanceIDCheckinPreferences_Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 962E953C11BC8DFEF369AE6E249BB805 /* FWriteTreeRef.m in Sources */ = {isa = PBXBuildFile; fileRef = 2B57D55CAD7B15F7B131BC40D5C05E7C /* FWriteTreeRef.m */; }; - 965459A010FB7FD56029C223E54F3AF5 /* FAtomicNumber.m in Sources */ = {isa = PBXBuildFile; fileRef = 31CF49049567C2952F70001E266E8688 /* FAtomicNumber.m */; }; - 96859F009FC97262232CCA2959A04F0D /* nanopb-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 5250F6979C6A846466F1C96501CD26CF /* nanopb-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 969AAAE7A07E4BF8FAF311DB24B9CCFA /* FIRDatabase_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 3B3D9F339FCA01A7F1DB3948E60D0D8A /* FIRDatabase_Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 96A0C993563F84620746904C97A55DE6 /* FLevelDBStorageEngine.m in Sources */ = {isa = PBXBuildFile; fileRef = 5FF4486873D7D06300DA3F90612842B8 /* FLevelDBStorageEngine.m */; }; - 9726B20B629706FA8007DB0539408BC5 /* GoogleUtilities-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 447184185E7C104FDC3809D8238AE451 /* GoogleUtilities-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9734D5C4DD039037ED563E18DD6865B3 /* RLMSyncConfiguration.h in Copy . Public Headers */ = {isa = PBXBuildFile; fileRef = BC9E409369D99CD85D16327025FCE939 /* RLMSyncConfiguration.h */; }; - 977A2BDF4E2F55BEE8A7D29E094FD6E0 /* FWebSocketConnection.h in Headers */ = {isa = PBXBuildFile; fileRef = ECBEB4A72237D43F4498046D719CAB0E /* FWebSocketConnection.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 994C607137F5C3AF1E66C92F13F6FC1A /* sync_user.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0DD33F53EB6EED6ECCD2501263A891E1 /* sync_user.cpp */; settings = {COMPILER_FLAGS = "-DREALM_HAVE_CONFIG -DREALM_COCOA_VERSION='@\"3.17.3\"' -D__ASSERTMACROS__ -DREALM_ENABLE_SYNC"; }; }; - 996EB8A8897931C376FA4B9E5FBB3688 /* NSError+RLMSync.h in Copy . Public Headers */ = {isa = PBXBuildFile; fileRef = E0EAE40F22B9636DEA4D7400330F2622 /* NSError+RLMSync.h */; }; - 9A6631F9BE2D1C8642A54921EB210A4B /* FSyncPoint.m in Sources */ = {isa = PBXBuildFile; fileRef = 80A8CC83042D8324C7A06F123B197A9D /* FSyncPoint.m */; }; - 9A92B8F70A3DFB182F8BEB0367F4E895 /* FirebaseInstanceID.h in Headers */ = {isa = PBXBuildFile; fileRef = A1D0E58815360DE82ECFA8ABF6E6530D /* FirebaseInstanceID.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9AD6029ED89AA028361A0A4A0DAF7E98 /* FIRServerValue.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D89388C71B2B1FD6EC78EBEBBF31E53 /* FIRServerValue.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9AEF54170F7BD7F27A35B8E230877EAF /* FClock.m in Sources */ = {isa = PBXBuildFile; fileRef = E1DDFC9FBF27A99865B52A810661DE3F /* FClock.m */; }; - 9B599B5EB8D6C2E97B0A4B7E6B9E2418 /* FPersistenceManager.m in Sources */ = {isa = PBXBuildFile; fileRef = B0EB9D0D0FE5ED106C8C90A441BFC53D /* FPersistenceManager.m */; }; - 9B79B99B4B3CEEB12792BBCD929A10B3 /* FLLRBValueNode.m in Sources */ = {isa = PBXBuildFile; fileRef = A1CA43453FA816A0A880B02CB2A1BF71 /* FLLRBValueNode.m */; }; - 9BAED39893E3A38E86EC0CB7F1B4664D /* RealmSwift-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = EA414CCAFA3FB6F475B8CEA782E3F436 /* RealmSwift-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9C69329A9E4C5A2558679592ECF269DB /* GULNetworkURLSession.h in Headers */ = {isa = PBXBuildFile; fileRef = 74B116BB4C3F1F8BC8C2570DBC184EA8 /* GULNetworkURLSession.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 9CA972B199B03D98E544E761CB6F514F /* FIRInstanceIDTokenManager.m in Sources */ = {isa = PBXBuildFile; fileRef = C57B25337A77122982D201D671C80712 /* FIRInstanceIDTokenManager.m */; }; - 9CB2F238AB2FB6E3D5B0BD71B0DD9AA1 /* FIRDatabase.m in Sources */ = {isa = PBXBuildFile; fileRef = 7D26FA9ED591A75CB97F3A6C5C16AD55 /* FIRDatabase.m */; }; - 9CB63266275054887263D021A95BD648 /* FTreeSortedDictionaryEnumerator.m in Sources */ = {isa = PBXBuildFile; fileRef = 1E31993E8C2DBBBA5813C268FCA75F52 /* FTreeSortedDictionaryEnumerator.m */; }; - 9CD834F1AF935270B890BA341CA08CBB /* FCompoundWrite.h in Headers */ = {isa = PBXBuildFile; fileRef = 040252EB86405F1D7BBEFFFC6E3D456C /* FCompoundWrite.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 9DA25B2EF34CDA3DEEA777AC54AF9B6E /* FIndexedFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 7A98FB20C023A1BB91C8DBAC0BA523F0 /* FIndexedFilter.m */; }; - 9DD235CBC46DA99444A765A1E299C212 /* FIRMutableData.m in Sources */ = {isa = PBXBuildFile; fileRef = A88BF4C13FC276E4362A34A12E2EB4A6 /* FIRMutableData.m */; }; - 9DE2BA9567CE697B595C38AD45F4403E /* testharness.cc in Sources */ = {isa = PBXBuildFile; fileRef = 2B5EDC32878131D9A5EE4D477508FDEC /* testharness.cc */; settings = {COMPILER_FLAGS = "-DOS_MACOSX -DLEVELDB_PLATFORM_POSIX -fno-objc-arc"; }; }; - 9E476F217C01FA74783F9D2D4BEEBE0F /* RLMRealm_Dynamic.h in Headers */ = {isa = PBXBuildFile; fileRef = B83BFEAE0F3F683626A7D9A05650D07F /* RLMRealm_Dynamic.h */; }; - 9E84C7CDA8318216B67CEED872E2DEFB /* pb_decode.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A1672A7686DA002ECE0F97EC493A4C8 /* pb_decode.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9E9838E360C3204800015DAD2459EF7A /* FIRInstanceIDUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = B06538CA6602D0F35E348807C5A19F68 /* FIRInstanceIDUtilities.m */; }; - 9EE47330FA51209EC3AB5B386B301E09 /* FWriteTree.h in Headers */ = {isa = PBXBuildFile; fileRef = 49939A8FBCC02D977E09551F24F72189 /* FWriteTree.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 9F0F8AAD6CCBE7182BF318ED1CA88F3F /* FIRDataSnapshot.h in Headers */ = {isa = PBXBuildFile; fileRef = 9A1CCE5149144282C117C9E78B51D22B /* FIRDataSnapshot.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9F59BD1FA773AD43923DD3843559E424 /* filename.h in Headers */ = {isa = PBXBuildFile; fileRef = C873B359BD343FD9C6CE235E16D330A7 /* filename.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 9F88ED341CFE6C501D0524C0BB885C36 /* FViewCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 5E019C03F6D81056EDCC6E6727CC5C22 /* FViewCache.h */; settings = {ATTRIBUTES = (Project, ); }; }; - A065F359A071BDAEFF8799FC6E4959B4 /* FIRInstanceIDTokenOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F9FC0717EA4E706E47A0BC2954EF3BF /* FIRInstanceIDTokenOperation.h */; settings = {ATTRIBUTES = (Project, ); }; }; - A15096ABCEEE1493773777D56313B7E6 /* RLMRealm.mm in Sources */ = {isa = PBXBuildFile; fileRef = 0618723009E3513AA3529A7366BD1651 /* RLMRealm.mm */; settings = {COMPILER_FLAGS = "-DREALM_HAVE_CONFIG -DREALM_COCOA_VERSION='@\"3.17.3\"' -D__ASSERTMACROS__ -DREALM_ENABLE_SYNC"; }; }; - A17698BC6EEF1C8B99D51B8A9F260E44 /* FIRDatabaseQuery.m in Sources */ = {isa = PBXBuildFile; fileRef = 03F855A5B507F9CAEAD468E4EEAB9059 /* FIRDatabaseQuery.m */; }; - A197A576946A28350D93810CA9590805 /* FSnapshotHolder.h in Headers */ = {isa = PBXBuildFile; fileRef = C5AEB5ECE1D2EACE276EB75163CF71EE /* FSnapshotHolder.h */; settings = {ATTRIBUTES = (Project, ); }; }; - A21B19FCB0DFABCE9E33BC8C108708F5 /* FChange.m in Sources */ = {isa = PBXBuildFile; fileRef = EE35FF84894CD6820706A105C0EBC645 /* FChange.m */; }; - A231C3D11FEFF60FB796E0318CBD27E0 /* FTuplePathValue.h in Headers */ = {isa = PBXBuildFile; fileRef = F93AFAED2CAB8BE4703BC903FFD5999E /* FTuplePathValue.h */; settings = {ATTRIBUTES = (Project, ); }; }; - A266655E9ED38EBED38AD722B5A1C317 /* RLMRealm_Dynamic.h in Copy . Public Headers */ = {isa = PBXBuildFile; fileRef = B83BFEAE0F3F683626A7D9A05650D07F /* RLMRealm_Dynamic.h */; }; - A293E894A00AF8FBE186A0204D26D411 /* FIRConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = 0E25B17C116EB81D489896E73E91F065 /* FIRConfiguration.h */; settings = {ATTRIBUTES = (Public, ); }; }; - A2B827F64CAB3A3860CE5BEADA05EDAD /* FIRInstanceIDTokenOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 4FFADE515AE28D09D752179317522308 /* FIRInstanceIDTokenOperation.m */; }; - A31D0A06C67F8CC7DC9BE09BF0B60ACC /* RLMSyncSession.h in Headers */ = {isa = PBXBuildFile; fileRef = E12F0AFFFCDB303E55E84E9398F43435 /* RLMSyncSession.h */; }; - A3C87A043886D3BF5ACC8414B77771EE /* FirebaseDatabase.h in Headers */ = {isa = PBXBuildFile; fileRef = 13583B89378F90F6F6E13CF4A6DE6DA4 /* FirebaseDatabase.h */; settings = {ATTRIBUTES = (Public, ); }; }; - A3DAB88B708EEF73F0A36FF4CB87E9D4 /* logging.cc in Sources */ = {isa = PBXBuildFile; fileRef = 5FF6A45D78980BFC3B688A50B0742026 /* logging.cc */; settings = {COMPILER_FLAGS = "-DOS_MACOSX -DLEVELDB_PLATFORM_POSIX -fno-objc-arc"; }; }; - A47CE0F8D003D149C0F5223D096BE8CE /* FIRComponentContainerInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = BB11EC750FDDA7792BB2DE688D324135 /* FIRComponentContainerInternal.h */; settings = {ATTRIBUTES = (Private, ); }; }; - A4D428D1BCF8D9F2DC07EC10CEBC3C2F /* snapshot.h in Headers */ = {isa = PBXBuildFile; fileRef = F12E891C300C2EDCD9D145FA1D11BC94 /* snapshot.h */; settings = {ATTRIBUTES = (Project, ); }; }; - A4D9734ACE1883DB16AEF9776C8197F6 /* FPath.m in Sources */ = {isa = PBXBuildFile; fileRef = B52D90179A83A1E66BD01DBF3B97164C /* FPath.m */; }; - A4F1F77F509D1EB47AAE79A666BABBBF /* FLimitedFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 71D30C845C69EB92744549CF18F1D528 /* FLimitedFilter.m */; }; - A52B25BEF516CA038540C86CD68B4602 /* FLeafNode.m in Sources */ = {isa = PBXBuildFile; fileRef = F2155BA367E62EDB156F27E56FDFF7F6 /* FLeafNode.m */; }; - A55ECCCE090A9901C2C18BC8680BC227 /* GULUserDefaults.h in Headers */ = {isa = PBXBuildFile; fileRef = 6995A6D50582A628AF6752F9F34FD53D /* GULUserDefaults.h */; settings = {ATTRIBUTES = (Private, ); }; }; - A56FD686C400F83D7827CA2AE781F2F9 /* FChildrenNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 822CE64BC5451FBF6F3C6A7758C67BC2 /* FChildrenNode.h */; settings = {ATTRIBUTES = (Project, ); }; }; - A574689328D21EFD318C27BEC85437F4 /* RLMSyncUser.mm in Sources */ = {isa = PBXBuildFile; fileRef = B9A93F0E486590B86179CEBD4B8DE62B /* RLMSyncUser.mm */; settings = {COMPILER_FLAGS = "-DREALM_HAVE_CONFIG -DREALM_COCOA_VERSION='@\"3.17.3\"' -D__ASSERTMACROS__ -DREALM_ENABLE_SYNC"; }; }; - A580D8D31AB1CE2135E12415F6DF4EE3 /* FPersistentConnection.m in Sources */ = {isa = PBXBuildFile; fileRef = 15EC87D861893BB00E43B89933D8D2BC /* FPersistentConnection.m */; }; - A6801ADAA631C909DB0EF52A19E3A2D9 /* FRepo_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 6B69116847CD672F5FBFE5CA1DFE8BE7 /* FRepo_Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; - A6BC1E75A847F7FA386F7516FB46034E /* FIRInstanceIDTokenDeleteOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 356F28678750FDD965D0826202430215 /* FIRInstanceIDTokenDeleteOperation.m */; }; - A6D32BD2A1F8F1DF754BF5F17AA1479F /* weak_realm_notifier.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F23BA1CCEEFD97A5FBC5256E6310A9C9 /* weak_realm_notifier.cpp */; settings = {COMPILER_FLAGS = "-DREALM_HAVE_CONFIG -DREALM_COCOA_VERSION='@\"3.17.3\"' -D__ASSERTMACROS__ -DREALM_ENABLE_SYNC"; }; }; - A7CB993D569BC43F150B2DD794A57E76 /* FChildChangeAccumulator.h in Headers */ = {isa = PBXBuildFile; fileRef = 79A7BC578FA6B8DBF2907CA31A40E533 /* FChildChangeAccumulator.h */; settings = {ATTRIBUTES = (Project, ); }; }; - A863AFB5119FB1D5FE5D73FA43ABDF34 /* RLMSyncSession.h in Copy . Public Headers */ = {isa = PBXBuildFile; fileRef = E12F0AFFFCDB303E55E84E9398F43435 /* RLMSyncSession.h */; }; - A86820C5CD61665C39E4D5D43C65CA8D /* FTupleFirebase.m in Sources */ = {isa = PBXBuildFile; fileRef = 073D061194DC97B908EB2FFA562A2AB7 /* FTupleFirebase.m */; }; - A910E7B904893F3E6D5D9A7D9D1CC9C2 /* two_level_iterator.cc in Sources */ = {isa = PBXBuildFile; fileRef = 358D4DCDCDD9B38F0A7ED8571CAC249A /* two_level_iterator.cc */; settings = {COMPILER_FLAGS = "-DOS_MACOSX -DLEVELDB_PLATFORM_POSIX -fno-objc-arc"; }; }; - A91EF19256F4AA665D4E479008402E67 /* RLMRealmConfiguration.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1A56100AD75D6F45FC0D0A57315577D9 /* RLMRealmConfiguration.mm */; settings = {COMPILER_FLAGS = "-DREALM_HAVE_CONFIG -DREALM_COCOA_VERSION='@\"3.17.3\"' -D__ASSERTMACROS__ -DREALM_ENABLE_SYNC"; }; }; - A935F47364062B1671C233D9E52E0C33 /* FIRConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = D8800C8C0D59FD75255FD85A9284E976 /* FIRConfiguration.m */; }; - A9832D0AFFD108E7BD900991CD00B5BE /* RLMProperty.h in Copy . Public Headers */ = {isa = PBXBuildFile; fileRef = F35E730FB06ECB2418569BB95F3A5BD1 /* RLMProperty.h */; }; - AA6D15DC80DBE534012D137FC4005A09 /* FIRInstanceIDAuthKeyChain.m in Sources */ = {isa = PBXBuildFile; fileRef = 047E1336D8AE33C72345487ED716EA50 /* FIRInstanceIDAuthKeyChain.m */; }; - AA78B62C35A0525EC0E881F918232EF1 /* status.cc in Sources */ = {isa = PBXBuildFile; fileRef = EBC5C61CC9AD2F6282EFFC889E043680 /* status.cc */; settings = {COMPILER_FLAGS = "-DOS_MACOSX -DLEVELDB_PLATFORM_POSIX -fno-objc-arc"; }; }; - AA80ECEF61E729BEB073D1DAB31C395F /* FTupleCallbackStatus.m in Sources */ = {isa = PBXBuildFile; fileRef = EA0C9C5BAC8F1A23863BC4FB72D5AF62 /* FTupleCallbackStatus.m */; }; - AA97BF603882529CA51734A93C8BA78F /* env_posix_test_helper.h in Headers */ = {isa = PBXBuildFile; fileRef = F4C20F60F9342B8B82D65C1570C0F432 /* env_posix_test_helper.h */; settings = {ATTRIBUTES = (Project, ); }; }; - AABEE951C89957EB5E1FCD3D25CD45B4 /* Schema.swift in Sources */ = {isa = PBXBuildFile; fileRef = 872F2BD8244D91CB7895F596313B8378 /* Schema.swift */; }; - AAF40409B6582A25EBF6DDAF248528B1 /* FIRDatabaseComponent.m in Sources */ = {isa = PBXBuildFile; fileRef = F8A3DB8BFE0116EB37E50F4B24B89A7D /* FIRDatabaseComponent.m */; }; - AB500083C0ABCFA9EC4497BAF53C7081 /* RLMObject.mm in Sources */ = {isa = PBXBuildFile; fileRef = AC4D11FC46FE59DC567F0DABA72CB07D /* RLMObject.mm */; settings = {COMPILER_FLAGS = "-DREALM_HAVE_CONFIG -DREALM_COCOA_VERSION='@\"3.17.3\"' -D__ASSERTMACROS__ -DREALM_ENABLE_SYNC"; }; }; - ABBE590B50F0AC97EEA56EA2881486C6 /* FPathIndex.m in Sources */ = {isa = PBXBuildFile; fileRef = F176EEB98BF07589D0144F24E7D3649A /* FPathIndex.m */; }; - ABD104FE4926258ACBCA8AF01C763714 /* FWriteRecord.m in Sources */ = {isa = PBXBuildFile; fileRef = C9D1A710C3853E938F35FB78263C176F /* FWriteRecord.m */; }; - AC0F5BE9969AFF9FC4DBF4D3115917ED /* ObjectSchema.swift in Sources */ = {isa = PBXBuildFile; fileRef = 12E39F3C7E0D14603936B4F2545364B4 /* ObjectSchema.swift */; }; - AC7D415C826932227566EB2B916A7C26 /* SortDescriptor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2FD42CD6F7559A5019D12D8D9CB074A3 /* SortDescriptor.swift */; }; - ACEE8B9AF12952DFE6883AD1524E1B95 /* FChildChangeAccumulator.m in Sources */ = {isa = PBXBuildFile; fileRef = 69147017F1CCE0913F4CE21CBB2D1206 /* FChildChangeAccumulator.m */; }; - AD76EB21E4D3193E4512D034AA5B5FA8 /* iterator.h in Headers */ = {isa = PBXBuildFile; fileRef = 64CB5A1C55D0DFCA324F5B2488F7F31D /* iterator.h */; settings = {ATTRIBUTES = (Public, ); }; }; - ADF1076FF0CE456B5E0E046EEC33CD97 /* ThreadSafeReference.swift in Sources */ = {isa = PBXBuildFile; fileRef = E1F67397D5F8B49CF54E38110720B257 /* ThreadSafeReference.swift */; }; - AE0E3346877C8D3DDAFE7CE8D0F595F5 /* FEventEmitter.h in Headers */ = {isa = PBXBuildFile; fileRef = 467508FAF85EFF9A04195C0AEB94A583 /* FEventEmitter.h */; settings = {ATTRIBUTES = (Project, ); }; }; - AEB370D3E0B4DD64F3D6C968F4130418 /* RLMSyncUtil_Private.h in Copy . Private Headers */ = {isa = PBXBuildFile; fileRef = C92AF00A8AB6382E1EF86F0A591F4C6D /* RLMSyncUtil_Private.h */; }; - AEBB1D778622D1171DB90A17BD7DBFA5 /* c.cc in Sources */ = {isa = PBXBuildFile; fileRef = 6DFA8195BD627C8AC822698B906F4AAC /* c.cc */; settings = {COMPILER_FLAGS = "-DOS_MACOSX -DLEVELDB_PLATFORM_POSIX -fno-objc-arc"; }; }; - AEE26F3C2B2C2CB4E6CCCEBA25FA728B /* RLMMigration.h in Copy . Public Headers */ = {isa = PBXBuildFile; fileRef = 9BF6AC03DA6DD95107B1920EC6ECCE2F /* RLMMigration.h */; }; - AEEE5B25CD3D160CE4BC1AD60ACCD794 /* FIRInstanceIDCheckinPreferences+Internal.m in Sources */ = {isa = PBXBuildFile; fileRef = E956CED4160A0DDFAE463FFCA8865DCD /* FIRInstanceIDCheckinPreferences+Internal.m */; }; - AFBB3F042D0A5AA5178777F33A8EB738 /* FIRLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = 064BF53BD9419D42E78FC0A0DAC8CFE6 /* FIRLogger.m */; }; - AFD04677C3352C023D0258FF28F550B7 /* FTreeNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 0D529837A821AFCF926F27874ACC2550 /* FTreeNode.m */; }; - AFEDA85C2ACE6902C5CA86036E2D1B20 /* FLLRBValueNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 1F9DDCF917A72B453DB56A63B5AA3947 /* FLLRBValueNode.h */; settings = {ATTRIBUTES = (Project, ); }; }; - B0A4CD547FC897EAF040F0BA4678CE52 /* FIRDatabase.h in Headers */ = {isa = PBXBuildFile; fileRef = 7D23DCD48CBB6653AB9FBED51DCD86C7 /* FIRDatabase.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B13106596567A0A94DDCB09B6EEA0F5F /* block.cc in Sources */ = {isa = PBXBuildFile; fileRef = 6C539B38DC200475939ACD6A2AA0C9DA /* block.cc */; settings = {COMPILER_FLAGS = "-DOS_MACOSX -DLEVELDB_PLATFORM_POSIX -fno-objc-arc"; }; }; - B16D582D7806ADD1CB5B3186C82C077B /* RLMOptionalBase.mm in Sources */ = {isa = PBXBuildFile; fileRef = 690630AD468306399E4D4370F3CBBE52 /* RLMOptionalBase.mm */; settings = {COMPILER_FLAGS = "-DREALM_HAVE_CONFIG -DREALM_COCOA_VERSION='@\"3.17.3\"' -D__ASSERTMACROS__ -DREALM_ENABLE_SYNC"; }; }; - B175CAD91120F2AE08446C985E44ECD0 /* FEventGenerator.m in Sources */ = {isa = PBXBuildFile; fileRef = D5CFE4DBB50AB327172E04A722EC13DD /* FEventGenerator.m */; }; - B19F4223C39993C7275EE555162E2180 /* FTupleObjects.h in Headers */ = {isa = PBXBuildFile; fileRef = 360B1CE1375116C8D5A01EDF7C70D915 /* FTupleObjects.h */; settings = {ATTRIBUTES = (Project, ); }; }; - B1B6D5762D0A8A6B59093DB2AF2F4C12 /* RLMSyncUtil_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = C92AF00A8AB6382E1EF86F0A591F4C6D /* RLMSyncUtil_Private.h */; }; - B1E1060956B875EAF7AA752B82D2E598 /* NSError+RLMSync.m in Sources */ = {isa = PBXBuildFile; fileRef = 3503C42E4DCCECD330D850A42828A4B9 /* NSError+RLMSync.m */; settings = {COMPILER_FLAGS = "-DREALM_HAVE_CONFIG -DREALM_COCOA_VERSION='@\"3.17.3\"' -D__ASSERTMACROS__ -DREALM_ENABLE_SYNC"; }; }; - B2380BE5EFB6B69AD2189FB9D952FD02 /* FIRComponentType.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A3E9EBA81C313F72F7E28D9CC8EACBE /* FIRComponentType.m */; }; - B2E74D5EE377D5C8E273817F1AAF607F /* FIRInstanceIDConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DFE31ED74B2B0CF5CF1B48C343AB34D /* FIRInstanceIDConstants.h */; settings = {ATTRIBUTES = (Project, ); }; }; - B40624BBA51918F5221CE96FCAEDDE54 /* GULLogger.h in Headers */ = {isa = PBXBuildFile; fileRef = 76586E07571BC6F0545AF668C8C1DEBB /* GULLogger.h */; settings = {ATTRIBUTES = (Private, ); }; }; - B50ADE2EDFF5F69CD03D7E21CDE92483 /* filename.cc in Sources */ = {isa = PBXBuildFile; fileRef = 3DB9A61749E2672591F3744B8E0A809B /* filename.cc */; settings = {COMPILER_FLAGS = "-DOS_MACOSX -DLEVELDB_PLATFORM_POSIX -fno-objc-arc"; }; }; - B51FE96C5980296027D229A6080E3FC2 /* NSData+SRB64Additions.h in Headers */ = {isa = PBXBuildFile; fileRef = A556F2666E6DB22010E3776F333A5B5B /* NSData+SRB64Additions.h */; settings = {ATTRIBUTES = (Project, ); }; }; - B53128E362D7880F828B1A8DD788A3DD /* FIRInstanceIDLogger.h in Headers */ = {isa = PBXBuildFile; fileRef = 3085AAF6DF83EF661073653D6C902F72 /* FIRInstanceIDLogger.h */; settings = {ATTRIBUTES = (Project, ); }; }; - B54AAF339502800C6F39457FE3960E31 /* FKeyIndex.h in Headers */ = {isa = PBXBuildFile; fileRef = EBE26D1FF64CCFBCD68F732793E490FE /* FKeyIndex.h */; settings = {ATTRIBUTES = (Project, ); }; }; - B54FED393DDF34FF370AC565E096CD4F /* RLMObjectSchema_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F73F81DEA5CF679273B8F09D64D99AC /* RLMObjectSchema_Private.h */; }; - B58BB472D77042F89A149471B61C7F2B /* merger.h in Headers */ = {isa = PBXBuildFile; fileRef = F38B3CCCE12D32FA9EA1093E16DCAE4F /* merger.h */; settings = {ATTRIBUTES = (Project, ); }; }; - B62397EFAD2B6F81AFA2E9B7E0B4BF2A /* env.cc in Sources */ = {isa = PBXBuildFile; fileRef = 6BD9E51C74E54CDF7B8C30315AFA37AE /* env.cc */; settings = {COMPILER_FLAGS = "-DOS_MACOSX -DLEVELDB_PLATFORM_POSIX -fno-objc-arc"; }; }; - B695A596EB641C4D1315C8307AC07C7C /* RLMAnalytics.mm in Sources */ = {isa = PBXBuildFile; fileRef = DD18F7C36379B02C2C6E4BEE75A3073C /* RLMAnalytics.mm */; settings = {COMPILER_FLAGS = "-DREALM_HAVE_CONFIG -DREALM_COCOA_VERSION='@\"3.17.3\"' -D__ASSERTMACROS__ -DREALM_ENABLE_SYNC"; }; }; - B716C65DD09AF6E98190284B67A268F7 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0781231D907887B1D7DF0E005F108FF7 /* Foundation.framework */; }; - B7622B470DD663E9239AC5E1B539EE76 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0781231D907887B1D7DF0E005F108FF7 /* Foundation.framework */; }; - B77D09D7C1EE7B51E6BF67F2D5E8685B /* options.cc in Sources */ = {isa = PBXBuildFile; fileRef = 324605F9A7C1A835798788A242AC925F /* options.cc */; settings = {COMPILER_FLAGS = "-DOS_MACOSX -DLEVELDB_PLATFORM_POSIX -fno-objc-arc"; }; }; - B79E533ADFF6B928B63AF448B468C6C4 /* RLMQueryUtil.mm in Sources */ = {isa = PBXBuildFile; fileRef = 19167ABA8E3C67FBCAF3FDF46F792190 /* RLMQueryUtil.mm */; settings = {COMPILER_FLAGS = "-DREALM_HAVE_CONFIG -DREALM_COCOA_VERSION='@\"3.17.3\"' -D__ASSERTMACROS__ -DREALM_ENABLE_SYNC"; }; }; - B847516221478504E69DB7190AAB0C0B /* FIRInstanceIDTokenStore.m in Sources */ = {isa = PBXBuildFile; fileRef = 1FE11E126D85D3F8DF9050D0B9D47B6E /* FIRInstanceIDTokenStore.m */; }; - B85523946056D99FF97B3BE6E19426D8 /* RLMArray.mm in Sources */ = {isa = PBXBuildFile; fileRef = 19466576FA6A3823DD0A35E6EF6CBD1C /* RLMArray.mm */; settings = {COMPILER_FLAGS = "-DREALM_HAVE_CONFIG -DREALM_COCOA_VERSION='@\"3.17.3\"' -D__ASSERTMACROS__ -DREALM_ENABLE_SYNC"; }; }; - B8B5944302284DFDC87C258C5B199E7A /* RLMSyncConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = BC9E409369D99CD85D16327025FCE939 /* RLMSyncConfiguration.h */; }; - B8BC3EF89ECD65588D20A746E65B1958 /* RLMRealmConfiguration+Sync.mm in Sources */ = {isa = PBXBuildFile; fileRef = 3C46FBB4F3EFE1D6813BC3216242E777 /* RLMRealmConfiguration+Sync.mm */; settings = {COMPILER_FLAGS = "-DREALM_HAVE_CONFIG -DREALM_COCOA_VERSION='@\"3.17.3\"' -D__ASSERTMACROS__ -DREALM_ENABLE_SYNC"; }; }; - B8EC8C5EEF9F51AF13726DCAEFC121BF /* table_cache.h in Headers */ = {isa = PBXBuildFile; fileRef = D451800621CC2FDC8A999D954BCE543F /* table_cache.h */; settings = {ATTRIBUTES = (Project, ); }; }; - B8F5EA1FDA4E2B5CF2F79ABB08C53919 /* FIRInstanceIDDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = 374861B0DCA3C592DB0126E641796E9D /* FIRInstanceIDDefines.h */; settings = {ATTRIBUTES = (Project, ); }; }; - B932AFFE86F6EF2E7626EF5F5ADB1242 /* work_queue.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3B71F4EF0FBDE6C2BE584F18FD758591 /* work_queue.cpp */; settings = {COMPILER_FLAGS = "-DREALM_HAVE_CONFIG -DREALM_COCOA_VERSION='@\"3.17.3\"' -D__ASSERTMACROS__ -DREALM_ENABLE_SYNC"; }; }; - B99BBE8270A6A7D0BBD5140BFF24F6B3 /* GULNSData+zlib.h in Headers */ = {isa = PBXBuildFile; fileRef = EBFF659FD75EE6D6591D3B29C1A6D873 /* GULNSData+zlib.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B9D528EB21C65047CE9FB75CB74CE19C /* RLMSyncSession.mm in Sources */ = {isa = PBXBuildFile; fileRef = A9280009C3D5F3BFD9BF39C760BFCC65 /* RLMSyncSession.mm */; settings = {COMPILER_FLAGS = "-DREALM_HAVE_CONFIG -DREALM_COCOA_VERSION='@\"3.17.3\"' -D__ASSERTMACROS__ -DREALM_ENABLE_SYNC"; }; }; - B9F84FB3ECF060E6B6A5E4E0EA6D0563 /* crc32c.h in Headers */ = {isa = PBXBuildFile; fileRef = 5B5DD85F6549F5AB5E28D8BFC596D1BC /* crc32c.h */; settings = {ATTRIBUTES = (Project, ); }; }; - BA81227041AB29C9C59B46E2AD30CF5C /* APLevelDB.h in Headers */ = {isa = PBXBuildFile; fileRef = 5892CA43063974C0B8E8C8559151659E /* APLevelDB.h */; settings = {ATTRIBUTES = (Project, ); }; }; - BB7267913ABFB33F15AAC006C881A596 /* NSData+SRB64Additions.m in Sources */ = {isa = PBXBuildFile; fileRef = CC09FE00F3820B1F81624F3E21A69DB2 /* NSData+SRB64Additions.m */; }; - BBC0AACCCDBBC8CA76718C2EE0E1E44A /* FEventGenerator.h in Headers */ = {isa = PBXBuildFile; fileRef = 7C81F484FD3E3CB5BEB04929028F92D7 /* FEventGenerator.h */; settings = {ATTRIBUTES = (Project, ); }; }; - BBCC6DDC1E888668E9DB4E11FDECBE76 /* Error.swift in Sources */ = {isa = PBXBuildFile; fileRef = B072F854F793C1B6A5617085AB28CE67 /* Error.swift */; }; - BC3C3926EC7482725AD7F0F2CB54A9B2 /* FIRInstanceIDUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = D7211408662E27E036FECBE6564F829A /* FIRInstanceIDUtilities.h */; settings = {ATTRIBUTES = (Project, ); }; }; - BC71D66AA194EABC5188F55A969EDA43 /* FEventRegistration.h in Headers */ = {isa = PBXBuildFile; fileRef = 0952D1860824C1CA8ED07023B636A233 /* FEventRegistration.h */; settings = {ATTRIBUTES = (Project, ); }; }; - BC73EB6C746497C92822CAB9FE3F0557 /* random.h in Headers */ = {isa = PBXBuildFile; fileRef = 66DEA65F5310D61C072B32E12C655944 /* random.h */; settings = {ATTRIBUTES = (Project, ); }; }; - BC94EE9013468F13B1EFC548E5C02FA1 /* FTupleFirebase.h in Headers */ = {isa = PBXBuildFile; fileRef = 4D221017AB061F4FB8FF488CE9513AAA /* FTupleFirebase.h */; settings = {ATTRIBUTES = (Project, ); }; }; - BD0CA1A486E0F8C3458BC1BCC366E2EE /* RLMThreadSafeReference.h in Headers */ = {isa = PBXBuildFile; fileRef = A4FF28B17689447E1E0477D1AA932149 /* RLMThreadSafeReference.h */; }; - BD826E7437E5D46F55E6B115FF4C22B1 /* FIndexedNode.m in Sources */ = {isa = PBXBuildFile; fileRef = B6C37F287EF9306F2341AC77561327CA /* FIndexedNode.m */; }; - BE25617CF93E63163BB3165ACC31D22E /* RLMCollection.mm in Sources */ = {isa = PBXBuildFile; fileRef = A92FF9E6AB06C3C75197D5A06B4A7D9F /* RLMCollection.mm */; settings = {COMPILER_FLAGS = "-DREALM_HAVE_CONFIG -DREALM_COCOA_VERSION='@\"3.17.3\"' -D__ASSERTMACROS__ -DREALM_ENABLE_SYNC"; }; }; - BE4DB0ECDCB7C539FA09D6ADD1D14D2E /* FRangedFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 8CFDA344EE6DBC20BA1B3C43707EC0C9 /* FRangedFilter.m */; }; - BE896A5DDFD39DBEEDE89C02C6D2E4FC /* FMaxNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 36110B45321463CA3F0F1C3E5235D72C /* FMaxNode.h */; settings = {ATTRIBUTES = (Project, ); }; }; - BF951F66705868C4A3D38A808F8AFCF7 /* RLMObject.h in Copy . Public Headers */ = {isa = PBXBuildFile; fileRef = A4AF2035141DF1584A2FCAFE8F64D88C /* RLMObject.h */; }; - C04BC8EBF1E3A0C816AB8BFB7694AB82 /* FTrackedQuery.m in Sources */ = {isa = PBXBuildFile; fileRef = 9CC4B5172FBBB51FD79B4F660221EBEE /* FTrackedQuery.m */; }; - C0B215FE71A70E5C23B1765F12B08A7A /* table_cache.cc in Sources */ = {isa = PBXBuildFile; fileRef = 010208BF5BCFF569ED50125DCAFDDCE4 /* table_cache.cc */; settings = {COMPILER_FLAGS = "-DOS_MACOSX -DLEVELDB_PLATFORM_POSIX -fno-objc-arc"; }; }; - C22660680F678BC5FE5331F25B2E86D6 /* FConnection.m in Sources */ = {isa = PBXBuildFile; fileRef = 1CB91AAAA2DFB02E6A0A6C483A969754 /* FConnection.m */; }; - C3262F3640BB8DEDCF85787CACBCB148 /* RLMSyncUtil.h in Headers */ = {isa = PBXBuildFile; fileRef = FCCDBA4C00C13320C4B739A41B8DF480 /* RLMSyncUtil.h */; }; - C3B2B458CE319D735C5C92CE6E992EB3 /* Pods-shlack-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 5E5908CD47E8809377098A523758133E /* Pods-shlack-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - C48C45A2A6C09A8E951F605C024F58B7 /* FIRComponentContainer.h in Headers */ = {isa = PBXBuildFile; fileRef = 773BFE43ADB302623977777A18310461 /* FIRComponentContainer.h */; settings = {ATTRIBUTES = (Private, ); }; }; - C663FCE8963BFA8E0CBE7503FD659760 /* FOverwrite.m in Sources */ = {isa = PBXBuildFile; fileRef = ECA01B52E39D410FEB884E6293FC8829 /* FOverwrite.m */; }; - C69E3EE3D2D5557204F51550B4E1F153 /* FIRInstanceIDAPNSInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 6D0F8BB58114A0C5C2FC448162FF2018 /* FIRInstanceIDAPNSInfo.m */; }; - C6A8639D82B8E1D5C07E72CC087CB703 /* YMTGetDeviceName-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 5855A8E7F2EDEE3B89093D3E8369CD82 /* YMTGetDeviceName-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - C740E0793A39526D7F4390F6A9D6AC49 /* sync_manager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 347C795EAA4A6BFE0316100938BDA496 /* sync_manager.cpp */; settings = {COMPILER_FLAGS = "-DREALM_HAVE_CONFIG -DREALM_COCOA_VERSION='@\"3.17.3\"' -D__ASSERTMACROS__ -DREALM_ENABLE_SYNC"; }; }; - C751BB8850702F0799370D6437A38A5D /* FView.m in Sources */ = {isa = PBXBuildFile; fileRef = D3983151C53760A454F4ACE38FAF51F9 /* FView.m */; }; - C834E9D4D8E2975A91B2F48224EABD9F /* iterator.cc in Sources */ = {isa = PBXBuildFile; fileRef = 298336778EB733D007DF50E7B79E39DA /* iterator.cc */; settings = {COMPILER_FLAGS = "-DOS_MACOSX -DLEVELDB_PLATFORM_POSIX -fno-objc-arc"; }; }; - C8C28383779C595F896AE558AB7F6909 /* RLMSyncPermission.h in Copy . Public Headers */ = {isa = PBXBuildFile; fileRef = B97D20AB8D7A1D8E6A813743AE731ECB /* RLMSyncPermission.h */; }; - C92B6820F42946B2FB6E67227885CC5B /* RLMSchema.h in Copy . Public Headers */ = {isa = PBXBuildFile; fileRef = 829624137DE06741D18AC3911DD3D243 /* RLMSchema.h */; }; - C9CB7427ABED64DE9297FD1D3A83F54B /* RLMAccessor.mm in Sources */ = {isa = PBXBuildFile; fileRef = CBCA1BA073AFD3B8923217C6CCB55FCA /* RLMAccessor.mm */; settings = {COMPILER_FLAGS = "-DREALM_HAVE_CONFIG -DREALM_COCOA_VERSION='@\"3.17.3\"' -D__ASSERTMACROS__ -DREALM_ENABLE_SYNC"; }; }; - CA58C43E6D06ABCEE28B6AFEF1DE7CA0 /* builder.h in Headers */ = {isa = PBXBuildFile; fileRef = FBE7AA56320221FD0C738106C357CA8D /* builder.h */; settings = {ATTRIBUTES = (Project, ); }; }; - CAB5ED5AF21CB3DD3C96A76C2FD37BF9 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0781231D907887B1D7DF0E005F108FF7 /* Foundation.framework */; }; - CC4509E5F4073C7ADBC9D40396CDA58B /* FIRRetryHelper.h in Headers */ = {isa = PBXBuildFile; fileRef = A8951E5F7EA456FA0578B3DD1E884381 /* FIRRetryHelper.h */; settings = {ATTRIBUTES = (Project, ); }; }; - CC6FD991547515E7182FCD64BF0693FA /* memtable.cc in Sources */ = {isa = PBXBuildFile; fileRef = 51D392DCD6F7E78F352FAD8842C9342F /* memtable.cc */; settings = {COMPILER_FLAGS = "-DOS_MACOSX -DLEVELDB_PLATFORM_POSIX -fno-objc-arc"; }; }; - CCB8E583CA5F3953D0E5BFEE2E350A8D /* FTupleStringNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 59E6440908823817800B827396EA08D0 /* FTupleStringNode.m */; }; - CCECB1C5AF286721208F891D3C668A2E /* GULNetwork.h in Headers */ = {isa = PBXBuildFile; fileRef = 8178041E04BC15BEECD2EBC06838968D /* GULNetwork.h */; settings = {ATTRIBUTES = (Private, ); }; }; - CD18A9DEF461EAA31B34C38C59B2368E /* RLMArray_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 8FAF49A0011487DEA7A27988A67BFD66 /* RLMArray_Private.h */; }; - CD418E8BC902E015DF126F9F3E297541 /* RLMObjectSchema_Private.h in Copy . Private Headers */ = {isa = PBXBuildFile; fileRef = 2F73F81DEA5CF679273B8F09D64D99AC /* RLMObjectSchema_Private.h */; }; - CD5C8988170EEA3B2A93A272C683DA78 /* FIRInstanceIDCombinedHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 61FFAF66F5EFD6FDAFEBEC40611CC4E1 /* FIRInstanceIDCombinedHandler.m */; }; - CD79A4AF97B681E8C6408B40E5375BC9 /* block.h in Headers */ = {isa = PBXBuildFile; fileRef = 50A384C9CA26FE5598BA6C43724571E0 /* block.h */; settings = {ATTRIBUTES = (Project, ); }; }; - CF5ACAA3B3CC9816C59491E891ADD9E7 /* FIRInstanceID.m in Sources */ = {isa = PBXBuildFile; fileRef = B8B0301D28A002B9C27FD15EAA313804 /* FIRInstanceID.m */; }; - CF6A37F5F8B02364DE879D4FFF8307C0 /* collection_notifications.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AADE9CEA7E9C2126E6F2F459734C73FD /* collection_notifications.cpp */; settings = {COMPILER_FLAGS = "-DREALM_HAVE_CONFIG -DREALM_COCOA_VERSION='@\"3.17.3\"' -D__ASSERTMACROS__ -DREALM_ENABLE_SYNC"; }; }; - CF6AC92992AA1428D74B4A4A98B5F17B /* FTupleObjectNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 593B6C89872966E4FA108CE689CBD08C /* FTupleObjectNode.h */; settings = {ATTRIBUTES = (Project, ); }; }; - CF9C9C5704BD9D2A07EF792D5FA3693D /* RLMRealmConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = 5FEB8EFE990E3AECCDA179E17742174F /* RLMRealmConfiguration.h */; }; - CFF399A7BB76F4667CFC2A61A268A187 /* FIRErrors.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D727AF5545A9254938770945F89ECFE /* FIRErrors.h */; settings = {ATTRIBUTES = (Private, ); }; }; - D096596B10F423D23963CE2311179311 /* FIRApp.m in Sources */ = {isa = PBXBuildFile; fileRef = 4DB4BBE0D8A037AB3E89BCF4CEEDF4B6 /* FIRApp.m */; }; - D146A8AF2802B47AC92BE72917E6ED0F /* RLMCollection.h in Headers */ = {isa = PBXBuildFile; fileRef = A499F6893A04608DC60141646FDE36F7 /* RLMCollection.h */; }; - D16866BA9FB9551AF91826217960204E /* system_configuration.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3401E71B5CAB448A7EFAFBFC2C5E55EE /* system_configuration.cpp */; settings = {COMPILER_FLAGS = "-DREALM_HAVE_CONFIG -DREALM_COCOA_VERSION='@\"3.17.3\"' -D__ASSERTMACROS__ -DREALM_ENABLE_SYNC"; }; }; - D1D4A221AF823CB0B3200E50B460462C /* FRepo.m in Sources */ = {isa = PBXBuildFile; fileRef = 5AED33C6E5E7F882974F37F687A259D8 /* FRepo.m */; }; - D1E16D8B852B793DC73D69F98267636C /* Migration.swift in Sources */ = {isa = PBXBuildFile; fileRef = AE6A585FB55D856F4F767F4B1307D654 /* Migration.swift */; }; - D1FEDD3F09D5720913C1A26ABDC691EF /* FLLRBEmptyNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 1E4CB7C3F490D71BFABB4A3CD53B54FE /* FLLRBEmptyNode.m */; }; - D20666DFFA746D703BA00B3CAFE6F078 /* RLMMigration.h in Headers */ = {isa = PBXBuildFile; fileRef = 9BF6AC03DA6DD95107B1920EC6ECCE2F /* RLMMigration.h */; }; - D2F2A19F112C2B2DCB6B0EB4322D6AC9 /* RLMListBase.h in Headers */ = {isa = PBXBuildFile; fileRef = AAFA7E75C9A5878917AA505C0CB45F70 /* RLMListBase.h */; }; - D2F8EB8BD209D09155A7EF9BE85BA0DE /* FIRAnalyticsConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = 907A74919D7EA92D6BC1D8BB990FC4F3 /* FIRAnalyticsConfiguration.m */; }; - D37E73F03077BA5CFBC58965DDF89E80 /* FCacheNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 682534987613517E1D2745200990554A /* FCacheNode.h */; settings = {ATTRIBUTES = (Project, ); }; }; - D3B824DD891E91C31934734B2A20D282 /* RLMSyncUser.h in Copy . Public Headers */ = {isa = PBXBuildFile; fileRef = 0F0030D3F3857B4FD841715519213499 /* RLMSyncUser.h */; }; - D420B97BDDD62A79CE9AB9A741E1D40D /* RLMUpdateChecker.mm in Sources */ = {isa = PBXBuildFile; fileRef = D23710AE6A2CE9885B82833DF1448057 /* RLMUpdateChecker.mm */; settings = {COMPILER_FLAGS = "-DREALM_HAVE_CONFIG -DREALM_COCOA_VERSION='@\"3.17.3\"' -D__ASSERTMACROS__ -DREALM_ENABLE_SYNC"; }; }; - D489407C66A3ABBF4D849ABD2CC3614B /* RLMArray_Private.h in Copy . Private Headers */ = {isa = PBXBuildFile; fileRef = 8FAF49A0011487DEA7A27988A67BFD66 /* RLMArray_Private.h */; }; - D59131FAFFAA8F026C936E1D41EAE515 /* object.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 99EB3B614B8C061A7DC06765BE10D0F9 /* object.cpp */; settings = {COMPILER_FLAGS = "-DREALM_HAVE_CONFIG -DREALM_COCOA_VERSION='@\"3.17.3\"' -D__ASSERTMACROS__ -DREALM_ENABLE_SYNC"; }; }; - D5AEF294389709ECF3AC35A4EB868F74 /* FRepoInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = C881E1AFAD816A9D3CE453848E45786B /* FRepoInfo.m */; }; - D5C6B1A5953523D0D1061C96362F8820 /* GULApplication.h in Headers */ = {isa = PBXBuildFile; fileRef = F47180B8A21816378CA7BCA9E2755D02 /* GULApplication.h */; settings = {ATTRIBUTES = (Private, ); }; }; - D62464611F03DD1225CA70636493E807 /* RLMObjectSchema.mm in Sources */ = {isa = PBXBuildFile; fileRef = 0645574B1D691E08ABF6941598A55F0A /* RLMObjectSchema.mm */; settings = {COMPILER_FLAGS = "-DREALM_HAVE_CONFIG -DREALM_COCOA_VERSION='@\"3.17.3\"' -D__ASSERTMACROS__ -DREALM_ENABLE_SYNC"; }; }; - D6286B8F53C25CA4992CD79677186DFD /* block_builder.cc in Sources */ = {isa = PBXBuildFile; fileRef = EA3040D642F30EDAFD74D347AFF460CC /* block_builder.cc */; settings = {COMPILER_FLAGS = "-DOS_MACOSX -DLEVELDB_PLATFORM_POSIX -fno-objc-arc"; }; }; - D69ACB4BDE19FAA9ECF0260FBD2BDF4D /* RLMSyncUtil.mm in Sources */ = {isa = PBXBuildFile; fileRef = 5D4557ADA6A33DAC8F262137BF3CB8EA /* RLMSyncUtil.mm */; settings = {COMPILER_FLAGS = "-DREALM_HAVE_CONFIG -DREALM_COCOA_VERSION='@\"3.17.3\"' -D__ASSERTMACROS__ -DREALM_ENABLE_SYNC"; }; }; - D6FB5EAE6DA7E3D7BA463BC4B50C9EC0 /* FIRDatabaseConfig_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 49C259BC6EA6008451F8A3BAB46B58F0 /* FIRDatabaseConfig_Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; - D75277B65218992C63DE359207967B0E /* RLMObjectBase.mm in Sources */ = {isa = PBXBuildFile; fileRef = 7019D4FCA52FDE02DB37D97202CD9999 /* RLMObjectBase.mm */; settings = {COMPILER_FLAGS = "-DREALM_HAVE_CONFIG -DREALM_COCOA_VERSION='@\"3.17.3\"' -D__ASSERTMACROS__ -DREALM_ENABLE_SYNC"; }; }; - D7AA44B898BE51AB1B3887C0651BF524 /* RLMObjectBase_Dynamic.h in Copy . Public Headers */ = {isa = PBXBuildFile; fileRef = 245AEE12E9DD59A61D7FB118B8520137 /* RLMObjectBase_Dynamic.h */; }; - D7F0D2452384C396F63E5A78470B1035 /* GULNetworkMessageCode.h in Headers */ = {isa = PBXBuildFile; fileRef = EC8027660BFAFCEC1042E74E2195A08A /* GULNetworkMessageCode.h */; settings = {ATTRIBUTES = (Private, ); }; }; - D877459D45EEBDAB1E2D149E52DC34F0 /* FMerge.m in Sources */ = {isa = PBXBuildFile; fileRef = 354821E162D3DDE10F0917D9640FB49F /* FMerge.m */; }; - D8AB4C4B61FB111307EEC525C7BA7083 /* FSRWebSocket.h in Headers */ = {isa = PBXBuildFile; fileRef = 6F474324356862E477F72648E392407D /* FSRWebSocket.h */; settings = {ATTRIBUTES = (Project, ); }; }; - D8BE368CE172CD2E06EEB5C1A98AD707 /* FTupleSetIdPath.m in Sources */ = {isa = PBXBuildFile; fileRef = 412233D9181C6BAF1004CABE84CE904D /* FTupleSetIdPath.m */; }; - D9800CEE2FBF66C326E6E78A90A84EDB /* FTupleBoolBlock.h in Headers */ = {isa = PBXBuildFile; fileRef = 6C011302AADE803C99653794333624F3 /* FTupleBoolBlock.h */; settings = {ATTRIBUTES = (Project, ); }; }; - DAC5BBADCC953A2443F44514345DF8E0 /* RLMRealm+Sync.mm in Sources */ = {isa = PBXBuildFile; fileRef = 47A9C45E4D13FC0E853D154D2BF4EC25 /* RLMRealm+Sync.mm */; settings = {COMPILER_FLAGS = "-DREALM_HAVE_CONFIG -DREALM_COCOA_VERSION='@\"3.17.3\"' -D__ASSERTMACROS__ -DREALM_ENABLE_SYNC"; }; }; - DADF5C8F6686404E5C704C8B0B154B70 /* FTupleOnDisconnect.h in Headers */ = {isa = PBXBuildFile; fileRef = 59AB8E05356D4530D27F43940B33DB45 /* FTupleOnDisconnect.h */; settings = {ATTRIBUTES = (Project, ); }; }; - DAFCEA2F6D69F84E2FE74911D728396B /* FirebaseCore-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 5ADFCF2A6BEDA2EBC87BFF8D933CB84E /* FirebaseCore-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - DB749C63249742AA82C48FA99DE8D513 /* posix_logger.h in Headers */ = {isa = PBXBuildFile; fileRef = D899BBF7DD951B296A24B1338D427B97 /* posix_logger.h */; settings = {ATTRIBUTES = (Project, ); }; }; - DBAE7F9A205515148871D8EB10AEE262 /* RLMProperty.mm in Sources */ = {isa = PBXBuildFile; fileRef = 012E2C27C72F07CCA0144D66DA277C97 /* RLMProperty.mm */; settings = {COMPILER_FLAGS = "-DREALM_HAVE_CONFIG -DREALM_COCOA_VERSION='@\"3.17.3\"' -D__ASSERTMACROS__ -DREALM_ENABLE_SYNC"; }; }; - DC9CB871FF56570F53C74AEB990B1C18 /* FIRLoggerLevel.h in Headers */ = {isa = PBXBuildFile; fileRef = EDAD72CAF046D238473BDB7D12DD6753 /* FIRLoggerLevel.h */; settings = {ATTRIBUTES = (Public, ); }; }; - DCC34F4CC38D374C98B5D07038E9E061 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0781231D907887B1D7DF0E005F108FF7 /* Foundation.framework */; }; - DD0D2B219445705DFFEC30E53B90CE3B /* FRangeMerge.h in Headers */ = {isa = PBXBuildFile; fileRef = 2924F40BA1329BC6806BCD33605550AD /* FRangeMerge.h */; settings = {ATTRIBUTES = (Project, ); }; }; - DD16D5A7EB3F4B888F5D6863A3CBC520 /* FTree.m in Sources */ = {isa = PBXBuildFile; fileRef = 6BFEE871CFBBE8B140DCF7904F5E6EA5 /* FTree.m */; }; - DDB4485CE5FEFCA09CA9ADA6D4BF1AC0 /* RLMRealmConfiguration.h in Copy . Public Headers */ = {isa = PBXBuildFile; fileRef = 5FEB8EFE990E3AECCDA179E17742174F /* RLMRealmConfiguration.h */; }; - DE232E95498CAB337E5778912EEFAC32 /* FIRComponentType.h in Headers */ = {isa = PBXBuildFile; fileRef = F26846E34EB79B93988189DDC46DF4D5 /* FIRComponentType.h */; settings = {ATTRIBUTES = (Private, ); }; }; - DE2CFDFAE25548213B8540ED406A1120 /* FView.h in Headers */ = {isa = PBXBuildFile; fileRef = 909CF9BAE5B00C78CAE8FA1678360F76 /* FView.h */; settings = {ATTRIBUTES = (Project, ); }; }; - DE5F44DAECF248CE9C781B2C1E462F75 /* FQuerySpec.h in Headers */ = {isa = PBXBuildFile; fileRef = 2AD212F566EBB030D4D0C3FCE59BDBEE /* FQuerySpec.h */; settings = {ATTRIBUTES = (Project, ); }; }; - DEDB8F45074974D92BF728E83ACC4A5D /* object_schema.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 64967F4F7BFC1E0AF598DF0896A520F5 /* object_schema.cpp */; settings = {COMPILER_FLAGS = "-DREALM_HAVE_CONFIG -DREALM_COCOA_VERSION='@\"3.17.3\"' -D__ASSERTMACROS__ -DREALM_ENABLE_SYNC"; }; }; - DF51C380D05B32F3FC8B69D3096A0D98 /* FTreeSortedDictionary.m in Sources */ = {isa = PBXBuildFile; fileRef = 76A7B2317E7BFB917BD6FC7B8128A162 /* FTreeSortedDictionary.m */; }; - DF55CC21D55E0C4FCF28F49DA032AC4A /* FIRMutableData.h in Headers */ = {isa = PBXBuildFile; fileRef = 2E964BEF81A9927844FF49288F190ABB /* FIRMutableData.h */; settings = {ATTRIBUTES = (Public, ); }; }; - DF8E3E5D19D2F82806C45B65F4CF06EB /* FIRIMessageCode.h in Headers */ = {isa = PBXBuildFile; fileRef = D6EC34C0E433F15E3AB3DD0961A41FF8 /* FIRIMessageCode.h */; settings = {ATTRIBUTES = (Project, ); }; }; - DFC90DAF4138CC9B0FDBA54D1E4BA4EC /* FViewProcessorResult.m in Sources */ = {isa = PBXBuildFile; fileRef = 211A38F0BAF1590ED0F2AD7DA55D1820 /* FViewProcessorResult.m */; }; - DFEC09AD2041549CB68FD873BA3BD35D /* FValueEventRegistration.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E12A1D756DD76FACE71131D546095D0 /* FValueEventRegistration.m */; }; - E06FA098669B3C365CE84F84EBD79846 /* FIRInstanceIDTokenDeleteOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = C06B11A710615ECC6C3AA155D24455E8 /* FIRInstanceIDTokenDeleteOperation.h */; settings = {ATTRIBUTES = (Project, ); }; }; - E0AD22194E0117CE517A6DDFC7EA3649 /* FParsedUrl.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F8CFA33148A22C836E8C5421FD1358E /* FParsedUrl.m */; }; - E12E6063C3FE0D1C2A47D1449F3D91C8 /* RLMSyncConfiguration.mm in Sources */ = {isa = PBXBuildFile; fileRef = 86B87E4CFA5517F1A2DED99AF91F7B2A /* RLMSyncConfiguration.mm */; settings = {COMPILER_FLAGS = "-DREALM_HAVE_CONFIG -DREALM_COCOA_VERSION='@\"3.17.3\"' -D__ASSERTMACROS__ -DREALM_ENABLE_SYNC"; }; }; - E1A514523535AE743655F85B23CAC241 /* FIRAppInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 8E35F409527BC576A882FA472C6EC04F /* FIRAppInternal.h */; settings = {ATTRIBUTES = (Private, ); }; }; - E1DDF9D8AA9539216D0B192D480B0DF3 /* FIRDatabaseQuery.h in Headers */ = {isa = PBXBuildFile; fileRef = B25D39FBE9196DE0BB4485D886CF30A3 /* FIRDatabaseQuery.h */; settings = {ATTRIBUTES = (Public, ); }; }; - E22BB3552C77566B1B6955CE66218BCD /* Results.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4692F82DDBA180AD597A2B309C09AF53 /* Results.swift */; }; - E35D6EFB453EB460D8A523FE4E0B3F38 /* FIRDataEventType.h in Headers */ = {isa = PBXBuildFile; fileRef = 0E2302B86EDACEB3402E8F4310195A9A /* FIRDataEventType.h */; settings = {ATTRIBUTES = (Public, ); }; }; - E3C9B29A2D69D6BABC0CA201BD468665 /* FPendingPut.h in Headers */ = {isa = PBXBuildFile; fileRef = D56850E3C3D2BFCEC85080A7D98B6F05 /* FPendingPut.h */; settings = {ATTRIBUTES = (Project, ); }; }; - E6330EB50A0B5F249B737153EB619465 /* FSRWebSocket.m in Sources */ = {isa = PBXBuildFile; fileRef = 6486DA90003BF29BE5C7E6C3EC823CBC /* FSRWebSocket.m */; }; - E6A59169AB160B828757961CC391334C /* List.swift in Sources */ = {isa = PBXBuildFile; fileRef = C385947A01FBBF7CD5509D65021C76B0 /* List.swift */; }; - E6EF7C214F730588B9E93A2C319AC9E4 /* FTrackedQueryManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 4F046B1ECCAF349608951B6FEF96D73C /* FTrackedQueryManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; - E771D4A8652D0D8977C6D46F4E1B62A5 /* GULMutableDictionary.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A729337F7D6D4DDD3831E74D401F32A /* GULMutableDictionary.m */; }; - E80785B97629BB80F1C0307E7BFC5D9D /* FIRInstanceIDTokenFetchOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 75567932D7B2F865F9F9FE967F2B6F2A /* FIRInstanceIDTokenFetchOperation.m */; }; - E974F97E974332A3224C8820C672190F /* builder.cc in Sources */ = {isa = PBXBuildFile; fileRef = 9F6D304D5EFE8F43EED0B67F5519A85E /* builder.cc */; settings = {COMPILER_FLAGS = "-DOS_MACOSX -DLEVELDB_PLATFORM_POSIX -fno-objc-arc"; }; }; - E977F2DD6E12BFAA74B9A72A920E4D32 /* filter_block.h in Headers */ = {isa = PBXBuildFile; fileRef = 39B9E708E29D6B502BEE2C8C220DCD01 /* filter_block.h */; settings = {ATTRIBUTES = (Project, ); }; }; - E9802791C9864B697B46644B5EB37938 /* RLMRealm.h in Headers */ = {isa = PBXBuildFile; fileRef = 2D455ECD9391388C7F23E7AEAB1DD490 /* RLMRealm.h */; }; - E986ED3BC90614CFA3534C6BA1058EA0 /* FIRDatabaseReference_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = B2AE63F6661A63AEC6C718E2DF32AF01 /* FIRDatabaseReference_Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; - E9A0660B057A3B88B0991B85C4B8F248 /* YMTGetDeviceName-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = BDC3E48E0A62764A8CC18A68CDC15CCF /* YMTGetDeviceName-dummy.m */; }; - E9EF5B931F4D833CB15D9211E4AA2D50 /* FSyncPoint.h in Headers */ = {isa = PBXBuildFile; fileRef = 63C81A5E1C52F5654076C17DAB39ECC3 /* FSyncPoint.h */; settings = {ATTRIBUTES = (Project, ); }; }; - EA3F2D65D8B8D3075E037ED5706AD660 /* fbase64.h in Headers */ = {isa = PBXBuildFile; fileRef = B0F05B15A1B23EE3469F516DDA99A120 /* fbase64.h */; settings = {ATTRIBUTES = (Project, ); }; }; - EAB7C94331469362F19A16C3D03A2B19 /* FDataEvent.m in Sources */ = {isa = PBXBuildFile; fileRef = 91E12C6E3E1379DA89079A27A50BB8B1 /* FDataEvent.m */; }; - EAEA709493D3A85A4951BA1099C72D38 /* RLMProperty_Private.h in Copy . Private Headers */ = {isa = PBXBuildFile; fileRef = FCE7CBF0406D1926A617016502A76B9D /* RLMProperty_Private.h */; }; - EB3720D59974F576ADCF3449D97795D6 /* FTree.h in Headers */ = {isa = PBXBuildFile; fileRef = BB93C4BC3FA69CFE9AF57869270B57CA /* FTree.h */; settings = {ATTRIBUTES = (Project, ); }; }; - EB50276C26827575CCF13D5C52103CC2 /* RLMSyncSubscription.h in Copy . Public Headers */ = {isa = PBXBuildFile; fileRef = 0B99E3092D6E6ED88EA4D75706BE1FCE /* RLMSyncSubscription.h */; }; - EB714F7C252FCD47D2AFD7938755915F /* RLMRealmConfiguration_Private.h in Copy . Private Headers */ = {isa = PBXBuildFile; fileRef = 7548F3A5D14CC65B8C5F2FB458CA1B24 /* RLMRealmConfiguration_Private.h */; }; - EB72DC3EC8469C99153A2D356E3AF776 /* GULAppDelegateSwizzler_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = C0917B859BC3B605F18B11AED57C5E1F /* GULAppDelegateSwizzler_Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; - EC3C0CA8D000BC51345B9477A5D4B373 /* RLMSyncCredentials.h in Headers */ = {isa = PBXBuildFile; fileRef = 41E535603585A6792F57470F8FE246D7 /* RLMSyncCredentials.h */; }; - EC6C997AA3156E951665ED05EACB86A0 /* FIRInstanceID+Private.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C0F65922B305108D340B1E3E7C098AE /* FIRInstanceID+Private.m */; }; - ECAC78C75F16C57D1F0A66E38E4FDD7A /* RLMOptionalBase.h in Copy . Public Headers */ = {isa = PBXBuildFile; fileRef = A1E1D517209C3F2ADEFC8A4A06A7007B /* RLMOptionalBase.h */; }; - ECDE82202A3862051B9B7CB6D5B4E3FC /* FPriorityIndex.h in Headers */ = {isa = PBXBuildFile; fileRef = E4A03006F0EFA373770B0E58C4AEAA1F /* FPriorityIndex.h */; settings = {ATTRIBUTES = (Project, ); }; }; - EE066EED402B361F7BB6FEA5EA25FA91 /* FPruneForest.m in Sources */ = {isa = PBXBuildFile; fileRef = 57271B210AA779D7DCD08A4255A28720 /* FPruneForest.m */; }; + 85611C079FA6CF27A4405372E78651CD /* FIRAuthAppCredential.m in Sources */ = {isa = PBXBuildFile; fileRef = 20E3BD16A5CBB39129D209EC02799FC2 /* FIRAuthAppCredential.m */; }; + 8563A91F5B34102F91106899C36CABD4 /* RLMMigration.mm in Sources */ = {isa = PBXBuildFile; fileRef = 9816C36948CE2553DB4BE8E8987BE70E /* RLMMigration.mm */; settings = {COMPILER_FLAGS = "-DREALM_HAVE_CONFIG -DREALM_COCOA_VERSION='@\"3.17.3\"' -D__ASSERTMACROS__ -DREALM_ENABLE_SYNC"; }; }; + 85BE5BCC64B3DBCAE5827C2797500479 /* FIRDatabaseQuery.h in Headers */ = {isa = PBXBuildFile; fileRef = FE453E6737AC5DE7A22A60956F365082 /* FIRDatabaseQuery.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 85CB1C1E39CE2B8D1CEB5FC4F57F4748 /* FTupleCallbackStatus.h in Headers */ = {isa = PBXBuildFile; fileRef = 1520860169C36F558C9400AEE9B85B05 /* FTupleCallbackStatus.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 862E9F231CFAF5AD0C834CC4790B07D7 /* FCompoundHash.h in Headers */ = {isa = PBXBuildFile; fileRef = 9A8DD9F9E4D089EA0A0BE2137ED87C29 /* FCompoundHash.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 86F196BEAB6C2D3F407A8FE9D0F8BDF5 /* FIROAuthProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = A098A33F61A9A31C1F8A8C386C2D0717 /* FIROAuthProvider.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 87487DA8EB0FE1536CD8240B0F8C6AA1 /* FIRInstanceID+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 753941396DD46748D1C7680E2F710173 /* FIRInstanceID+Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 8770943407DD1BB0FFEA18069553E7C5 /* db.h in Headers */ = {isa = PBXBuildFile; fileRef = E5B3A983D7942A2D6839EE7A9EF00216 /* db.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 87B77B996218FB7867D6B8FF0AC6DCEA /* FSparseSnapshotTree.m in Sources */ = {isa = PBXBuildFile; fileRef = 1F7B3B758E092FAF7DF008CA3C8740C2 /* FSparseSnapshotTree.m */; }; + 8846F2912ABF0C6B220BD143696D580E /* placeholder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 377C2A565B327FAF69E7F68B85B028A3 /* placeholder.cpp */; settings = {COMPILER_FLAGS = "-DREALM_HAVE_CONFIG -DREALM_COCOA_VERSION='@\"3.17.3\"' -D__ASSERTMACROS__ -DREALM_ENABLE_SYNC"; }; }; + 88E991830A7942EDA38F26455C79ACF1 /* RLMObjectSchema.h in Headers */ = {isa = PBXBuildFile; fileRef = 66F1AE16987AA3C4B7AF01EBD8876742 /* RLMObjectSchema.h */; }; + 88F12FAE76B67B69B27064468B55C996 /* FIRSendVerificationCodeRequest.m in Sources */ = {isa = PBXBuildFile; fileRef = D3E6245AA639DD4F79E02234362A5337 /* FIRSendVerificationCodeRequest.m */; }; + 892C46FAA56FE0BDCE8BA64A52893765 /* FIRInstanceIDURLQueryItem.h in Headers */ = {isa = PBXBuildFile; fileRef = AA881EC9667CD67D5AD1423D4D253A28 /* FIRInstanceIDURLQueryItem.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 8951D2C6F15F72DA282CFEDAECCF7D12 /* RLMSyncConfiguration_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 1C54C0E8B35B80A544F2AE04C0026A92 /* RLMSyncConfiguration_Private.h */; }; + 89DC17C0BD7E86FD90B1F2BF232AC8B7 /* FEmptyNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 5DDA820155A7FCA9403B7F33E331627D /* FEmptyNode.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 89E4D797B30B7D78275CCD0D6A0DE690 /* FIRComponentContainer.m in Sources */ = {isa = PBXBuildFile; fileRef = 30101B7582E0484BB58CD82EC5173C97 /* FIRComponentContainer.m */; }; + 8A035F396D4212373D49B979BB2DC0FB /* RLMObjectBase.h in Headers */ = {isa = PBXBuildFile; fileRef = A3A96C2678D44EFE4DBF723EE5A72C55 /* RLMObjectBase.h */; }; + 8A4E6CAFE3D2F31CAB8775A034922A22 /* random.h in Headers */ = {isa = PBXBuildFile; fileRef = 06BAA7719371B161963154613F649AA8 /* random.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 8A9984E86E12AFD67C551C300FCBD2C1 /* iterator_wrapper.h in Headers */ = {isa = PBXBuildFile; fileRef = 35AE75C65D4395F4BBA0698E249E6DB8 /* iterator_wrapper.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 8B25BB4D72843101E625F8B976072A69 /* RLMCollection.h in Copy . Public Headers */ = {isa = PBXBuildFile; fileRef = 8D334483E2E6F7EE9902BA1480CA2762 /* RLMCollection.h */; }; + 8B5A0741A9A92581BD6271126264B32C /* FSyncTree.h in Headers */ = {isa = PBXBuildFile; fileRef = 23AD6FBA52ABE1C628E5D6C40B0C7506 /* FSyncTree.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 8B83E2A9CC5F90A96D4924091D47A639 /* FIRVerifyAssertionResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 98ACC074E83B832BCA32A28F224DE4BE /* FIRVerifyAssertionResponse.m */; }; + 8B99938014A32AD4796FA4EC405C5B7F /* FSnapshotUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = AC12CB594977AA9992BE69DB2D60237C /* FSnapshotUtilities.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 8C30EF10A0ADF3E7CCA447DE364CFAD5 /* FIRTwitterAuthCredential.h in Headers */ = {isa = PBXBuildFile; fileRef = 42D77715F9EDCB8201ECF4D6952952EF /* FIRTwitterAuthCredential.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 8C317071D70E478CB1C89BA4168540B6 /* fifo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DDC1498A2BD692D161409A8E9B562C4A /* fifo.cpp */; settings = {COMPILER_FLAGS = "-DREALM_HAVE_CONFIG -DREALM_COCOA_VERSION='@\"3.17.3\"' -D__ASSERTMACROS__ -DREALM_ENABLE_SYNC"; }; }; + 8CCCF2E241B3684C57EF769C6606946A /* FLLRBEmptyNode.m in Sources */ = {isa = PBXBuildFile; fileRef = C7FD86C99DDA7B41BD9652528FD15E12 /* FLLRBEmptyNode.m */; }; + 8D48D266CD27D26DD9A4BB6A3D742F1E /* FIRInstanceIDKeyPair.m in Sources */ = {isa = PBXBuildFile; fileRef = C95005A2DCFA90BBA259F7AEAB162B3E /* FIRInstanceIDKeyPair.m */; }; + 8D49410DCE04310E5383C20760DFD43F /* FMerge.h in Headers */ = {isa = PBXBuildFile; fileRef = C338F3B727459D429963BBCC5001F010 /* FMerge.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 8DAD48CA74E4537AAD036D3FBB66307D /* FIRInstanceIDVersionUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 3E95516A1622FF8188FED7734133C71D /* FIRInstanceIDVersionUtilities.m */; }; + 8E3C329AAE9823F0E8197E963EED3441 /* primitive_list_notifier.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D80711938FC49CAF187055869A3E5B50 /* primitive_list_notifier.cpp */; settings = {COMPILER_FLAGS = "-DREALM_HAVE_CONFIG -DREALM_COCOA_VERSION='@\"3.17.3\"' -D__ASSERTMACROS__ -DREALM_ENABLE_SYNC"; }; }; + 8F2BE3BD6B2081007C3183A865F41D8B /* leveldb-library-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = E9F077FE4C063A2CA564C50BED45603F /* leveldb-library-dummy.m */; }; + 8F33DB125607781B51065F1592F975B2 /* FRepo_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = B088CD9A297CEE21F1B5F207AE9ED091 /* FRepo_Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 8F96571BA39895A2E3B8D9A1331F8AE4 /* RLMResults.h in Copy . Public Headers */ = {isa = PBXBuildFile; fileRef = 75556F5ED89B4574623EB21206A6796D /* RLMResults.h */; }; + 90532F0B9596ACA6C38CC9E60A26CC96 /* RLMConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = 9018C388971EEE407C4EE5B7A38ACFD5 /* RLMConstants.h */; }; + 915B2F7EF04B79E47ABB2D1FABBCEC5B /* FOperationSource.h in Headers */ = {isa = PBXBuildFile; fileRef = 656099B163E9187B52F3D857C0369160 /* FOperationSource.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 91C099F6DD43BA12AAD44EFACB888164 /* RLMListBase.mm in Sources */ = {isa = PBXBuildFile; fileRef = 0B710E8698CF1344D9DD7860A817BBF4 /* RLMListBase.mm */; settings = {COMPILER_FLAGS = "-DREALM_HAVE_CONFIG -DREALM_COCOA_VERSION='@\"3.17.3\"' -D__ASSERTMACROS__ -DREALM_ENABLE_SYNC"; }; }; + 91FFAD4974208EECCCFE7DDEF38BACE2 /* FIRAuthDefaultUIDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = C60F8CAA0B93FD9C99AC4EEDDF2CD5EB /* FIRAuthDefaultUIDelegate.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 923C1621EB8A6F70D3AF86FA9EEC6E93 /* FIRResetPasswordRequest.h in Headers */ = {isa = PBXBuildFile; fileRef = CD256CDB941E2C07A42C3210CCDEBA19 /* FIRResetPasswordRequest.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 92637CDC3A012664169F878042FD3615 /* GULReachabilityChecker.h in Headers */ = {isa = PBXBuildFile; fileRef = 816C47B14540E922562B2F7A0AF25684 /* GULReachabilityChecker.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 927B1AE742FFFC188CCED8497F6320EF /* FConnection.h in Headers */ = {isa = PBXBuildFile; fileRef = B6F3FBA524B9389AFF98387286C9DCC8 /* FConnection.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 9292404775C61C8C4B285A3D79589595 /* FIRInstanceIDTokenManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 47120502A26AB97C27E79E1E785CBE2B /* FIRInstanceIDTokenManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 92AB2306BDFD64E2FBFC0DE951F021AE /* RLMRealm_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = C1302589B0CD0B2305B36AEA7359B03E /* RLMRealm_Private.h */; }; + 932DC920D7068470D445AB6A98E8FBC8 /* FIRSecureTokenResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 4DE456E7946A4CFB47B05FFE4B21FF7A /* FIRSecureTokenResponse.m */; }; + 938CF3352C48DB113AFEF3E9CA0AFBCC /* RLMListBase.h in Copy . Private Headers */ = {isa = PBXBuildFile; fileRef = 3E9412137487BB363BB73FF86053C103 /* RLMListBase.h */; }; + 939BD2D70062F171676703CA955289D1 /* FTreeNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 25A3BC7BEAEDB5DD17BBDA2377F7B961 /* FTreeNode.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 93F55C507533B66C6D863A49038C46A9 /* FIRAnalyticsConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = FD64C6C4D061C17FF3992D5C46B05637 /* FIRAnalyticsConfiguration.m */; }; + 94089EDE1CB139D617675E38AB22277D /* version_edit.cc in Sources */ = {isa = PBXBuildFile; fileRef = B62AF7954DD9B84003AB6AA55B2020E3 /* version_edit.cc */; settings = {COMPILER_FLAGS = "-DOS_MACOSX -DLEVELDB_PLATFORM_POSIX -fno-objc-arc"; }; }; + 9424F505D51CCC8333DCFBD70CE062C3 /* RLMSyncSessionRefreshHandle.mm in Sources */ = {isa = PBXBuildFile; fileRef = 33E5678280D2DDB66796338EB6F2E441 /* RLMSyncSessionRefreshHandle.mm */; settings = {COMPILER_FLAGS = "-DREALM_HAVE_CONFIG -DREALM_COCOA_VERSION='@\"3.17.3\"' -D__ASSERTMACROS__ -DREALM_ENABLE_SYNC"; }; }; + 944F16D6CA7AEF7F87D7FA356462C599 /* RLMConstants.h in Copy . Public Headers */ = {isa = PBXBuildFile; fileRef = 9018C388971EEE407C4EE5B7A38ACFD5 /* RLMConstants.h */; }; + 9455F85D17E4946B6DD1ABABAF01306C /* pb_decode.h in Headers */ = {isa = PBXBuildFile; fileRef = 279CB81B9B2115067EA7B522C967994F /* pb_decode.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 949330637688F81710408C57176C951A /* RLMRealm+Sync.h in Copy . Public Headers */ = {isa = PBXBuildFile; fileRef = 769B8341FDE45A543CB6C94B6C3CA4C3 /* RLMRealm+Sync.h */; }; + 94DB172EFBED0A21E8B7B2E317F1480C /* FSnapshotHolder.m in Sources */ = {isa = PBXBuildFile; fileRef = EB6FC8D8EB3430BFEFF7A78FE521B65E /* FSnapshotHolder.m */; }; + 966309DE276041FD2CD49046B3295568 /* FIRPhoneAuthProvider.m in Sources */ = {isa = PBXBuildFile; fileRef = B11DA717C549EA2743BF5B52DCA1451F /* FIRPhoneAuthProvider.m */; }; + 9734D5C4DD039037ED563E18DD6865B3 /* RLMSyncConfiguration.h in Copy . Public Headers */ = {isa = PBXBuildFile; fileRef = FBE8BF9263F2387AC9E0D9A87867BB8D /* RLMSyncConfiguration.h */; }; + 977DC479D8E93A84475C5F6003416D2E /* FIRVerifyAssertionResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A4075EE8ADA74E0BFFE03C0A7A5AC19 /* FIRVerifyAssertionResponse.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 9792856BCB7D540AF97C35452AAEC87E /* FIRTwitterAuthCredential.m in Sources */ = {isa = PBXBuildFile; fileRef = B9E0EEA77A2125568369F3B4E4EDDBAD /* FIRTwitterAuthCredential.m */; }; + 97C11588D1BBC4899C47E5808D24882D /* dbformat.h in Headers */ = {isa = PBXBuildFile; fileRef = B3611F38D4D93238F8E7F467D3C5D58C /* dbformat.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 97DEA7418A51910ECD8BA79739AB7B15 /* FTreeSortedDictionaryEnumerator.m in Sources */ = {isa = PBXBuildFile; fileRef = 4D83019C4A08762D24C8CEE791963D06 /* FTreeSortedDictionaryEnumerator.m */; }; + 97F309462427A5D549FED303FA9AAFCE /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0781231D907887B1D7DF0E005F108FF7 /* Foundation.framework */; }; + 99147C7B8C2280731BD3DFD49C82A6E1 /* FTupleStringNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 24A4568EB58D5E7203824CA349987388 /* FTupleStringNode.m */; }; + 994C607137F5C3AF1E66C92F13F6FC1A /* sync_user.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 413799D8A1874E143FA31C63114DB4AA /* sync_user.cpp */; settings = {COMPILER_FLAGS = "-DREALM_HAVE_CONFIG -DREALM_COCOA_VERSION='@\"3.17.3\"' -D__ASSERTMACROS__ -DREALM_ENABLE_SYNC"; }; }; + 996EB8A8897931C376FA4B9E5FBB3688 /* NSError+RLMSync.h in Copy . Public Headers */ = {isa = PBXBuildFile; fileRef = 51063623BCA58E848432E19D54879107 /* NSError+RLMSync.h */; }; + 998396AFF1B141198A16943110D6C89F /* FIRAppAssociationRegistration.h in Headers */ = {isa = PBXBuildFile; fileRef = 413E1484712A1BFF58AF1EF3E2411B2F /* FIRAppAssociationRegistration.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 99FD56520DAF93DD68EA0CFB96C7FC0F /* FListenComplete.m in Sources */ = {isa = PBXBuildFile; fileRef = 366F4C1F56F6E0B10E73A943629F9128 /* FListenComplete.m */; }; + 9B14B1527E10AEE78F8A395ADAA4650D /* FIRFacebookAuthProvider.m in Sources */ = {isa = PBXBuildFile; fileRef = 04CC66527610E0F4792534447F173128 /* FIRFacebookAuthProvider.m */; }; + 9BAED39893E3A38E86EC0CB7F1B4664D /* RealmSwift-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 9F8A2E993F402BE9C680DF4865AFA38E /* RealmSwift-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 9BD8A9E80F37FAD7F46909869B5706AF /* FIRAuthErrors.h in Headers */ = {isa = PBXBuildFile; fileRef = 60081811535884BC64B61144AAA55BA0 /* FIRAuthErrors.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 9C2173624CCB659C8328251B735C932A /* FIRVerifyClientRequest.h in Headers */ = {isa = PBXBuildFile; fileRef = 6904EF655B10B7DDA3AF6646796C4228 /* FIRVerifyClientRequest.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 9C95E082122333EE37646D2C3FFA6531 /* log_reader.cc in Sources */ = {isa = PBXBuildFile; fileRef = F6E345D0E6A7F0FD1C06E250C7BC2D9E /* log_reader.cc */; settings = {COMPILER_FLAGS = "-DOS_MACOSX -DLEVELDB_PLATFORM_POSIX -fno-objc-arc"; }; }; + 9CD95E6AA89BDF0786D7C12CAC660D3C /* FLevelDBStorageEngine.h in Headers */ = {isa = PBXBuildFile; fileRef = F80BE1B566C2CBD33CC2390D1D8102DE /* FLevelDBStorageEngine.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 9D99EF18B9327FC95A3055F558EA6F39 /* FIRVerifyCustomTokenRequest.m in Sources */ = {isa = PBXBuildFile; fileRef = 2E10B8CBFE9FB895BBF4417165F81CCB /* FIRVerifyCustomTokenRequest.m */; }; + 9DBD84D0D18870D0AF958EDF6D83B981 /* FIRRetryHelper.h in Headers */ = {isa = PBXBuildFile; fileRef = 1B668599D384089F3325D8A55E981C5C /* FIRRetryHelper.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 9DD090EB3A8BF502234E389FFF0D34F1 /* FIRUserMetadata.h in Headers */ = {isa = PBXBuildFile; fileRef = D54414200B3958A4605308DBABB25B0F /* FIRUserMetadata.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 9DEB1E95E377C70D4260CFD2991D7EC8 /* FIRInstanceIDTokenInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = D7FF265E8A2D7722A7C6C913057900EE /* FIRInstanceIDTokenInfo.m */; }; + 9E476F217C01FA74783F9D2D4BEEBE0F /* RLMRealm_Dynamic.h in Headers */ = {isa = PBXBuildFile; fileRef = BCCA0DAE79662E911CBBEEEBDA45B5F3 /* RLMRealm_Dynamic.h */; }; + 9E61D975D2EC876A1900DA4AF6207302 /* FSRWebSocket.h in Headers */ = {isa = PBXBuildFile; fileRef = 8EE7F71638BDFD912AFCE02790D04BA0 /* FSRWebSocket.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 9E623087AF11AD18B1CEF3412B4F8F81 /* FIRInstanceIDLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = ACC0F8CF01D640B7ADC025DA696085B0 /* FIRInstanceIDLogger.m */; }; + 9E6DFB3060F996BF9C940057841E3566 /* FIRInstanceIDCheckinPreferences_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 78D20851FCB538104DD13D41CB744D3E /* FIRInstanceIDCheckinPreferences_Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 9EE0C7EF5E7CE1F5EDD54FAEC8F1E00D /* FIRAuthErrorUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = 908666ADE4FBDCFE74CF707F697378DA /* FIRAuthErrorUtils.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 9EF1C45E1DA1FB64F8027B9BD3B4284A /* FTreeSortedDictionary.m in Sources */ = {isa = PBXBuildFile; fileRef = BA81289B1578869A8FCB45DAD08C1C0B /* FTreeSortedDictionary.m */; }; + A01241786ED54385B529C9B96C5B1414 /* FIRInstanceIDUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 6F2F6831811871F08EA5EEEC4DAEF2D9 /* FIRInstanceIDUtilities.h */; settings = {ATTRIBUTES = (Project, ); }; }; + A14BE675DABB599CA7399A2006FC7FD3 /* FLimitedFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = EF7ADFA7A3DD30DF1969975ACD565F7B /* FLimitedFilter.m */; }; + A15096ABCEEE1493773777D56313B7E6 /* RLMRealm.mm in Sources */ = {isa = PBXBuildFile; fileRef = B4F89A5F362C43B1BD03B0FEB5633609 /* RLMRealm.mm */; settings = {COMPILER_FLAGS = "-DREALM_HAVE_CONFIG -DREALM_COCOA_VERSION='@\"3.17.3\"' -D__ASSERTMACROS__ -DREALM_ENABLE_SYNC"; }; }; + A1543FF1A76D222F0ABC0CE11ACC35E0 /* FIRUserMetadata.m in Sources */ = {isa = PBXBuildFile; fileRef = B6659701BEDFDF94D55A2E5458223DEC /* FIRUserMetadata.m */; }; + A15FDEA6A78B2639751FE59B558CFD89 /* FLLRBValueNode.m in Sources */ = {isa = PBXBuildFile; fileRef = F834DD7E4D2FDC85A193292024BE0163 /* FLLRBValueNode.m */; }; + A17712FBDAE6070CF590F6976D64B158 /* FIRAppInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 5B4C137FA1C9110191A73369615CA2B8 /* FIRAppInternal.h */; settings = {ATTRIBUTES = (Private, ); }; }; + A266655E9ED38EBED38AD722B5A1C317 /* RLMRealm_Dynamic.h in Copy . Public Headers */ = {isa = PBXBuildFile; fileRef = BCCA0DAE79662E911CBBEEEBDA45B5F3 /* RLMRealm_Dynamic.h */; }; + A2A5C0376AC10C1E6139C29A1E5BB6D8 /* FRangedFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 734E687ED0B9659B4B8296F7501174D4 /* FRangedFilter.m */; }; + A2C1C48D5EDFAF949E0EA049D00E9338 /* FChildChangeAccumulator.h in Headers */ = {isa = PBXBuildFile; fileRef = 7F1E8D2FBE6B60F5EC9B40E8312C7DE5 /* FChildChangeAccumulator.h */; settings = {ATTRIBUTES = (Project, ); }; }; + A317DB1ECE90C1B9D5EA26B5CCDABD93 /* FWebSocketConnection.h in Headers */ = {isa = PBXBuildFile; fileRef = A12C91A610BF1A3320BB959CCA59D715 /* FWebSocketConnection.h */; settings = {ATTRIBUTES = (Project, ); }; }; + A31D0A06C67F8CC7DC9BE09BF0B60ACC /* RLMSyncSession.h in Headers */ = {isa = PBXBuildFile; fileRef = A8856392940E3B82F2F239C2AF1213ED /* RLMSyncSession.h */; }; + A34E42658F7E1D64D4BDBE900A32533B /* FEventEmitter.m in Sources */ = {isa = PBXBuildFile; fileRef = 62B394E32B95975C25A4595A09487F85 /* FEventEmitter.m */; }; + A3576CFEABAE4266350F611E5FA89848 /* FIRServerValue.m in Sources */ = {isa = PBXBuildFile; fileRef = 5C1B10B9332D21AE74863B70D475B0B6 /* FIRServerValue.m */; }; + A3B0FD48AE71F530A85F170FFF9E4C0B /* FIROptionsInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 73A0AE5015A40A0A6F62437EE11DF153 /* FIROptionsInternal.h */; settings = {ATTRIBUTES = (Private, ); }; }; + A41425FF774FF7D689DB225E185D5AEF /* FIRGetAccountInfoResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 71322847B812F2A6A11C8438E0D4E832 /* FIRGetAccountInfoResponse.m */; }; + A456EE65DEF7E7059381E90346FCF556 /* FIRSendVerificationCodeRequest.h in Headers */ = {isa = PBXBuildFile; fileRef = 88B865ECBDCF736FA92084EC45816DD3 /* FIRSendVerificationCodeRequest.h */; settings = {ATTRIBUTES = (Project, ); }; }; + A4D71737CDD8189E0DB9BDB10F14F133 /* GULNetworkURLSession.m in Sources */ = {isa = PBXBuildFile; fileRef = EFFCE391EAFB6F007DFD423BEBE66367 /* GULNetworkURLSession.m */; }; + A4FF8210F5BBBCBB3AD49A6F36D0F669 /* FIRAuthAPNSTokenManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 370069EE1992C0FA848E4FAA1CEF94F7 /* FIRAuthAPNSTokenManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; + A566143D390FA8DFFB44D97ED9E34258 /* GULSwizzler.h in Headers */ = {isa = PBXBuildFile; fileRef = 0B1D106CB434215C0CF0080ED7096662 /* GULSwizzler.h */; settings = {ATTRIBUTES = (Private, ); }; }; + A574689328D21EFD318C27BEC85437F4 /* RLMSyncUser.mm in Sources */ = {isa = PBXBuildFile; fileRef = E2A38E3F34CBDC6C03E3FB00E4D4DCBE /* RLMSyncUser.mm */; settings = {COMPILER_FLAGS = "-DREALM_HAVE_CONFIG -DREALM_COCOA_VERSION='@\"3.17.3\"' -D__ASSERTMACROS__ -DREALM_ENABLE_SYNC"; }; }; + A58EDC3DDDA75A797C20E3B21BA09796 /* GULNetworkMessageCode.h in Headers */ = {isa = PBXBuildFile; fileRef = 225D1D84A56BD65445D95C2FA4F6F643 /* GULNetworkMessageCode.h */; settings = {ATTRIBUTES = (Private, ); }; }; + A59D6253618D58176DCFBDFFB94BE0D8 /* FIRSendVerificationCodeResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 490560DE597BE490978CE844C20F8A7B /* FIRSendVerificationCodeResponse.h */; settings = {ATTRIBUTES = (Project, ); }; }; + A5AC380DA6DC4395CF18DE928BE552E9 /* block_builder.cc in Sources */ = {isa = PBXBuildFile; fileRef = 1046E3A0853EDA0F23A2044A814171DD /* block_builder.cc */; settings = {COMPILER_FLAGS = "-DOS_MACOSX -DLEVELDB_PLATFORM_POSIX -fno-objc-arc"; }; }; + A61006F5465DA69696D160AF8CCA1F18 /* FirebaseAuth.h in Headers */ = {isa = PBXBuildFile; fileRef = 6C236FFC4A99909AFB99AF736F33E348 /* FirebaseAuth.h */; settings = {ATTRIBUTES = (Public, ); }; }; + A6107BF6822094504598B86E21998BAC /* FIRAuthUserDefaultsStorage.h in Headers */ = {isa = PBXBuildFile; fileRef = A2D6E538ED4100E8E69220E9BF510E71 /* FIRAuthUserDefaultsStorage.h */; settings = {ATTRIBUTES = (Project, ); }; }; + A624A704D89D13B67538456ABC718AD6 /* table_builder.cc in Sources */ = {isa = PBXBuildFile; fileRef = 99CD60BC57D32DF9C038E8BE112FED4C /* table_builder.cc */; settings = {COMPILER_FLAGS = "-DOS_MACOSX -DLEVELDB_PLATFORM_POSIX -fno-objc-arc"; }; }; + A628B0ADE39B4220CDFAD934EC88116B /* FIRDataEventType.h in Headers */ = {isa = PBXBuildFile; fileRef = CBD589EC66AC7BD4EFC9EFCE01AA57EE /* FIRDataEventType.h */; settings = {ATTRIBUTES = (Public, ); }; }; + A6D32BD2A1F8F1DF754BF5F17AA1479F /* weak_realm_notifier.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 40BDC989C087F10D8FE131E1160E1568 /* weak_realm_notifier.cpp */; settings = {COMPILER_FLAGS = "-DREALM_HAVE_CONFIG -DREALM_COCOA_VERSION='@\"3.17.3\"' -D__ASSERTMACROS__ -DREALM_ENABLE_SYNC"; }; }; + A7269BCF1465F3888FA3B95F5EA18040 /* FAuthTokenProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = D60FAC0498113B55C1DF9F52E6A76FED /* FAuthTokenProvider.h */; settings = {ATTRIBUTES = (Project, ); }; }; + A735C1A1F243568B041B8E37D0B70E72 /* FTupleOnDisconnect.m in Sources */ = {isa = PBXBuildFile; fileRef = 085496656FD3219252B44B257816BAE2 /* FTupleOnDisconnect.m */; }; + A7412308E2934398561690716665EE9E /* log_reader.h in Headers */ = {isa = PBXBuildFile; fileRef = FB74B24525380A5D381204D444E86AA2 /* log_reader.h */; settings = {ATTRIBUTES = (Project, ); }; }; + A74E276A9ABED3AAD668CE17DDAC8D76 /* memtable.h in Headers */ = {isa = PBXBuildFile; fileRef = 794211A97E497258686A436223DEE367 /* memtable.h */; settings = {ATTRIBUTES = (Project, ); }; }; + A7619A266B20B4E3DAD75FC0DE4FD970 /* FIRConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = 588E4A7E54B0E72AAD3020B32F0FC35E /* FIRConfiguration.h */; settings = {ATTRIBUTES = (Public, ); }; }; + A7670F162C0C9A4E11EFB681BBCFD842 /* FViewProcessorResult.h in Headers */ = {isa = PBXBuildFile; fileRef = 5A44DFA281250C6F1B97AB2F052F810F /* FViewProcessorResult.h */; settings = {ATTRIBUTES = (Project, ); }; }; + A784AAC5080A69D8488D3FD19DD8627E /* FIRVerifyPhoneNumberRequest.m in Sources */ = {isa = PBXBuildFile; fileRef = A5AEDDD63CE7C0CD93035E3FC6A6E828 /* FIRVerifyPhoneNumberRequest.m */; }; + A7C2DE98B881FB25853CF11F9E20B750 /* GULMutableDictionary.h in Headers */ = {isa = PBXBuildFile; fileRef = 023DD0D1C923305C8AB775AB16154F7A /* GULMutableDictionary.h */; settings = {ATTRIBUTES = (Private, ); }; }; + A837A94918CC3FFBA99ADABED0115EFA /* GULReachabilityChecker.m in Sources */ = {isa = PBXBuildFile; fileRef = F8F39F1A7C8B8CE24E3D0CD384E63027 /* GULReachabilityChecker.m */; }; + A863AFB5119FB1D5FE5D73FA43ABDF34 /* RLMSyncSession.h in Copy . Public Headers */ = {isa = PBXBuildFile; fileRef = A8856392940E3B82F2F239C2AF1213ED /* RLMSyncSession.h */; }; + A91EF19256F4AA665D4E479008402E67 /* RLMRealmConfiguration.mm in Sources */ = {isa = PBXBuildFile; fileRef = 2A569AFA27683A40C14753793F8102C9 /* RLMRealmConfiguration.mm */; settings = {COMPILER_FLAGS = "-DREALM_HAVE_CONFIG -DREALM_COCOA_VERSION='@\"3.17.3\"' -D__ASSERTMACROS__ -DREALM_ENABLE_SYNC"; }; }; + A970662CB983D9A41A1906A6024FC791 /* FCompleteChildSource.h in Headers */ = {isa = PBXBuildFile; fileRef = 890C7A4D405C2F2089F37E0DAF07826E /* FCompleteChildSource.h */; settings = {ATTRIBUTES = (Project, ); }; }; + A9832D0AFFD108E7BD900991CD00B5BE /* RLMProperty.h in Copy . Public Headers */ = {isa = PBXBuildFile; fileRef = F3462F1A580FE4DE43C18CEE86254352 /* RLMProperty.h */; }; + A9A932C62F76537916377725EE1BDB54 /* FTupleFirebase.h in Headers */ = {isa = PBXBuildFile; fileRef = 5497FA47B8B99D14E3C9AE15477C3CB7 /* FTupleFirebase.h */; settings = {ATTRIBUTES = (Project, ); }; }; + A9BFD8486DA770CAC136032B69CE7899 /* FIRAuthTokenResult.m in Sources */ = {isa = PBXBuildFile; fileRef = 8E553B569C18DFA1AC66671B2799401C /* FIRAuthTokenResult.m */; }; + A9EBD6E55053AF4E650C0277CADDE168 /* FIROAuthProvider.m in Sources */ = {isa = PBXBuildFile; fileRef = C84980C673C3EEC7200D01D3CB1D6D84 /* FIROAuthProvider.m */; }; + AA76F13313FE5CC42F3B4B6F74DA2085 /* port_example.h in Headers */ = {isa = PBXBuildFile; fileRef = 91F9FE77061A16B37A212F2945591314 /* port_example.h */; settings = {ATTRIBUTES = (Project, ); }; }; + AABEE951C89957EB5E1FCD3D25CD45B4 /* Schema.swift in Sources */ = {isa = PBXBuildFile; fileRef = A3C25863F4E5C8A71C2F6FF516080B8A /* Schema.swift */; }; + AAE3950A1F0792DC5213108E5310784B /* FIRAuthWebUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = 2B0FF2CEBCFA4F796A1EBD4DAB5CB476 /* FIRAuthWebUtils.m */; }; + AB2F6B5A735C7B0D1CB875EC44424031 /* log_format.h in Headers */ = {isa = PBXBuildFile; fileRef = AD589215D74BA7D59C8AEF57FE525034 /* log_format.h */; settings = {ATTRIBUTES = (Project, ); }; }; + AB500083C0ABCFA9EC4497BAF53C7081 /* RLMObject.mm in Sources */ = {isa = PBXBuildFile; fileRef = CF350ACCEBFC5440D67CB94A1E73112D /* RLMObject.mm */; settings = {COMPILER_FLAGS = "-DREALM_HAVE_CONFIG -DREALM_COCOA_VERSION='@\"3.17.3\"' -D__ASSERTMACROS__ -DREALM_ENABLE_SYNC"; }; }; + ABA021FA655711BD76D48B64953FABB0 /* FViewProcessorResult.m in Sources */ = {isa = PBXBuildFile; fileRef = E9C17B4604F37A79B7D4B4F6B27AAFD9 /* FViewProcessorResult.m */; }; + ABA93DBF83B9F5F41D1651E691E9E49D /* FIRApp.m in Sources */ = {isa = PBXBuildFile; fileRef = EC52200C64938913E2A145909FCB1DE5 /* FIRApp.m */; }; + AC0F5BE9969AFF9FC4DBF4D3115917ED /* ObjectSchema.swift in Sources */ = {isa = PBXBuildFile; fileRef = F2EAD57FEA0D865E34970DF30433DA0B /* ObjectSchema.swift */; }; + AC22B7C6762EE8B66B279D38B1660180 /* FIRVerifyClientResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 168A0ECC159152FA1BC6C8BB145C89E7 /* FIRVerifyClientResponse.h */; settings = {ATTRIBUTES = (Project, ); }; }; + AC30DC2C634FE16504A1606CF742E5C6 /* two_level_iterator.h in Headers */ = {isa = PBXBuildFile; fileRef = 0A6EBF0A8C222DE3E9E319189FFC4BA8 /* two_level_iterator.h */; settings = {ATTRIBUTES = (Project, ); }; }; + AC7D31515E86381A8B870C543C737E1B /* FIRInstanceIDVersionUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = F4355FC4302E34A0C9237E2498D2CAB1 /* FIRInstanceIDVersionUtilities.h */; settings = {ATTRIBUTES = (Project, ); }; }; + AC7D415C826932227566EB2B916A7C26 /* SortDescriptor.swift in Sources */ = {isa = PBXBuildFile; fileRef = F113AB8F41762B4D250C788ABE86CB7E /* SortDescriptor.swift */; }; + AD6D8C01F8592EC5BDA98579A8DC3332 /* FMaxNode.m in Sources */ = {isa = PBXBuildFile; fileRef = E1F00DF06C3044983E4F4F4B761E513B /* FMaxNode.m */; }; + ADD212F6B932D986B29970843A9BA63E /* FIRInstanceID_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 51BBB72541441901F63ACA128FB233A1 /* FIRInstanceID_Private.h */; settings = {ATTRIBUTES = (Private, ); }; }; + ADF1076FF0CE456B5E0E046EEC33CD97 /* ThreadSafeReference.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7A808AC15356B0C652B6E11F7ED8AE8D /* ThreadSafeReference.swift */; }; + AEAF4234C85DBC10E17843E3B34DC1D4 /* FIRGameCenterAuthCredential.h in Headers */ = {isa = PBXBuildFile; fileRef = 75B7CC37B985F7F6F55F9778EB00A93C /* FIRGameCenterAuthCredential.h */; settings = {ATTRIBUTES = (Project, ); }; }; + AEB370D3E0B4DD64F3D6C968F4130418 /* RLMSyncUtil_Private.h in Copy . Private Headers */ = {isa = PBXBuildFile; fileRef = D15A73BCEBC44FB33AA2FB6BDC13CFFA /* RLMSyncUtil_Private.h */; }; + AEE26F3C2B2C2CB4E6CCCEBA25FA728B /* RLMMigration.h in Copy . Public Headers */ = {isa = PBXBuildFile; fileRef = 97295361277BD22FF7037B30D2DE444D /* RLMMigration.h */; }; + AF33AD983D1B3CD0DF54051E388E4E3A /* FIRFacebookAuthProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = 7FFB1CFCB7AE208F8D3D089B15488C60 /* FIRFacebookAuthProvider.h */; settings = {ATTRIBUTES = (Public, ); }; }; + AF539E21E25523D98BFA4BF766E7AE21 /* GULNetwork.h in Headers */ = {isa = PBXBuildFile; fileRef = CFE0F950DE21EAAD6A6E12615EDA1608 /* GULNetwork.h */; settings = {ATTRIBUTES = (Private, ); }; }; + AFAD293416280E07D0594659C1E3B1E9 /* FIROAuthCredential_Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 57D159C5054D0173F0D35B3E8C1BB029 /* FIROAuthCredential_Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; + AFEA63536CDE56B7015648BBD06D6D17 /* FIRInstanceIDKeyPairUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = D8705957293E320E38E862B42B93C701 /* FIRInstanceIDKeyPairUtilities.m */; }; + B05039665A49EE9C8904D50FE68EBEB4 /* FCompoundWrite.h in Headers */ = {isa = PBXBuildFile; fileRef = 8821C4EAD2D871AE17AB8FC34386D6CC /* FCompoundWrite.h */; settings = {ATTRIBUTES = (Project, ); }; }; + B05C4A2C1AFA963738C2DFBE099FFE57 /* FIRAuthKeychain.m in Sources */ = {isa = PBXBuildFile; fileRef = B4D15B837FB823C09A304B128DFF48D9 /* FIRAuthKeychain.m */; }; + B0BBA89E02BABCBF0D13A44C9A0907A1 /* FListenProvider.m in Sources */ = {isa = PBXBuildFile; fileRef = 3AA1B6314F3E0694E42F14AF73C93E2B /* FListenProvider.m */; }; + B0FFF62DA4F53D362FF1415081DF9765 /* FEventRegistration.h in Headers */ = {isa = PBXBuildFile; fileRef = CA161ED162460C65E32AA99B9E784FD7 /* FEventRegistration.h */; settings = {ATTRIBUTES = (Project, ); }; }; + B1579E89F59DC8F849C634EF5178DCC3 /* FIRInstanceIDTokenInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 44D1A66BE035A78A2A5A9D08EBC400DD /* FIRInstanceIDTokenInfo.h */; settings = {ATTRIBUTES = (Project, ); }; }; + B16D582D7806ADD1CB5B3186C82C077B /* RLMOptionalBase.mm in Sources */ = {isa = PBXBuildFile; fileRef = 8ECF4C5791B498BE6416566555758B03 /* RLMOptionalBase.mm */; settings = {COMPILER_FLAGS = "-DREALM_HAVE_CONFIG -DREALM_COCOA_VERSION='@\"3.17.3\"' -D__ASSERTMACROS__ -DREALM_ENABLE_SYNC"; }; }; + B1B6D5762D0A8A6B59093DB2AF2F4C12 /* RLMSyncUtil_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = D15A73BCEBC44FB33AA2FB6BDC13CFFA /* RLMSyncUtil_Private.h */; }; + B1E1060956B875EAF7AA752B82D2E598 /* NSError+RLMSync.m in Sources */ = {isa = PBXBuildFile; fileRef = AD5C0D942A1AA6E107F1B199F88119E7 /* NSError+RLMSync.m */; settings = {COMPILER_FLAGS = "-DREALM_HAVE_CONFIG -DREALM_COCOA_VERSION='@\"3.17.3\"' -D__ASSERTMACROS__ -DREALM_ENABLE_SYNC"; }; }; + B1E8B032DA1BDD4F774F3098345A86B3 /* FIRSetAccountInfoRequest.m in Sources */ = {isa = PBXBuildFile; fileRef = DBFAA6B0C183685BBD97B3344B4DBF10 /* FIRSetAccountInfoRequest.m */; }; + B25B4030D50DF8E3E4B182AED626DA50 /* FIRNoopAuthTokenProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = 67B421E6D32A450420B8A8D07D98CB01 /* FIRNoopAuthTokenProvider.h */; settings = {ATTRIBUTES = (Project, ); }; }; + B2BC89058A4A0C5FB0F5A7AC3288C08E /* FRangeMerge.h in Headers */ = {isa = PBXBuildFile; fileRef = B3335695C4D824B28E49AC20951FD113 /* FRangeMerge.h */; settings = {ATTRIBUTES = (Project, ); }; }; + B3900D0CF68499C405C18FBD10A14D7F /* FIRAuthCredential.m in Sources */ = {isa = PBXBuildFile; fileRef = 89A887688FA23EA660C1C65238C57A5E /* FIRAuthCredential.m */; }; + B408DB4B7C0BADD73CF362DEA8249AAE /* write_batch.cc in Sources */ = {isa = PBXBuildFile; fileRef = 5436A15B807598AA147D37A03ED78F4F /* write_batch.cc */; settings = {COMPILER_FLAGS = "-DOS_MACOSX -DLEVELDB_PLATFORM_POSIX -fno-objc-arc"; }; }; + B415EBB88B0E9533B9E10FCF2306A966 /* FIRDatabaseReference_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 9F83FEB4006D3DF1767533CFE98D9FF6 /* FIRDatabaseReference_Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; + B44B3659A291A6F5C855CA7162E4A141 /* FUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 0D7BBF1CA256DD5CC5373AF9AFA6DAA3 /* FUtilities.h */; settings = {ATTRIBUTES = (Project, ); }; }; + B54FED393DDF34FF370AC565E096CD4F /* RLMObjectSchema_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 84F80DE6177F8732EACA7487982C406F /* RLMObjectSchema_Private.h */; }; + B599C2A4DD74B60FB8608E8D6454F7A1 /* GTMSessionUploadFetcher.h in Headers */ = {isa = PBXBuildFile; fileRef = FD9C98B78F87A2DE67BA60D41994BE3A /* GTMSessionUploadFetcher.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B5ACE2D7E5403DA319AE58661BAF9A64 /* FIRTwitterAuthProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = EF8EEBCF50D02BE154F4537D7561E4A2 /* FIRTwitterAuthProvider.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B6631CC5836AA60AB8EA71B41B3B7EAB /* FIRAuthAppCredentialManager.m in Sources */ = {isa = PBXBuildFile; fileRef = AFF84D9DB30BDBB29D196044608B6709 /* FIRAuthAppCredentialManager.m */; }; + B695A596EB641C4D1315C8307AC07C7C /* RLMAnalytics.mm in Sources */ = {isa = PBXBuildFile; fileRef = 8F5E21ED0742C844100BE9764330C0E7 /* RLMAnalytics.mm */; settings = {COMPILER_FLAGS = "-DREALM_HAVE_CONFIG -DREALM_COCOA_VERSION='@\"3.17.3\"' -D__ASSERTMACROS__ -DREALM_ENABLE_SYNC"; }; }; + B6B5262B2E2124BA15E6A7CC98C3D591 /* FIRInstanceID+Private.m in Sources */ = {isa = PBXBuildFile; fileRef = 21B8D37C29BEA66851AD9C155AD04282 /* FIRInstanceID+Private.m */; }; + B6B75B9BD58FB20EC87BB9441B6DE370 /* FIRDatabaseConfig.h in Headers */ = {isa = PBXBuildFile; fileRef = EE3D153DA535398A7536C329AD6B1875 /* FIRDatabaseConfig.h */; settings = {ATTRIBUTES = (Project, ); }; }; + B706213AC4280BCB839EAA9E831669FF /* FIRInstanceIDKeyPairStore.m in Sources */ = {isa = PBXBuildFile; fileRef = 00A718027A0C464E0524A38F409F41E9 /* FIRInstanceIDKeyPairStore.m */; }; + B71E32D1277DC8BDA918F52F211F5823 /* FIRInstanceID.m in Sources */ = {isa = PBXBuildFile; fileRef = 18DD7B3ABD6071BD9257EBDA91BF46EC /* FIRInstanceID.m */; }; + B755317E9810BD663593461D2752BA0D /* FTypedefs.h in Headers */ = {isa = PBXBuildFile; fileRef = 3B4105D5FCBFD78F353F2704EE28A967 /* FTypedefs.h */; settings = {ATTRIBUTES = (Project, ); }; }; + B757656C6A131F5F902371394E1CCFDC /* FIRAuthBackend.h in Headers */ = {isa = PBXBuildFile; fileRef = DA855AEEB54D36726188ABAB69F45570 /* FIRAuthBackend.h */; settings = {ATTRIBUTES = (Project, ); }; }; + B77FF9066B6C7CAB0F93DBA2A8A8E6ED /* filter_policy.h in Headers */ = {isa = PBXBuildFile; fileRef = D1D33C3581F1CD2795D1048283BA3EBD /* filter_policy.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B7905C416D77AE0D73F2C99473D38CBA /* FOverwrite.h in Headers */ = {isa = PBXBuildFile; fileRef = 3502BA5E54A949CC685BE45EB6002540 /* FOverwrite.h */; settings = {ATTRIBUTES = (Project, ); }; }; + B79E533ADFF6B928B63AF448B468C6C4 /* RLMQueryUtil.mm in Sources */ = {isa = PBXBuildFile; fileRef = CCCE56F2AED803A6FF364C79F1E49388 /* RLMQueryUtil.mm */; settings = {COMPILER_FLAGS = "-DREALM_HAVE_CONFIG -DREALM_COCOA_VERSION='@\"3.17.3\"' -D__ASSERTMACROS__ -DREALM_ENABLE_SYNC"; }; }; + B81E616152053D0DD86C17DF07338D82 /* FIRGoogleAuthCredential.h in Headers */ = {isa = PBXBuildFile; fileRef = EEBF1CFF356039410AAD67E17DD212A8 /* FIRGoogleAuthCredential.h */; settings = {ATTRIBUTES = (Project, ); }; }; + B81EC7DFFFA7960BA68D0E2F4E248E5D /* GTMDebugThreadValidation.h in Headers */ = {isa = PBXBuildFile; fileRef = 838C6552858C245D9560D7948DAFC057 /* GTMDebugThreadValidation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B82AE40E9747E8275EBF11E8E263987C /* FConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = 6AB87DDDB0F6450F58E49C59EEB7E6C8 /* FConstants.h */; settings = {ATTRIBUTES = (Project, ); }; }; + B8473CD1F2C3DDF16681C70A82929565 /* FIRAuthRPCRequest.h in Headers */ = {isa = PBXBuildFile; fileRef = B914889E114F0488A3BF44A9787815E2 /* FIRAuthRPCRequest.h */; settings = {ATTRIBUTES = (Project, ); }; }; + B85523946056D99FF97B3BE6E19426D8 /* RLMArray.mm in Sources */ = {isa = PBXBuildFile; fileRef = 0B9B76A0647CED8F68D9678666AF843E /* RLMArray.mm */; settings = {COMPILER_FLAGS = "-DREALM_HAVE_CONFIG -DREALM_COCOA_VERSION='@\"3.17.3\"' -D__ASSERTMACROS__ -DREALM_ENABLE_SYNC"; }; }; + B884C4297770EF48B769ACCB74245CBA /* FKeepSyncedEventRegistration.h in Headers */ = {isa = PBXBuildFile; fileRef = 9984B99F803A00F0B02A4E700741E7E0 /* FKeepSyncedEventRegistration.h */; settings = {ATTRIBUTES = (Project, ); }; }; + B8A7BC9B5FAAAAD9584B26CE3DE7FE54 /* FQuerySpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 2D847DD9F3FB0F68A17DDB5FBE6DDBD4 /* FQuerySpec.m */; }; + B8AC191F85E5AC106FAC02A6DFF87261 /* FTupleNodePath.m in Sources */ = {isa = PBXBuildFile; fileRef = A607ED0A0BE0F45529AF19E856E587BC /* FTupleNodePath.m */; }; + B8B5944302284DFDC87C258C5B199E7A /* RLMSyncConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = FBE8BF9263F2387AC9E0D9A87867BB8D /* RLMSyncConfiguration.h */; }; + B8BC3EF89ECD65588D20A746E65B1958 /* RLMRealmConfiguration+Sync.mm in Sources */ = {isa = PBXBuildFile; fileRef = 8F39CD3D4452D3B66568553467302538 /* RLMRealmConfiguration+Sync.mm */; settings = {COMPILER_FLAGS = "-DREALM_HAVE_CONFIG -DREALM_COCOA_VERSION='@\"3.17.3\"' -D__ASSERTMACROS__ -DREALM_ENABLE_SYNC"; }; }; + B8E993D90FDB99D29A23CDF1BE5D0DF9 /* FIRVerifyAssertionRequest.h in Headers */ = {isa = PBXBuildFile; fileRef = 3245CC589AB66688DD8D9A321384622F /* FIRVerifyAssertionRequest.h */; settings = {ATTRIBUTES = (Project, ); }; }; + B8FCD4401359DE2DBF39CAF175EAEC62 /* FIRAuthAPNSToken.m in Sources */ = {isa = PBXBuildFile; fileRef = 8390CAAFAA2B5B7F47FC0742BC409DC8 /* FIRAuthAPNSToken.m */; }; + B932AFFE86F6EF2E7626EF5F5ADB1242 /* work_queue.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C07474E49A157B53C7ED4DF0A03F415B /* work_queue.cpp */; settings = {COMPILER_FLAGS = "-DREALM_HAVE_CONFIG -DREALM_COCOA_VERSION='@\"3.17.3\"' -D__ASSERTMACROS__ -DREALM_ENABLE_SYNC"; }; }; + B95540C3F40E4F7C6EFE765213EF1ADB /* FIRFacebookAuthCredential.m in Sources */ = {isa = PBXBuildFile; fileRef = C3FA7E866B1EC7FA6827C6C60BAF40FB /* FIRFacebookAuthCredential.m */; }; + B97A96AE75E6EA48CAA103CAB903EB42 /* FPath.h in Headers */ = {isa = PBXBuildFile; fileRef = FE29E69132BB4653FB6C48387F122A5D /* FPath.h */; settings = {ATTRIBUTES = (Project, ); }; }; + B9AF8F5314550CCFB04E1A0713F99519 /* FViewProcessor.m in Sources */ = {isa = PBXBuildFile; fileRef = 12E383778E61F9116632B44A1D457BC1 /* FViewProcessor.m */; }; + B9D528EB21C65047CE9FB75CB74CE19C /* RLMSyncSession.mm in Sources */ = {isa = PBXBuildFile; fileRef = A7760D9DB3D22F67FF879ED10752C385 /* RLMSyncSession.mm */; settings = {COMPILER_FLAGS = "-DREALM_HAVE_CONFIG -DREALM_COCOA_VERSION='@\"3.17.3\"' -D__ASSERTMACROS__ -DREALM_ENABLE_SYNC"; }; }; + BA0A0E6BFAB55F84AFAA454CA7869746 /* nanopb-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 28AFEE343D35DBF8B6DCFE87AFE69358 /* nanopb-dummy.m */; }; + BA0B27D430133E096FEC858E05AC4FC3 /* hash.cc in Sources */ = {isa = PBXBuildFile; fileRef = FEF9CDDC521EA7A16A3AEFFEE263AB55 /* hash.cc */; settings = {COMPILER_FLAGS = "-DOS_MACOSX -DLEVELDB_PLATFORM_POSIX -fno-objc-arc"; }; }; + BAE60B29A325C0D40D4DF220CE2789E4 /* FIRAuthBackend.m in Sources */ = {isa = PBXBuildFile; fileRef = 1FA59C26623D9F8F9CDE1F488830B294 /* FIRAuthBackend.m */; }; + BAFF64F621EA37F2AF88EB06EF3A3751 /* db_iter.h in Headers */ = {isa = PBXBuildFile; fileRef = 510C193CD9FFA37673FC08ECF6072C76 /* db_iter.h */; settings = {ATTRIBUTES = (Project, ); }; }; + BB24E6D8DB7DC40EECE120E63C08DAAC /* FOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 4D7FCD64F86B4ECEB77B0F8F3F5421BE /* FOperation.h */; settings = {ATTRIBUTES = (Project, ); }; }; + BB73E6B3C9B78FC1A9DB561643CF9AE6 /* FIRAuthWebView.h in Headers */ = {isa = PBXBuildFile; fileRef = 7F9BF1DE3F2AB72712538847DCC467FB /* FIRAuthWebView.h */; settings = {ATTRIBUTES = (Project, ); }; }; + BB89AAB5CAC920612B313DBCFAB19F54 /* bloom.cc in Sources */ = {isa = PBXBuildFile; fileRef = 6E268075750285AF449610E21DDE7ED5 /* bloom.cc */; settings = {COMPILER_FLAGS = "-DOS_MACOSX -DLEVELDB_PLATFORM_POSIX -fno-objc-arc"; }; }; + BBABD549A7638BC4A916C18CB25030E7 /* db_impl.cc in Sources */ = {isa = PBXBuildFile; fileRef = 64144CD0F6D74841B8B0AE168E5352B0 /* db_impl.cc */; settings = {COMPILER_FLAGS = "-DOS_MACOSX -DLEVELDB_PLATFORM_POSIX -fno-objc-arc"; }; }; + BBCC6DDC1E888668E9DB4E11FDECBE76 /* Error.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0420F900F8AD3CEA746CACCB0E6178ED /* Error.swift */; }; + BC26696EC533DEE466ADEA133D7E4D2E /* FImmutableSortedSet.h in Headers */ = {isa = PBXBuildFile; fileRef = F4CB939B6F03AF7D2547B827376F38F7 /* FImmutableSortedSet.h */; settings = {ATTRIBUTES = (Project, ); }; }; + BC2C9C5098977922D63923E9E242F255 /* FServerValues.m in Sources */ = {isa = PBXBuildFile; fileRef = C9D84781252814C38E66B8879E62F3D4 /* FServerValues.m */; }; + BD0CA1A486E0F8C3458BC1BCC366E2EE /* RLMThreadSafeReference.h in Headers */ = {isa = PBXBuildFile; fileRef = 45F21713D2B7D52DE8A90B302E56361E /* RLMThreadSafeReference.h */; }; + BDE3D3F5D5BD260043085204727850A5 /* pb.h in Headers */ = {isa = PBXBuildFile; fileRef = 0730349534BA7B9D9A5C37F77674AF46 /* pb.h */; settings = {ATTRIBUTES = (Public, ); }; }; + BE25617CF93E63163BB3165ACC31D22E /* RLMCollection.mm in Sources */ = {isa = PBXBuildFile; fileRef = 846134E0C1FE4B19BAE203AFC5D5C5D7 /* RLMCollection.mm */; settings = {COMPILER_FLAGS = "-DREALM_HAVE_CONFIG -DREALM_COCOA_VERSION='@\"3.17.3\"' -D__ASSERTMACROS__ -DREALM_ENABLE_SYNC"; }; }; + BF021EFB17B3342D120E5572A4A75A30 /* FOperationSource.m in Sources */ = {isa = PBXBuildFile; fileRef = 9CCE247AF3AD8A8C665DE382E4E71208 /* FOperationSource.m */; }; + BF951F66705868C4A3D38A808F8AFCF7 /* RLMObject.h in Copy . Public Headers */ = {isa = PBXBuildFile; fileRef = 253D0BC75A7429141DD68D630377A630 /* RLMObject.h */; }; + BFD81E8FBFC10AA508E01ACB4FE54205 /* FIRInstanceIDUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 610C1E7BF24A764091822B913A24C730 /* FIRInstanceIDUtilities.m */; }; + C0A364828C495303A6A27507349D15DD /* cache.h in Headers */ = {isa = PBXBuildFile; fileRef = 600F94AD0FB1F18D7D28AC246AF4BD13 /* cache.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C0CB291FDCF4A214523C60207BB33F50 /* FIRAuthUIDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 4386737EBB0742D7CDA568A7437AEA6D /* FIRAuthUIDelegate.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C11544E5C3F5B716E82A54FC7DAD7F88 /* FirebaseInstanceID-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 493C2F15454D03A6AE8ACA399CFA55FB /* FirebaseInstanceID-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C1EF417DD9838081C8D4DD3FA29AE556 /* FView.h in Headers */ = {isa = PBXBuildFile; fileRef = 4837A3E145374AA54FB7959101EB68C9 /* FView.h */; settings = {ATTRIBUTES = (Project, ); }; }; + C2506328B367CE2C21185CCD54E0CFC4 /* FIROptions.h in Headers */ = {isa = PBXBuildFile; fileRef = 2C3CF6927BBA3DC654DDDFBBE5A826A1 /* FIROptions.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C255D699321E797768A3DE04748F742F /* NSError+FIRInstanceID.h in Headers */ = {isa = PBXBuildFile; fileRef = EBFFEA66C26CDF5A514CC30E13F0C688 /* NSError+FIRInstanceID.h */; settings = {ATTRIBUTES = (Project, ); }; }; + C320F94C07015D2A5FD423F22BD25C0A /* FIRVerifyPhoneNumberResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 404C184F4A19986FF60DBDE97D252565 /* FIRVerifyPhoneNumberResponse.m */; }; + C3262F3640BB8DEDCF85787CACBCB148 /* RLMSyncUtil.h in Headers */ = {isa = PBXBuildFile; fileRef = 51A3B651AD393C33184960AABD78F452 /* RLMSyncUtil.h */; }; + C375BB726470535EA82EF640DFD3FCA4 /* skiplist.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B0B094B7E42252A9F06BDA31219F490 /* skiplist.h */; settings = {ATTRIBUTES = (Project, ); }; }; + C3F3888699D5DCBBED531F40DDC98CCB /* FTrackedQuery.m in Sources */ = {isa = PBXBuildFile; fileRef = C0254A04FC451023C10AF5591DD77A05 /* FTrackedQuery.m */; }; + C45E36BF603C7CA320009C87EF69F610 /* FCancelEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 4F4920DD9F72D5DAC57A1DD95FBC5C00 /* FCancelEvent.h */; settings = {ATTRIBUTES = (Project, ); }; }; + C4A7473D96303AFE724DF085E5D4AE02 /* FWebSocketConnection.m in Sources */ = {isa = PBXBuildFile; fileRef = 50EA409F18B6F7D0E0B80546BFED75BE /* FWebSocketConnection.m */; }; + C4CBA7A3C76D84A5BBF3249A6D16FDB7 /* port_posix_sse.cc in Sources */ = {isa = PBXBuildFile; fileRef = 9FD3F9FB28F9DC36499105A3E0FA206C /* port_posix_sse.cc */; settings = {COMPILER_FLAGS = "-DOS_MACOSX -DLEVELDB_PLATFORM_POSIX -fno-objc-arc"; }; }; + C52552F100DF05F156D991F08DD22B08 /* FIRDatabaseConfig_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 5AA3211F2B6BD04013790D930EA24D45 /* FIRDatabaseConfig_Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; + C52D27E28B6A0A6C2345B58F6D24DC54 /* FIRSignUpNewUserRequest.h in Headers */ = {isa = PBXBuildFile; fileRef = BE2B79861C8A2D3D6086F79F54A1EB77 /* FIRSignUpNewUserRequest.h */; settings = {ATTRIBUTES = (Project, ); }; }; + C56C2D03B794FA3F2C04BB2035D6C0A0 /* FIRAuthDataResult_Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 6D2C7C15952893D5EA825B8BA44A6D68 /* FIRAuthDataResult_Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; + C581FAB423551C1A3F6F81CBEBF91D36 /* FIRInstanceIDTokenOperation+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = AA427C3E16AEC975371F102F14B4F20E /* FIRInstanceIDTokenOperation+Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; + C5ACCFBCA99FEC7DBCF12BBA7616C890 /* FIRInstanceIDTokenDeleteOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 85860B8EFEA3512605A46E8157900EF0 /* FIRInstanceIDTokenDeleteOperation.m */; }; + C5F83D69B4574FA251687510E940881E /* table.cc in Sources */ = {isa = PBXBuildFile; fileRef = 407EA5A7A2C53526148F28A437111F9D /* table.cc */; settings = {COMPILER_FLAGS = "-DOS_MACOSX -DLEVELDB_PLATFORM_POSIX -fno-objc-arc"; }; }; + C6032F01CBBD89429360EFA40E0AB2A5 /* GTMSessionFetcherLogging.m in Sources */ = {isa = PBXBuildFile; fileRef = 3BD5E3EB0A8F75398B40CAF81DAA4994 /* GTMSessionFetcherLogging.m */; }; + C6A8639D82B8E1D5C07E72CC087CB703 /* YMTGetDeviceName-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 05BA8E5D5F402BD088A7AA15C1282405 /* YMTGetDeviceName-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C6F3CE85A9145741F565E0592698C394 /* FIRSignInWithGameCenterResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 457309B50CCB34B4EEB16D3EBCD63CD1 /* FIRSignInWithGameCenterResponse.h */; settings = {ATTRIBUTES = (Project, ); }; }; + C7111F3C8F15B8716EADE17115B3F1A5 /* FIRSignUpNewUserRequest.m in Sources */ = {isa = PBXBuildFile; fileRef = 38C38B6A2308DBD49EEF3B1904EBAA30 /* FIRSignUpNewUserRequest.m */; }; + C740E0793A39526D7F4390F6A9D6AC49 /* sync_manager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D6463C6BE0BD91DCE1970594EAB532BD /* sync_manager.cpp */; settings = {COMPILER_FLAGS = "-DREALM_HAVE_CONFIG -DREALM_COCOA_VERSION='@\"3.17.3\"' -D__ASSERTMACROS__ -DREALM_ENABLE_SYNC"; }; }; + C750CBB00B71AADA7A3D0FE2D99039E2 /* FIRGoogleAuthProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = F1EE2AE40C752B25929EDF168CDCE1B3 /* FIRGoogleAuthProvider.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C82A2EBBEE481E116E7D370628689290 /* FIRComponentContainerInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 0AD902D398751FBD203D4FE1642023D5 /* FIRComponentContainerInternal.h */; settings = {ATTRIBUTES = (Private, ); }; }; + C8C28383779C595F896AE558AB7F6909 /* RLMSyncPermission.h in Copy . Public Headers */ = {isa = PBXBuildFile; fileRef = 50F9650492AACAF7C1049D722783270F /* RLMSyncPermission.h */; }; + C92B6820F42946B2FB6E67227885CC5B /* RLMSchema.h in Copy . Public Headers */ = {isa = PBXBuildFile; fileRef = ABFE82B1CFA704BF96B84CFEF80A185C /* RLMSchema.h */; }; + C9CB7427ABED64DE9297FD1D3A83F54B /* RLMAccessor.mm in Sources */ = {isa = PBXBuildFile; fileRef = 7183094E6CE9940DEA380A4AAD05B82D /* RLMAccessor.mm */; settings = {COMPILER_FLAGS = "-DREALM_HAVE_CONFIG -DREALM_COCOA_VERSION='@\"3.17.3\"' -D__ASSERTMACROS__ -DREALM_ENABLE_SYNC"; }; }; + CA3E33D21E80FC563BCA7F7BDDAB0121 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0781231D907887B1D7DF0E005F108FF7 /* Foundation.framework */; }; + CA86D35AD370FE72F1FB0B5D64E00929 /* FPendingPut.h in Headers */ = {isa = PBXBuildFile; fileRef = A373DEE0775C8C95177A225CF72AC38A /* FPendingPut.h */; settings = {ATTRIBUTES = (Project, ); }; }; + CAB3A31145BBBB08191E4D3AECAF1153 /* FTupleUserCallback.m in Sources */ = {isa = PBXBuildFile; fileRef = 8DBCF752BFC22CECC68D698A40C23A2B /* FTupleUserCallback.m */; }; + CAB6D471ABB3B6217A2844DA99EC41E7 /* FIRInstanceIDCheckinPreferences.m in Sources */ = {isa = PBXBuildFile; fileRef = 55835572A31065F33A3D4E1E1A5420A4 /* FIRInstanceIDCheckinPreferences.m */; }; + CACBB880082F9F0AA1B0650E475A99B7 /* NSData+SRB64Additions.h in Headers */ = {isa = PBXBuildFile; fileRef = 1E46A75AC055110C5FEBBFDE000DB696 /* NSData+SRB64Additions.h */; settings = {ATTRIBUTES = (Project, ); }; }; + CACCB9265D7871168CC4A80CB1657A28 /* FTupleBoolBlock.m in Sources */ = {isa = PBXBuildFile; fileRef = 82A9B813E254325D96A9C5B35B4F4FBA /* FTupleBoolBlock.m */; }; + CB121252E8B041A99050F03551F63039 /* FIRAuthURLPresenter.m in Sources */ = {isa = PBXBuildFile; fileRef = 2E37C16442C566723A2F70A310AB2405 /* FIRAuthURLPresenter.m */; }; + CB2CCE8372813BDB7AB00B6A558C4924 /* FIRPhoneAuthProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = 630B3A7577F58B1A9F241E39E3866FDD /* FIRPhoneAuthProvider.h */; settings = {ATTRIBUTES = (Public, ); }; }; + CBC0C5BE0B91962A529E666EBA637BD9 /* FAuthTokenProvider.m in Sources */ = {isa = PBXBuildFile; fileRef = 640F6EA21951193DDC66D4707D91D974 /* FAuthTokenProvider.m */; }; + CC2B4CBEED633DF567DB291B995D7299 /* FIRInstanceIDTokenManager.m in Sources */ = {isa = PBXBuildFile; fileRef = AD75F6F8377161E820B76C39CD91B574 /* FIRInstanceIDTokenManager.m */; }; + CC4AE361317AD90AD38F5D9A51323F3E /* FIndexedNode.m in Sources */ = {isa = PBXBuildFile; fileRef = B944D1BBDEE7C0154D2ED6FA9B5B6FA0 /* FIndexedNode.m */; }; + CC7D3A7FBD428C720F22976F592317FF /* FIRVerifyClientRequest.m in Sources */ = {isa = PBXBuildFile; fileRef = F1C0555D01E4856884BC963BDC4FDE63 /* FIRVerifyClientRequest.m */; }; + CC856815F9B09C7F906AC8CEF25E2545 /* FIRAuthRequestConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = 6C9454906FABBA27AFC8FB43B50A7D4F /* FIRAuthRequestConfiguration.h */; settings = {ATTRIBUTES = (Project, ); }; }; + CCE3D2CC9070FE5E6BF71431AA9A264D /* FPath.m in Sources */ = {isa = PBXBuildFile; fileRef = 1E3881598FEC21DCB337FDB827BA761C /* FPath.m */; }; + CD18A9DEF461EAA31B34C38C59B2368E /* RLMArray_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = E2B1A0FE1A0A40012BB6C6090F54DF20 /* RLMArray_Private.h */; }; + CD418E8BC902E015DF126F9F3E297541 /* RLMObjectSchema_Private.h in Copy . Private Headers */ = {isa = PBXBuildFile; fileRef = 84F80DE6177F8732EACA7487982C406F /* RLMObjectSchema_Private.h */; }; + CD63DBC059FC4E0172ABFF4316619203 /* FIRInstanceIDStringEncoding.m in Sources */ = {isa = PBXBuildFile; fileRef = B52891204042E606DC4BE8E688623E18 /* FIRInstanceIDStringEncoding.m */; }; + CDD262C8EFF7DA7EFEB7EB4DF4E59DCF /* FQuerySpec.h in Headers */ = {isa = PBXBuildFile; fileRef = ED83681F312D41A6CC433BAA9D963A64 /* FQuerySpec.h */; settings = {ATTRIBUTES = (Project, ); }; }; + CE51F4B43C2441387BDD0867AC183A8D /* FIRAuthWebViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F107E251B75890B91C3B6A59192B2C5 /* FIRAuthWebViewController.h */; settings = {ATTRIBUTES = (Project, ); }; }; + CEC12C1254139E04F0B8F0D31A75DDCF /* FIRAuthSerialTaskQueue.h in Headers */ = {isa = PBXBuildFile; fileRef = AAB4894CF3318CE7EA1A70A22F3A4E36 /* FIRAuthSerialTaskQueue.h */; settings = {ATTRIBUTES = (Project, ); }; }; + CED228E0C263554B5432B93F148414E5 /* FIRAuthSettings.m in Sources */ = {isa = PBXBuildFile; fileRef = A27FE471CDCEA372109072F776C8D6BC /* FIRAuthSettings.m */; }; + CEDF61FCA5688A6D5F553C556793722A /* FIRAuthAPNSTokenManager.m in Sources */ = {isa = PBXBuildFile; fileRef = B061083E93348F25AD8454A90AF95B1D /* FIRAuthAPNSTokenManager.m */; }; + CEF0878B829009D8D767FB52C3B62092 /* FIRInstanceIDTokenFetchOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 07E73509AE309CAFB836CEF8CEED4FD4 /* FIRInstanceIDTokenFetchOperation.h */; settings = {ATTRIBUTES = (Project, ); }; }; + CEF57D007F29743EE1F3BD93DAD5F99C /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0781231D907887B1D7DF0E005F108FF7 /* Foundation.framework */; }; + CF1E0CE309B7142092B706601304B322 /* GULReachabilityMessageCode.h in Headers */ = {isa = PBXBuildFile; fileRef = 0279DEEE679C99CCA995259CC53378C9 /* GULReachabilityMessageCode.h */; settings = {ATTRIBUTES = (Private, ); }; }; + CF6A37F5F8B02364DE879D4FFF8307C0 /* collection_notifications.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CC0D3AE90E093743F50CEAD32163417C /* collection_notifications.cpp */; settings = {COMPILER_FLAGS = "-DREALM_HAVE_CONFIG -DREALM_COCOA_VERSION='@\"3.17.3\"' -D__ASSERTMACROS__ -DREALM_ENABLE_SYNC"; }; }; + CF8DA483F177D174313860DF05ADA69E /* FIRDatabaseConfig.m in Sources */ = {isa = PBXBuildFile; fileRef = 1064E9E80E2A22543B78E6EE17AA7478 /* FIRDatabaseConfig.m */; }; + CF9C9C5704BD9D2A07EF792D5FA3693D /* RLMRealmConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = 31D5065414E22C1D253011FB1102B863 /* RLMRealmConfiguration.h */; }; + CFF39B0F82ADF5C7F389CF0AB7D7261C /* hash.h in Headers */ = {isa = PBXBuildFile; fileRef = 1075AF4BEE8D8B5C3A3087BA42F4EB6E /* hash.h */; settings = {ATTRIBUTES = (Project, ); }; }; + D00E54D10331DB01EF2BDF047BA9C26A /* FValidation.h in Headers */ = {isa = PBXBuildFile; fileRef = BD968216050411DE3D6A2BE717F6D0B2 /* FValidation.h */; settings = {ATTRIBUTES = (Project, ); }; }; + D0146F689F9FC2BD204DB343B442359F /* FAtomicNumber.m in Sources */ = {isa = PBXBuildFile; fileRef = 4283D2DCDBD88BDD98B50A3DEE500BBE /* FAtomicNumber.m */; }; + D027D2833127B8143BE470C45724F1B4 /* FIRVerifyClientResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 0D9092922C18E590E576855651B47CA0 /* FIRVerifyClientResponse.m */; }; + D083B45DD323DCDFE86B4EC3075D7D3E /* FIRApp.h in Headers */ = {isa = PBXBuildFile; fileRef = B391FFC995CCE8659980D535986D718F /* FIRApp.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D0B08F366C81DCF1C209E33E7F89DEBB /* FValueIndex.h in Headers */ = {isa = PBXBuildFile; fileRef = CFF8B577F1B5ECB6BE9D220C44F576E6 /* FValueIndex.h */; settings = {ATTRIBUTES = (Project, ); }; }; + D146A8AF2802B47AC92BE72917E6ED0F /* RLMCollection.h in Headers */ = {isa = PBXBuildFile; fileRef = 8D334483E2E6F7EE9902BA1480CA2762 /* RLMCollection.h */; }; + D16866BA9FB9551AF91826217960204E /* system_configuration.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2A63A661A09F5AF8BE8D73E7C32CEDF0 /* system_configuration.cpp */; settings = {COMPILER_FLAGS = "-DREALM_HAVE_CONFIG -DREALM_COCOA_VERSION='@\"3.17.3\"' -D__ASSERTMACROS__ -DREALM_ENABLE_SYNC"; }; }; + D193F3E9C19700BF3B5F9C290E3BA0B8 /* FSyncPoint.m in Sources */ = {isa = PBXBuildFile; fileRef = D89A39093B5EF95B1053A0DCF6E9DE46 /* FSyncPoint.m */; }; + D1E16D8B852B793DC73D69F98267636C /* Migration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E53793F5F48711BD8994FEAB6191924 /* Migration.swift */; }; + D1FAD790A3BCB820BC7854BCC51F1B3C /* FCachePolicy.m in Sources */ = {isa = PBXBuildFile; fileRef = D2D9F18979363D2EB45A64C237440E90 /* FCachePolicy.m */; }; + D20666DFFA746D703BA00B3CAFE6F078 /* RLMMigration.h in Headers */ = {isa = PBXBuildFile; fileRef = 97295361277BD22FF7037B30D2DE444D /* RLMMigration.h */; }; + D2567A599F5FFD11CF247A1F9F16FE05 /* GTMDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = B9E3976BEC37FC3C11815E4513100CAE /* GTMDefines.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D2802DBA258901DE2C33BF3B3C512CAE /* FIRAuthAppCredential.h in Headers */ = {isa = PBXBuildFile; fileRef = BE714588580A60CEC8BCC24FFBBB1CC6 /* FIRAuthAppCredential.h */; settings = {ATTRIBUTES = (Project, ); }; }; + D297257D4B3594D384D116552D0A4153 /* FIRAuthDataResult.m in Sources */ = {isa = PBXBuildFile; fileRef = AE5C7B4D8E7E7E47FE5FEF69CC1B2B06 /* FIRAuthDataResult.m */; }; + D2B20EE2CB88BD922E88F7B0F71B6B4A /* FIRMutableData.m in Sources */ = {isa = PBXBuildFile; fileRef = 7664852FD86F309CAED256F1E02896CF /* FIRMutableData.m */; }; + D2DF19B23578727701453EC6FCD896B7 /* FIRAuthAppCredentialManager.h in Headers */ = {isa = PBXBuildFile; fileRef = E1C5490D15E8E9C6552EFDC1CE9EFA0E /* FIRAuthAppCredentialManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; + D2F2A19F112C2B2DCB6B0EB4322D6AC9 /* RLMListBase.h in Headers */ = {isa = PBXBuildFile; fileRef = 3E9412137487BB363BB73FF86053C103 /* RLMListBase.h */; }; + D366D8DCA0780F0D62ED0147C2E7B0D6 /* FView.m in Sources */ = {isa = PBXBuildFile; fileRef = 4E9BB07A8A7D7C6B7CA6E041C907215D /* FView.m */; }; + D3947236901D20F68EB83807955241E4 /* GULMutableDictionary.m in Sources */ = {isa = PBXBuildFile; fileRef = 507F20DC0B1348EA5661820C9E8517A1 /* GULMutableDictionary.m */; }; + D39B23415ECE63CFAE778DF163123D7B /* FEventGenerator.m in Sources */ = {isa = PBXBuildFile; fileRef = 9866F096503E2223E40044F891E7148D /* FEventGenerator.m */; }; + D3B824DD891E91C31934734B2A20D282 /* RLMSyncUser.h in Copy . Public Headers */ = {isa = PBXBuildFile; fileRef = 874ADBD29C538221F2E792A14B1AB80F /* RLMSyncUser.h */; }; + D3EC5569C60204A81B4C5BEA1884E7E1 /* pb_encode.h in Headers */ = {isa = PBXBuildFile; fileRef = 4B97D98041083CD171AFCE0FCC1D19B2 /* pb_encode.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D420B97BDDD62A79CE9AB9A741E1D40D /* RLMUpdateChecker.mm in Sources */ = {isa = PBXBuildFile; fileRef = DB337DA58FF30A7E798311741D8534CB /* RLMUpdateChecker.mm */; settings = {COMPILER_FLAGS = "-DREALM_HAVE_CONFIG -DREALM_COCOA_VERSION='@\"3.17.3\"' -D__ASSERTMACROS__ -DREALM_ENABLE_SYNC"; }; }; + D489407C66A3ABBF4D849ABD2CC3614B /* RLMArray_Private.h in Copy . Private Headers */ = {isa = PBXBuildFile; fileRef = E2B1A0FE1A0A40012BB6C6090F54DF20 /* RLMArray_Private.h */; }; + D55C1897DFF41C1CDC0324802AD05F58 /* FTreeSortedDictionary.h in Headers */ = {isa = PBXBuildFile; fileRef = 4F45D0FA0F04D4A08AC604AFD5D68EC4 /* FTreeSortedDictionary.h */; settings = {ATTRIBUTES = (Project, ); }; }; + D59131FAFFAA8F026C936E1D41EAE515 /* object.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6005768DCDE6041EE8ED9353CC5043D7 /* object.cpp */; settings = {COMPILER_FLAGS = "-DREALM_HAVE_CONFIG -DREALM_COCOA_VERSION='@\"3.17.3\"' -D__ASSERTMACROS__ -DREALM_ENABLE_SYNC"; }; }; + D62464611F03DD1225CA70636493E807 /* RLMObjectSchema.mm in Sources */ = {isa = PBXBuildFile; fileRef = 331DCDC6C84B7C2086F1F566F14552F6 /* RLMObjectSchema.mm */; settings = {COMPILER_FLAGS = "-DREALM_HAVE_CONFIG -DREALM_COCOA_VERSION='@\"3.17.3\"' -D__ASSERTMACROS__ -DREALM_ENABLE_SYNC"; }; }; + D69ACB4BDE19FAA9ECF0260FBD2BDF4D /* RLMSyncUtil.mm in Sources */ = {isa = PBXBuildFile; fileRef = 45B9E8F78EB3A653A4998443A4E0EA42 /* RLMSyncUtil.mm */; settings = {COMPILER_FLAGS = "-DREALM_HAVE_CONFIG -DREALM_COCOA_VERSION='@\"3.17.3\"' -D__ASSERTMACROS__ -DREALM_ENABLE_SYNC"; }; }; + D71AE323BB5E323CF858E1CA43266DC6 /* FirebaseAuthVersion.m in Sources */ = {isa = PBXBuildFile; fileRef = 2503917FB14F54ED00FED5021A19A127 /* FirebaseAuthVersion.m */; }; + D75277B65218992C63DE359207967B0E /* RLMObjectBase.mm in Sources */ = {isa = PBXBuildFile; fileRef = EB4308910109BD2D8A9769EF85E1C647 /* RLMObjectBase.mm */; settings = {COMPILER_FLAGS = "-DREALM_HAVE_CONFIG -DREALM_COCOA_VERSION='@\"3.17.3\"' -D__ASSERTMACROS__ -DREALM_ENABLE_SYNC"; }; }; + D75396CA2A46449BCFD227B43B41EE54 /* FIRAuthWebView.m in Sources */ = {isa = PBXBuildFile; fileRef = 7146A95BAD635A6859AA10444471F301 /* FIRAuthWebView.m */; }; + D78D6C2C5EDAE2BDDEE2DA6DA302B868 /* FIRAuthGlobalWorkQueue.h in Headers */ = {isa = PBXBuildFile; fileRef = B8E22EC0F5926794A07E3461D0B55C7E /* FIRAuthGlobalWorkQueue.h */; settings = {ATTRIBUTES = (Project, ); }; }; + D7A1A56AB8C824A7677DA9AB2D0680C5 /* FQueryParams.h in Headers */ = {isa = PBXBuildFile; fileRef = C30A1A0C141DDCE25A678FC7309D8FC2 /* FQueryParams.h */; settings = {ATTRIBUTES = (Project, ); }; }; + D7AA44B898BE51AB1B3887C0651BF524 /* RLMObjectBase_Dynamic.h in Copy . Public Headers */ = {isa = PBXBuildFile; fileRef = AB3CBC258054D04865CFC4D83D2F660A /* RLMObjectBase_Dynamic.h */; }; + D811254F213D5687ECE33498284AC0D7 /* FIRVerifyPasswordRequest.h in Headers */ = {isa = PBXBuildFile; fileRef = 4AE3964A18882BDF14E35D26690C023F /* FIRVerifyPasswordRequest.h */; settings = {ATTRIBUTES = (Project, ); }; }; + D8230BE242FCE98106919EA7D10ACFA7 /* FIRInstanceIDAPNSInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 7570FD92653A11DC6BDFBBF5C39611A0 /* FIRInstanceIDAPNSInfo.m */; }; + D8B1397CB69EBDE6E001B5C6357FCB59 /* FTransformedEnumerator.m in Sources */ = {isa = PBXBuildFile; fileRef = 00AD000A907DF26A376D4BD10CE0F617 /* FTransformedEnumerator.m */; }; + D8F755CD7DE6FA8DB2C1B8F9D6CEBB5D /* pb_encode.c in Sources */ = {isa = PBXBuildFile; fileRef = 117845BF0C4203B1C750E58B03D1BAC3 /* pb_encode.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc -fno-objc-arc"; }; }; + D96F993991D8A8E4CE1AC147AC3C32C0 /* FSnapshotHolder.h in Headers */ = {isa = PBXBuildFile; fileRef = B72D70C0268415C7597DC39BFD41C8F4 /* FSnapshotHolder.h */; settings = {ATTRIBUTES = (Project, ); }; }; + D9DB20048FECCE4DB768DFC8380F017F /* FStringUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = B2EF1BEB09B0FB783BF5B6C00786ECFA /* FStringUtilities.h */; settings = {ATTRIBUTES = (Project, ); }; }; + D9FB839E75F73F8C3178AB5CDEF5CC32 /* FIRInstanceIDDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = DF6BB5B6345AA720565F522DF2B3C8D8 /* FIRInstanceIDDefines.h */; settings = {ATTRIBUTES = (Project, ); }; }; + DA1745D7A7C37C4D67CEBB6F27386D70 /* FirebaseDatabase.h in Headers */ = {isa = PBXBuildFile; fileRef = 9A8422D16BEF38E158597614E14D2A71 /* FirebaseDatabase.h */; settings = {ATTRIBUTES = (Public, ); }; }; + DA3F5AA7BC91CF1C5A022EB6E521CDAE /* FIRInstanceID.h in Headers */ = {isa = PBXBuildFile; fileRef = ABE9741D4F81F872EDBA2E51BFAF8D1E /* FIRInstanceID.h */; settings = {ATTRIBUTES = (Public, ); }; }; + DA544A533A4C67BC18021518244D69DA /* FMaxNode.h in Headers */ = {isa = PBXBuildFile; fileRef = A6E6A7D4999278C896A79B9C5550F5DC /* FMaxNode.h */; settings = {ATTRIBUTES = (Project, ); }; }; + DA59570745838CA0347EC13453C298C3 /* comparator.cc in Sources */ = {isa = PBXBuildFile; fileRef = CE0E4205A9BA4BEC767014022FECAAB7 /* comparator.cc */; settings = {COMPILER_FLAGS = "-DOS_MACOSX -DLEVELDB_PLATFORM_POSIX -fno-objc-arc"; }; }; + DA5ABCCE55C9FEA2EA069D67C9779124 /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D984BE5444A65E2FEE90297457AF9AA3 /* Security.framework */; }; + DA93FE500853B7A66FEB655C8BCA763F /* FIRInstanceIDAuthService.m in Sources */ = {isa = PBXBuildFile; fileRef = FB3A4FA5B780EDD13FE6CF54CB1AB181 /* FIRInstanceIDAuthService.m */; }; + DAC5BBADCC953A2443F44514345DF8E0 /* RLMRealm+Sync.mm in Sources */ = {isa = PBXBuildFile; fileRef = A2EA08EB6D1ED8796A151FB3DD4CA7CC /* RLMRealm+Sync.mm */; settings = {COMPILER_FLAGS = "-DREALM_HAVE_CONFIG -DREALM_COCOA_VERSION='@\"3.17.3\"' -D__ASSERTMACROS__ -DREALM_ENABLE_SYNC"; }; }; + DB8B915BD562879FB86413359ED9F095 /* FChildrenNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 3FC03AE08D8CC0D4ADB047141E3E2A4C /* FChildrenNode.m */; }; + DBA908C1419648B0C6816A2ABF8B6A93 /* block.cc in Sources */ = {isa = PBXBuildFile; fileRef = 014FDE209ED1C0D0CD89A78B77428077 /* block.cc */; settings = {COMPILER_FLAGS = "-DOS_MACOSX -DLEVELDB_PLATFORM_POSIX -fno-objc-arc"; }; }; + DBAE7F9A205515148871D8EB10AEE262 /* RLMProperty.mm in Sources */ = {isa = PBXBuildFile; fileRef = B365636DDC3FF3D4AA0F09B59D0DD06F /* RLMProperty.mm */; settings = {COMPILER_FLAGS = "-DREALM_HAVE_CONFIG -DREALM_COCOA_VERSION='@\"3.17.3\"' -D__ASSERTMACROS__ -DREALM_ENABLE_SYNC"; }; }; + DBC16EA5008EAF07E1F0B81FD8236B1D /* FIRIdentityToolkitRequest.h in Headers */ = {isa = PBXBuildFile; fileRef = 2BC2CC7E0AAAD019C6DF01B2C24A92E5 /* FIRIdentityToolkitRequest.h */; settings = {ATTRIBUTES = (Project, ); }; }; + DBE0480B2FC284EC187011D3A32B4365 /* FTupleTransaction.h in Headers */ = {isa = PBXBuildFile; fileRef = 5105C45B6D562B34D4718F4AC8D0217D /* FTupleTransaction.h */; settings = {ATTRIBUTES = (Project, ); }; }; + DC9400384E7AD42511737AD505E55704 /* FIRResetPasswordRequest.m in Sources */ = {isa = PBXBuildFile; fileRef = 1C7788A344601E23B059C945E29BE4BE /* FIRResetPasswordRequest.m */; }; + DC9B31C5ABD76ADF2A222B7F1FA052FE /* FChildChangeAccumulator.m in Sources */ = {isa = PBXBuildFile; fileRef = 0F9B91AF6463F5F42306F5EF8F78C0E7 /* FChildChangeAccumulator.m */; }; + DD5D7C0167DF8AF8A9981BCCBB7CD59E /* FCancelEvent.m in Sources */ = {isa = PBXBuildFile; fileRef = 7D7FCB8C02F75A0F1F7C613C617E7098 /* FCancelEvent.m */; }; + DD61581019FDD7626A624303E28F2655 /* FIRVerifyAssertionRequest.m in Sources */ = {isa = PBXBuildFile; fileRef = 1BF22DCBA175A4378C2A97D6F8D36713 /* FIRVerifyAssertionRequest.m */; }; + DD9C358759ABD9AB33A5849055F1D217 /* FirebaseInstanceID.h in Headers */ = {isa = PBXBuildFile; fileRef = C0D4E22F2EC21B8D37CBD38E88E9C0C7 /* FirebaseInstanceID.h */; settings = {ATTRIBUTES = (Public, ); }; }; + DDB4485CE5FEFCA09CA9ADA6D4BF1AC0 /* RLMRealmConfiguration.h in Copy . Public Headers */ = {isa = PBXBuildFile; fileRef = 31D5065414E22C1D253011FB1102B863 /* RLMRealmConfiguration.h */; }; + DE0888B25AAC31DF32E539AD13986549 /* FIndex.m in Sources */ = {isa = PBXBuildFile; fileRef = D208A3B3BE1AF43F037885F9ABBA7CB5 /* FIndex.m */; }; + DE8200FB27D2BFB9E9AAA94AE61637C0 /* FIRGetOOBConfirmationCodeRequest.m in Sources */ = {isa = PBXBuildFile; fileRef = A351360A70B2429BF18A09C253255DCB /* FIRGetOOBConfirmationCodeRequest.m */; }; + DE9EEA6368F3902D03F54520DFB78432 /* FLLRBValueNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 34F49BD5DE455C81859F8CE999F87D89 /* FLLRBValueNode.h */; settings = {ATTRIBUTES = (Project, ); }; }; + DEDB8F45074974D92BF728E83ACC4A5D /* object_schema.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3CCBEF4E5A31ADF0304F144058BC1082 /* object_schema.cpp */; settings = {COMPILER_FLAGS = "-DREALM_HAVE_CONFIG -DREALM_COCOA_VERSION='@\"3.17.3\"' -D__ASSERTMACROS__ -DREALM_ENABLE_SYNC"; }; }; + DFB215BB22778A5F073DFA84A088AF86 /* FIRTransactionResult.m in Sources */ = {isa = PBXBuildFile; fileRef = B9E939DF716A920BB85C9FBB5CC73C86 /* FIRTransactionResult.m */; }; + DFBC13C73756C9DA695586143A30CED6 /* FIREmailLinkSignInResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 490392EDD7627268C9FAB7A24624D6D8 /* FIREmailLinkSignInResponse.h */; settings = {ATTRIBUTES = (Project, ); }; }; + E045C0358306099E36179D39145196E2 /* FIRAuthDispatcher.h in Headers */ = {isa = PBXBuildFile; fileRef = 13E0199B05E9B7DB1E665CBECF17E0A3 /* FIRAuthDispatcher.h */; settings = {ATTRIBUTES = (Project, ); }; }; + E052DF42BAFC355DA6797E57B20FB8A9 /* FTupleFirebase.m in Sources */ = {isa = PBXBuildFile; fileRef = 4AF9771F0D34D60A3872BC9C17851737 /* FTupleFirebase.m */; }; + E08810D7510D9E6E7CBCC1DF6FAD4898 /* FTree.h in Headers */ = {isa = PBXBuildFile; fileRef = C7F4C51DFC05F9636C4AD64348512F68 /* FTree.h */; settings = {ATTRIBUTES = (Project, ); }; }; + E0D9D3432D498AAAC1C30074DAE38C33 /* version_set.h in Headers */ = {isa = PBXBuildFile; fileRef = FDF10A25E18204238B7625A98D7A547C /* version_set.h */; settings = {ATTRIBUTES = (Project, ); }; }; + E108FE6471EB92E54A5F6F0388B4FFCB /* FLimitedFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 32D64A674E07A597261E5B4E5306A40E /* FLimitedFilter.h */; settings = {ATTRIBUTES = (Project, ); }; }; + E12E6063C3FE0D1C2A47D1449F3D91C8 /* RLMSyncConfiguration.mm in Sources */ = {isa = PBXBuildFile; fileRef = 38529296CA8DE7D231F53145F4FF91D0 /* RLMSyncConfiguration.mm */; settings = {COMPILER_FLAGS = "-DREALM_HAVE_CONFIG -DREALM_COCOA_VERSION='@\"3.17.3\"' -D__ASSERTMACROS__ -DREALM_ENABLE_SYNC"; }; }; + E18CE5C222B283309ED23C54A6625FFF /* testutil.h in Headers */ = {isa = PBXBuildFile; fileRef = 6E05AF6DC02F67299B43073D3082957B /* testutil.h */; settings = {ATTRIBUTES = (Project, ); }; }; + E1E2D6960BD6A1128103A2C6341461DB /* mutexlock.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F6DE6AD1028A4D2AE028461BDB16770 /* mutexlock.h */; settings = {ATTRIBUTES = (Project, ); }; }; + E211B8D56446812ACEE98B9DEB7144C2 /* FIRSetAccountInfoResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 628EED77FDF2A3178C9CDCA9EA834116 /* FIRSetAccountInfoResponse.h */; settings = {ATTRIBUTES = (Project, ); }; }; + E22BB3552C77566B1B6955CE66218BCD /* Results.swift in Sources */ = {isa = PBXBuildFile; fileRef = 016A4868CD91D80652B44F83CBBD553A /* Results.swift */; }; + E27F741359A9BE377AF38A72051A69EE /* FNode.h in Headers */ = {isa = PBXBuildFile; fileRef = F592AA371EB377F2067291A8CACCEF0A /* FNode.h */; settings = {ATTRIBUTES = (Project, ); }; }; + E329602EF1FB0CC5591A1C4B8039B28C /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0781231D907887B1D7DF0E005F108FF7 /* Foundation.framework */; }; + E348E86A4734561F032D2F12065E6561 /* FCacheNode.m in Sources */ = {isa = PBXBuildFile; fileRef = FE030394944805A769BBC241C480477D /* FCacheNode.m */; }; + E3A77BCB5FDCC6EF2B274703D8DF170A /* FImmutableSortedSet.m in Sources */ = {isa = PBXBuildFile; fileRef = 565635761C859EA8EFCA5D1EF4AEF687 /* FImmutableSortedSet.m */; }; + E4131491A6234D5B64EBD5E568D5F3C0 /* FIROAuthCredential.h in Headers */ = {isa = PBXBuildFile; fileRef = 8ECDABF9AB0CA8F83D4590424B20E0D7 /* FIROAuthCredential.h */; settings = {ATTRIBUTES = (Public, ); }; }; + E42EF15D08F24B1584BC6D493849D131 /* FIRLibrary.h in Headers */ = {isa = PBXBuildFile; fileRef = 90639A07E4D80F26976C27617ED816E9 /* FIRLibrary.h */; settings = {ATTRIBUTES = (Private, ); }; }; + E4A199E29267F3BD667CEAB36CD5B52E /* FTransformedEnumerator.h in Headers */ = {isa = PBXBuildFile; fileRef = C19AAE6832A5803EE9C4245436FCFD49 /* FTransformedEnumerator.h */; settings = {ATTRIBUTES = (Project, ); }; }; + E4DC9012759C5EB6245DB1E16AC90E15 /* FIRInstanceIDKeyPairUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = A3722686712CCFF7E10C8A5413C149D6 /* FIRInstanceIDKeyPairUtilities.h */; settings = {ATTRIBUTES = (Project, ); }; }; + E5603B9182DE94600980C0427D9BB878 /* GTMSessionFetcher-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 5A891F7EBE4968C13DFF186CA8B491CD /* GTMSessionFetcher-dummy.m */; }; + E57C9C16F526A6D0EF9254F19D3710F3 /* FChange.h in Headers */ = {isa = PBXBuildFile; fileRef = 403A530960A073F147E1456CAF0B48C2 /* FChange.h */; settings = {ATTRIBUTES = (Project, ); }; }; + E595041742D752F397D4945658175FA7 /* FIRComponent.h in Headers */ = {isa = PBXBuildFile; fileRef = 709BD6E16BBBCE1CFADE35865972A461 /* FIRComponent.h */; settings = {ATTRIBUTES = (Private, ); }; }; + E5A9644B04360775757BD4EB8DC1BF9A /* cache.cc in Sources */ = {isa = PBXBuildFile; fileRef = 600732E712026647139565CAE4E5BA6A /* cache.cc */; settings = {COMPILER_FLAGS = "-DOS_MACOSX -DLEVELDB_PLATFORM_POSIX -fno-objc-arc"; }; }; + E5DFBA84F2AB3694BA34795814D662FF /* pb_common.h in Headers */ = {isa = PBXBuildFile; fileRef = B9E600C3F2886823112F339CB91B92F5 /* pb_common.h */; settings = {ATTRIBUTES = (Public, ); }; }; + E63A511A46D236C3311A6B6EC94792EC /* FIRGetProjectConfigRequest.m in Sources */ = {isa = PBXBuildFile; fileRef = B3BBD37B5E9B1529005D5D42DD140EE4 /* FIRGetProjectConfigRequest.m */; }; + E68E12409D8D153E23B40B4D249A9CA6 /* FIRGetProjectConfigResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 0EEF51ED1F7DDDCC6F039921EE80ABA0 /* FIRGetProjectConfigResponse.m */; }; + E6A59169AB160B828757961CC391334C /* List.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2E5C1C8353925A910534C6793C1F018A /* List.swift */; }; + E6B0ABE603607D12BE26ABCE1C6D1159 /* comparator.h in Headers */ = {isa = PBXBuildFile; fileRef = 1E128AF0D7AAA1FBE6524F842CCFA8E2 /* comparator.h */; settings = {ATTRIBUTES = (Public, ); }; }; + E6EFD1891BCC15D104CE68A99FB3740E /* FWriteTreeRef.h in Headers */ = {isa = PBXBuildFile; fileRef = 0958206339652DA5E7606732FEC1F80F /* FWriteTreeRef.h */; settings = {ATTRIBUTES = (Project, ); }; }; + E6FDB41E1123D3ABD67698050155B8D9 /* GULNetworkURLSession.h in Headers */ = {isa = PBXBuildFile; fileRef = 3DFEAE7BC34411662E283597E9C0A476 /* GULNetworkURLSession.h */; settings = {ATTRIBUTES = (Private, ); }; }; + E7008BC268DB2BBE3E8ED89C7D4445E6 /* FIRLoggerLevel.h in Headers */ = {isa = PBXBuildFile; fileRef = 517B287F59CA9BC282D4BC820092A3F0 /* FIRLoggerLevel.h */; settings = {ATTRIBUTES = (Public, ); }; }; + E728F18A12B99B79B14095FA82130B25 /* FIRSecureTokenService.m in Sources */ = {isa = PBXBuildFile; fileRef = 39D7D8A8552A0CF9834F3135FA02393C /* FIRSecureTokenService.m */; }; + E739923B494058A7EE8F19916B23D2D6 /* GULLoggerLevel.h in Headers */ = {isa = PBXBuildFile; fileRef = A5353C6A726445286BF6EA59D033A114 /* GULLoggerLevel.h */; settings = {ATTRIBUTES = (Public, ); }; }; + E76B9D2224A37DCA669D04372476C69C /* FIRUser.h in Headers */ = {isa = PBXBuildFile; fileRef = F931337BE5651F984D5264DDE741E1B0 /* FIRUser.h */; settings = {ATTRIBUTES = (Public, ); }; }; + E7A2EEFD2EF96EB1058107FE5E495FD7 /* FNextPushId.m in Sources */ = {isa = PBXBuildFile; fileRef = 82D8B01FD180CFE6C72AB20576E2D280 /* FNextPushId.m */; }; + E7F3794D3D1C35D037D3EC8E85D6E40E /* FIRUserInfoImpl.h in Headers */ = {isa = PBXBuildFile; fileRef = 27711488C990A49FF4BC68D445A6DDB0 /* FIRUserInfoImpl.h */; settings = {ATTRIBUTES = (Project, ); }; }; + E880CEE7050BF5F4775322F704DDD80B /* FMerge.m in Sources */ = {isa = PBXBuildFile; fileRef = C89845ED0A05646E8825A6D5E691B585 /* FMerge.m */; }; + E8A908158399DED64F1398D1A44DBCD3 /* FTupleCallbackStatus.m in Sources */ = {isa = PBXBuildFile; fileRef = DD79DA46E12615E54FD0186D434F55A3 /* FTupleCallbackStatus.m */; }; + E9802791C9864B697B46644B5EB37938 /* RLMRealm.h in Headers */ = {isa = PBXBuildFile; fileRef = 6BE15A4C4C687EC37FFF4A13D7876726 /* RLMRealm.h */; }; + E99E65E789D7F1A377603A000E92AB05 /* FEventEmitter.h in Headers */ = {isa = PBXBuildFile; fileRef = BB9309C3262E7E77128C494AD45863B5 /* FEventEmitter.h */; settings = {ATTRIBUTES = (Project, ); }; }; + E9A0660B057A3B88B0991B85C4B8F248 /* YMTGetDeviceName-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = B93C92919F658F6F30669E9504A3A6A8 /* YMTGetDeviceName-dummy.m */; }; + E9DF3C99A0599606295B2579363CAA5C /* FIRInstanceIDCombinedHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = F39A0FF1A4DE5B6303CFDCB25A7A5E78 /* FIRInstanceIDCombinedHandler.m */; }; + E9FBD758FF3C5FC8A6AA0A8994E93CE4 /* FIRGetOOBConfirmationCodeResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 90533111C976BBF06981B4890E7646AA /* FIRGetOOBConfirmationCodeResponse.h */; settings = {ATTRIBUTES = (Project, ); }; }; + EA53B96912F6221E393262BC8CD4B74B /* FIRAuthKeychain.h in Headers */ = {isa = PBXBuildFile; fileRef = 22387CD5355F8179248244662B1E6EAD /* FIRAuthKeychain.h */; settings = {ATTRIBUTES = (Project, ); }; }; + EA9CE22B41194B7A6BF5748FBFED7AB0 /* FTupleSetIdPath.m in Sources */ = {isa = PBXBuildFile; fileRef = F3164F2DB01949911CF7A5D08378163B /* FTupleSetIdPath.m */; }; + EAEA709493D3A85A4951BA1099C72D38 /* RLMProperty_Private.h in Copy . Private Headers */ = {isa = PBXBuildFile; fileRef = 403DDE32930258D77204697883A2E4AD /* RLMProperty_Private.h */; }; + EB18F5FA13EBFFF16C3313CFC88620A6 /* FIRInstanceIDBackupExcludedPlist.m in Sources */ = {isa = PBXBuildFile; fileRef = F504EB1CAAB3232360A88B314C1C2D1B /* FIRInstanceIDBackupExcludedPlist.m */; }; + EB50276C26827575CCF13D5C52103CC2 /* RLMSyncSubscription.h in Copy . Public Headers */ = {isa = PBXBuildFile; fileRef = ADBCA8B417E07F18DAF8456392903D6E /* RLMSyncSubscription.h */; }; + EB714F7C252FCD47D2AFD7938755915F /* RLMRealmConfiguration_Private.h in Copy . Private Headers */ = {isa = PBXBuildFile; fileRef = 3CA7730B596A939B000074A39900B638 /* RLMRealmConfiguration_Private.h */; }; + EBF25DF1F60AE200F0BD4B4D00AD6324 /* GULNSData+zlib.h in Headers */ = {isa = PBXBuildFile; fileRef = AE5C6FA3B3C8472B28E77B79EE0245F2 /* GULNSData+zlib.h */; settings = {ATTRIBUTES = (Public, ); }; }; + EC0431D505FDBB4DD8E21BB5BB755852 /* FIRAuth.h in Headers */ = {isa = PBXBuildFile; fileRef = 9019A686D2810C3BF4601AE0513C82AF /* FIRAuth.h */; settings = {ATTRIBUTES = (Public, ); }; }; + EC3C0CA8D000BC51345B9477A5D4B373 /* RLMSyncCredentials.h in Headers */ = {isa = PBXBuildFile; fileRef = 319C651F668A24B16876B0232DED9873 /* RLMSyncCredentials.h */; }; + ECAC78C75F16C57D1F0A66E38E4FDD7A /* RLMOptionalBase.h in Copy . Public Headers */ = {isa = PBXBuildFile; fileRef = E55A55CE8C7BE5281B75CF2D9A69ABEF /* RLMOptionalBase.h */; }; + ECECBE14970FAE23225C7BCE2FEBAD80 /* FIRAuthUserDefaultsStorage.m in Sources */ = {isa = PBXBuildFile; fileRef = C46BD3E9A3B45911099C3E9E86AE1FCF /* FIRAuthUserDefaultsStorage.m */; }; + ECEE48AB9C9CFB409727FF973EE3912C /* write_batch_internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 9485AFB8607075CD0DFBF32E62AA4447 /* write_batch_internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; + EDD63914EEB71105D7841AE4B92A84FE /* FNextPushId.h in Headers */ = {isa = PBXBuildFile; fileRef = A5A38A92F1DDA5DD9ADEAB425E0E62E7 /* FNextPushId.h */; settings = {ATTRIBUTES = (Project, ); }; }; + EDF39A2A85DEB50F7664C2EA49633C1E /* FIRVerifyCustomTokenRequest.h in Headers */ = {isa = PBXBuildFile; fileRef = A8B5308D9192D7E880BD61D63B04D6B2 /* FIRVerifyCustomTokenRequest.h */; settings = {ATTRIBUTES = (Project, ); }; }; + EE15E7F1ECF50073C4911E2743797F62 /* arena.cc in Sources */ = {isa = PBXBuildFile; fileRef = 5019C60E64C28FC2CEDA68240C1C26B2 /* arena.cc */; settings = {COMPILER_FLAGS = "-DOS_MACOSX -DLEVELDB_PLATFORM_POSIX -fno-objc-arc"; }; }; EE2A5AE21E43B6A17BFFFE1695AF66FE /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0781231D907887B1D7DF0E005F108FF7 /* Foundation.framework */; }; - EE676F7DB6F01DF5BB726B0B49B09D60 /* FRangedFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 703BDDC405CE8E05A570E64170F2A56A /* FRangedFilter.h */; settings = {ATTRIBUTES = (Project, ); }; }; - EE8E715C9FD89E5E34DFCAAB9333FADE /* db_iter.cc in Sources */ = {isa = PBXBuildFile; fileRef = DD852FBFAA153D71C49AB7E01ED80080 /* db_iter.cc */; settings = {COMPILER_FLAGS = "-DOS_MACOSX -DLEVELDB_PLATFORM_POSIX -fno-objc-arc"; }; }; - EEDD9E5AA45D35E48DF937D885EE8E02 /* FIRInstanceIDVersionUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 8CB16866F8C55245754CAFE7D3BD5D28 /* FIRInstanceIDVersionUtilities.m */; }; - F03BE110472759383D8F19271CB781A8 /* FIRInstanceIDCheckinService.m in Sources */ = {isa = PBXBuildFile; fileRef = 447D1DEC11F18E90AA91D4FD16321C09 /* FIRInstanceIDCheckinService.m */; }; - F099CB27DAFA4893909B6955263235EA /* FWriteTreeRef.h in Headers */ = {isa = PBXBuildFile; fileRef = 7EA7A0350C9FACBB5B71CF716B8E2346 /* FWriteTreeRef.h */; settings = {ATTRIBUTES = (Project, ); }; }; - F12A5A54316DAF397427C67EB38F14CA /* version_edit.h in Headers */ = {isa = PBXBuildFile; fileRef = BC5ADE6AB94E6894CAA69DC8B747B03F /* version_edit.h */; settings = {ATTRIBUTES = (Project, ); }; }; - F14E4F88AC46BE87F1AA30D7DAACD352 /* FEmptyNode.m in Sources */ = {isa = PBXBuildFile; fileRef = CD3842C28774AD982DDC19ECA9D61C9A /* FEmptyNode.m */; }; - F171CCA20D1D69E03EB49FFBD519238C /* FTupleCallbackStatus.h in Headers */ = {isa = PBXBuildFile; fileRef = B91216E0F43DEC04683E6647D3A9D1AD /* FTupleCallbackStatus.h */; settings = {ATTRIBUTES = (Project, ); }; }; - F18FA6BF259ABD06BC9CE73052B07135 /* FIRDependency.h in Headers */ = {isa = PBXBuildFile; fileRef = 04F2ACC0FFE91B4D815B5C9306BF00F3 /* FIRDependency.h */; settings = {ATTRIBUTES = (Private, ); }; }; - F195966D55C322389496205A7E7C10ED /* FWriteTree.m in Sources */ = {isa = PBXBuildFile; fileRef = 1E2EA10FB892843677B9663F11006F50 /* FWriteTree.m */; }; - F1CF64AB22A45DD7A4ACCF5B6D5CFAA5 /* FChange.h in Headers */ = {isa = PBXBuildFile; fileRef = BBF7A9D4E3FEB858B5EF75CC7283B681 /* FChange.h */; settings = {ATTRIBUTES = (Project, ); }; }; - F1D455C68A9B476EFF47977B6ECC54ED /* FIRRetryHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = 633916BB48ADABF057C4F0C5972F98D9 /* FIRRetryHelper.m */; }; - F1E84D374A65EB14176C2A48EACCFD2B /* FIRVersion.m in Sources */ = {isa = PBXBuildFile; fileRef = 0A0D58189220B7D97AD3CE614BF62214 /* FIRVersion.m */; }; - F261DF6379AD624C530E8AFE2326CDE9 /* FTupleUserCallback.m in Sources */ = {isa = PBXBuildFile; fileRef = A4F8C8B36C6A1D82C59F84E4E6CEA54B /* FTupleUserCallback.m */; }; - F28BFCB7597D463ECD8CF3DF3B596211 /* Aliases.swift in Sources */ = {isa = PBXBuildFile; fileRef = 99818133B2260B106022702610DC650B /* Aliases.swift */; }; - F293F1D6F35DD8DB3E57F09BC8BB622D /* db.h in Headers */ = {isa = PBXBuildFile; fileRef = E20962DFCAA5C9EBF3999E8BCC87C2A1 /* db.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F2C4F7A26FF4E8840BF0AA8245C3AB5B /* RLMSchema.h in Headers */ = {isa = PBXBuildFile; fileRef = 829624137DE06741D18AC3911DD3D243 /* RLMSchema.h */; }; - F2FE0C3C57205C18F4A06AC4291717B3 /* FWebSocketConnection.m in Sources */ = {isa = PBXBuildFile; fileRef = BACEA4BDD54B2F58FD9318FB2730A299 /* FWebSocketConnection.m */; }; - F3066D74CCBE2FE58A90B9C55BBF661D /* results_notifier.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A64BBA1C856A4201DAC3BD0D8E098766 /* results_notifier.cpp */; settings = {COMPILER_FLAGS = "-DREALM_HAVE_CONFIG -DREALM_COCOA_VERSION='@\"3.17.3\"' -D__ASSERTMACROS__ -DREALM_ENABLE_SYNC"; }; }; - F3DCE7D6267E7F7FB5BB9015D573028F /* format.h in Headers */ = {isa = PBXBuildFile; fileRef = DBD07B180498B306219B7D869995A4C2 /* format.h */; settings = {ATTRIBUTES = (Project, ); }; }; - F4538215AAE85F81F5525332054DE40F /* collection_notifier.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 09FAA8AF1C493696D8FA336D38481000 /* collection_notifier.cpp */; settings = {COMPILER_FLAGS = "-DREALM_HAVE_CONFIG -DREALM_COCOA_VERSION='@\"3.17.3\"' -D__ASSERTMACROS__ -DREALM_ENABLE_SYNC"; }; }; - F5FE5370B71264E30D35AA342DB4168F /* hash.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AAE1D6E20CDBD3EF2F63E2AEE3900E5 /* hash.h */; settings = {ATTRIBUTES = (Project, ); }; }; - F687F73F2E8BFB0C066A8785149DAA83 /* db_iter.h in Headers */ = {isa = PBXBuildFile; fileRef = C65A5F060F02C74467206A13DE391472 /* db_iter.h */; settings = {ATTRIBUTES = (Project, ); }; }; - F6A01C3A41FCEC04E2830781FCDA7CE5 /* pb.h in Headers */ = {isa = PBXBuildFile; fileRef = 64941E8E9CE8E593AB0A0178E4FBED95 /* pb.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F6A82FE7D50B0D1B89714BE51CA9C0DF /* FTupleNodePath.m in Sources */ = {isa = PBXBuildFile; fileRef = 321E2CE1863C397239F21A2B7EB2C568 /* FTupleNodePath.m */; }; - F72A753895DC7353D659E172420F7205 /* FIRInstanceIDKeyPair.m in Sources */ = {isa = PBXBuildFile; fileRef = F8D87E0DB549635A81DB403FAF68092D /* FIRInstanceIDKeyPair.m */; }; - F7ACC754DFC9397FF95728CD9083EB53 /* pb_common.c in Sources */ = {isa = PBXBuildFile; fileRef = 817703DBA5262B8C8282DE0329E58909 /* pb_common.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc -fno-objc-arc -fno-objc-arc"; }; }; - F80892584B889EA9F730214F7844C8B8 /* version_set.cc in Sources */ = {isa = PBXBuildFile; fileRef = BEE691FE721F6DD9499B60A929D1621F /* version_set.cc */; settings = {COMPILER_FLAGS = "-DOS_MACOSX -DLEVELDB_PLATFORM_POSIX -fno-objc-arc"; }; }; - F80983ED645A93E7F52CDFF786E00C15 /* RLMRealm.h in Copy . Public Headers */ = {isa = PBXBuildFile; fileRef = 2D455ECD9391388C7F23E7AEAB1DD490 /* RLMRealm.h */; }; - F832D25CC26A8B7AC45254FBC86FAF06 /* sync_permission.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C6E4FC7BC71C3C6A219BD88D744C1222 /* sync_permission.cpp */; settings = {COMPILER_FLAGS = "-DREALM_HAVE_CONFIG -DREALM_COCOA_VERSION='@\"3.17.3\"' -D__ASSERTMACROS__ -DREALM_ENABLE_SYNC"; }; }; - F8BBE377AD917DA24FD71FA68FB29D40 /* table.cc in Sources */ = {isa = PBXBuildFile; fileRef = 30B48C9E3842725C6D720A64A8F821B0 /* table.cc */; settings = {COMPILER_FLAGS = "-DOS_MACOSX -DLEVELDB_PLATFORM_POSIX -fno-objc-arc"; }; }; - F8D119F6517C4E26B31F7A1495FEB819 /* FIRInstanceIDTokenInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = D69F64663123F2C1E88BEEFC7FDDC191 /* FIRInstanceIDTokenInfo.m */; }; - F95A1B7FAA6EDCFA7E6B59C759A2D137 /* GULReachabilityChecker+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 663A7E45C8155B43597C41DEB7E64B66 /* GULReachabilityChecker+Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; - F98C97511DD459DEF30AF96480396AFE /* RLMObjectSchema.h in Copy . Public Headers */ = {isa = PBXBuildFile; fileRef = 0A7BA7EC41A68FED52F0B766B16850E1 /* RLMObjectSchema.h */; }; - F9A0DB786B5CC5A3E4911979C6E9008C /* GoogleUtilities-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = B8F566106A1C9CE3691B012FE4CB0BAA /* GoogleUtilities-dummy.m */; }; - FAFF611A6BD4D2AA7423C987034C0479 /* list_notifier.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A890328063DB325604218EF882464D19 /* list_notifier.cpp */; settings = {COMPILER_FLAGS = "-DREALM_HAVE_CONFIG -DREALM_COCOA_VERSION='@\"3.17.3\"' -D__ASSERTMACROS__ -DREALM_ENABLE_SYNC"; }; }; - FB124A406FBBB9AB7CFDFBDB6286B214 /* transact_log_handler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D8F7D27B502CA8DE6BEEDB762534E0B7 /* transact_log_handler.cpp */; settings = {COMPILER_FLAGS = "-DREALM_HAVE_CONFIG -DREALM_COCOA_VERSION='@\"3.17.3\"' -D__ASSERTMACROS__ -DREALM_ENABLE_SYNC"; }; }; - FB16D14072713E368969885E4ECD099B /* Optional.swift in Sources */ = {isa = PBXBuildFile; fileRef = 699E2B56BD28AB68FD1F5DF3E6D398CC /* Optional.swift */; }; - FB39F2E1BD5DF5585E3CED648A1A7022 /* FMaxNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 8781C7A06915CE846BEB2C09ABD379BC /* FMaxNode.m */; }; - FB9027ED863A5501202AC98E0A6970F8 /* sync_config.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FCF1A8D5CDC0A4815258D87A2F627603 /* sync_config.cpp */; settings = {COMPILER_FLAGS = "-DREALM_HAVE_CONFIG -DREALM_COCOA_VERSION='@\"3.17.3\"' -D__ASSERTMACROS__ -DREALM_ENABLE_SYNC"; }; }; - FB9B3D3DE0CD88C5CD89C9F84768F363 /* memtable.h in Headers */ = {isa = PBXBuildFile; fileRef = 32FCEDC31CAE44403C5489CD6E2F60D1 /* memtable.h */; settings = {ATTRIBUTES = (Project, ); }; }; - FBDDD54632922897706042348C5264B0 /* FChildEventRegistration.h in Headers */ = {isa = PBXBuildFile; fileRef = C9C261C6290F3318DB344013380C67C4 /* FChildEventRegistration.h */; settings = {ATTRIBUTES = (Project, ); }; }; - FBF07D649518FB33E6E57ED937D4138A /* FSnapshotUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 51C6DC0CE6EE32DBB86B38A970EA004A /* FSnapshotUtilities.h */; settings = {ATTRIBUTES = (Project, ); }; }; - FBF2283A35D79FFB19AC722665E30110 /* GULUserDefaults.m in Sources */ = {isa = PBXBuildFile; fileRef = 413F455B2175522766286EA7FB80499B /* GULUserDefaults.m */; }; - FC59BACAD99E5424954E9281DCDEB028 /* FOperationSource.h in Headers */ = {isa = PBXBuildFile; fileRef = 5A0D4812D5C0597A33010AEE9AFB843C /* FOperationSource.h */; settings = {ATTRIBUTES = (Project, ); }; }; - FC64278EBB2D553FA002035E06834E7C /* FIRDatabaseConfig.h in Headers */ = {isa = PBXBuildFile; fileRef = AC9A8AC932E8EF20B24FCA58FD918620 /* FIRDatabaseConfig.h */; settings = {ATTRIBUTES = (Project, ); }; }; - FCAD17281B08C0CAEF51C89DFF306766 /* FRepoManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 403F1CA65D2DF40D5C0E923CA946D00B /* FRepoManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; - FCD599E18081F351B22D17759A0DB497 /* RLMArray.h in Headers */ = {isa = PBXBuildFile; fileRef = 07494D9319896DC230E1E6E753B2057D /* RLMArray.h */; }; - FD0E361D9C432483D23BD8FE51271A1F /* FNamedNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 8D90B040C854267F52EE784EEBD6FFC9 /* FNamedNode.m */; }; - FD425D2C49E019FE8764418940C834B8 /* partial_sync.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 99A55B1A156801B69DCDC5188017CDE1 /* partial_sync.cpp */; settings = {COMPILER_FLAGS = "-DREALM_HAVE_CONFIG -DREALM_COCOA_VERSION='@\"3.17.3\"' -D__ASSERTMACROS__ -DREALM_ENABLE_SYNC"; }; }; - FD9ACE888DA2168238688C213668BB05 /* FQuerySpec.m in Sources */ = {isa = PBXBuildFile; fileRef = E1D3336AC1A1B76DCDCD4189EE26EFAD /* FQuerySpec.m */; }; - FDC598EB46E19A47977036B313D4B26F /* atomic_pointer.h in Headers */ = {isa = PBXBuildFile; fileRef = 1150FC8A702B2DAF5A47FAD0560B2ED2 /* atomic_pointer.h */; settings = {ATTRIBUTES = (Project, ); }; }; - FE4EE5F973D989675C8516C00A21EBB4 /* RLMRealm+Sync.h in Headers */ = {isa = PBXBuildFile; fileRef = 95AB6CD34FBFFF81FD20C63CB991FB3C /* RLMRealm+Sync.h */; }; - FE5CF5831EA3AD3AC3C8FC20A4E7274E /* FIRVersion.h in Headers */ = {isa = PBXBuildFile; fileRef = 04A156BB913EBCD3776EEBBA24B1DB95 /* FIRVersion.h */; settings = {ATTRIBUTES = (Private, ); }; }; - FECEF5ADD8A45941A91DCCE5BD0E5087 /* FRangeMerge.m in Sources */ = {isa = PBXBuildFile; fileRef = E874A3930833716E7E68D7862DEF7520 /* FRangeMerge.m */; }; - FF0129B4B2CC30780B422D399C2D351B /* FIRDatabaseConfig.m in Sources */ = {isa = PBXBuildFile; fileRef = E7BEBCDA90FC526CBF5088FC91938C86 /* FIRDatabaseConfig.m */; }; - FF1E2C778180D17F1A62023591E115E2 /* Pods-shlack-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = EFA0B1C2A18100743525B591A76BF5DA /* Pods-shlack-dummy.m */; }; - FF24A1DE021E855934FCADF303589243 /* RLMResults.mm in Sources */ = {isa = PBXBuildFile; fileRef = 2EE8E8646712F6465542DB43696599EA /* RLMResults.mm */; settings = {COMPILER_FLAGS = "-DREALM_HAVE_CONFIG -DREALM_COCOA_VERSION='@\"3.17.3\"' -D__ASSERTMACROS__ -DREALM_ENABLE_SYNC"; }; }; - FF2B2C133B5DD5F5AB0A75483F35B5EE /* FIRDatabaseReference.m in Sources */ = {isa = PBXBuildFile; fileRef = 3EC378DBAAD14FED18E85BAC4DDC1B9C /* FIRDatabaseReference.m */; }; - FF58C373A15E0637DABE23B7C4D16494 /* RLMRealmConfiguration+Sync.h in Headers */ = {isa = PBXBuildFile; fileRef = 595D941028421AE2555618A08AEE4B69 /* RLMRealmConfiguration+Sync.h */; }; - FFBED2829CD2605EA0DFDD20ED451E5D /* RLMSyncSubscription.h in Headers */ = {isa = PBXBuildFile; fileRef = 0B99E3092D6E6ED88EA4D75706BE1FCE /* RLMSyncSubscription.h */; }; + EE2DB9922E996AF36414118C7F6B4C27 /* FPersistenceManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 36216EDB4A6471893874ECC4B0DC140B /* FPersistenceManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; + EE9E0B6D3AEEAE23487041FA6C4E64E5 /* FRepo.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F48277CAF1C0BBDC388795C1119FE00 /* FRepo.h */; settings = {ATTRIBUTES = (Project, ); }; }; + EECA36B74A64664E163A9305E8E83721 /* GTMSessionFetcher-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 7616DE9DE5B4E2CB76343B48A1DAD676 /* GTMSessionFetcher-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + EEF0F1C184ACDA13F9B1ABA9228F880E /* FRangeMerge.m in Sources */ = {isa = PBXBuildFile; fileRef = 3E3F1AE0F2ED283BE153136FF024CAAF /* FRangeMerge.m */; }; + EF057CBC5C12FA63B0DD82A70BEC7DC2 /* APLevelDB.h in Headers */ = {isa = PBXBuildFile; fileRef = 24EB27B9D358997C30CE52903E4F39D8 /* APLevelDB.h */; settings = {ATTRIBUTES = (Project, ); }; }; + EF7F2F6F201BB27CE261989A551D997C /* FIRDatabase_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 6FDA355010AE5FBE175F4995972A3FE4 /* FIRDatabase_Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; + EFAF2D26E978BB1EBDB79BA80F2CDCCE /* FIRAuthWebUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = 6DB3143C873A0A210FD68090F3166A0D /* FIRAuthWebUtils.h */; settings = {ATTRIBUTES = (Project, ); }; }; + F0095B785FB7A1CB84946D343ADBCF73 /* fbase64.h in Headers */ = {isa = PBXBuildFile; fileRef = F60650407F30EFAFD7A927BCC7039F6C /* fbase64.h */; settings = {ATTRIBUTES = (Project, ); }; }; + F09DE3F14B1BDA94BC006527F48AF38E /* FIndex.h in Headers */ = {isa = PBXBuildFile; fileRef = 30A75DEC06AE53698309EEB59A309021 /* FIndex.h */; settings = {ATTRIBUTES = (Project, ); }; }; + F0DA7436AB2BE9AB7DFA267D81FC6A2E /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0CCB3D4218A4B964440ADC5F707063C9 /* SystemConfiguration.framework */; }; + F11A83096BD8130FD3FE03F9F7F3B39D /* FIRPhoneAuthCredential.h in Headers */ = {isa = PBXBuildFile; fileRef = A4DF10D039847B43CD017433A846BE65 /* FIRPhoneAuthCredential.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F155526E5E3B96CF1F051F1D748451EF /* FIRFederatedAuthProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = E2D15F0B18D5D45392A1F8048F3D846A /* FIRFederatedAuthProvider.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F19450B52AA15092CB34311CA01C5E20 /* FRepoInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 80802B72EB152AEA0A022E73EBBECCC2 /* FRepoInfo.h */; settings = {ATTRIBUTES = (Project, ); }; }; + F19BF198595EAE87C08AB2E90D906641 /* FIROAuthCredential.m in Sources */ = {isa = PBXBuildFile; fileRef = F794984E472BE48555F62A6478B247AD /* FIROAuthCredential.m */; }; + F1F1488D0B04124C830C3F00EAF2DA13 /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D984BE5444A65E2FEE90297457AF9AA3 /* Security.framework */; }; + F21024B7004BC7D4763FAB54E4246074 /* FIRGetProjectConfigRequest.h in Headers */ = {isa = PBXBuildFile; fileRef = 24C1163079140A22BC6616E81337DD90 /* FIRGetProjectConfigRequest.h */; settings = {ATTRIBUTES = (Project, ); }; }; + F2311F9EFCA2B440544A4B3CAA37572B /* FIRGetAccountInfoRequest.h in Headers */ = {isa = PBXBuildFile; fileRef = 6D73C6130D8E71B19C986DBFE56AA389 /* FIRGetAccountInfoRequest.h */; settings = {ATTRIBUTES = (Project, ); }; }; + F24894CD24FA7C3B116B342C6746FB48 /* crc32c.cc in Sources */ = {isa = PBXBuildFile; fileRef = 2CA8AD0747075EFF0704CD466D531293 /* crc32c.cc */; settings = {COMPILER_FLAGS = "-DOS_MACOSX -DLEVELDB_PLATFORM_POSIX -fno-objc-arc"; }; }; + F28BFCB7597D463ECD8CF3DF3B596211 /* Aliases.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4DF9FCC67F80A21091A6703EE114D0B5 /* Aliases.swift */; }; + F2C4F7A26FF4E8840BF0AA8245C3AB5B /* RLMSchema.h in Headers */ = {isa = PBXBuildFile; fileRef = ABFE82B1CFA704BF96B84CFEF80A185C /* RLMSchema.h */; }; + F2DC513495564BB24A97849A2997E0FD /* FIRAuthInternalErrors.h in Headers */ = {isa = PBXBuildFile; fileRef = AF568C2BDFE5DA7F3BB888CBAB54FB50 /* FIRAuthInternalErrors.h */; settings = {ATTRIBUTES = (Project, ); }; }; + F3066D74CCBE2FE58A90B9C55BBF661D /* results_notifier.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 350E24159FEDE19D0AC2FB86346B163D /* results_notifier.cpp */; settings = {COMPILER_FLAGS = "-DREALM_HAVE_CONFIG -DREALM_COCOA_VERSION='@\"3.17.3\"' -D__ASSERTMACROS__ -DREALM_ENABLE_SYNC"; }; }; + F323DD1D86700472ED6A819472A03A8D /* FSnapshotUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 63E0C9380760106F0D0EB1782F017224 /* FSnapshotUtilities.m */; }; + F353E5C273E3997056B2951373A9412E /* NSError+FIRInstanceID.m in Sources */ = {isa = PBXBuildFile; fileRef = 508B33D9B03F6454B42ABEDA929AA455 /* NSError+FIRInstanceID.m */; }; + F3C34E3C6A04278FC089DCBE460AA958 /* FIRIMessageCode.h in Headers */ = {isa = PBXBuildFile; fileRef = 1E355ACC916C76ABD3E66EF620E7F511 /* FIRIMessageCode.h */; settings = {ATTRIBUTES = (Project, ); }; }; + F419B81DB3FB6B309313BF04C6AD79B2 /* version_edit.h in Headers */ = {isa = PBXBuildFile; fileRef = 694F96E51EFB484361BBAC82242C9A4A /* version_edit.h */; settings = {ATTRIBUTES = (Project, ); }; }; + F4345D8FEB722BF50B2DAEE62F0C5F62 /* FIRInstanceIDAuthKeyChain.m in Sources */ = {isa = PBXBuildFile; fileRef = 3EE5E49E0608DF2B106FA14CD4382146 /* FIRInstanceIDAuthKeyChain.m */; }; + F450B7AA26FE5D17CE52D087E8BCCE91 /* FIRLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = BDABFE3CF558B04C26761C183DC295F7 /* FIRLogger.m */; }; + F4538215AAE85F81F5525332054DE40F /* collection_notifier.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 10C125F733171CD6B7989E871CFA746E /* collection_notifier.cpp */; settings = {COMPILER_FLAGS = "-DREALM_HAVE_CONFIG -DREALM_COCOA_VERSION='@\"3.17.3\"' -D__ASSERTMACROS__ -DREALM_ENABLE_SYNC"; }; }; + F4649C3F759B1030B4353F205C3D15FB /* port_posix.cc in Sources */ = {isa = PBXBuildFile; fileRef = BAC17716C48FBD173A8FB0D8832B5ADE /* port_posix.cc */; settings = {COMPILER_FLAGS = "-DOS_MACOSX -DLEVELDB_PLATFORM_POSIX -fno-objc-arc"; }; }; + F47CB433090415E1C4B2403196DF06AF /* status.cc in Sources */ = {isa = PBXBuildFile; fileRef = 7A86801907EBD73B77C646B67ACFECE6 /* status.cc */; settings = {COMPILER_FLAGS = "-DOS_MACOSX -DLEVELDB_PLATFORM_POSIX -fno-objc-arc"; }; }; + F4BC59EE8481C303784509BACD704E3A /* FValidation.m in Sources */ = {isa = PBXBuildFile; fileRef = BF170117016186777D945C99BAABE983 /* FValidation.m */; }; + F4E1626B8047F70C9F57298B7A4E3826 /* FIRAnalyticsConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = F11CC91535397460ABF2A2F42FA89D99 /* FIRAnalyticsConfiguration.h */; settings = {ATTRIBUTES = (Private, ); }; }; + F5CB5E1E848A8D696191F6F8EACE6340 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0781231D907887B1D7DF0E005F108FF7 /* Foundation.framework */; }; + F616D4136EF973F9FF0476CA9D8C557E /* FIRGitHubAuthCredential.m in Sources */ = {isa = PBXBuildFile; fileRef = ABC2F525B1D8FBA1007C328A16898AF6 /* FIRGitHubAuthCredential.m */; }; + F6187D17641D75722FD6876FB4751AC2 /* FIRInstanceIDTokenOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = DE37477A80DAA557714BF689D5BE02C7 /* FIRInstanceIDTokenOperation.m */; }; + F73BAEDC9E6B92737917054C9073D652 /* FIRCreateAuthURIResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = AE90504A6FF7DB088266D730CA985014 /* FIRCreateAuthURIResponse.m */; }; + F80983ED645A93E7F52CDFF786E00C15 /* RLMRealm.h in Copy . Public Headers */ = {isa = PBXBuildFile; fileRef = 6BE15A4C4C687EC37FFF4A13D7876726 /* RLMRealm.h */; }; + F80AD920CC6602CEDF08A02A340C3E50 /* FIRInstanceIDLogger.h in Headers */ = {isa = PBXBuildFile; fileRef = 8211A1FFBD88C81D6A50C491C86CA3FF /* FIRInstanceIDLogger.h */; settings = {ATTRIBUTES = (Project, ); }; }; + F832D25CC26A8B7AC45254FBC86FAF06 /* sync_permission.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 65AFFDCA0C4F9C5F1D240D898A4B797F /* sync_permission.cpp */; settings = {COMPILER_FLAGS = "-DREALM_HAVE_CONFIG -DREALM_COCOA_VERSION='@\"3.17.3\"' -D__ASSERTMACROS__ -DREALM_ENABLE_SYNC"; }; }; + F8958C3F850328C122BF573573DFAF0B /* FIRMutableData.h in Headers */ = {isa = PBXBuildFile; fileRef = C08E4C27AE9E66D93ECC57FE3F608804 /* FIRMutableData.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F98C97511DD459DEF30AF96480396AFE /* RLMObjectSchema.h in Copy . Public Headers */ = {isa = PBXBuildFile; fileRef = 66F1AE16987AA3C4B7AF01EBD8876742 /* RLMObjectSchema.h */; }; + FA41570EF1203AA53DFC369B16E73DBF /* FWriteRecord.m in Sources */ = {isa = PBXBuildFile; fileRef = FC39F6A4FD9EB627E18D201923B134F8 /* FWriteRecord.m */; }; + FAFF611A6BD4D2AA7423C987034C0479 /* list_notifier.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2BE761807F568B9CA55FF574D4AA85F5 /* list_notifier.cpp */; settings = {COMPILER_FLAGS = "-DREALM_HAVE_CONFIG -DREALM_COCOA_VERSION='@\"3.17.3\"' -D__ASSERTMACROS__ -DREALM_ENABLE_SYNC"; }; }; + FB124A406FBBB9AB7CFDFBDB6286B214 /* transact_log_handler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2C50BEF0A78A877D50A490383E2F69F7 /* transact_log_handler.cpp */; settings = {COMPILER_FLAGS = "-DREALM_HAVE_CONFIG -DREALM_COCOA_VERSION='@\"3.17.3\"' -D__ASSERTMACROS__ -DREALM_ENABLE_SYNC"; }; }; + FB16D14072713E368969885E4ECD099B /* Optional.swift in Sources */ = {isa = PBXBuildFile; fileRef = 25CBDA09181F1292E2E7B25A7C6E5DA1 /* Optional.swift */; }; + FB9027ED863A5501202AC98E0A6970F8 /* sync_config.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F2E4F3789E438C86ED47BAE5DE25734B /* sync_config.cpp */; settings = {COMPILER_FLAGS = "-DREALM_HAVE_CONFIG -DREALM_COCOA_VERSION='@\"3.17.3\"' -D__ASSERTMACROS__ -DREALM_ENABLE_SYNC"; }; }; + FBDC992BFC8CED6017B91F5A2A3FD84D /* FImmutableTree.m in Sources */ = {isa = PBXBuildFile; fileRef = 103244C20EE5B714BD105D34AB43F909 /* FImmutableTree.m */; }; + FC6D655158C8ED78E7DFB312CD7EB70D /* FirebaseAuthVersion.h in Headers */ = {isa = PBXBuildFile; fileRef = AC34CFC19FACD073DEF0F301269EFFAC /* FirebaseAuthVersion.h */; settings = {ATTRIBUTES = (Public, ); }; }; + FCA097067DBC99DFFCE082EBB58807FC /* FIRGameCenterAuthProvider.m in Sources */ = {isa = PBXBuildFile; fileRef = E27450E8F1F772EAB21DF4C39794A794 /* FIRGameCenterAuthProvider.m */; }; + FCD599E18081F351B22D17759A0DB497 /* RLMArray.h in Headers */ = {isa = PBXBuildFile; fileRef = 9651C433B718EAA10022E1613255A895 /* RLMArray.h */; }; + FD425D2C49E019FE8764418940C834B8 /* partial_sync.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2F3BC906D70B72CD86FDA8DFC5414068 /* partial_sync.cpp */; settings = {COMPILER_FLAGS = "-DREALM_HAVE_CONFIG -DREALM_COCOA_VERSION='@\"3.17.3\"' -D__ASSERTMACROS__ -DREALM_ENABLE_SYNC"; }; }; + FD7AE7E65F4761EDEF1FDE3605B96C64 /* FIRAuth.m in Sources */ = {isa = PBXBuildFile; fileRef = 03BD89E7CC2BEA46185ADB421AA9D268 /* FIRAuth.m */; }; + FD95DE8164CD2AA33C6BC8B0358FFA2C /* FIRAuthDispatcher.m in Sources */ = {isa = PBXBuildFile; fileRef = 5B9CFBBCB540068933DB1D0B466FA60E /* FIRAuthDispatcher.m */; }; + FE4EE5F973D989675C8516C00A21EBB4 /* RLMRealm+Sync.h in Headers */ = {isa = PBXBuildFile; fileRef = 769B8341FDE45A543CB6C94B6C3CA4C3 /* RLMRealm+Sync.h */; }; + FE61D50119F8D74FA9C4677382EC50C5 /* FIRInstanceIDCheckinStore.m in Sources */ = {isa = PBXBuildFile; fileRef = CAA25BFC60E0CB873296948F7275E711 /* FIRInstanceIDCheckinStore.m */; }; + FE63D6A61EF05C9269048082A66E761B /* filename.cc in Sources */ = {isa = PBXBuildFile; fileRef = 8236E64C073482BA7586E8CCDE688387 /* filename.cc */; settings = {COMPILER_FLAGS = "-DOS_MACOSX -DLEVELDB_PLATFORM_POSIX -fno-objc-arc"; }; }; + FE6A9150B44D0E1E736038835C6C31AE /* FArraySortedDictionary.m in Sources */ = {isa = PBXBuildFile; fileRef = 43534C5F1E6AC39386A29E62F180519D /* FArraySortedDictionary.m */; }; + FEF80CB9509C11F92E15A2655C93068C /* FEventRaiser.m in Sources */ = {isa = PBXBuildFile; fileRef = 39A16E6E03CED12E43AF45C278F768FC /* FEventRaiser.m */; }; + FF0C8F4A32B56C67D3B6FB8095CEB0FF /* histogram.cc in Sources */ = {isa = PBXBuildFile; fileRef = 40EE662D9466A0FCBCCE46D120E17B22 /* histogram.cc */; settings = {COMPILER_FLAGS = "-DOS_MACOSX -DLEVELDB_PLATFORM_POSIX -fno-objc-arc"; }; }; + FF24A1DE021E855934FCADF303589243 /* RLMResults.mm in Sources */ = {isa = PBXBuildFile; fileRef = 606B2C81D8B184416C27EDE734CBB7CF /* RLMResults.mm */; settings = {COMPILER_FLAGS = "-DREALM_HAVE_CONFIG -DREALM_COCOA_VERSION='@\"3.17.3\"' -D__ASSERTMACROS__ -DREALM_ENABLE_SYNC"; }; }; + FF2700AA4D0FE300744F609D8140A17D /* GULLoggerCodes.h in Headers */ = {isa = PBXBuildFile; fileRef = BABFB720055DEF174A683E695BC5CA83 /* GULLoggerCodes.h */; settings = {ATTRIBUTES = (Public, ); }; }; + FF58C373A15E0637DABE23B7C4D16494 /* RLMRealmConfiguration+Sync.h in Headers */ = {isa = PBXBuildFile; fileRef = 76064AC4B09D665012247BAC6BEDCE87 /* RLMRealmConfiguration+Sync.h */; }; + FF805C61944003589B8BEE2F9D76E81A /* FTupleObjectNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 1CE41B1B68A7964377A4CB3269B1109A /* FTupleObjectNode.m */; }; + FF96F6DEAB773F8AE5B85CE0D496AB2E /* GTMNSDictionary+URLArguments.m in Sources */ = {isa = PBXBuildFile; fileRef = 84721690A36C05785F13ACDFC535E3BA /* GTMNSDictionary+URLArguments.m */; }; + FFBED2829CD2605EA0DFDD20ED451E5D /* RLMSyncSubscription.h in Headers */ = {isa = PBXBuildFile; fileRef = ADBCA8B417E07F18DAF8456392903D6E /* RLMSyncSubscription.h */; }; + FFE5ACCD06B7871F3A22BDA9F914A6D8 /* FLeafNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 6EA12B476EEAB87960D6009E6A6E348F /* FLeafNode.h */; settings = {ATTRIBUTES = (Project, ); }; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ - 01DD8A646592BAA427E2EFF7F4F38B96 /* PBXContainerItemProxy */ = { + 0158F214D45594780DA5043641C36E1E /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 8D7F5D5DD528D21A72DC87ADA5B12E2D; + remoteInfo = GoogleUtilities; + }; + 015FDF4341C23AECEDA3028F9505E99B /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 4402AFF83DBDC4DD07E198685FDC2DF2; remoteInfo = FirebaseCore; }; - 0D6357B67F8E766A36F624BCC22F80C0 /* PBXContainerItemProxy */ = { + 0CB4AB32F08BA563C96A429EC78BA91B /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 8EC0F2618965C875A96BFDBEE5D9734C; - remoteInfo = FirebaseAuthInterop; + remoteGlobalIDString = 8D7F5D5DD528D21A72DC87ADA5B12E2D; + remoteInfo = GoogleUtilities; }; - 0E1817B5AF7C26EDA3F32C76520A5117 /* PBXContainerItemProxy */ = { + 1187E758B651C94D748CC6DD08FE5F13 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 736AF68F6527ACF6B4A4C54728824A1C; - remoteInfo = FirebaseDatabase; + remoteGlobalIDString = D118A6A04828FD3CDA8640CD2B6796D2; + remoteInfo = SwiftyJSON; }; - 1BE4C7C16545DA02C913373268F42F52 /* PBXContainerItemProxy */ = { + 1738D2FD5AC1D917D3D2D015DA72C20D /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 9307B7A119490930CF70393AB529AAC1; - remoteInfo = "leveldb-library"; + remoteGlobalIDString = CAD3534FC55B0333104E5117C0A9A324; + remoteInfo = GoogleSignIn; }; - 1FE9F6679B1482CDBB807E189A9069F6 /* PBXContainerItemProxy */ = { + 1CD653DBC1F90F4870D3D065B75BC2A6 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 4402AFF83DBDC4DD07E198685FDC2DF2; - remoteInfo = FirebaseCore; + remoteGlobalIDString = 6AE4A3D573DED275B034E20506596C62; + remoteInfo = FirebaseAuth; + }; + 1FC8A8A33BF02B3ECBE1804D7025E991 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 8D7F5D5DD528D21A72DC87ADA5B12E2D; + remoteInfo = GoogleUtilities; }; 2241096BF52D154C2390A33A7C459082 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; @@ -804,181 +1044,244 @@ remoteGlobalIDString = 68494F30B4A13F8E5E88BCCAEC25B0A4; remoteInfo = Realm; }; - 25D8491B094007D1503A22D44A6AF8DF /* PBXContainerItemProxy */ = { + 3C7EAA419241047BAC2F668D1CF8331E /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 8D7F5D5DD528D21A72DC87ADA5B12E2D; - remoteInfo = GoogleUtilities; + remoteGlobalIDString = 4402AFF83DBDC4DD07E198685FDC2DF2; + remoteInfo = FirebaseCore; }; - 2BE9FC47E651654BB45B136793B1695F /* PBXContainerItemProxy */ = { + 42DE3BFA410813651C7F0EAFB8041849 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = D2B5E7DCCBBFB32341D857D01211A1A3; remoteInfo = nanopb; }; - 2E97623D456C388FB06920CC973745B9 /* PBXContainerItemProxy */ = { + 430A63480468A95BCAB18881FBA0504A /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = D118A6A04828FD3CDA8640CD2B6796D2; - remoteInfo = SwiftyJSON; + remoteGlobalIDString = 8D7F5D5DD528D21A72DC87ADA5B12E2D; + remoteInfo = GoogleUtilities; }; - 3717CE45CE5D49229FDB2E155AE4FE8D /* PBXContainerItemProxy */ = { + 4B922A1CA351D7865F64F97C8488079D /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 2AC46D4577B336F2EB99C348FA35FB25; - remoteInfo = YMTGetDeviceName; + remoteGlobalIDString = 8D7F5D5DD528D21A72DC87ADA5B12E2D; + remoteInfo = GoogleUtilities; }; - 39F0088ED91A9405A724C81D23F01095 /* PBXContainerItemProxy */ = { + 5B83E7A1F5DF9B1E75431CFB8D8CB422 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 736AF68F6527ACF6B4A4C54728824A1C; remoteInfo = FirebaseDatabase; }; - 485C570D3CF8F0A94EFD811CB93F0F21 /* PBXContainerItemProxy */ = { + 615F93B977994FCE0BF2357FC5215C60 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 072CEA044D2EF26F03496D5996BBF59F; - remoteInfo = Firebase; + remoteGlobalIDString = 68494F30B4A13F8E5E88BCCAEC25B0A4; + remoteInfo = Realm; }; - 4B30BEBD62D207CA9A8DEFA40C960BB8 /* PBXContainerItemProxy */ = { + 65AEB41C2C34B03A0CFF734F93EC7966 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 9E25537BF40D1A3B30CF43FD3E6ACD94; - remoteInfo = FirebaseInstanceID; + remoteGlobalIDString = 8EC0F2618965C875A96BFDBEE5D9734C; + remoteInfo = FirebaseAuthInterop; }; - 5197DC46CE5C1E0A2A35C9E3C05BA05F /* PBXContainerItemProxy */ = { + 66BE2C6B403019BF36ABAD1493446E37 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 8D7F5D5DD528D21A72DC87ADA5B12E2D; - remoteInfo = GoogleUtilities; + remoteGlobalIDString = D47C581D39D227080F83B16A22A56664; + remoteInfo = GoogleToolboxForMac; }; - 542F1DE0BF918C2EFC3B5EF9FEC93711 /* PBXContainerItemProxy */ = { + 6DB6AE195A15C54763D592A918CCDB13 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 8D7F5D5DD528D21A72DC87ADA5B12E2D; - remoteInfo = GoogleUtilities; + remoteGlobalIDString = D676E21115185671D7258A56944ABE98; + remoteInfo = GTMSessionFetcher; }; - 613F80DEF8505BEE8F168AE00B0A344A /* PBXContainerItemProxy */ = { + 713DAC6BFB09EE039489044873AF36BC /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 8D7F5D5DD528D21A72DC87ADA5B12E2D; - remoteInfo = GoogleUtilities; + remoteGlobalIDString = C49E7A4D59E5C8BE8DE9FB1EFB150185; + remoteInfo = FirebaseAnalytics; }; - 618456ACDB574AF051E97F34159722B1 /* PBXContainerItemProxy */ = { + 835365C343A2C36069B41D2E9B70B63F /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 4402AFF83DBDC4DD07E198685FDC2DF2; - remoteInfo = FirebaseCore; + remoteGlobalIDString = D47C581D39D227080F83B16A22A56664; + remoteInfo = GoogleToolboxForMac; }; - 65D7363EBCE24720C7A576693856A663 /* PBXContainerItemProxy */ = { + 8C043B1A797BF350B6A18D1672D52780 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 9E25537BF40D1A3B30CF43FD3E6ACD94; - remoteInfo = FirebaseInstanceID; + remoteGlobalIDString = 9307B7A119490930CF70393AB529AAC1; + remoteInfo = "leveldb-library"; }; - 67DDAB29B20A0AC750DC1D391A2564D9 /* PBXContainerItemProxy */ = { + 97C8B7BB2E727CD28D0B09549B8EB40A /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = C49E7A4D59E5C8BE8DE9FB1EFB150185; + remoteInfo = FirebaseAnalytics; + }; + 996ADD7F7A24F23E236A9FB980857D6C /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = D2B5E7DCCBBFB32341D857D01211A1A3; + remoteInfo = nanopb; + }; + A118835ECADAA6E9215E0E35F161E487 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = D2B5E7DCCBBFB32341D857D01211A1A3; remoteInfo = nanopb; }; - 7190AB6B712F20360B7FC488CF4516DA /* PBXContainerItemProxy */ = { + A16440C89F343DA805567F8A52872CFF /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 9307B7A119490930CF70393AB529AAC1; remoteInfo = "leveldb-library"; }; - 738D63AF2156642401D264E5D6939CF9 /* PBXContainerItemProxy */ = { + A59D1859D0397074F073C70FDEEBF960 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 782725687624F8665247B84AB581BEB1; - remoteInfo = RealmSwift; + remoteGlobalIDString = 4402AFF83DBDC4DD07E198685FDC2DF2; + remoteInfo = FirebaseCore; }; - 81E1E3C2CB4A26EA0F1CB4CC97B77F61 /* PBXContainerItemProxy */ = { + A8C4609A9569EAC55B9472D7E1116624 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = B53D977A951AFC38B21751B706C1DF83; - remoteInfo = GoogleAppMeasurement; + remoteGlobalIDString = 8D7F5D5DD528D21A72DC87ADA5B12E2D; + remoteInfo = GoogleUtilities; + }; + AD53022F6F21F7D39B14F16255D855B5 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 8EC0F2618965C875A96BFDBEE5D9734C; + remoteInfo = FirebaseAuthInterop; + }; + B5511446CFE5E7D2B805AD95B470747B /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 782725687624F8665247B84AB581BEB1; + remoteInfo = RealmSwift; }; - A0F0437B6668EAAFC28E758C26E756D3 /* PBXContainerItemProxy */ = { + B8FB921B03FE517D08D8897F8B02EDFF /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 4402AFF83DBDC4DD07E198685FDC2DF2; remoteInfo = FirebaseCore; }; - B1DE991A196C7906F7E1822AA4982144 /* PBXContainerItemProxy */ = { + C70949F162C5F5C3450B736BCE528BF2 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 8D7F5D5DD528D21A72DC87ADA5B12E2D; - remoteInfo = GoogleUtilities; + remoteGlobalIDString = 072CEA044D2EF26F03496D5996BBF59F; + remoteInfo = Firebase; }; - B31E14489793CB24F96924F288B4B307 /* PBXContainerItemProxy */ = { + CA4843B55B5463F827106D670E3AFE6F /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 4402AFF83DBDC4DD07E198685FDC2DF2; remoteInfo = FirebaseCore; }; - C2E208823F026C7D492A8D5AACE76E18 /* PBXContainerItemProxy */ = { + CC1A1D472AF6446B2816331AEC78C848 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = C49E7A4D59E5C8BE8DE9FB1EFB150185; - remoteInfo = FirebaseAnalytics; + remoteGlobalIDString = 9E25537BF40D1A3B30CF43FD3E6ACD94; + remoteInfo = FirebaseInstanceID; }; - DC5319A4FA6ED9BF675397886D49C86D /* PBXContainerItemProxy */ = { + CF7705BC91E36A101F2D69696588FB49 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 8EC0F2618965C875A96BFDBEE5D9734C; remoteInfo = FirebaseAuthInterop; }; - E18919A303F58B47C928F3AD1CD6CA3F /* PBXContainerItemProxy */ = { + D03B173E9230350ABAE510A4BC49D472 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = C49E7A4D59E5C8BE8DE9FB1EFB150185; - remoteInfo = FirebaseAnalytics; + remoteGlobalIDString = D676E21115185671D7258A56944ABE98; + remoteInfo = GTMSessionFetcher; }; - F572B46CD233D12F42888F1D2FD23CA4 /* PBXContainerItemProxy */ = { + D9B358D912F0D2B55E0AF28A3F15FBF5 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = D2B5E7DCCBBFB32341D857D01211A1A3; - remoteInfo = nanopb; + remoteGlobalIDString = 2AC46D4577B336F2EB99C348FA35FB25; + remoteInfo = YMTGetDeviceName; }; - FBADF89121945E039789572F8E7ED053 /* PBXContainerItemProxy */ = { + DA49B33617E2AA84CED9506596F923CA /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 68494F30B4A13F8E5E88BCCAEC25B0A4; - remoteInfo = Realm; + remoteGlobalIDString = B53D977A951AFC38B21751B706C1DF83; + remoteInfo = GoogleAppMeasurement; + }; + EEAEE4E220B73B9C6040560A8850424E /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 4402AFF83DBDC4DD07E198685FDC2DF2; + remoteInfo = FirebaseCore; + }; + F4F34B38BAA313F56F6236C52E5E27F1 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 9E25537BF40D1A3B30CF43FD3E6ACD94; + remoteInfo = FirebaseInstanceID; + }; + F67700E89740C8E29D211A0AB1F167FB /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = D676E21115185671D7258A56944ABE98; + remoteInfo = GTMSessionFetcher; + }; + FA8604C6B0875A3C9EE21B54A2F5942D /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 736AF68F6527ACF6B4A4C54728824A1C; + remoteInfo = FirebaseDatabase; }; - FDBD5C32BF0821031B12D52C27BB6437 /* PBXContainerItemProxy */ = { + FC1A7BEF047494B1429F4D8020ED17C7 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = B53D977A951AFC38B21751B706C1DF83; remoteInfo = GoogleAppMeasurement; }; + FF06650B88EB7E8AD9DF77ED633EE5CC /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 6AE4A3D573DED275B034E20506596C62; + remoteInfo = FirebaseAuth; + }; /* End PBXContainerItemProxy section */ /* Begin PBXCopyFilesBuildPhase section */ @@ -1051,1274 +1354,1782 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 00B12DB8DF44E90725FF75F399D710F7 /* testutil.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = testutil.h; path = util/testutil.h; sourceTree = ""; }; - 00CCB59A7C95A0138D0DA4F63246439C /* FEventEmitter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FEventEmitter.m; path = Firebase/Database/Utilities/FEventEmitter.m; sourceTree = ""; }; - 010208BF5BCFF569ED50125DCAFDDCE4 /* table_cache.cc */ = {isa = PBXFileReference; includeInIndex = 1; name = table_cache.cc; path = db/table_cache.cc; sourceTree = ""; }; - 012E2C27C72F07CCA0144D66DA277C97 /* RLMProperty.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = RLMProperty.mm; path = Realm/RLMProperty.mm; sourceTree = ""; }; - 0287EDA0E300BF3B5C3C6674FC6FF9EA /* RLMSyncCredentials.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RLMSyncCredentials.m; path = Realm/RLMSyncCredentials.m; sourceTree = ""; }; - 02A9912CA48F7671293C5809F86C6447 /* leveldb-library.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "leveldb-library.modulemap"; sourceTree = ""; }; - 0377DDD8FA2E69276B2741A5A55C1E95 /* FSnapshotUtilities.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FSnapshotUtilities.m; path = Firebase/Database/Snapshot/FSnapshotUtilities.m; sourceTree = ""; }; - 03D8E809717EA857929080A649048E9A /* FAuthTokenProvider.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FAuthTokenProvider.m; path = Firebase/Database/Login/FAuthTokenProvider.m; sourceTree = ""; }; - 03F855A5B507F9CAEAD468E4EEAB9059 /* FIRDatabaseQuery.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRDatabaseQuery.m; path = Firebase/Database/Api/FIRDatabaseQuery.m; sourceTree = ""; }; - 040252EB86405F1D7BBEFFFC6E3D456C /* FCompoundWrite.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FCompoundWrite.h; path = Firebase/Database/Snapshot/FCompoundWrite.h; sourceTree = ""; }; - 047E1336D8AE33C72345487ED716EA50 /* FIRInstanceIDAuthKeyChain.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstanceIDAuthKeyChain.m; path = Firebase/InstanceID/FIRInstanceIDAuthKeyChain.m; sourceTree = ""; }; - 04A156BB913EBCD3776EEBBA24B1DB95 /* FIRVersion.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRVersion.h; path = Firebase/Core/Private/FIRVersion.h; sourceTree = ""; }; - 04F2ACC0FFE91B4D815B5C9306BF00F3 /* FIRDependency.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRDependency.h; path = Firebase/Core/Private/FIRDependency.h; sourceTree = ""; }; - 05C498C49A32DA6585EBCBFD67B1A11F /* FSyncTree.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FSyncTree.m; path = Firebase/Database/Core/FSyncTree.m; sourceTree = ""; }; - 05ECCE509C554602AD75019EF6BE5DFC /* RLMObjectStore.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RLMObjectStore.h; path = include/RLMObjectStore.h; sourceTree = ""; }; - 0618723009E3513AA3529A7366BD1651 /* RLMRealm.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = RLMRealm.mm; path = Realm/RLMRealm.mm; sourceTree = ""; }; - 0645574B1D691E08ABF6941598A55F0A /* RLMObjectSchema.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = RLMObjectSchema.mm; path = Realm/RLMObjectSchema.mm; sourceTree = ""; }; - 064BF53BD9419D42E78FC0A0DAC8CFE6 /* FIRLogger.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRLogger.m; path = Firebase/Core/FIRLogger.m; sourceTree = ""; }; + 00773D5CC228627FAB88FDD59074541D /* SwiftyJSON.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SwiftyJSON.swift; path = Source/SwiftyJSON/SwiftyJSON.swift; sourceTree = ""; }; + 00A718027A0C464E0524A38F409F41E9 /* FIRInstanceIDKeyPairStore.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstanceIDKeyPairStore.m; path = Firebase/InstanceID/FIRInstanceIDKeyPairStore.m; sourceTree = ""; }; + 00AD000A907DF26A376D4BD10CE0F617 /* FTransformedEnumerator.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FTransformedEnumerator.m; path = Firebase/Database/FTransformedEnumerator.m; sourceTree = ""; }; + 00E0C362DBAB7522CAF8692550B87352 /* GULNetworkConstants.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GULNetworkConstants.m; path = GoogleUtilities/Network/GULNetworkConstants.m; sourceTree = ""; }; + 014FDE209ED1C0D0CD89A78B77428077 /* block.cc */ = {isa = PBXFileReference; includeInIndex = 1; name = block.cc; path = table/block.cc; sourceTree = ""; }; + 016A4868CD91D80652B44F83CBBD553A /* Results.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Results.swift; path = RealmSwift/Results.swift; sourceTree = ""; }; + 01B4F88D28D6A32495ABD50958F8CDF7 /* FirebaseCore.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = FirebaseCore.xcconfig; sourceTree = ""; }; + 01CC685F23F5952E47D06AAC8F40127D /* FSyncTree.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FSyncTree.m; path = Firebase/Database/Core/FSyncTree.m; sourceTree = ""; }; + 01DFF38291F51A03FC2D066546D96984 /* FIRVerifyPasswordResponse.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRVerifyPasswordResponse.h; path = Firebase/Auth/Source/Backend/RPC/FIRVerifyPasswordResponse.h; sourceTree = ""; }; + 01EC900101CCA4D1956B581D912FF8F3 /* FIRGoogleAuthProvider.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRGoogleAuthProvider.m; path = Firebase/Auth/Source/AuthProvider/Google/FIRGoogleAuthProvider.m; sourceTree = ""; }; + 0217F453A998FB4ED56D2B97E78D63E0 /* FIRInstanceIDCombinedHandler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceIDCombinedHandler.h; path = Firebase/InstanceID/FIRInstanceIDCombinedHandler.h; sourceTree = ""; }; + 0218B74CC13521AEEEFE4AA9AC07CB8D /* FWriteRecord.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FWriteRecord.h; path = Firebase/Database/Core/FWriteRecord.h; sourceTree = ""; }; + 0227489CA87528683D15854631C1E35F /* Pods-shlack-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-shlack-dummy.m"; sourceTree = ""; }; + 023DD0D1C923305C8AB775AB16154F7A /* GULMutableDictionary.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GULMutableDictionary.h; path = GoogleUtilities/Network/Private/GULMutableDictionary.h; sourceTree = ""; }; + 0279DEEE679C99CCA995259CC53378C9 /* GULReachabilityMessageCode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GULReachabilityMessageCode.h; path = GoogleUtilities/Reachability/Private/GULReachabilityMessageCode.h; sourceTree = ""; }; + 02AD731D1132F99C1F91288672B7E1F9 /* FIRAuthTokenResult.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRAuthTokenResult.h; path = Firebase/Auth/Source/Public/FIRAuthTokenResult.h; sourceTree = ""; }; + 02D15912C2A468486D27EEB5C1155330 /* GoogleUtilities-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "GoogleUtilities-dummy.m"; sourceTree = ""; }; + 02D67D74F651B74DEEA46690B13916A1 /* GoogleAppMeasurement.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = GoogleAppMeasurement.xcconfig; sourceTree = ""; }; + 032BB8894E2D66B49610113240881411 /* FirebaseCore.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FirebaseCore.h; path = Firebase/Core/Public/FirebaseCore.h; sourceTree = ""; }; + 03BD89E7CC2BEA46185ADB421AA9D268 /* FIRAuth.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRAuth.m; path = Firebase/Auth/Source/Auth/FIRAuth.m; sourceTree = ""; }; + 04092C5B41E3A06BCDADE9378D70A572 /* FIRAuthCredential_Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRAuthCredential_Internal.h; path = Firebase/Auth/Source/AuthProvider/FIRAuthCredential_Internal.h; sourceTree = ""; }; + 04110D59EBCF955D3B655A7CDA26D981 /* atomic_pointer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = atomic_pointer.h; path = port/atomic_pointer.h; sourceTree = ""; }; + 0420F900F8AD3CEA746CACCB0E6178ED /* Error.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Error.swift; path = RealmSwift/Error.swift; sourceTree = ""; }; + 04540068EF5284F0F3E837C96514AC2E /* GULAppDelegateSwizzler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GULAppDelegateSwizzler.h; path = GoogleUtilities/AppDelegateSwizzler/Private/GULAppDelegateSwizzler.h; sourceTree = ""; }; + 04CC66527610E0F4792534447F173128 /* FIRFacebookAuthProvider.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRFacebookAuthProvider.m; path = Firebase/Auth/Source/AuthProvider/Facebook/FIRFacebookAuthProvider.m; sourceTree = ""; }; + 04FFD5CBFD7BCCBCCD66E9BCD51A2E0B /* table.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = table.h; path = include/leveldb/table.h; sourceTree = ""; }; + 050EEA7B488831E6AC9B7298410E6AE5 /* FIRDatabaseQuery.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRDatabaseQuery.m; path = Firebase/Database/Api/FIRDatabaseQuery.m; sourceTree = ""; }; + 05A04223649CC9528E3BE62992DCC774 /* FChildEventRegistration.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FChildEventRegistration.m; path = Firebase/Database/Core/View/FChildEventRegistration.m; sourceTree = ""; }; + 05BA8E5D5F402BD088A7AA15C1282405 /* YMTGetDeviceName-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "YMTGetDeviceName-umbrella.h"; sourceTree = ""; }; + 063868A7238E402A87C1FA6918D34928 /* FTupleSetIdPath.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FTupleSetIdPath.h; path = Firebase/Database/Utilities/Tuples/FTupleSetIdPath.h; sourceTree = ""; }; + 06646823752E5DEE796F0F6DFD138917 /* FIRDatabaseComponent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRDatabaseComponent.h; path = Firebase/Database/Api/FIRDatabaseComponent.h; sourceTree = ""; }; + 06879569ADF817D91E402710318AC768 /* FIRMutableData_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRMutableData_Private.h; path = Firebase/Database/Api/Private/FIRMutableData_Private.h; sourceTree = ""; }; + 06BAA7719371B161963154613F649AA8 /* random.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = random.h; path = util/random.h; sourceTree = ""; }; + 06C874060D1EC0DEC948C3DEC25DB576 /* FCompoundHash.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FCompoundHash.m; path = Firebase/Database/Core/FCompoundHash.m; sourceTree = ""; }; 06FC5C9CF96D60C50FCD47D339C91951 /* nanopb.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = nanopb.framework; path = nanopb.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 070F632279373DF6E2F7821FBA22B6F3 /* FIRInstanceIDTokenOperation+Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FIRInstanceIDTokenOperation+Private.h"; path = "Firebase/InstanceID/FIRInstanceIDTokenOperation+Private.h"; sourceTree = ""; }; - 073D061194DC97B908EB2FFA562A2AB7 /* FTupleFirebase.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FTupleFirebase.m; path = Firebase/Database/Utilities/Tuples/FTupleFirebase.m; sourceTree = ""; }; - 07494D9319896DC230E1E6E753B2057D /* RLMArray.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RLMArray.h; path = include/RLMArray.h; sourceTree = ""; }; + 07032503BF3ECE0B00F02E2D58B24F04 /* RLMSyncPermissionResults.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = RLMSyncPermissionResults.mm; path = Realm/RLMSyncPermissionResults.mm; sourceTree = ""; }; + 0730349534BA7B9D9A5C37F77674AF46 /* pb.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = pb.h; sourceTree = ""; }; + 077A4146A733517C3C1626D699546AAD /* RLMPlatform.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RLMPlatform.h; path = include/RLMPlatform.h; sourceTree = ""; }; 0781231D907887B1D7DF0E005F108FF7 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; - 0952D1860824C1CA8ED07023B636A233 /* FEventRegistration.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FEventRegistration.h; path = Firebase/Database/Core/View/FEventRegistration.h; sourceTree = ""; }; - 0956F4B27D9C4B4CDAACF7E2732B439B /* FTupleRemovedQueriesEvents.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FTupleRemovedQueriesEvents.h; path = Firebase/Database/Utilities/Tuples/FTupleRemovedQueriesEvents.h; sourceTree = ""; }; - 09E3B9A2D995E7B995D465A6C14176BE /* network_reachability_observer.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = network_reachability_observer.cpp; path = Realm/ObjectStore/src/sync/impl/apple/network_reachability_observer.cpp; sourceTree = ""; }; - 09FAA8AF1C493696D8FA336D38481000 /* collection_notifier.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = collection_notifier.cpp; path = Realm/ObjectStore/src/impl/collection_notifier.cpp; sourceTree = ""; }; - 0A0D58189220B7D97AD3CE614BF62214 /* FIRVersion.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRVersion.m; path = Firebase/Core/FIRVersion.m; sourceTree = ""; }; - 0A7BA7EC41A68FED52F0B766B16850E1 /* RLMObjectSchema.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RLMObjectSchema.h; path = include/RLMObjectSchema.h; sourceTree = ""; }; + 079773EBA3C2C5C334385ABE31712383 /* FIRDatabaseReference.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRDatabaseReference.m; path = Firebase/Database/FIRDatabaseReference.m; sourceTree = ""; }; + 07E73509AE309CAFB836CEF8CEED4FD4 /* FIRInstanceIDTokenFetchOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceIDTokenFetchOperation.h; path = Firebase/InstanceID/FIRInstanceIDTokenFetchOperation.h; sourceTree = ""; }; + 080AC7491E280EAB86A811398B37F5C6 /* FirebaseDatabase-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "FirebaseDatabase-dummy.m"; sourceTree = ""; }; + 0825C64B1F30E1DEE973AEEE409989A9 /* coding.cc */ = {isa = PBXFileReference; includeInIndex = 1; name = coding.cc; path = util/coding.cc; sourceTree = ""; }; + 085496656FD3219252B44B257816BAE2 /* FTupleOnDisconnect.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FTupleOnDisconnect.m; path = Firebase/Database/Utilities/Tuples/FTupleOnDisconnect.m; sourceTree = ""; }; + 087462F890EA07A514AE5B19CFEACFBC /* NSData+FIRBase64.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSData+FIRBase64.h"; path = "Firebase/Auth/Source/Utilities/NSData+FIRBase64.h"; sourceTree = ""; }; + 094A227E5B0F04ED175DA6A90F5625CD /* FIRInstanceIDKeychain.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceIDKeychain.h; path = Firebase/InstanceID/FIRInstanceIDKeychain.h; sourceTree = ""; }; + 0958206339652DA5E7606732FEC1F80F /* FWriteTreeRef.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FWriteTreeRef.h; path = Firebase/Database/Core/FWriteTreeRef.h; sourceTree = ""; }; + 09A324045A31C8ADF8BB77597A9D589D /* FIRPhoneAuthCredential.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRPhoneAuthCredential.m; path = Firebase/Auth/Source/AuthProvider/Phone/FIRPhoneAuthCredential.m; sourceTree = ""; }; + 0A44C7667452E131F34025A236388216 /* FirebaseInstanceID.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = FirebaseInstanceID.modulemap; sourceTree = ""; }; + 0A6EBF0A8C222DE3E9E319189FFC4BA8 /* two_level_iterator.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = two_level_iterator.h; path = table/two_level_iterator.h; sourceTree = ""; }; 0A9F46A999C47653013D3AD854352507 /* leveldb.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = leveldb.framework; path = "leveldb-library.framework"; sourceTree = BUILT_PRODUCTS_DIR; }; - 0AA3340ECD599FE3AA8DEF6ACFD38A80 /* FIRDatabaseReference.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRDatabaseReference.h; path = Firebase/Database/Public/FIRDatabaseReference.h; sourceTree = ""; }; - 0AE8BF278FA2DE959D77D7C0F99892E5 /* FIRTransactionResult_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRTransactionResult_Private.h; path = Firebase/Database/Api/Private/FIRTransactionResult_Private.h; sourceTree = ""; }; - 0B99E3092D6E6ED88EA4D75706BE1FCE /* RLMSyncSubscription.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RLMSyncSubscription.h; path = include/RLMSyncSubscription.h; sourceTree = ""; }; - 0C2CD0FBB7975223F6A384762C817805 /* keychain_helper.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = keychain_helper.cpp; path = Realm/ObjectStore/src/impl/apple/keychain_helper.cpp; sourceTree = ""; }; + 0AD902D398751FBD203D4FE1642023D5 /* FIRComponentContainerInternal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRComponentContainerInternal.h; path = Firebase/Core/Private/FIRComponentContainerInternal.h; sourceTree = ""; }; + 0B1D106CB434215C0CF0080ED7096662 /* GULSwizzler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GULSwizzler.h; path = GoogleUtilities/MethodSwizzler/Private/GULSwizzler.h; sourceTree = ""; }; + 0B710E8698CF1344D9DD7860A817BBF4 /* RLMListBase.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = RLMListBase.mm; path = Realm/RLMListBase.mm; sourceTree = ""; }; + 0B9B76A0647CED8F68D9678666AF843E /* RLMArray.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = RLMArray.mm; path = Realm/RLMArray.mm; sourceTree = ""; }; + 0C4C62C89ADDD0B52E3E9A781BAC8713 /* FirebaseCore.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = FirebaseCore.modulemap; sourceTree = ""; }; + 0CB127B0EF3C6CC65015F2A14A64229D /* GULAppEnvironmentUtil.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GULAppEnvironmentUtil.m; path = GoogleUtilities/Environment/third_party/GULAppEnvironmentUtil.m; sourceTree = ""; }; 0CCB3D4218A4B964440ADC5F707063C9 /* SystemConfiguration.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SystemConfiguration.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/SystemConfiguration.framework; sourceTree = DEVELOPER_DIR; }; - 0D529837A821AFCF926F27874ACC2550 /* FTreeNode.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FTreeNode.m; path = Firebase/Database/Core/Utilities/FTreeNode.m; sourceTree = ""; }; - 0DD33F53EB6EED6ECCD2501263A891E1 /* sync_user.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = sync_user.cpp; path = Realm/ObjectStore/src/sync/sync_user.cpp; sourceTree = ""; }; - 0DDF2FD50F41B281F7A8D748943628D8 /* YMTGetDeviceName-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "YMTGetDeviceName-Info.plist"; sourceTree = ""; }; - 0E2302B86EDACEB3402E8F4310195A9A /* FIRDataEventType.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRDataEventType.h; path = Firebase/Database/Public/FIRDataEventType.h; sourceTree = ""; }; - 0E25B17C116EB81D489896E73E91F065 /* FIRConfiguration.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRConfiguration.h; path = Firebase/Core/Public/FIRConfiguration.h; sourceTree = ""; }; - 0E3A3666C5E309C2AD0750B6523FAEEC /* status.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = status.h; path = include/leveldb/status.h; sourceTree = ""; }; - 0E48A978F489122979C445FA01A8BBA9 /* GoogleUtilities.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = GoogleUtilities.xcconfig; sourceTree = ""; }; - 0F0030D3F3857B4FD841715519213499 /* RLMSyncUser.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RLMSyncUser.h; path = include/RLMSyncUser.h; sourceTree = ""; }; - 0FA7EF31B7BE01AA3E240349E659B60A /* SwiftyJSON.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = SwiftyJSON.modulemap; sourceTree = ""; }; - 0FEC893D0AC066E0809BDE755B416AF5 /* FListenComplete.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FListenComplete.m; path = Firebase/Database/FListenComplete.m; sourceTree = ""; }; - 111A5A6ED76A0D9FF9C46BA259A8C94E /* RLMRealm_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RLMRealm_Private.h; path = include/RLMRealm_Private.h; sourceTree = ""; }; - 1150FC8A702B2DAF5A47FAD0560B2ED2 /* atomic_pointer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = atomic_pointer.h; path = port/atomic_pointer.h; sourceTree = ""; }; - 11BCE8CE1264A0F003A94E74A0278747 /* comparator.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = comparator.h; path = include/leveldb/comparator.h; sourceTree = ""; }; - 11D01DD003F31171CE7B17167EA12D67 /* logging.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = logging.h; path = util/logging.h; sourceTree = ""; }; - 12DD1ACB14D5310062FDAA97B3DF1732 /* RealmCollection.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RealmCollection.swift; path = RealmSwift/RealmCollection.swift; sourceTree = ""; }; - 12E00CD98290A1BBF996B5E841380B15 /* FIRAnalyticsConfiguration.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRAnalyticsConfiguration.h; path = Firebase/Core/Private/FIRAnalyticsConfiguration.h; sourceTree = ""; }; - 12E39F3C7E0D14603936B4F2545364B4 /* ObjectSchema.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ObjectSchema.swift; path = RealmSwift/ObjectSchema.swift; sourceTree = ""; }; - 13583B89378F90F6F6E13CF4A6DE6DA4 /* FirebaseDatabase.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FirebaseDatabase.h; path = Firebase/Database/Public/FirebaseDatabase.h; sourceTree = ""; }; - 13DEB74003ED0A38243362A12E796250 /* FRepoInfo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FRepoInfo.h; path = Firebase/Database/Core/FRepoInfo.h; sourceTree = ""; }; - 13F55E76F5010DDD421FA1B8CC990899 /* FIRConfigurationInternal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRConfigurationInternal.h; path = Firebase/Core/Private/FIRConfigurationInternal.h; sourceTree = ""; }; - 141026FF3EBFBFECB80FC18937BA4BC6 /* GULSwizzler.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GULSwizzler.m; path = GoogleUtilities/MethodSwizzler/GULSwizzler.m; sourceTree = ""; }; - 14516C353C15A53C7197CDA94C18AC0D /* FirebaseCore-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "FirebaseCore-Info.plist"; sourceTree = ""; }; - 1524CFB671448079E284EA5A5F0D6C81 /* filter_policy.cc */ = {isa = PBXFileReference; includeInIndex = 1; name = filter_policy.cc; path = util/filter_policy.cc; sourceTree = ""; }; - 15EC87D861893BB00E43B89933D8D2BC /* FPersistentConnection.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FPersistentConnection.m; path = Firebase/Database/Core/FPersistentConnection.m; sourceTree = ""; }; - 1657E98838AEFEC85EE8EC91FE676CEF /* FImmutableSortedDictionary.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FImmutableSortedDictionary.h; path = Firebase/Database/third_party/FImmutableSortedDictionary/FImmutableSortedDictionary/FImmutableSortedDictionary.h; sourceTree = ""; }; - 1661E3FEE42630FE0B5236BB3F2577C9 /* FNodeFilter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FNodeFilter.h; path = Firebase/Database/Core/View/Filter/FNodeFilter.h; sourceTree = ""; }; - 169690598F4F35B5A48BC5DC8FA3CD14 /* collection_change_builder.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = collection_change_builder.cpp; path = Realm/ObjectStore/src/impl/collection_change_builder.cpp; sourceTree = ""; }; - 181FDD035B4B0C5DB394ECB1E11AF002 /* uuid.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = uuid.cpp; path = Realm/ObjectStore/src/util/uuid.cpp; sourceTree = ""; }; - 18F57C63543E48918260382B3C0AC92E /* env.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = env.h; path = include/leveldb/env.h; sourceTree = ""; }; - 190F3CC4B3F3CFA3DF96AECE5B3EA6D0 /* Pods-shlack.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-shlack.modulemap"; sourceTree = ""; }; - 19167ABA8E3C67FBCAF3FDF46F792190 /* RLMQueryUtil.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = RLMQueryUtil.mm; path = Realm/RLMQueryUtil.mm; sourceTree = ""; }; - 193B7FBB7A9C97AB0ED07793BB176DE4 /* FValidation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FValidation.h; path = Firebase/Database/Utilities/FValidation.h; sourceTree = ""; }; - 19466576FA6A3823DD0A35E6EF6CBD1C /* RLMArray.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = RLMArray.mm; path = Realm/RLMArray.mm; sourceTree = ""; }; - 19507253D2D25F2CEFAADB1BD815A39A /* RealmSwift-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "RealmSwift-prefix.pch"; sourceTree = ""; }; - 196FCC22FC28B70022611585557A4C06 /* GULOriginalIMPConvenienceMacros.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GULOriginalIMPConvenienceMacros.h; path = GoogleUtilities/MethodSwizzler/Private/GULOriginalIMPConvenienceMacros.h; sourceTree = ""; }; - 1A2481DACFF8B25080AC675078AA9854 /* Realm.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Realm.h; path = include/Realm.h; sourceTree = ""; }; - 1A56100AD75D6F45FC0D0A57315577D9 /* RLMRealmConfiguration.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = RLMRealmConfiguration.mm; path = Realm/RLMRealmConfiguration.mm; sourceTree = ""; }; - 1AA7FAF474EB1EB3D0F6C5C5D30D54E5 /* FTupleTSN.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FTupleTSN.h; path = Firebase/Database/Utilities/Tuples/FTupleTSN.h; sourceTree = ""; }; - 1B1BE978180117D7A9F0FFAEFF97BDC0 /* RLMObservation.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = RLMObservation.mm; path = Realm/RLMObservation.mm; sourceTree = ""; }; - 1B307B38EB1FA1D94DD39CAEAF9806C9 /* GULLoggerCodes.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GULLoggerCodes.h; path = GoogleUtilities/Common/GULLoggerCodes.h; sourceTree = ""; }; - 1B5FCEC9F55A2D50BE54ED6FB5CC028D /* FirebaseInstanceID-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "FirebaseInstanceID-Info.plist"; sourceTree = ""; }; - 1BAD6C9A418D41295BD5D6D9626A1DAB /* FPersistenceManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FPersistenceManager.h; path = Firebase/Database/Persistence/FPersistenceManager.h; sourceTree = ""; }; - 1C45751A5BA07489251DF56FA3C434A4 /* FTupleNodePath.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FTupleNodePath.h; path = Firebase/Database/Utilities/Tuples/FTupleNodePath.h; sourceTree = ""; }; - 1CAF821104A3EE66A918096C98AF7BE9 /* FIRInstanceIDKeyPairStore.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstanceIDKeyPairStore.m; path = Firebase/InstanceID/FIRInstanceIDKeyPairStore.m; sourceTree = ""; }; - 1CB91AAAA2DFB02E6A0A6C483A969754 /* FConnection.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FConnection.m; path = Firebase/Database/Realtime/FConnection.m; sourceTree = ""; }; - 1DBF9F9EC5E9DE9E41EFB0868C4C8A4F /* FArraySortedDictionary.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FArraySortedDictionary.h; path = Firebase/Database/third_party/FImmutableSortedDictionary/FImmutableSortedDictionary/FArraySortedDictionary.h; sourceTree = ""; }; - 1E2EA10FB892843677B9663F11006F50 /* FWriteTree.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FWriteTree.m; path = Firebase/Database/Core/FWriteTree.m; sourceTree = ""; }; - 1E31993E8C2DBBBA5813C268FCA75F52 /* FTreeSortedDictionaryEnumerator.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FTreeSortedDictionaryEnumerator.m; path = Firebase/Database/third_party/FImmutableSortedDictionary/FImmutableSortedDictionary/FTreeSortedDictionaryEnumerator.m; sourceTree = ""; }; - 1E4CB7C3F490D71BFABB4A3CD53B54FE /* FLLRBEmptyNode.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FLLRBEmptyNode.m; path = Firebase/Database/third_party/FImmutableSortedDictionary/FImmutableSortedDictionary/FLLRBEmptyNode.m; sourceTree = ""; }; - 1F9DDCF917A72B453DB56A63B5AA3947 /* FLLRBValueNode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FLLRBValueNode.h; path = Firebase/Database/third_party/FImmutableSortedDictionary/FImmutableSortedDictionary/FLLRBValueNode.h; sourceTree = ""; }; - 1FE11E126D85D3F8DF9050D0B9D47B6E /* FIRInstanceIDTokenStore.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstanceIDTokenStore.m; path = Firebase/InstanceID/FIRInstanceIDTokenStore.m; sourceTree = ""; }; - 1FE22062253F86EBDE8DBC1E4AF7D5A4 /* FConstants.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FConstants.h; path = Firebase/Database/Constants/FConstants.h; sourceTree = ""; }; - 20935CAEED9983B9F3F0D3330DEDCC67 /* FArraySortedDictionary.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FArraySortedDictionary.m; path = Firebase/Database/third_party/FImmutableSortedDictionary/FImmutableSortedDictionary/FArraySortedDictionary.m; sourceTree = ""; }; - 211A38F0BAF1590ED0F2AD7DA55D1820 /* FViewProcessorResult.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FViewProcessorResult.m; path = Firebase/Database/FViewProcessorResult.m; sourceTree = ""; }; - 21AC6BB5104E12F7C39FD17A2E20BD12 /* shared_realm.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = shared_realm.cpp; path = Realm/ObjectStore/src/shared_realm.cpp; sourceTree = ""; }; - 21AFDDA117E511A3402F681BF627D41D /* FEventRaiser.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FEventRaiser.m; path = Firebase/Database/Core/View/FEventRaiser.m; sourceTree = ""; }; - 2234724A5F7687743151FFE0F29C8F54 /* FIRInstanceIDAuthService.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceIDAuthService.h; path = Firebase/InstanceID/FIRInstanceIDAuthService.h; sourceTree = ""; }; - 2271BF2B610000B35AF3317E38D1C8E5 /* leveldb-library-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "leveldb-library-dummy.m"; sourceTree = ""; }; - 227565AD60546A76F3D5D196E85DF731 /* FIRInstanceIDKeyPairUtilities.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceIDKeyPairUtilities.h; path = Firebase/InstanceID/FIRInstanceIDKeyPairUtilities.h; sourceTree = ""; }; - 22C7E12BCB53FE4ED89AEFABE4229ADD /* list.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = list.cpp; path = Realm/ObjectStore/src/list.cpp; sourceTree = ""; }; - 235E01FCEEA7F67507DB1F4E538A25BB /* Pods-shlack.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-shlack.release.xcconfig"; sourceTree = ""; }; - 23D4A3FF5DBFCDACD0C419B55E3541D8 /* FTupleTransaction.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FTupleTransaction.m; path = Firebase/Database/Utilities/Tuples/FTupleTransaction.m; sourceTree = ""; }; - 245AEE12E9DD59A61D7FB118B8520137 /* RLMObjectBase_Dynamic.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RLMObjectBase_Dynamic.h; path = include/RLMObjectBase_Dynamic.h; sourceTree = ""; }; - 25383D0135DDDC892FC46AE5C5CA5C4A /* nanopb-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "nanopb-Info.plist"; sourceTree = ""; }; - 254364C2F39D555980C6E8A0AC05D68A /* FCachePolicy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FCachePolicy.m; path = Firebase/Database/Persistence/FCachePolicy.m; sourceTree = ""; }; - 254D15F0BED38402FA64F2CE897BD30D /* log_writer.cc */ = {isa = PBXFileReference; includeInIndex = 1; name = log_writer.cc; path = db/log_writer.cc; sourceTree = ""; }; - 25DD80EE615066DCD6DCB4EAE4FD9272 /* GoogleUtilities-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "GoogleUtilities-Info.plist"; sourceTree = ""; }; - 27D143C5F5D3713350CD17F5D83F5F0A /* GoogleAppMeasurement.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = GoogleAppMeasurement.framework; path = Frameworks/GoogleAppMeasurement.framework; sourceTree = ""; }; - 288231BE0CA63DA6DBCB712EEED7FA93 /* histogram.cc */ = {isa = PBXFileReference; includeInIndex = 1; name = histogram.cc; path = util/histogram.cc; sourceTree = ""; }; - 28BBEC04B983CBBD5FF45C2EA0F3F227 /* YMTGetDeviceName.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = YMTGetDeviceName.xcconfig; sourceTree = ""; }; - 2924F40BA1329BC6806BCD33605550AD /* FRangeMerge.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FRangeMerge.h; path = Firebase/Database/Core/FRangeMerge.h; sourceTree = ""; }; - 295B5EDCCB25183E4AEE49DFA63DE530 /* FTupleUserCallback.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FTupleUserCallback.h; path = Firebase/Database/Utilities/Tuples/FTupleUserCallback.h; sourceTree = ""; }; - 298336778EB733D007DF50E7B79E39DA /* iterator.cc */ = {isa = PBXFileReference; includeInIndex = 1; name = iterator.cc; path = table/iterator.cc; sourceTree = ""; }; - 2A7501BF49CE61E83A923D8588BFF72D /* FIRAppAssociationRegistration.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRAppAssociationRegistration.m; path = Firebase/Core/FIRAppAssociationRegistration.m; sourceTree = ""; }; - 2A93CA792659C6696C79342357059587 /* RLMSyncManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RLMSyncManager.h; path = include/RLMSyncManager.h; sourceTree = ""; }; - 2AD212F566EBB030D4D0C3FCE59BDBEE /* FQuerySpec.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FQuerySpec.h; path = Firebase/Database/Core/FQuerySpec.h; sourceTree = ""; }; - 2B57D55CAD7B15F7B131BC40D5C05E7C /* FWriteTreeRef.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FWriteTreeRef.m; path = Firebase/Database/Core/FWriteTreeRef.m; sourceTree = ""; }; - 2B5EDC32878131D9A5EE4D477508FDEC /* testharness.cc */ = {isa = PBXFileReference; includeInIndex = 1; name = testharness.cc; path = util/testharness.cc; sourceTree = ""; }; - 2B68ECFAB84178558737939B9D00275C /* log_format.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = log_format.h; path = db/log_format.h; sourceTree = ""; }; - 2B8F1094B09DD1FC2F583026C6939BF3 /* block_builder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = block_builder.h; path = table/block_builder.h; sourceTree = ""; }; - 2BC2DDD408D1D4F3246A5DADD01744BC /* FIRInstanceIDStore.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceIDStore.h; path = Firebase/InstanceID/FIRInstanceIDStore.h; sourceTree = ""; }; - 2C850F0AD955FD23E215626E3B366C2F /* RLMMigration.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = RLMMigration.mm; path = Realm/RLMMigration.mm; sourceTree = ""; }; - 2D2A5A7F700CD01C27DA42AE076A7355 /* FValueIndex.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FValueIndex.h; path = Firebase/Database/FValueIndex.h; sourceTree = ""; }; - 2D455ECD9391388C7F23E7AEAB1DD490 /* RLMRealm.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RLMRealm.h; path = include/RLMRealm.h; sourceTree = ""; }; - 2D891FB6556F9D956EB6BEDCB751DBC9 /* FEmptyNode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FEmptyNode.h; path = Firebase/Database/Snapshot/FEmptyNode.h; sourceTree = ""; }; + 0D7BBF1CA256DD5CC5373AF9AFA6DAA3 /* FUtilities.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FUtilities.h; path = Firebase/Database/Utilities/FUtilities.h; sourceTree = ""; }; + 0D9092922C18E590E576855651B47CA0 /* FIRVerifyClientResponse.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRVerifyClientResponse.m; path = Firebase/Auth/Source/Backend/RPC/FIRVerifyClientResponse.m; sourceTree = ""; }; + 0D94AC28263D760FB28DB16254CD7EE0 /* FConstants.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FConstants.m; path = Firebase/Database/Constants/FConstants.m; sourceTree = ""; }; + 0DB217C21D25DD57BD4ED01980863F57 /* FEmptyNode.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FEmptyNode.m; path = Firebase/Database/Snapshot/FEmptyNode.m; sourceTree = ""; }; + 0E11605ED922BF3A9609BEDDA9D3A508 /* FIRInstanceIDTokenFetchOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstanceIDTokenFetchOperation.m; path = Firebase/InstanceID/FIRInstanceIDTokenFetchOperation.m; sourceTree = ""; }; + 0E505AEB51C810ECED7D9CDB59039119 /* GULUserDefaults.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GULUserDefaults.m; path = GoogleUtilities/UserDefaults/GULUserDefaults.m; sourceTree = ""; }; + 0EEF51ED1F7DDDCC6F039921EE80ABA0 /* FIRGetProjectConfigResponse.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRGetProjectConfigResponse.m; path = Firebase/Auth/Source/Backend/RPC/FIRGetProjectConfigResponse.m; sourceTree = ""; }; + 0F9B91AF6463F5F42306F5EF8F78C0E7 /* FChildChangeAccumulator.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FChildChangeAccumulator.m; path = Firebase/Database/Core/View/Filter/FChildChangeAccumulator.m; sourceTree = ""; }; + 0FEF3A5DDD2A1096864DECC4938C56B0 /* FIRUser.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRUser.m; path = Firebase/Auth/Source/User/FIRUser.m; sourceTree = ""; }; + 103244C20EE5B714BD105D34AB43F909 /* FImmutableTree.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FImmutableTree.m; path = Firebase/Database/Core/Utilities/FImmutableTree.m; sourceTree = ""; }; + 1046E3A0853EDA0F23A2044A814171DD /* block_builder.cc */ = {isa = PBXFileReference; includeInIndex = 1; name = block_builder.cc; path = table/block_builder.cc; sourceTree = ""; }; + 1064E9E80E2A22543B78E6EE17AA7478 /* FIRDatabaseConfig.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRDatabaseConfig.m; path = Firebase/Database/Api/FIRDatabaseConfig.m; sourceTree = ""; }; + 1075AF4BEE8D8B5C3A3087BA42F4EB6E /* hash.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = hash.h; path = util/hash.h; sourceTree = ""; }; + 10BD96D87CE24BF448FD1E1ED1BEEB76 /* RLMSyncManager.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = RLMSyncManager.mm; path = Realm/RLMSyncManager.mm; sourceTree = ""; }; + 10C125F733171CD6B7989E871CFA746E /* collection_notifier.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = collection_notifier.cpp; path = Realm/ObjectStore/src/impl/collection_notifier.cpp; sourceTree = ""; }; + 112C9645A6188F09F438B736FC62A9C2 /* RLMAccessor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RLMAccessor.h; path = include/RLMAccessor.h; sourceTree = ""; }; + 117845BF0C4203B1C750E58B03D1BAC3 /* pb_encode.c */ = {isa = PBXFileReference; includeInIndex = 1; path = pb_encode.c; sourceTree = ""; }; + 128321EB1AAE6BC36CA4C01CE6C4EB68 /* FTuplePathValue.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FTuplePathValue.m; path = Firebase/Database/Utilities/Tuples/FTuplePathValue.m; sourceTree = ""; }; + 12E383778E61F9116632B44A1D457BC1 /* FViewProcessor.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FViewProcessor.m; path = Firebase/Database/FViewProcessor.m; sourceTree = ""; }; + 13666EFB797F97CB2462E213B71F7516 /* FAckUserWrite.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FAckUserWrite.h; path = Firebase/Database/Core/Operation/FAckUserWrite.h; sourceTree = ""; }; + 13A0DFB91F5EBB15E52FAD0BCC8F0D6B /* RLMObject_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RLMObject_Private.h; path = include/RLMObject_Private.h; sourceTree = ""; }; + 13E0199B05E9B7DB1E665CBECF17E0A3 /* FIRAuthDispatcher.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRAuthDispatcher.h; path = Firebase/Auth/Source/Auth/FIRAuthDispatcher.h; sourceTree = ""; }; + 1480955E8FC67E078F64F107FC531AB3 /* RealmSwift-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "RealmSwift-prefix.pch"; sourceTree = ""; }; + 1520860169C36F558C9400AEE9B85B05 /* FTupleCallbackStatus.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FTupleCallbackStatus.h; path = Firebase/Database/Utilities/Tuples/FTupleCallbackStatus.h; sourceTree = ""; }; + 15700BCCF72D99AE9843DAAFC1B6C3D9 /* FIndexedNode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIndexedNode.h; path = Firebase/Database/Snapshot/FIndexedNode.h; sourceTree = ""; }; + 1575BDC8A44D345110381020E5A4D9D4 /* FIREmailAuthProvider.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIREmailAuthProvider.h; path = Firebase/Auth/Source/Public/FIREmailAuthProvider.h; sourceTree = ""; }; + 15B25C69C90955FF88947196A3AFDD6C /* FIRVerifyCustomTokenResponse.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRVerifyCustomTokenResponse.m; path = Firebase/Auth/Source/Backend/RPC/FIRVerifyCustomTokenResponse.m; sourceTree = ""; }; + 168A0ECC159152FA1BC6C8BB145C89E7 /* FIRVerifyClientResponse.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRVerifyClientResponse.h; path = Firebase/Auth/Source/Backend/RPC/FIRVerifyClientResponse.h; sourceTree = ""; }; + 178175168534476B25D815CCE09FFBAA /* FirebaseCore-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "FirebaseCore-dummy.m"; sourceTree = ""; }; + 17876D81B0B570803637EFAD8FF96AA9 /* Firebase.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Firebase.xcconfig; sourceTree = ""; }; + 18DD7B3ABD6071BD9257EBDA91BF46EC /* FIRInstanceID.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstanceID.m; path = Firebase/InstanceID/FIRInstanceID.m; sourceTree = ""; }; + 195F74E43FBD60AA31200764EAC912DC /* FIRDeleteAccountResponse.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRDeleteAccountResponse.m; path = Firebase/Auth/Source/Backend/RPC/FIRDeleteAccountResponse.m; sourceTree = ""; }; + 1975096C14821AA766EFBEE3A0253389 /* GULAppDelegateSwizzler.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GULAppDelegateSwizzler.m; path = GoogleUtilities/AppDelegateSwizzler/GULAppDelegateSwizzler.m; sourceTree = ""; }; + 19A89385F91044B0912780EECC14C715 /* FKeyIndex.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FKeyIndex.h; path = Firebase/Database/FKeyIndex.h; sourceTree = ""; }; + 1AF8487CBD0C3D0EB12AC4C5178FC94A /* FIREmailAuthProvider.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIREmailAuthProvider.m; path = Firebase/Auth/Source/AuthProvider/Email/FIREmailAuthProvider.m; sourceTree = ""; }; + 1B5130DAE005652C131153373B074566 /* FIRAuth_Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRAuth_Internal.h; path = Firebase/Auth/Source/Auth/FIRAuth_Internal.h; sourceTree = ""; }; + 1B668599D384089F3325D8A55E981C5C /* FIRRetryHelper.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRRetryHelper.h; path = Firebase/Database/Core/Utilities/FIRRetryHelper.h; sourceTree = ""; }; + 1BD203F642850FB99D53FF90B3648713 /* GTMSessionFetcherService.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTMSessionFetcherService.h; path = Source/GTMSessionFetcherService.h; sourceTree = ""; }; + 1BD37A5203C1973DBFE2C823214C754B /* FKeepSyncedEventRegistration.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FKeepSyncedEventRegistration.m; path = Firebase/Database/Core/View/FKeepSyncedEventRegistration.m; sourceTree = ""; }; + 1BE36150E0751B05AB5171595A0C88DB /* table_cache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = table_cache.h; path = db/table_cache.h; sourceTree = ""; }; + 1BF22DCBA175A4378C2A97D6F8D36713 /* FIRVerifyAssertionRequest.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRVerifyAssertionRequest.m; path = Firebase/Auth/Source/Backend/RPC/FIRVerifyAssertionRequest.m; sourceTree = ""; }; + 1BF3F64E1475BE07E028DA55AFA132B1 /* FirebaseAuth.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = FirebaseAuth.xcconfig; sourceTree = ""; }; + 1C54C0E8B35B80A544F2AE04C0026A92 /* RLMSyncConfiguration_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RLMSyncConfiguration_Private.h; path = include/RLMSyncConfiguration_Private.h; sourceTree = ""; }; + 1C7461648B53892AA774581D4B45263F /* FIRComponentType.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRComponentType.m; path = Firebase/Core/FIRComponentType.m; sourceTree = ""; }; + 1C7788A344601E23B059C945E29BE4BE /* FIRResetPasswordRequest.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRResetPasswordRequest.m; path = Firebase/Auth/Source/Backend/RPC/FIRResetPasswordRequest.m; sourceTree = ""; }; + 1C93662A36961564F04BFD14E042300E /* NSData+SRB64Additions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSData+SRB64Additions.m"; path = "Firebase/Database/third_party/SocketRocket/NSData+SRB64Additions.m"; sourceTree = ""; }; + 1CBF42CF5566A3ADFBB7380739A0B453 /* FIRTwitterAuthProvider.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRTwitterAuthProvider.m; path = Firebase/Auth/Source/AuthProvider/Twitter/FIRTwitterAuthProvider.m; sourceTree = ""; }; + 1CE41B1B68A7964377A4CB3269B1109A /* FTupleObjectNode.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FTupleObjectNode.m; path = Firebase/Database/Utilities/Tuples/FTupleObjectNode.m; sourceTree = ""; }; + 1D722C4B7FB1A7069AAAEC261E6B6840 /* leveldb-library.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "leveldb-library.modulemap"; sourceTree = ""; }; + 1E128AF0D7AAA1FBE6524F842CCFA8E2 /* comparator.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = comparator.h; path = include/leveldb/comparator.h; sourceTree = ""; }; + 1E355ACC916C76ABD3E66EF620E7F511 /* FIRIMessageCode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRIMessageCode.h; path = Firebase/InstanceID/FIRIMessageCode.h; sourceTree = ""; }; + 1E3881598FEC21DCB337FDB827BA761C /* FPath.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FPath.m; path = Firebase/Database/Core/Utilities/FPath.m; sourceTree = ""; }; + 1E3CC3A0903D2B06FBABD098A30B6D98 /* GULAppEnvironmentUtil.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GULAppEnvironmentUtil.h; path = GoogleUtilities/Environment/third_party/GULAppEnvironmentUtil.h; sourceTree = ""; }; + 1E46A75AC055110C5FEBBFDE000DB696 /* NSData+SRB64Additions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSData+SRB64Additions.h"; path = "Firebase/Database/third_party/SocketRocket/NSData+SRB64Additions.h"; sourceTree = ""; }; + 1F7B3B758E092FAF7DF008CA3C8740C2 /* FSparseSnapshotTree.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FSparseSnapshotTree.m; path = Firebase/Database/Core/FSparseSnapshotTree.m; sourceTree = ""; }; + 1FA59C26623D9F8F9CDE1F488830B294 /* FIRAuthBackend.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRAuthBackend.m; path = Firebase/Auth/Source/Backend/FIRAuthBackend.m; sourceTree = ""; }; + 1FA5FE2C9ABE97C40A9AE87532F186B2 /* Pods-shlack-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-shlack-Info.plist"; sourceTree = ""; }; + 20E3BD16A5CBB39129D209EC02799FC2 /* FIRAuthAppCredential.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRAuthAppCredential.m; path = Firebase/Auth/Source/SystemService/FIRAuthAppCredential.m; sourceTree = ""; }; + 21B8D37C29BEA66851AD9C155AD04282 /* FIRInstanceID+Private.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "FIRInstanceID+Private.m"; path = "Firebase/InstanceID/FIRInstanceID+Private.m"; sourceTree = ""; }; + 22387CD5355F8179248244662B1E6EAD /* FIRAuthKeychain.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRAuthKeychain.h; path = Firebase/Auth/Source/Storage/FIRAuthKeychain.h; sourceTree = ""; }; + 225D1D84A56BD65445D95C2FA4F6F643 /* GULNetworkMessageCode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GULNetworkMessageCode.h; path = GoogleUtilities/Network/Private/GULNetworkMessageCode.h; sourceTree = ""; }; + 22DF7E43517DD24C74217D9C1DDC73EE /* FIRAuthGlobalWorkQueue.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRAuthGlobalWorkQueue.m; path = Firebase/Auth/Source/Auth/FIRAuthGlobalWorkQueue.m; sourceTree = ""; }; + 23AD6FBA52ABE1C628E5D6C40B0C7506 /* FSyncTree.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FSyncTree.h; path = Firebase/Database/Core/FSyncTree.h; sourceTree = ""; }; + 23D468811C0D949050562E629BEE98D8 /* FRepoManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FRepoManager.h; path = Firebase/Database/Core/FRepoManager.h; sourceTree = ""; }; + 241522859A23A26D32973D23832D41A2 /* FIRComponent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRComponent.m; path = Firebase/Core/FIRComponent.m; sourceTree = ""; }; + 24A4568EB58D5E7203824CA349987388 /* FTupleStringNode.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FTupleStringNode.m; path = Firebase/Database/Utilities/Tuples/FTupleStringNode.m; sourceTree = ""; }; + 24C1163079140A22BC6616E81337DD90 /* FIRGetProjectConfigRequest.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRGetProjectConfigRequest.h; path = Firebase/Auth/Source/Backend/RPC/FIRGetProjectConfigRequest.h; sourceTree = ""; }; + 24EB27B9D358997C30CE52903E4F39D8 /* APLevelDB.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = APLevelDB.h; path = "Firebase/Database/third_party/Wrap-leveldb/APLevelDB.h"; sourceTree = ""; }; + 2503917FB14F54ED00FED5021A19A127 /* FirebaseAuthVersion.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FirebaseAuthVersion.m; path = Firebase/Auth/Source/FirebaseAuthVersion.m; sourceTree = ""; }; + 251C6319AD50CB50F18D50CBF727F8B2 /* GoogleToolboxForMac.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = GoogleToolboxForMac.framework; path = GoogleToolboxForMac.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 253D0BC75A7429141DD68D630377A630 /* RLMObject.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RLMObject.h; path = include/RLMObject.h; sourceTree = ""; }; + 25A3BC7BEAEDB5DD17BBDA2377F7B961 /* FTreeNode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FTreeNode.h; path = Firebase/Database/Core/Utilities/FTreeNode.h; sourceTree = ""; }; + 25CBDA09181F1292E2E7B25A7C6E5DA1 /* Optional.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Optional.swift; path = RealmSwift/Optional.swift; sourceTree = ""; }; + 263856EB11737FC99187DE4601B56CB6 /* FTypedefs_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FTypedefs_Private.h; path = Firebase/Database/Api/Private/FTypedefs_Private.h; sourceTree = ""; }; + 266E6E4B14ED9DCDEE8A2AC2201E5DF0 /* shared_realm.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = shared_realm.cpp; path = Realm/ObjectStore/src/shared_realm.cpp; sourceTree = ""; }; + 2731E026BEDB7B9C9FAF3E6588E4B25B /* FEventGenerator.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FEventGenerator.h; path = Firebase/Database/FEventGenerator.h; sourceTree = ""; }; + 2739BDBBDB736DDE2AD7D9AE3B0E7F23 /* FRangedFilter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FRangedFilter.h; path = Firebase/Database/FRangedFilter.h; sourceTree = ""; }; + 27711488C990A49FF4BC68D445A6DDB0 /* FIRUserInfoImpl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRUserInfoImpl.h; path = Firebase/Auth/Source/User/FIRUserInfoImpl.h; sourceTree = ""; }; + 279CB81B9B2115067EA7B522C967994F /* pb_decode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = pb_decode.h; sourceTree = ""; }; + 280BDC3BD29903DC8D284AE0D359866F /* crc32c.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crc32c.h; path = util/crc32c.h; sourceTree = ""; }; + 28AFEE343D35DBF8B6DCFE87AFE69358 /* nanopb-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "nanopb-dummy.m"; sourceTree = ""; }; + 293017362BF588B7E01B3365BA0DD8D5 /* FCompoundWrite.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FCompoundWrite.m; path = Firebase/Database/Snapshot/FCompoundWrite.m; sourceTree = ""; }; + 2954CFD22F14C6F62EC86398F2662B5F /* Realm.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Realm.xcconfig; sourceTree = ""; }; + 2A569AFA27683A40C14753793F8102C9 /* RLMRealmConfiguration.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = RLMRealmConfiguration.mm; path = Realm/RLMRealmConfiguration.mm; sourceTree = ""; }; + 2A63A661A09F5AF8BE8D73E7C32CEDF0 /* system_configuration.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = system_configuration.cpp; path = Realm/ObjectStore/src/sync/impl/apple/system_configuration.cpp; sourceTree = ""; }; + 2B0FF2CEBCFA4F796A1EBD4DAB5CB476 /* FIRAuthWebUtils.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRAuthWebUtils.m; path = Firebase/Auth/Source/Utilities/FIRAuthWebUtils.m; sourceTree = ""; }; + 2B52BD06E070EF7C3FDEB2EF15008A73 /* async_open_task.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = async_open_task.cpp; path = Realm/ObjectStore/src/sync/async_open_task.cpp; sourceTree = ""; }; + 2BA024687FB6DB667E32B4EB66307C83 /* version_set.cc */ = {isa = PBXFileReference; includeInIndex = 1; name = version_set.cc; path = db/version_set.cc; sourceTree = ""; }; + 2BC2CC7E0AAAD019C6DF01B2C24A92E5 /* FIRIdentityToolkitRequest.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRIdentityToolkitRequest.h; path = Firebase/Auth/Source/Backend/FIRIdentityToolkitRequest.h; sourceTree = ""; }; + 2BE761807F568B9CA55FF574D4AA85F5 /* list_notifier.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = list_notifier.cpp; path = Realm/ObjectStore/src/impl/list_notifier.cpp; sourceTree = ""; }; + 2C3CF6927BBA3DC654DDDFBBE5A826A1 /* FIROptions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIROptions.h; path = Firebase/Core/Public/FIROptions.h; sourceTree = ""; }; + 2C50BEF0A78A877D50A490383E2F69F7 /* transact_log_handler.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = transact_log_handler.cpp; path = Realm/ObjectStore/src/impl/transact_log_handler.cpp; sourceTree = ""; }; + 2CA8AD0747075EFF0704CD466D531293 /* crc32c.cc */ = {isa = PBXFileReference; includeInIndex = 1; name = crc32c.cc; path = util/crc32c.cc; sourceTree = ""; }; + 2D7969C0322A3552E87D408FFD4DA638 /* FIRGitHubAuthProvider.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRGitHubAuthProvider.m; path = Firebase/Auth/Source/AuthProvider/GitHub/FIRGitHubAuthProvider.m; sourceTree = ""; }; + 2D847DD9F3FB0F68A17DDB5FBE6DDBD4 /* FQuerySpec.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FQuerySpec.m; path = Firebase/Database/Core/FQuerySpec.m; sourceTree = ""; }; 2DA0D814DFCB860D31D7BCD63D795858 /* FirebaseInstanceID.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = FirebaseInstanceID.framework; path = FirebaseInstanceID.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 2DB2A085966F45C3A818CBC14047E6D6 /* FPathIndex.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FPathIndex.h; path = Firebase/Database/FPathIndex.h; sourceTree = ""; }; - 2E254EAD6B039FB25D501597D8E756B9 /* FCompleteChildSource.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FCompleteChildSource.h; path = Firebase/Database/Core/View/Filter/FCompleteChildSource.h; sourceTree = ""; }; - 2E90DC5761B0C1820542E5FDA3CB58E9 /* pb_encode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = pb_encode.h; sourceTree = ""; }; - 2E964BEF81A9927844FF49288F190ABB /* FIRMutableData.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRMutableData.h; path = Firebase/Database/Public/FIRMutableData.h; sourceTree = ""; }; - 2EE8E8646712F6465542DB43696599EA /* RLMResults.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = RLMResults.mm; path = Realm/RLMResults.mm; sourceTree = ""; }; - 2F53AC4CE8E33751494D1B47F8E19C09 /* GULAppDelegateSwizzler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GULAppDelegateSwizzler.h; path = GoogleUtilities/AppDelegateSwizzler/Private/GULAppDelegateSwizzler.h; sourceTree = ""; }; - 2F73F81DEA5CF679273B8F09D64D99AC /* RLMObjectSchema_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RLMObjectSchema_Private.h; path = include/RLMObjectSchema_Private.h; sourceTree = ""; }; - 2F8CFA33148A22C836E8C5421FD1358E /* FParsedUrl.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FParsedUrl.m; path = Firebase/Database/Utilities/FParsedUrl.m; sourceTree = ""; }; - 2FD42CD6F7559A5019D12D8D9CB074A3 /* SortDescriptor.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SortDescriptor.swift; path = RealmSwift/SortDescriptor.swift; sourceTree = ""; }; - 2FE16464C8B5AED5E827AE2B5AD8D75B /* FLLRBNode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FLLRBNode.h; path = Firebase/Database/third_party/FImmutableSortedDictionary/FImmutableSortedDictionary/FLLRBNode.h; sourceTree = ""; }; - 3085AAF6DF83EF661073653D6C902F72 /* FIRInstanceIDLogger.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceIDLogger.h; path = Firebase/InstanceID/FIRInstanceIDLogger.h; sourceTree = ""; }; - 30B48C9E3842725C6D720A64A8F821B0 /* table.cc */ = {isa = PBXFileReference; includeInIndex = 1; name = table.cc; path = table/table.cc; sourceTree = ""; }; - 31800C2488B08FF45979A152907DF412 /* filter_policy.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = filter_policy.h; path = include/leveldb/filter_policy.h; sourceTree = ""; }; - 31CF49049567C2952F70001E266E8688 /* FAtomicNumber.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FAtomicNumber.m; path = Firebase/Database/Utilities/FAtomicNumber.m; sourceTree = ""; }; - 321E2CE1863C397239F21A2B7EB2C568 /* FTupleNodePath.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FTupleNodePath.m; path = Firebase/Database/Utilities/Tuples/FTupleNodePath.m; sourceTree = ""; }; - 3228708E5B58D25AAB313EA309F84449 /* FTupleObjects.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FTupleObjects.m; path = Firebase/Database/Utilities/Tuples/FTupleObjects.m; sourceTree = ""; }; - 324605F9A7C1A835798788A242AC925F /* options.cc */ = {isa = PBXFileReference; includeInIndex = 1; name = options.cc; path = util/options.cc; sourceTree = ""; }; - 3290AA8D179B7452FFC34E591B70F890 /* primitive_list_notifier.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = primitive_list_notifier.cpp; path = Realm/ObjectStore/src/impl/primitive_list_notifier.cpp; sourceTree = ""; }; - 32FCEDC31CAE44403C5489CD6E2F60D1 /* memtable.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = memtable.h; path = db/memtable.h; sourceTree = ""; }; - 331AE045C22D6C1F25D1F2E041AA8D07 /* GoogleAppMeasurement.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = GoogleAppMeasurement.xcconfig; sourceTree = ""; }; - 333C12F1E38DA147596F45D3EF0708DC /* APLevelDB.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = APLevelDB.mm; path = "Firebase/Database/third_party/Wrap-leveldb/APLevelDB.mm"; sourceTree = ""; }; - 33708D4C6B415884B8D564FE3E539048 /* FKeepSyncedEventRegistration.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FKeepSyncedEventRegistration.h; path = Firebase/Database/Core/View/FKeepSyncedEventRegistration.h; sourceTree = ""; }; - 3401E71B5CAB448A7EFAFBFC2C5E55EE /* system_configuration.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = system_configuration.cpp; path = Realm/ObjectStore/src/sync/impl/apple/system_configuration.cpp; sourceTree = ""; }; - 347C795EAA4A6BFE0316100938BDA496 /* sync_manager.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = sync_manager.cpp; path = Realm/ObjectStore/src/sync/sync_manager.cpp; sourceTree = ""; }; - 3503C42E4DCCECD330D850A42828A4B9 /* NSError+RLMSync.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSError+RLMSync.m"; path = "Realm/NSError+RLMSync.m"; sourceTree = ""; }; - 354821E162D3DDE10F0917D9640FB49F /* FMerge.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FMerge.m; path = Firebase/Database/Core/Operation/FMerge.m; sourceTree = ""; }; - 356F28678750FDD965D0826202430215 /* FIRInstanceIDTokenDeleteOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstanceIDTokenDeleteOperation.m; path = Firebase/InstanceID/FIRInstanceIDTokenDeleteOperation.m; sourceTree = ""; }; - 358D4DCDCDD9B38F0A7ED8571CAC249A /* two_level_iterator.cc */ = {isa = PBXFileReference; includeInIndex = 1; name = two_level_iterator.cc; path = table/two_level_iterator.cc; sourceTree = ""; }; - 360B1CE1375116C8D5A01EDF7C70D915 /* FTupleObjects.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FTupleObjects.h; path = Firebase/Database/Utilities/Tuples/FTupleObjects.h; sourceTree = ""; }; - 36110B45321463CA3F0F1C3E5235D72C /* FMaxNode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FMaxNode.h; path = Firebase/Database/FMaxNode.h; sourceTree = ""; }; - 367FC09A1CDE1772FA3C07D07C9EBFDD /* Object.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Object.swift; path = RealmSwift/Object.swift; sourceTree = ""; }; - 374861B0DCA3C592DB0126E641796E9D /* FIRInstanceIDDefines.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceIDDefines.h; path = Firebase/InstanceID/FIRInstanceIDDefines.h; sourceTree = ""; }; - 380E7FEB1E34817223258CC2E47839B8 /* GULAppEnvironmentUtil.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GULAppEnvironmentUtil.h; path = GoogleUtilities/Environment/third_party/GULAppEnvironmentUtil.h; sourceTree = ""; }; - 392BC607F30B1432035F81920C54708B /* FCacheNode.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FCacheNode.m; path = Firebase/Database/Core/View/FCacheNode.m; sourceTree = ""; }; - 39468BF6D2F36C7C55A25207EFAA8400 /* RLMObjectStore.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = RLMObjectStore.mm; path = Realm/RLMObjectStore.mm; sourceTree = ""; }; - 39AB95CDC1D1B2D6763872B50B64D557 /* nanopb-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "nanopb-prefix.pch"; sourceTree = ""; }; - 39B9E708E29D6B502BEE2C8C220DCD01 /* filter_block.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = filter_block.h; path = table/filter_block.h; sourceTree = ""; }; - 3AAE1D6E20CDBD3EF2F63E2AEE3900E5 /* hash.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = hash.h; path = util/hash.h; sourceTree = ""; }; - 3B3D9F339FCA01A7F1DB3948E60D0D8A /* FIRDatabase_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRDatabase_Private.h; path = Firebase/Database/Api/Private/FIRDatabase_Private.h; sourceTree = ""; }; - 3B71F4EF0FBDE6C2BE584F18FD758591 /* work_queue.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = work_queue.cpp; path = Realm/ObjectStore/src/sync/impl/work_queue.cpp; sourceTree = ""; }; - 3C46FBB4F3EFE1D6813BC3216242E777 /* RLMRealmConfiguration+Sync.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = "RLMRealmConfiguration+Sync.mm"; path = "Realm/RLMRealmConfiguration+Sync.mm"; sourceTree = ""; }; - 3CD20938E2A49E0DECE51AB2A29FA90B /* FirebaseInstanceID.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = FirebaseInstanceID.modulemap; sourceTree = ""; }; - 3D2D6183AF49702E75CD5060B8B6B996 /* YMTGetDeviceName.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = YMTGetDeviceName.swift; path = YMTGetDeviceName/YMTGetDeviceName.swift; sourceTree = ""; }; - 3D9B75AAAF457BEDD93B15CC2445F03E /* FChildrenNode.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FChildrenNode.m; path = Firebase/Database/Snapshot/FChildrenNode.m; sourceTree = ""; }; - 3DB9A61749E2672591F3744B8E0A809B /* filename.cc */ = {isa = PBXFileReference; includeInIndex = 1; name = filename.cc; path = db/filename.cc; sourceTree = ""; }; - 3DBA7F7E33E765B5EF83F01853E4A8D3 /* LinkingObjects.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = LinkingObjects.swift; path = RealmSwift/LinkingObjects.swift; sourceTree = ""; }; - 3DF2F499DB437D0FF2DBC83A20F5A7E0 /* thread_safe_reference.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = thread_safe_reference.cpp; path = Realm/ObjectStore/src/thread_safe_reference.cpp; sourceTree = ""; }; - 3DF61F0A3188A0CDD2831F96085441DA /* FIRErrorCode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRErrorCode.h; path = Firebase/Core/Private/FIRErrorCode.h; sourceTree = ""; }; - 3DFAA0F16D1348D8C2B1658D9FEEBA6F /* arena.cc */ = {isa = PBXFileReference; includeInIndex = 1; name = arena.cc; path = util/arena.cc; sourceTree = ""; }; - 3E57E32692DD986A3AF9041B520C8991 /* FIRInstanceIDCombinedHandler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceIDCombinedHandler.h; path = Firebase/InstanceID/FIRInstanceIDCombinedHandler.h; sourceTree = ""; }; - 3E64B20CD2651D359E1075FA9DD005A4 /* GULNetwork.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GULNetwork.m; path = GoogleUtilities/Network/GULNetwork.m; sourceTree = ""; }; - 3EA42F70B1784F4D075A352FF8C115BA /* Pods-shlack-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-shlack-frameworks.sh"; sourceTree = ""; }; - 3EB756799EAEA078553AC4D8FAF16C12 /* FIRInstanceID+Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FIRInstanceID+Private.h"; path = "Firebase/InstanceID/FIRInstanceID+Private.h"; sourceTree = ""; }; - 3EC378DBAAD14FED18E85BAC4DDC1B9C /* FIRDatabaseReference.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRDatabaseReference.m; path = Firebase/Database/FIRDatabaseReference.m; sourceTree = ""; }; - 3EEDAC8F7F06C08AB9877AA430A7983F /* coding.cc */ = {isa = PBXFileReference; includeInIndex = 1; name = coding.cc; path = util/coding.cc; sourceTree = ""; }; - 3F6F738A475EE187EFCC6CA3D7D7BDED /* YMTGetDeviceName-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "YMTGetDeviceName-prefix.pch"; sourceTree = ""; }; - 403F1CA65D2DF40D5C0E923CA946D00B /* FRepoManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FRepoManager.h; path = Firebase/Database/Core/FRepoManager.h; sourceTree = ""; }; - 412233D9181C6BAF1004CABE84CE904D /* FTupleSetIdPath.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FTupleSetIdPath.m; path = Firebase/Database/Utilities/Tuples/FTupleSetIdPath.m; sourceTree = ""; }; - 412BF47C340E394AF8A525A4774A6693 /* FIRInstanceIDCheckinPreferences.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstanceIDCheckinPreferences.m; path = Firebase/InstanceID/FIRInstanceIDCheckinPreferences.m; sourceTree = ""; }; - 413F455B2175522766286EA7FB80499B /* GULUserDefaults.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GULUserDefaults.m; path = GoogleUtilities/UserDefaults/GULUserDefaults.m; sourceTree = ""; }; - 415713C0C4491CDFF625AC7F54AEC1A9 /* RLMSyncManager.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = RLMSyncManager.mm; path = Realm/RLMSyncManager.mm; sourceTree = ""; }; - 41E535603585A6792F57470F8FE246D7 /* RLMSyncCredentials.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RLMSyncCredentials.h; path = include/RLMSyncCredentials.h; sourceTree = ""; }; - 42771769BD253F13FD4184175F0EF52E /* FEventRaiser.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FEventRaiser.h; path = Firebase/Database/Core/View/FEventRaiser.h; sourceTree = ""; }; - 427CD3BA94C49C7D6C2B23D08F0FEFA9 /* crc32c.cc */ = {isa = PBXFileReference; includeInIndex = 1; name = crc32c.cc; path = util/crc32c.cc; sourceTree = ""; }; - 42E165143E04061420005C3CC9D3B9C4 /* FIRInstanceIDKeychain.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstanceIDKeychain.m; path = Firebase/InstanceID/FIRInstanceIDKeychain.m; sourceTree = ""; }; - 43651A7A75597B228F098861DBC219A6 /* FIRComponentContainer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRComponentContainer.m; path = Firebase/Core/FIRComponentContainer.m; sourceTree = ""; }; + 2E10B8CBFE9FB895BBF4417165F81CCB /* FIRVerifyCustomTokenRequest.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRVerifyCustomTokenRequest.m; path = Firebase/Auth/Source/Backend/RPC/FIRVerifyCustomTokenRequest.m; sourceTree = ""; }; + 2E241B23BEB8AA88993981E98BC563BB /* sync_session.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = sync_session.cpp; path = Realm/ObjectStore/src/sync/sync_session.cpp; sourceTree = ""; }; + 2E37C16442C566723A2F70A310AB2405 /* FIRAuthURLPresenter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRAuthURLPresenter.m; path = Firebase/Auth/Source/Utilities/FIRAuthURLPresenter.m; sourceTree = ""; }; + 2E5C1C8353925A910534C6793C1F018A /* List.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = List.swift; path = RealmSwift/List.swift; sourceTree = ""; }; + 2F107E251B75890B91C3B6A59192B2C5 /* FIRAuthWebViewController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRAuthWebViewController.h; path = Firebase/Auth/Source/Utilities/FIRAuthWebViewController.h; sourceTree = ""; }; + 2F3BC906D70B72CD86FDA8DFC5414068 /* partial_sync.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = partial_sync.cpp; path = Realm/ObjectStore/src/sync/partial_sync.cpp; sourceTree = ""; }; + 2FC1BAB4346FFC3D7FFD8CC78684A7BA /* FIRGameCenterAuthProvider.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRGameCenterAuthProvider.h; path = Firebase/Auth/Source/Public/FIRGameCenterAuthProvider.h; sourceTree = ""; }; + 2FD12836152CA9E3F0A98BB1ABFA18E8 /* FIRInstanceIDCheckinStore.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceIDCheckinStore.h; path = Firebase/InstanceID/FIRInstanceIDCheckinStore.h; sourceTree = ""; }; + 30101B7582E0484BB58CD82EC5173C97 /* FIRComponentContainer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRComponentContainer.m; path = Firebase/Core/FIRComponentContainer.m; sourceTree = ""; }; + 30A75DEC06AE53698309EEB59A309021 /* FIndex.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIndex.h; path = Firebase/Database/FIndex.h; sourceTree = ""; }; + 312694387F111886B150F37D1EAA0F0F /* FIRComponentContainer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRComponentContainer.h; path = Firebase/Core/Private/FIRComponentContainer.h; sourceTree = ""; }; + 317104CE9CF18B885952E493FE2C9863 /* RLMObservation.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = RLMObservation.mm; path = Realm/RLMObservation.mm; sourceTree = ""; }; + 3193B3EA2ECEEFC05137F5A4028FAA82 /* c.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = c.h; path = include/leveldb/c.h; sourceTree = ""; }; + 319C651F668A24B16876B0232DED9873 /* RLMSyncCredentials.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RLMSyncCredentials.h; path = include/RLMSyncCredentials.h; sourceTree = ""; }; + 31D5065414E22C1D253011FB1102B863 /* RLMRealmConfiguration.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RLMRealmConfiguration.h; path = include/RLMRealmConfiguration.h; sourceTree = ""; }; + 3245CC589AB66688DD8D9A321384622F /* FIRVerifyAssertionRequest.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRVerifyAssertionRequest.h; path = Firebase/Auth/Source/Backend/RPC/FIRVerifyAssertionRequest.h; sourceTree = ""; }; + 32D64A674E07A597261E5B4E5306A40E /* FLimitedFilter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FLimitedFilter.h; path = Firebase/Database/Core/View/Filter/FLimitedFilter.h; sourceTree = ""; }; + 32EC12462B9D39F14F0B8C3CFCB58150 /* slice.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = slice.h; path = include/leveldb/slice.h; sourceTree = ""; }; + 331DCDC6C84B7C2086F1F566F14552F6 /* RLMObjectSchema.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = RLMObjectSchema.mm; path = Realm/RLMObjectSchema.mm; sourceTree = ""; }; + 3363F73C45183AA1BF9BDFFAF760A816 /* FIRUserInfo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRUserInfo.h; path = Firebase/Auth/Source/Public/FIRUserInfo.h; sourceTree = ""; }; + 33A41C9E357F72783A47CBE4CF871CB4 /* FIRInstanceIDTokenStore.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceIDTokenStore.h; path = Firebase/InstanceID/FIRInstanceIDTokenStore.h; sourceTree = ""; }; + 33E5678280D2DDB66796338EB6F2E441 /* RLMSyncSessionRefreshHandle.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = RLMSyncSessionRefreshHandle.mm; path = Realm/RLMSyncSessionRefreshHandle.mm; sourceTree = ""; }; + 3445F529774697D3E284BAEF8861D67E /* FIRInstanceIDStringEncoding.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceIDStringEncoding.h; path = Firebase/InstanceID/FIRInstanceIDStringEncoding.h; sourceTree = ""; }; + 34B70BF1D157DDBF3CE24B3D3F6689EB /* FirebaseInstanceID-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "FirebaseInstanceID-dummy.m"; sourceTree = ""; }; + 34BF668BBDBF8FF1E6058B2D519D7E74 /* FIRDataSnapshot.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRDataSnapshot.h; path = Firebase/Database/Public/FIRDataSnapshot.h; sourceTree = ""; }; + 34F49BD5DE455C81859F8CE999F87D89 /* FLLRBValueNode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FLLRBValueNode.h; path = Firebase/Database/third_party/FImmutableSortedDictionary/FImmutableSortedDictionary/FLLRBValueNode.h; sourceTree = ""; }; + 3502BA5E54A949CC685BE45EB6002540 /* FOverwrite.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FOverwrite.h; path = Firebase/Database/Core/Operation/FOverwrite.h; sourceTree = ""; }; + 350E24159FEDE19D0AC2FB86346B163D /* results_notifier.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = results_notifier.cpp; path = Realm/ObjectStore/src/impl/results_notifier.cpp; sourceTree = ""; }; + 35165AAD2F2326C05636F3180530013B /* RLMSyncCredentials.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RLMSyncCredentials.m; path = Realm/RLMSyncCredentials.m; sourceTree = ""; }; + 3566036C291C62F3116EDC651745054E /* FIRResetPasswordResponse.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRResetPasswordResponse.m; path = Firebase/Auth/Source/Backend/RPC/FIRResetPasswordResponse.m; sourceTree = ""; }; + 358CEC6E846D137CE8EF2BC2CB08A915 /* filter_block.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = filter_block.h; path = table/filter_block.h; sourceTree = ""; }; + 35AE75C65D4395F4BBA0698E249E6DB8 /* iterator_wrapper.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = iterator_wrapper.h; path = table/iterator_wrapper.h; sourceTree = ""; }; + 35E8BA233A68904EAB3436AEDB9989A9 /* FIRAuthTokenResult_Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRAuthTokenResult_Internal.h; path = Firebase/Auth/Source/Auth/FIRAuthTokenResult_Internal.h; sourceTree = ""; }; + 36216EDB4A6471893874ECC4B0DC140B /* FPersistenceManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FPersistenceManager.h; path = Firebase/Database/Persistence/FPersistenceManager.h; sourceTree = ""; }; + 36495A048833A2B960CF63D1AE73C26B /* FServerValues.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FServerValues.h; path = Firebase/Database/Core/FServerValues.h; sourceTree = ""; }; + 365DF144F3775DC7733C55B5A3A2B6FE /* Pods-shlack-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-shlack-umbrella.h"; sourceTree = ""; }; + 366F4C1F56F6E0B10E73A943629F9128 /* FListenComplete.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FListenComplete.m; path = Firebase/Database/FListenComplete.m; sourceTree = ""; }; + 369C78DEF4C634414A21D2E08A7F86AC /* RLMThreadSafeReference.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = RLMThreadSafeReference.mm; path = Realm/RLMThreadSafeReference.mm; sourceTree = ""; }; + 370069EE1992C0FA848E4FAA1CEF94F7 /* FIRAuthAPNSTokenManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRAuthAPNSTokenManager.h; path = Firebase/Auth/Source/SystemService/FIRAuthAPNSTokenManager.h; sourceTree = ""; }; + 371E92FE1D34B870CA3743CEE73E7984 /* fbase64.c */ = {isa = PBXFileReference; includeInIndex = 1; name = fbase64.c; path = Firebase/Database/third_party/SocketRocket/fbase64.c; sourceTree = ""; }; + 377C2A565B327FAF69E7F68B85B028A3 /* placeholder.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = placeholder.cpp; path = Realm/ObjectStore/src/placeholder.cpp; sourceTree = ""; }; + 37DF19FC2B88C9423419C6300C786538 /* FIRDatabaseComponent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRDatabaseComponent.m; path = Firebase/Database/Api/FIRDatabaseComponent.m; sourceTree = ""; }; + 38529296CA8DE7D231F53145F4FF91D0 /* RLMSyncConfiguration.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = RLMSyncConfiguration.mm; path = Realm/RLMSyncConfiguration.mm; sourceTree = ""; }; + 38C38B6A2308DBD49EEF3B1904EBAA30 /* FIRSignUpNewUserRequest.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRSignUpNewUserRequest.m; path = Firebase/Auth/Source/Backend/RPC/FIRSignUpNewUserRequest.m; sourceTree = ""; }; + 38E5895CFB3AA2C62927A8566D4688AC /* FIRSecureTokenResponse.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRSecureTokenResponse.h; path = Firebase/Auth/Source/Backend/RPC/FIRSecureTokenResponse.h; sourceTree = ""; }; + 39A16E6E03CED12E43AF45C278F768FC /* FEventRaiser.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FEventRaiser.m; path = Firebase/Database/Core/View/FEventRaiser.m; sourceTree = ""; }; + 39D7D8A8552A0CF9834F3135FA02393C /* FIRSecureTokenService.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRSecureTokenService.m; path = Firebase/Auth/Source/SystemService/FIRSecureTokenService.m; sourceTree = ""; }; + 39F36EB7E6D9A494ADEFB648FCC6AF40 /* GoogleToolboxForMac-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "GoogleToolboxForMac-dummy.m"; sourceTree = ""; }; + 3A048EA54D63E7A9BD39B4388DCA6B48 /* object_notifier.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = object_notifier.cpp; path = Realm/ObjectStore/src/impl/object_notifier.cpp; sourceTree = ""; }; + 3A63A9AECC089F84F0DA8D356F4C9803 /* FRepo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FRepo.m; path = Firebase/Database/Core/FRepo.m; sourceTree = ""; }; + 3A6A3A305FA74E69E99FF8ECF47B12B4 /* GULAppDelegateSwizzler_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GULAppDelegateSwizzler_Private.h; path = GoogleUtilities/AppDelegateSwizzler/Internal/GULAppDelegateSwizzler_Private.h; sourceTree = ""; }; + 3AA1B6314F3E0694E42F14AF73C93E2B /* FListenProvider.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FListenProvider.m; path = Firebase/Database/Core/FListenProvider.m; sourceTree = ""; }; + 3AA569CA9554B67CC7193B1F9F48E987 /* SwiftyJSON.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SwiftyJSON.xcconfig; sourceTree = ""; }; + 3B4105D5FCBFD78F353F2704EE28A967 /* FTypedefs.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FTypedefs.h; path = Firebase/Database/Utilities/FTypedefs.h; sourceTree = ""; }; + 3BD5E3EB0A8F75398B40CAF81DAA4994 /* GTMSessionFetcherLogging.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GTMSessionFetcherLogging.m; path = Source/GTMSessionFetcherLogging.m; sourceTree = ""; }; + 3C250A1012E94B50B941142D6A25706B /* FIRAdditionalUserInfo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRAdditionalUserInfo.m; path = Firebase/Auth/Source/User/FIRAdditionalUserInfo.m; sourceTree = ""; }; + 3CA4053F3021A8F8E3B6EF7EC08A49B8 /* FIRInstanceIDKeyPair.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceIDKeyPair.h; path = Firebase/InstanceID/FIRInstanceIDKeyPair.h; sourceTree = ""; }; + 3CA7730B596A939B000074A39900B638 /* RLMRealmConfiguration_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RLMRealmConfiguration_Private.h; path = include/RLMRealmConfiguration_Private.h; sourceTree = ""; }; + 3CCBEF4E5A31ADF0304F144058BC1082 /* object_schema.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = object_schema.cpp; path = Realm/ObjectStore/src/object_schema.cpp; sourceTree = ""; }; + 3D0E589ABCC22FD1F7DE955BAF9421EB /* GTMSessionFetcher.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GTMSessionFetcher.m; path = Source/GTMSessionFetcher.m; sourceTree = ""; }; + 3DFEAE7BC34411662E283597E9C0A476 /* GULNetworkURLSession.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GULNetworkURLSession.h; path = GoogleUtilities/Network/Private/GULNetworkURLSession.h; sourceTree = ""; }; + 3E3F1AE0F2ED283BE153136FF024CAAF /* FRangeMerge.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FRangeMerge.m; path = Firebase/Database/Core/FRangeMerge.m; sourceTree = ""; }; + 3E69242FCA63EC421BBA8B9B440B2757 /* FIRInstanceIDAuthKeyChain.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceIDAuthKeyChain.h; path = Firebase/InstanceID/FIRInstanceIDAuthKeyChain.h; sourceTree = ""; }; + 3E78C4F1EC10ED9AF2331B2325B87B47 /* FIRVerifyCustomTokenResponse.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRVerifyCustomTokenResponse.h; path = Firebase/Auth/Source/Backend/RPC/FIRVerifyCustomTokenResponse.h; sourceTree = ""; }; + 3E9412137487BB363BB73FF86053C103 /* RLMListBase.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RLMListBase.h; path = include/RLMListBase.h; sourceTree = ""; }; + 3E95516A1622FF8188FED7734133C71D /* FIRInstanceIDVersionUtilities.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstanceIDVersionUtilities.m; path = Firebase/InstanceID/FIRInstanceIDVersionUtilities.m; sourceTree = ""; }; + 3ED160332E24F454510A2975E92DC7B4 /* table_builder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = table_builder.h; path = include/leveldb/table_builder.h; sourceTree = ""; }; + 3EE5E49E0608DF2B106FA14CD4382146 /* FIRInstanceIDAuthKeyChain.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstanceIDAuthKeyChain.m; path = Firebase/InstanceID/FIRInstanceIDAuthKeyChain.m; sourceTree = ""; }; + 3FC03AE08D8CC0D4ADB047141E3E2A4C /* FChildrenNode.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FChildrenNode.m; path = Firebase/Database/Snapshot/FChildrenNode.m; sourceTree = ""; }; + 403A530960A073F147E1456CAF0B48C2 /* FChange.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FChange.h; path = Firebase/Database/Core/View/FChange.h; sourceTree = ""; }; + 403DDE32930258D77204697883A2E4AD /* RLMProperty_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RLMProperty_Private.h; path = include/RLMProperty_Private.h; sourceTree = ""; }; + 404C184F4A19986FF60DBDE97D252565 /* FIRVerifyPhoneNumberResponse.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRVerifyPhoneNumberResponse.m; path = Firebase/Auth/Source/Backend/RPC/FIRVerifyPhoneNumberResponse.m; sourceTree = ""; }; + 4053BAB64C893FA4E744547EE78692F2 /* status.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = status.h; path = include/leveldb/status.h; sourceTree = ""; }; + 407EA5A7A2C53526148F28A437111F9D /* table.cc */ = {isa = PBXFileReference; includeInIndex = 1; name = table.cc; path = table/table.cc; sourceTree = ""; }; + 40827A77ECF85BE14435A8DE114C9F72 /* FIRInstanceIDCheckinService.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstanceIDCheckinService.m; path = Firebase/InstanceID/FIRInstanceIDCheckinService.m; sourceTree = ""; }; + 40BDC989C087F10D8FE131E1160E1568 /* weak_realm_notifier.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = weak_realm_notifier.cpp; path = Realm/ObjectStore/src/impl/weak_realm_notifier.cpp; sourceTree = ""; }; + 40EE662D9466A0FCBCCE46D120E17B22 /* histogram.cc */ = {isa = PBXFileReference; includeInIndex = 1; name = histogram.cc; path = util/histogram.cc; sourceTree = ""; }; + 413799D8A1874E143FA31C63114DB4AA /* sync_user.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = sync_user.cpp; path = Realm/ObjectStore/src/sync/sync_user.cpp; sourceTree = ""; }; + 413E1484712A1BFF58AF1EF3E2411B2F /* FIRAppAssociationRegistration.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRAppAssociationRegistration.h; path = Firebase/Core/Private/FIRAppAssociationRegistration.h; sourceTree = ""; }; + 413F01E61AE1A7FEF3610C804F1720B6 /* options.cc */ = {isa = PBXFileReference; includeInIndex = 1; name = options.cc; path = util/options.cc; sourceTree = ""; }; + 415E965384979083FA16A4BE75038648 /* FKeyIndex.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FKeyIndex.m; path = Firebase/Database/FKeyIndex.m; sourceTree = ""; }; + 41D26BD3734A72793ED5E83ECF7860EB /* FTupleNodePath.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FTupleNodePath.h; path = Firebase/Database/Utilities/Tuples/FTupleNodePath.h; sourceTree = ""; }; + 41ECA2E45BA02E9B11751E9D60D9A752 /* FTupleOnDisconnect.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FTupleOnDisconnect.h; path = Firebase/Database/Utilities/Tuples/FTupleOnDisconnect.h; sourceTree = ""; }; + 423E3228634A546B789421C8EC80D70A /* FirebaseAnalytics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = FirebaseAnalytics.framework; path = Frameworks/FirebaseAnalytics.framework; sourceTree = ""; }; + 42614DC729A6DCAAA9230BC763AE71F0 /* format.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = format.h; path = table/format.h; sourceTree = ""; }; + 4283D2DCDBD88BDD98B50A3DEE500BBE /* FAtomicNumber.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FAtomicNumber.m; path = Firebase/Database/Utilities/FAtomicNumber.m; sourceTree = ""; }; + 42903EEB17E4647540A3FF8C326242C9 /* SwiftyJSON-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "SwiftyJSON-Info.plist"; sourceTree = ""; }; + 42B6E510B94EE2181DA5B0B4DD1BC413 /* FIRDatabaseQuery_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRDatabaseQuery_Private.h; path = Firebase/Database/Api/Private/FIRDatabaseQuery_Private.h; sourceTree = ""; }; + 42D77715F9EDCB8201ECF4D6952952EF /* FIRTwitterAuthCredential.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRTwitterAuthCredential.h; path = Firebase/Auth/Source/AuthProvider/Twitter/FIRTwitterAuthCredential.h; sourceTree = ""; }; + 42ED19B2BFB9A012FD3D23967FCC50A7 /* FirebaseDatabase-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "FirebaseDatabase-Info.plist"; sourceTree = ""; }; + 43534C5F1E6AC39386A29E62F180519D /* FArraySortedDictionary.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FArraySortedDictionary.m; path = Firebase/Database/third_party/FImmutableSortedDictionary/FImmutableSortedDictionary/FArraySortedDictionary.m; sourceTree = ""; }; 437919EE08EC6BFCCBAC3BD346309742 /* RealmSwift.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = RealmSwift.framework; path = RealmSwift.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 447184185E7C104FDC3809D8238AE451 /* GoogleUtilities-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "GoogleUtilities-umbrella.h"; sourceTree = ""; }; - 447D1DEC11F18E90AA91D4FD16321C09 /* FIRInstanceIDCheckinService.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstanceIDCheckinService.m; path = Firebase/InstanceID/FIRInstanceIDCheckinService.m; sourceTree = ""; }; - 44A4A8DDE5F1F353006691D0DFB1DCF9 /* FCancelEvent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FCancelEvent.m; path = Firebase/Database/Core/View/FCancelEvent.m; sourceTree = ""; }; - 45A051CC54545D97B59C291534A1D1CB /* FRepoManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FRepoManager.m; path = Firebase/Database/Core/FRepoManager.m; sourceTree = ""; }; - 467508FAF85EFF9A04195C0AEB94A583 /* FEventEmitter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FEventEmitter.h; path = Firebase/Database/Utilities/FEventEmitter.h; sourceTree = ""; }; - 468C3CBBC0059F4102A666C15EB466C0 /* FIRInstanceIDTokenManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceIDTokenManager.h; path = Firebase/InstanceID/FIRInstanceIDTokenManager.h; sourceTree = ""; }; - 4692F82DDBA180AD597A2B309C09AF53 /* Results.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Results.swift; path = RealmSwift/Results.swift; sourceTree = ""; }; - 46F91C6D760ABDBFC4E8AD9AC05F5BF0 /* FImmutableSortedSet.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FImmutableSortedSet.h; path = Firebase/Database/third_party/FImmutableSortedDictionary/FImmutableSortedDictionary/FImmutableSortedSet.h; sourceTree = ""; }; - 47A9C45E4D13FC0E853D154D2BF4EC25 /* RLMRealm+Sync.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = "RLMRealm+Sync.mm"; path = "Realm/RLMRealm+Sync.mm"; sourceTree = ""; }; - 47B7F04C40333858D84A0FBCB76E331E /* options.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = options.h; path = include/leveldb/options.h; sourceTree = ""; }; - 47D78AA3536A7E72F9E0CCBBB0289C6B /* SwiftyJSON.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SwiftyJSON.swift; path = Source/SwiftyJSON/SwiftyJSON.swift; sourceTree = ""; }; - 483464A3244B7A27FCE5CFE8C8B32C56 /* object_store.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = object_store.cpp; path = Realm/ObjectStore/src/object_store.cpp; sourceTree = ""; }; - 486A4C9FC893D0234AB58A405C818C98 /* FirebaseDatabase-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "FirebaseDatabase-dummy.m"; sourceTree = ""; }; - 486CBCA5F01350802AD975849019BE61 /* hash.cc */ = {isa = PBXFileReference; includeInIndex = 1; name = hash.cc; path = util/hash.cc; sourceTree = ""; }; - 48D27D6942CCE9C373AFF71C8EB1638C /* FChildEventRegistration.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FChildEventRegistration.m; path = Firebase/Database/Core/View/FChildEventRegistration.m; sourceTree = ""; }; - 498CCCF8ABE35F7A0B071FCB3FCB3473 /* write_batch.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = write_batch.h; path = include/leveldb/write_batch.h; sourceTree = ""; }; - 49939A8FBCC02D977E09551F24F72189 /* FWriteTree.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FWriteTree.h; path = Firebase/Database/Core/FWriteTree.h; sourceTree = ""; }; - 49C259BC6EA6008451F8A3BAB46B58F0 /* FIRDatabaseConfig_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRDatabaseConfig_Private.h; path = Firebase/Database/FIRDatabaseConfig_Private.h; sourceTree = ""; }; - 4A1672A7686DA002ECE0F97EC493A4C8 /* pb_decode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = pb_decode.h; sourceTree = ""; }; - 4A3E9EBA81C313F72F7E28D9CC8EACBE /* FIRComponentType.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRComponentType.m; path = Firebase/Core/FIRComponentType.m; sourceTree = ""; }; - 4A4A11DCC17E1A84AB4D81E46E41CC23 /* FirebaseDatabase-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "FirebaseDatabase-Info.plist"; sourceTree = ""; }; - 4AC85087165273E9FAA51A309487E8F7 /* FOperationSource.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FOperationSource.m; path = Firebase/Database/Core/Operation/FOperationSource.m; sourceTree = ""; }; - 4B7E0C0A6A08418336DEB36B566B336A /* Sync.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Sync.swift; path = RealmSwift/Sync.swift; sourceTree = ""; }; - 4B8FF6200FBB6FB428CA39B34CA3CF4A /* GoogleUtilities.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = GoogleUtilities.modulemap; sourceTree = ""; }; - 4BBC90E46D2D567A9C5DB776BC55647B /* NSError+FIRInstanceID.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSError+FIRInstanceID.h"; path = "Firebase/InstanceID/NSError+FIRInstanceID.h"; sourceTree = ""; }; - 4C0F65922B305108D340B1E3E7C098AE /* FIRInstanceID+Private.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "FIRInstanceID+Private.m"; path = "Firebase/InstanceID/FIRInstanceID+Private.m"; sourceTree = ""; }; - 4C73AAF89E19AD8B6BB739BFB4772943 /* FTransformedEnumerator.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FTransformedEnumerator.m; path = Firebase/Database/FTransformedEnumerator.m; sourceTree = ""; }; - 4D221017AB061F4FB8FF488CE9513AAA /* FTupleFirebase.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FTupleFirebase.h; path = Firebase/Database/Utilities/Tuples/FTupleFirebase.h; sourceTree = ""; }; - 4D3B36FC89E48CC66A13103306192863 /* FLimitedFilter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FLimitedFilter.h; path = Firebase/Database/Core/View/Filter/FLimitedFilter.h; sourceTree = ""; }; - 4D4E000B7FC260074F439925ACF6BEA6 /* FIRInstanceIDTokenFetchOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceIDTokenFetchOperation.h; path = Firebase/InstanceID/FIRInstanceIDTokenFetchOperation.h; sourceTree = ""; }; - 4D650E035292728FB6762A033D55D90E /* FIRInstanceIDKeychain.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceIDKeychain.h; path = Firebase/InstanceID/FIRInstanceIDKeychain.h; sourceTree = ""; }; - 4D76E5B55051BE4BEB78A09CAB455BB2 /* testutil.cc */ = {isa = PBXFileReference; includeInIndex = 1; name = testutil.cc; path = util/testutil.cc; sourceTree = ""; }; - 4DB4BBE0D8A037AB3E89BCF4CEEDF4B6 /* FIRApp.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRApp.m; path = Firebase/Core/FIRApp.m; sourceTree = ""; }; - 4DC4DA200959AF34BC53A06B37D1B29F /* FIRInstanceIDBackupExcludedPlist.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceIDBackupExcludedPlist.h; path = Firebase/InstanceID/FIRInstanceIDBackupExcludedPlist.h; sourceTree = ""; }; - 4DCEFEF627F0A21FD0FBFA3A901ABD16 /* version_edit.cc */ = {isa = PBXFileReference; includeInIndex = 1; name = version_edit.cc; path = db/version_edit.cc; sourceTree = ""; }; - 4E112AE6B24E5753313012A31DA501B3 /* GULNetworkConstants.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GULNetworkConstants.m; path = GoogleUtilities/Network/GULNetworkConstants.m; sourceTree = ""; }; - 4F046B1ECCAF349608951B6FEF96D73C /* FTrackedQueryManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FTrackedQueryManager.h; path = Firebase/Database/Persistence/FTrackedQueryManager.h; sourceTree = ""; }; - 4F302E9739C8CBFB76BCACDF6AA11384 /* two_level_iterator.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = two_level_iterator.h; path = table/two_level_iterator.h; sourceTree = ""; }; - 4F423D73A7D310CD1CBBD58AD48A9EEC /* histogram.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = histogram.h; path = util/histogram.h; sourceTree = ""; }; - 4F6804AF3CC99DDBFC096E15FC0E867A /* FirebaseCore-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "FirebaseCore-dummy.m"; sourceTree = ""; }; - 4FAE6D1A1E91ED0984156C20CB37B099 /* GULLoggerLevel.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GULLoggerLevel.h; path = GoogleUtilities/Logger/Public/GULLoggerLevel.h; sourceTree = ""; }; - 4FC7EC69CE16F71F6F735F6535B6BC03 /* skiplist.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = skiplist.h; path = db/skiplist.h; sourceTree = ""; }; - 4FFADE515AE28D09D752179317522308 /* FIRInstanceIDTokenOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstanceIDTokenOperation.m; path = Firebase/InstanceID/FIRInstanceIDTokenOperation.m; sourceTree = ""; }; - 5098DADAF593781C93B2902E1AD76B83 /* RealmSwift.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = RealmSwift.xcconfig; sourceTree = ""; }; - 50A384C9CA26FE5598BA6C43724571E0 /* block.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = block.h; path = table/block.h; sourceTree = ""; }; + 4386737EBB0742D7CDA568A7437AEA6D /* FIRAuthUIDelegate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRAuthUIDelegate.h; path = Firebase/Auth/Source/Public/FIRAuthUIDelegate.h; sourceTree = ""; }; + 43B1E4CD7B30B9FD278100133C2AC788 /* FirebaseAuth.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = FirebaseAuth.framework; path = FirebaseAuth.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 44D1A66BE035A78A2A5A9D08EBC400DD /* FIRInstanceIDTokenInfo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceIDTokenInfo.h; path = Firebase/InstanceID/FIRInstanceIDTokenInfo.h; sourceTree = ""; }; + 457309B50CCB34B4EEB16D3EBCD63CD1 /* FIRSignInWithGameCenterResponse.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRSignInWithGameCenterResponse.h; path = Firebase/Auth/Source/Backend/RPC/FIRSignInWithGameCenterResponse.h; sourceTree = ""; }; + 45B9E8F78EB3A653A4998443A4E0EA42 /* RLMSyncUtil.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = RLMSyncUtil.mm; path = Realm/RLMSyncUtil.mm; sourceTree = ""; }; + 45F21713D2B7D52DE8A90B302E56361E /* RLMThreadSafeReference.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RLMThreadSafeReference.h; path = include/RLMThreadSafeReference.h; sourceTree = ""; }; + 46B7687FD3EE101278137DB4F2D15F76 /* FTupleObjectNode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FTupleObjectNode.h; path = Firebase/Database/Utilities/Tuples/FTupleObjectNode.h; sourceTree = ""; }; + 46E90D13F1E9D86C7B0C2A9F3C5DF111 /* FIRDeleteAccountRequest.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRDeleteAccountRequest.m; path = Firebase/Auth/Source/Backend/RPC/FIRDeleteAccountRequest.m; sourceTree = ""; }; + 47120502A26AB97C27E79E1E785CBE2B /* FIRInstanceIDTokenManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceIDTokenManager.h; path = Firebase/InstanceID/FIRInstanceIDTokenManager.h; sourceTree = ""; }; + 47E38B24558AFB84F5A3086CB7B260DD /* FIRGetOOBConfirmationCodeResponse.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRGetOOBConfirmationCodeResponse.m; path = Firebase/Auth/Source/Backend/RPC/FIRGetOOBConfirmationCodeResponse.m; sourceTree = ""; }; + 4837A3E145374AA54FB7959101EB68C9 /* FView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FView.h; path = Firebase/Database/Core/View/FView.h; sourceTree = ""; }; + 48EAB618D8FFF168760FB3FA884AA7EE /* FValueIndex.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FValueIndex.m; path = Firebase/Database/FValueIndex.m; sourceTree = ""; }; + 48FCC86FEB7E9E854C3B3D6964303499 /* realm_coordinator.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = realm_coordinator.cpp; path = Realm/ObjectStore/src/impl/realm_coordinator.cpp; sourceTree = ""; }; + 490392EDD7627268C9FAB7A24624D6D8 /* FIREmailLinkSignInResponse.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIREmailLinkSignInResponse.h; path = Firebase/Auth/Source/Backend/RPC/FIREmailLinkSignInResponse.h; sourceTree = ""; }; + 490560DE597BE490978CE844C20F8A7B /* FIRSendVerificationCodeResponse.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRSendVerificationCodeResponse.h; path = Firebase/Auth/Source/Backend/RPC/FIRSendVerificationCodeResponse.h; sourceTree = ""; }; + 490954DCB8534A557B489D042124D4AB /* RLMObjectStore.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RLMObjectStore.h; path = include/RLMObjectStore.h; sourceTree = ""; }; + 492667D699F038B72A09DC04D580E502 /* FIRUserInfoImpl.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRUserInfoImpl.m; path = Firebase/Auth/Source/User/FIRUserInfoImpl.m; sourceTree = ""; }; + 493A4671FC982E50E1722AAC3D936C82 /* FUtilities.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FUtilities.m; path = Firebase/Database/Utilities/FUtilities.m; sourceTree = ""; }; + 493C2F15454D03A6AE8ACA399CFA55FB /* FirebaseInstanceID-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "FirebaseInstanceID-umbrella.h"; sourceTree = ""; }; + 4954F1C6715BCE4C0192048F26C6B961 /* arena.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = arena.h; path = util/arena.h; sourceTree = ""; }; + 49E8998024BDCEBA0D417DED78B7A72B /* RLMResults_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RLMResults_Private.h; path = include/RLMResults_Private.h; sourceTree = ""; }; + 49FE57DEE02C8273164BA4B17B74FD7D /* GoogleUtilities-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "GoogleUtilities-prefix.pch"; sourceTree = ""; }; + 4A4075EE8ADA74E0BFFE03C0A7A5AC19 /* FIRVerifyAssertionResponse.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRVerifyAssertionResponse.h; path = Firebase/Auth/Source/Backend/RPC/FIRVerifyAssertionResponse.h; sourceTree = ""; }; + 4AD358AF8B8E457FBABF9186BFDB8714 /* FRepoInfo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FRepoInfo.m; path = Firebase/Database/Core/FRepoInfo.m; sourceTree = ""; }; + 4AD4B752DF2DA928435F3866BA819EDC /* FIRAuthDefaultUIDelegate.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRAuthDefaultUIDelegate.m; path = Firebase/Auth/Source/Utilities/FIRAuthDefaultUIDelegate.m; sourceTree = ""; }; + 4AE0A71A51049A0E47078626C0441792 /* FIRInstanceIDStore.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceIDStore.h; path = Firebase/InstanceID/FIRInstanceIDStore.h; sourceTree = ""; }; + 4AE3964A18882BDF14E35D26690C023F /* FIRVerifyPasswordRequest.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRVerifyPasswordRequest.h; path = Firebase/Auth/Source/Backend/RPC/FIRVerifyPasswordRequest.h; sourceTree = ""; }; + 4AF9771F0D34D60A3872BC9C17851737 /* FTupleFirebase.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FTupleFirebase.m; path = Firebase/Database/Utilities/Tuples/FTupleFirebase.m; sourceTree = ""; }; + 4B25DF3B407F2F65EE79BA48912F8028 /* GoogleSignIn.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = GoogleSignIn.framework; path = Frameworks/GoogleSignIn.framework; sourceTree = ""; }; + 4B64FA0261C5F960F5C2637B3A67D9A8 /* builder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = builder.h; path = db/builder.h; sourceTree = ""; }; + 4B97D98041083CD171AFCE0FCC1D19B2 /* pb_encode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = pb_encode.h; sourceTree = ""; }; + 4BD117894C2FCA8640DAFFFCF5B5C23D /* RLMSchema_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RLMSchema_Private.h; path = include/RLMSchema_Private.h; sourceTree = ""; }; + 4C02F64E3B8AF0F1985EDA70517FDF04 /* ObjectiveCSupport+Sync.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "ObjectiveCSupport+Sync.swift"; path = "RealmSwift/ObjectiveCSupport+Sync.swift"; sourceTree = ""; }; + 4C46FD680D471DE9583EB8462F8077E0 /* FIRUser_Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRUser_Internal.h; path = Firebase/Auth/Source/User/FIRUser_Internal.h; sourceTree = ""; }; + 4C776EFB57EF3F884ECC512EAC4060A6 /* FPersistenceManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FPersistenceManager.m; path = Firebase/Database/Persistence/FPersistenceManager.m; sourceTree = ""; }; + 4CE3999652B86F545D1E365914E0CB07 /* nanopb.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = nanopb.xcconfig; sourceTree = ""; }; + 4D0C3BE5FF13129641494D44A5B3A232 /* FIRGoogleAuthCredential.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRGoogleAuthCredential.m; path = Firebase/Auth/Source/AuthProvider/Google/FIRGoogleAuthCredential.m; sourceTree = ""; }; + 4D7FCD64F86B4ECEB77B0F8F3F5421BE /* FOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FOperation.h; path = Firebase/Database/Core/Operation/FOperation.h; sourceTree = ""; }; + 4D83019C4A08762D24C8CEE791963D06 /* FTreeSortedDictionaryEnumerator.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FTreeSortedDictionaryEnumerator.m; path = Firebase/Database/third_party/FImmutableSortedDictionary/FImmutableSortedDictionary/FTreeSortedDictionaryEnumerator.m; sourceTree = ""; }; + 4DE456E7946A4CFB47B05FFE4B21FF7A /* FIRSecureTokenResponse.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRSecureTokenResponse.m; path = Firebase/Auth/Source/Backend/RPC/FIRSecureTokenResponse.m; sourceTree = ""; }; + 4DF9FCC67F80A21091A6703EE114D0B5 /* Aliases.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Aliases.swift; path = RealmSwift/Aliases.swift; sourceTree = ""; }; + 4E9BB07A8A7D7C6B7CA6E041C907215D /* FView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FView.m; path = Firebase/Database/Core/View/FView.m; sourceTree = ""; }; + 4F0055900DA4C9C64FA802E4594AAFEF /* block.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = block.h; path = table/block.h; sourceTree = ""; }; + 4F45D0FA0F04D4A08AC604AFD5D68EC4 /* FTreeSortedDictionary.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FTreeSortedDictionary.h; path = Firebase/Database/third_party/FImmutableSortedDictionary/FImmutableSortedDictionary/FTreeSortedDictionary.h; sourceTree = ""; }; + 4F4920DD9F72D5DAC57A1DD95FBC5C00 /* FCancelEvent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FCancelEvent.h; path = Firebase/Database/Core/View/FCancelEvent.h; sourceTree = ""; }; + 5019C60E64C28FC2CEDA68240C1C26B2 /* arena.cc */ = {isa = PBXFileReference; includeInIndex = 1; name = arena.cc; path = util/arena.cc; sourceTree = ""; }; + 507DF04A7C2E3B009DF585F571037580 /* env_posix_test_helper.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = env_posix_test_helper.h; path = util/env_posix_test_helper.h; sourceTree = ""; }; + 507F20DC0B1348EA5661820C9E8517A1 /* GULMutableDictionary.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GULMutableDictionary.m; path = GoogleUtilities/Network/GULMutableDictionary.m; sourceTree = ""; }; + 5081E64B331779B3C3A43EF3AD04343E /* FParsedUrl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FParsedUrl.h; path = Firebase/Database/Utilities/FParsedUrl.h; sourceTree = ""; }; + 508B33D9B03F6454B42ABEDA929AA455 /* NSError+FIRInstanceID.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSError+FIRInstanceID.m"; path = "Firebase/InstanceID/NSError+FIRInstanceID.m"; sourceTree = ""; }; + 50B08459E8B6C646541EC049125FBE02 /* GULApplication.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GULApplication.h; path = GoogleUtilities/AppDelegateSwizzler/Private/GULApplication.h; sourceTree = ""; }; + 50EA409F18B6F7D0E0B80546BFED75BE /* FWebSocketConnection.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FWebSocketConnection.m; path = Firebase/Database/Realtime/FWebSocketConnection.m; sourceTree = ""; }; + 50F9650492AACAF7C1049D722783270F /* RLMSyncPermission.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RLMSyncPermission.h; path = include/RLMSyncPermission.h; sourceTree = ""; }; + 5105C45B6D562B34D4718F4AC8D0217D /* FTupleTransaction.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FTupleTransaction.h; path = Firebase/Database/Utilities/Tuples/FTupleTransaction.h; sourceTree = ""; }; + 51063623BCA58E848432E19D54879107 /* NSError+RLMSync.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSError+RLMSync.h"; path = "include/NSError+RLMSync.h"; sourceTree = ""; }; + 510C193CD9FFA37673FC08ECF6072C76 /* db_iter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = db_iter.h; path = db/db_iter.h; sourceTree = ""; }; + 5138AAF10184F6333F18F47C379CE068 /* SwiftVersion.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SwiftVersion.swift; path = RealmSwift/SwiftVersion.swift; sourceTree = ""; }; + 514833201E9BE927812DDC98E5FC0105 /* FViewCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FViewCache.h; path = Firebase/Database/Core/View/FViewCache.h; sourceTree = ""; }; 51671C73F008B5C0C3751B3855999213 /* FirebaseDatabase.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = FirebaseDatabase.framework; path = FirebaseDatabase.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 51C6DC0CE6EE32DBB86B38A970EA004A /* FSnapshotUtilities.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FSnapshotUtilities.h; path = Firebase/Database/Snapshot/FSnapshotUtilities.h; sourceTree = ""; }; - 51D392DCD6F7E78F352FAD8842C9342F /* memtable.cc */ = {isa = PBXFileReference; includeInIndex = 1; name = memtable.cc; path = db/memtable.cc; sourceTree = ""; }; - 5250F6979C6A846466F1C96501CD26CF /* nanopb-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "nanopb-umbrella.h"; sourceTree = ""; }; - 5257E36D799E88544790C001F9D2E3DB /* FTupleTransaction.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FTupleTransaction.h; path = Firebase/Database/Utilities/Tuples/FTupleTransaction.h; sourceTree = ""; }; - 534C5C59B17DB02D034ADCB92BF3CA51 /* FIRInstanceIDKeyPairStore.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceIDKeyPairStore.h; path = Firebase/InstanceID/FIRInstanceIDKeyPairStore.h; sourceTree = ""; }; - 5384656717C3A6C572CD7DF79C450CA1 /* table.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = table.h; path = include/leveldb/table.h; sourceTree = ""; }; - 53A45680DF1A6981F49774BA0C52F49A /* FStorageEngine.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FStorageEngine.h; path = Firebase/Database/Persistence/FStorageEngine.h; sourceTree = ""; }; - 53BD8835502113C574C389F5F72FDF16 /* FCompoundWrite.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FCompoundWrite.m; path = Firebase/Database/Snapshot/FCompoundWrite.m; sourceTree = ""; }; - 53C097CBB058BD81846287E3694EBF2B /* FIRDatabaseQuery_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRDatabaseQuery_Private.h; path = Firebase/Database/Api/Private/FIRDatabaseQuery_Private.h; sourceTree = ""; }; - 54594BC3ECF721AE29252010C2CD5A87 /* db_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = db_impl.h; path = db/db_impl.h; sourceTree = ""; }; + 517B287F59CA9BC282D4BC820092A3F0 /* FIRLoggerLevel.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRLoggerLevel.h; path = Firebase/Core/Public/FIRLoggerLevel.h; sourceTree = ""; }; + 51A3B651AD393C33184960AABD78F452 /* RLMSyncUtil.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RLMSyncUtil.h; path = include/RLMSyncUtil.h; sourceTree = ""; }; + 51B692F2AD284B41E7A410FA7C153035 /* YMTGetDeviceName-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "YMTGetDeviceName-Info.plist"; sourceTree = ""; }; + 51BBB72541441901F63ACA128FB233A1 /* FIRInstanceID_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceID_Private.h; path = Firebase/InstanceID/Private/FIRInstanceID_Private.h; sourceTree = ""; }; + 5251558E9013572636EC32825B0C2B5B /* FIRAnalyticsConnector.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = FIRAnalyticsConnector.framework; path = Frameworks/FIRAnalyticsConnector.framework; sourceTree = ""; }; + 5279E1699AE4BB2193E54A0BEA1E563C /* leveldb-library-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "leveldb-library-prefix.pch"; sourceTree = ""; }; + 5298DB7938311C818199F20BD5E9B17B /* FTupleStringNode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FTupleStringNode.h; path = Firebase/Database/Utilities/Tuples/FTupleStringNode.h; sourceTree = ""; }; + 53E28C5A63DF6B7590F818E6075F14C7 /* Pods-shlack.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-shlack.debug.xcconfig"; sourceTree = ""; }; + 5436A15B807598AA147D37A03ED78F4F /* write_batch.cc */ = {isa = PBXFileReference; includeInIndex = 1; name = write_batch.cc; path = db/write_batch.cc; sourceTree = ""; }; + 5497FA47B8B99D14E3C9AE15477C3CB7 /* FTupleFirebase.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FTupleFirebase.h; path = Firebase/Database/Utilities/Tuples/FTupleFirebase.h; sourceTree = ""; }; 554465FEB9CBF982D86FB8B8587FB36C /* Pods_shlack.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Pods_shlack.framework; path = "Pods-shlack.framework"; sourceTree = BUILT_PRODUCTS_DIR; }; - 555A139457E8AA4030271B5DB035C1CC /* RLMResults_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RLMResults_Private.h; path = include/RLMResults_Private.h; sourceTree = ""; }; - 56514FFC97467B4FF78779F66B4328D2 /* FViewProcessor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FViewProcessor.h; path = Firebase/Database/FViewProcessor.h; sourceTree = ""; }; - 570EED89545EE847A5FA7530B8E03517 /* FViewProcessorResult.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FViewProcessorResult.h; path = Firebase/Database/FViewProcessorResult.h; sourceTree = ""; }; - 57271B210AA779D7DCD08A4255A28720 /* FPruneForest.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FPruneForest.m; path = Firebase/Database/Persistence/FPruneForest.m; sourceTree = ""; }; - 5855A8E7F2EDEE3B89093D3E8369CD82 /* YMTGetDeviceName-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "YMTGetDeviceName-umbrella.h"; sourceTree = ""; }; - 58566803A75C6624E8A4ECC7CACC1009 /* external_commit_helper.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = external_commit_helper.cpp; path = Realm/ObjectStore/src/impl/apple/external_commit_helper.cpp; sourceTree = ""; }; - 5892CA43063974C0B8E8C8559151659E /* APLevelDB.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = APLevelDB.h; path = "Firebase/Database/third_party/Wrap-leveldb/APLevelDB.h"; sourceTree = ""; }; - 58E5A2E85D3A882C01D7831D09EBC379 /* FIRInstanceIDCheckinPreferences_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceIDCheckinPreferences_Private.h; path = Firebase/InstanceID/FIRInstanceIDCheckinPreferences_Private.h; sourceTree = ""; }; - 593B6C89872966E4FA108CE689CBD08C /* FTupleObjectNode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FTupleObjectNode.h; path = Firebase/Database/Utilities/Tuples/FTupleObjectNode.h; sourceTree = ""; }; - 595D941028421AE2555618A08AEE4B69 /* RLMRealmConfiguration+Sync.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "RLMRealmConfiguration+Sync.h"; path = "include/RLMRealmConfiguration+Sync.h"; sourceTree = ""; }; - 59757D47E77C9DE2758C39FF4FD6960B /* RLMObject_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RLMObject_Private.h; path = include/RLMObject_Private.h; sourceTree = ""; }; - 59AB8E05356D4530D27F43940B33DB45 /* FTupleOnDisconnect.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FTupleOnDisconnect.h; path = Firebase/Database/Utilities/Tuples/FTupleOnDisconnect.h; sourceTree = ""; }; - 59CED40174F5C78767B17971C6B50E34 /* GULLogger.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GULLogger.m; path = GoogleUtilities/Logger/GULLogger.m; sourceTree = ""; }; - 59E6440908823817800B827396EA08D0 /* FTupleStringNode.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FTupleStringNode.m; path = Firebase/Database/Utilities/Tuples/FTupleStringNode.m; sourceTree = ""; }; - 5A0D4812D5C0597A33010AEE9AFB843C /* FOperationSource.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FOperationSource.h; path = Firebase/Database/Core/Operation/FOperationSource.h; sourceTree = ""; }; - 5A0E1E84910D7F5F5112C8CCA2535BED /* FIRBundleUtil.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRBundleUtil.h; path = Firebase/Core/Private/FIRBundleUtil.h; sourceTree = ""; }; - 5ADFCF2A6BEDA2EBC87BFF8D933CB84E /* FirebaseCore-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "FirebaseCore-umbrella.h"; sourceTree = ""; }; - 5AED33C6E5E7F882974F37F687A259D8 /* FRepo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FRepo.m; path = Firebase/Database/Core/FRepo.m; sourceTree = ""; }; - 5AFD917C105355EC1304F66D777BD022 /* FTuplePathValue.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FTuplePathValue.m; path = Firebase/Database/Utilities/Tuples/FTuplePathValue.m; sourceTree = ""; }; - 5B5DD85F6549F5AB5E28D8BFC596D1BC /* crc32c.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crc32c.h; path = util/crc32c.h; sourceTree = ""; }; - 5B724C3E39CCECCC560D97BFF4386417 /* results.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = results.cpp; path = Realm/ObjectStore/src/results.cpp; sourceTree = ""; }; - 5BDB03EEE7AF7372DC965DB46E6F9355 /* FIndexedNode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIndexedNode.h; path = Firebase/Database/Snapshot/FIndexedNode.h; sourceTree = ""; }; - 5BE74820DD643E7AE1AD76F84A71451A /* FIRInstanceIDConstants.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstanceIDConstants.m; path = Firebase/InstanceID/FIRInstanceIDConstants.m; sourceTree = ""; }; - 5D3FE637504FCE117299B6C7F6841AD7 /* FIRAuthInterop.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRAuthInterop.h; path = Interop/Auth/Public/FIRAuthInterop.h; sourceTree = ""; }; - 5D4557ADA6A33DAC8F262137BF3CB8EA /* RLMSyncUtil.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = RLMSyncUtil.mm; path = Realm/RLMSyncUtil.mm; sourceTree = ""; }; - 5D623542074868ED96FD9D908BB1E6A1 /* GULMutableDictionary.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GULMutableDictionary.h; path = GoogleUtilities/Network/Private/GULMutableDictionary.h; sourceTree = ""; }; - 5D8271AC3A1562894E9BBA64D08E59E0 /* FAckUserWrite.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FAckUserWrite.m; path = Firebase/Database/Core/Operation/FAckUserWrite.m; sourceTree = ""; }; - 5DC24D9D371596510B2DFA6387EC24D9 /* FirebaseDatabase-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "FirebaseDatabase-umbrella.h"; sourceTree = ""; }; - 5E019C03F6D81056EDCC6E6727CC5C22 /* FViewCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FViewCache.h; path = Firebase/Database/Core/View/FViewCache.h; sourceTree = ""; }; - 5E5908CD47E8809377098A523758133E /* Pods-shlack-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-shlack-umbrella.h"; sourceTree = ""; }; - 5FEB8EFE990E3AECCDA179E17742174F /* RLMRealmConfiguration.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RLMRealmConfiguration.h; path = include/RLMRealmConfiguration.h; sourceTree = ""; }; - 5FF4486873D7D06300DA3F90612842B8 /* FLevelDBStorageEngine.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FLevelDBStorageEngine.m; path = Firebase/Database/Persistence/FLevelDBStorageEngine.m; sourceTree = ""; }; - 5FF6A45D78980BFC3B688A50B0742026 /* logging.cc */ = {isa = PBXFileReference; includeInIndex = 1; name = logging.cc; path = util/logging.cc; sourceTree = ""; }; - 605C8CBA2775EE42C197990788F44817 /* FIROptions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIROptions.m; path = Firebase/Core/FIROptions.m; sourceTree = ""; }; - 61A8B72D704CBD8227ED3877697FF6C1 /* sync_session.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = sync_session.cpp; path = Realm/ObjectStore/src/sync/sync_session.cpp; sourceTree = ""; }; - 61FFAF66F5EFD6FDAFEBEC40611CC4E1 /* FIRInstanceIDCombinedHandler.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstanceIDCombinedHandler.m; path = Firebase/InstanceID/FIRInstanceIDCombinedHandler.m; sourceTree = ""; }; - 6257B240538B1FCABF83C3D705CA1ED8 /* env_posix.cc */ = {isa = PBXFileReference; includeInIndex = 1; name = env_posix.cc; path = util/env_posix.cc; sourceTree = ""; }; - 62F769A62377AE074D83BF833BDCEC4B /* FIRInstanceIDBackupExcludedPlist.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstanceIDBackupExcludedPlist.m; path = Firebase/InstanceID/FIRInstanceIDBackupExcludedPlist.m; sourceTree = ""; }; - 633916BB48ADABF057C4F0C5972F98D9 /* FIRRetryHelper.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRRetryHelper.m; path = Firebase/Database/Core/Utilities/FIRRetryHelper.m; sourceTree = ""; }; - 6360FE52FEB4053859DF02AF837D48CE /* GULNetworkConstants.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GULNetworkConstants.h; path = GoogleUtilities/Network/Private/GULNetworkConstants.h; sourceTree = ""; }; - 638DAB50762126AF2B0062ECA7459CA2 /* FUtilities.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FUtilities.m; path = Firebase/Database/Utilities/FUtilities.m; sourceTree = ""; }; - 63C81A5E1C52F5654076C17DAB39ECC3 /* FSyncPoint.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FSyncPoint.h; path = Firebase/Database/Core/FSyncPoint.h; sourceTree = ""; }; - 63DFBBA4C20D77335FAA691AC209CEAC /* FMerge.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FMerge.h; path = Firebase/Database/Core/Operation/FMerge.h; sourceTree = ""; }; - 6407733308EDDEA57E305164F4C21FFF /* dbformat.cc */ = {isa = PBXFileReference; includeInIndex = 1; name = dbformat.cc; path = db/dbformat.cc; sourceTree = ""; }; - 646B5BD7E481625B298D4EC2B3F903EE /* dumpfile.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = dumpfile.h; path = include/leveldb/dumpfile.h; sourceTree = ""; }; - 6486DA90003BF29BE5C7E6C3EC823CBC /* FSRWebSocket.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FSRWebSocket.m; path = Firebase/Database/third_party/SocketRocket/FSRWebSocket.m; sourceTree = ""; }; - 64941E8E9CE8E593AB0A0178E4FBED95 /* pb.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = pb.h; sourceTree = ""; }; - 64967F4F7BFC1E0AF598DF0896A520F5 /* object_schema.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = object_schema.cpp; path = Realm/ObjectStore/src/object_schema.cpp; sourceTree = ""; }; - 64CB5A1C55D0DFCA324F5B2488F7F31D /* iterator.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = iterator.h; path = include/leveldb/iterator.h; sourceTree = ""; }; - 663A7E45C8155B43597C41DEB7E64B66 /* GULReachabilityChecker+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "GULReachabilityChecker+Internal.h"; path = "GoogleUtilities/Reachability/GULReachabilityChecker+Internal.h"; sourceTree = ""; }; - 66837E41AD88DE28BEF72385963ABB41 /* FViewProcessor.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FViewProcessor.m; path = Firebase/Database/FViewProcessor.m; sourceTree = ""; }; - 66DEA65F5310D61C072B32E12C655944 /* random.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = random.h; path = util/random.h; sourceTree = ""; }; - 67136CB4DA6EC030CF85638850AFC7F9 /* FirebaseDatabase.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = FirebaseDatabase.xcconfig; sourceTree = ""; }; - 682534987613517E1D2745200990554A /* FCacheNode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FCacheNode.h; path = Firebase/Database/Core/View/FCacheNode.h; sourceTree = ""; }; - 6882CDEDA0F009416E43F9D067403556 /* port_posix_sse.cc */ = {isa = PBXFileReference; includeInIndex = 1; name = port_posix_sse.cc; path = port/port_posix_sse.cc; sourceTree = ""; }; - 68A72EF067B60F56D8A99F7E34997541 /* FConstants.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FConstants.m; path = Firebase/Database/Constants/FConstants.m; sourceTree = ""; }; - 690630AD468306399E4D4370F3CBBE52 /* RLMOptionalBase.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = RLMOptionalBase.mm; path = Realm/RLMOptionalBase.mm; sourceTree = ""; }; - 69147017F1CCE0913F4CE21CBB2D1206 /* FChildChangeAccumulator.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FChildChangeAccumulator.m; path = Firebase/Database/Core/View/Filter/FChildChangeAccumulator.m; sourceTree = ""; }; - 694F140A39301B31EFDB6F309BBA679A /* FIndex.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIndex.m; path = Firebase/Database/FIndex.m; sourceTree = ""; }; - 6995A6D50582A628AF6752F9F34FD53D /* GULUserDefaults.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GULUserDefaults.h; path = GoogleUtilities/UserDefaults/Private/GULUserDefaults.h; sourceTree = ""; }; - 699E2B56BD28AB68FD1F5DF3E6D398CC /* Optional.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Optional.swift; path = RealmSwift/Optional.swift; sourceTree = ""; }; - 69D541F5C1FEFAB528298D80DA53DD16 /* async_open_task.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = async_open_task.cpp; path = Realm/ObjectStore/src/sync/async_open_task.cpp; sourceTree = ""; }; - 6AE2BAA186211C8905ADC2A9C875D796 /* log_reader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = log_reader.h; path = db/log_reader.h; sourceTree = ""; }; - 6B2778F8E602D74E1C549A49A1B00C6B /* GoogleUtilities-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "GoogleUtilities-prefix.pch"; sourceTree = ""; }; - 6B29E92CB2178FD9BE0EA04127DF77D2 /* Realm-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Realm-dummy.m"; sourceTree = ""; }; - 6B69116847CD672F5FBFE5CA1DFE8BE7 /* FRepo_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FRepo_Private.h; path = Firebase/Database/Core/FRepo_Private.h; sourceTree = ""; }; - 6BC9F0DC725D2ADF77D9B413589C76B7 /* GULSwizzler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GULSwizzler.h; path = GoogleUtilities/MethodSwizzler/Private/GULSwizzler.h; sourceTree = ""; }; - 6BD9E51C74E54CDF7B8C30315AFA37AE /* env.cc */ = {isa = PBXFileReference; includeInIndex = 1; name = env.cc; path = util/env.cc; sourceTree = ""; }; - 6BFEE871CFBBE8B140DCF7904F5E6EA5 /* FTree.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FTree.m; path = Firebase/Database/Core/Utilities/FTree.m; sourceTree = ""; }; - 6C011302AADE803C99653794333624F3 /* FTupleBoolBlock.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FTupleBoolBlock.h; path = Firebase/Database/Utilities/Tuples/FTupleBoolBlock.h; sourceTree = ""; }; - 6C0FDC5A901061D4647C269C1223E966 /* SwiftyJSON-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "SwiftyJSON-dummy.m"; sourceTree = ""; }; - 6C34EFABCF8CB239462BA6490EDC257D /* FTupleBoolBlock.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FTupleBoolBlock.m; path = Firebase/Database/Utilities/Tuples/FTupleBoolBlock.m; sourceTree = ""; }; - 6C539B38DC200475939ACD6A2AA0C9DA /* block.cc */ = {isa = PBXFileReference; includeInIndex = 1; name = block.cc; path = table/block.cc; sourceTree = ""; }; - 6C7E50031E5AA0C49FC2904B0F52E927 /* GULReachabilityChecker.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GULReachabilityChecker.m; path = GoogleUtilities/Reachability/GULReachabilityChecker.m; sourceTree = ""; }; - 6D0F8BB58114A0C5C2FC448162FF2018 /* FIRInstanceIDAPNSInfo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstanceIDAPNSInfo.m; path = Firebase/InstanceID/FIRInstanceIDAPNSInfo.m; sourceTree = ""; }; - 6D78BA6A29CBA8D77405C6D5EA97EBF6 /* format.cc */ = {isa = PBXFileReference; includeInIndex = 1; name = format.cc; path = table/format.cc; sourceTree = ""; }; - 6DFA8195BD627C8AC822698B906F4AAC /* c.cc */ = {isa = PBXFileReference; includeInIndex = 1; name = c.cc; path = db/c.cc; sourceTree = ""; }; - 6E12A1D756DD76FACE71131D546095D0 /* FValueEventRegistration.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FValueEventRegistration.m; path = Firebase/Database/Core/View/FValueEventRegistration.m; sourceTree = ""; }; - 6E3982B4A4CB2A959FEFE70C317ABBC0 /* FIRInstanceIDLogger.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstanceIDLogger.m; path = Firebase/InstanceID/FIRInstanceIDLogger.m; sourceTree = ""; }; - 6F474324356862E477F72648E392407D /* FSRWebSocket.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FSRWebSocket.h; path = Firebase/Database/third_party/SocketRocket/FSRWebSocket.h; sourceTree = ""; }; - 7019D4FCA52FDE02DB37D97202CD9999 /* RLMObjectBase.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = RLMObjectBase.mm; path = Realm/RLMObjectBase.mm; sourceTree = ""; }; - 703BDDC405CE8E05A570E64170F2A56A /* FRangedFilter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FRangedFilter.h; path = Firebase/Database/FRangedFilter.h; sourceTree = ""; }; - 70C317AAC76D178FE87D3ED351931099 /* FValidation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FValidation.m; path = Firebase/Database/Utilities/FValidation.m; sourceTree = ""; }; - 71155B113A427AFF9C3CC21D011E468E /* FNamedNode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FNamedNode.h; path = Firebase/Database/FNamedNode.h; sourceTree = ""; }; - 71195E85F8BD8A2222CD16F8703FAC19 /* FDataEvent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FDataEvent.h; path = Firebase/Database/Core/View/FDataEvent.h; sourceTree = ""; }; - 71C3B1AD58B91309FE32954E2674450A /* pb_encode.c */ = {isa = PBXFileReference; includeInIndex = 1; path = pb_encode.c; sourceTree = ""; }; - 71D30C845C69EB92744549CF18F1D528 /* FLimitedFilter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FLimitedFilter.m; path = Firebase/Database/Core/View/Filter/FLimitedFilter.m; sourceTree = ""; }; - 72513B4FCE64223E66FBB0852919524C /* FIRComponent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRComponent.h; path = Firebase/Core/Private/FIRComponent.h; sourceTree = ""; }; - 725A31046FE43D2A49E868FB506F151D /* FirebaseCoreDiagnostics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = FirebaseCoreDiagnostics.framework; path = Frameworks/FirebaseCoreDiagnostics.framework; sourceTree = ""; }; - 72B2D1ED02C0D21DB70B617D705A65C1 /* FIRComponent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRComponent.m; path = Firebase/Core/FIRComponent.m; sourceTree = ""; }; - 736CE4B9DCC53377A3D854670280265F /* FirebaseCore.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = FirebaseCore.modulemap; sourceTree = ""; }; - 74691497CC18DB9AEE8E0E4D92A442AC /* FirebaseAuthInterop.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = FirebaseAuthInterop.xcconfig; sourceTree = ""; }; - 74B116BB4C3F1F8BC8C2570DBC184EA8 /* GULNetworkURLSession.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GULNetworkURLSession.h; path = GoogleUtilities/Network/Private/GULNetworkURLSession.h; sourceTree = ""; }; - 7548F3A5D14CC65B8C5F2FB458CA1B24 /* RLMRealmConfiguration_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RLMRealmConfiguration_Private.h; path = include/RLMRealmConfiguration_Private.h; sourceTree = ""; }; - 75567932D7B2F865F9F9FE967F2B6F2A /* FIRInstanceIDTokenFetchOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstanceIDTokenFetchOperation.m; path = Firebase/InstanceID/FIRInstanceIDTokenFetchOperation.m; sourceTree = ""; }; - 76586E07571BC6F0545AF668C8C1DEBB /* GULLogger.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GULLogger.h; path = GoogleUtilities/Logger/Private/GULLogger.h; sourceTree = ""; }; - 76A7B2317E7BFB917BD6FC7B8128A162 /* FTreeSortedDictionary.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FTreeSortedDictionary.m; path = Firebase/Database/third_party/FImmutableSortedDictionary/FImmutableSortedDictionary/FTreeSortedDictionary.m; sourceTree = ""; }; - 7717FA216AB30866451522599CA00940 /* FIRInstanceIDAPNSInfo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceIDAPNSInfo.h; path = Firebase/InstanceID/FIRInstanceIDAPNSInfo.h; sourceTree = ""; }; - 773BFE43ADB302623977777A18310461 /* FIRComponentContainer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRComponentContainer.h; path = Firebase/Core/Private/FIRComponentContainer.h; sourceTree = ""; }; - 774528B3F3430B49DD81A0CFFBBCE34C /* FQueryParams.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FQueryParams.h; path = Firebase/Database/Core/FQueryParams.h; sourceTree = ""; }; - 77B4B9F1A58E8CB4ECDD87BC6B7E1A5C /* object_notifier.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = object_notifier.cpp; path = Realm/ObjectStore/src/impl/object_notifier.cpp; sourceTree = ""; }; - 790E6D42214C2EC39D767F3CEBE0D7B9 /* Property.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Property.swift; path = RealmSwift/Property.swift; sourceTree = ""; }; - 7942954AE22002E8BCC798DDAB414DF0 /* RLMObjectBase.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RLMObjectBase.h; path = include/RLMObjectBase.h; sourceTree = ""; }; - 796B83E4FFDD0989683310CDFC841154 /* fifo.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = fifo.cpp; path = Realm/ObjectStore/src/util/fifo.cpp; sourceTree = ""; }; - 79A7BC578FA6B8DBF2907CA31A40E533 /* FChildChangeAccumulator.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FChildChangeAccumulator.h; path = Firebase/Database/Core/View/Filter/FChildChangeAccumulator.h; sourceTree = ""; }; - 7A02C8CD9C2A5C27125D0829DB90EDF3 /* FIRInstanceIDCheckinPreferences.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceIDCheckinPreferences.h; path = Firebase/InstanceID/FIRInstanceIDCheckinPreferences.h; sourceTree = ""; }; - 7A98FB20C023A1BB91C8DBAC0BA523F0 /* FIndexedFilter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIndexedFilter.m; path = Firebase/Database/Core/View/Filter/FIndexedFilter.m; sourceTree = ""; }; - 7B06A3465967CF33A3CC199936547FCF /* FSparseSnapshotTree.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FSparseSnapshotTree.m; path = Firebase/Database/Core/FSparseSnapshotTree.m; sourceTree = ""; }; - 7C81F484FD3E3CB5BEB04929028F92D7 /* FEventGenerator.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FEventGenerator.h; path = Firebase/Database/FEventGenerator.h; sourceTree = ""; }; - 7D23DCD48CBB6653AB9FBED51DCD86C7 /* FIRDatabase.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRDatabase.h; path = Firebase/Database/Public/FIRDatabase.h; sourceTree = ""; }; - 7D26FA9ED591A75CB97F3A6C5C16AD55 /* FIRDatabase.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRDatabase.m; path = Firebase/Database/Api/FIRDatabase.m; sourceTree = ""; }; - 7D2B31B9DC9417DBA072028C7544648D /* FImmutableTree.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FImmutableTree.h; path = Firebase/Database/Core/Utilities/FImmutableTree.h; sourceTree = ""; }; - 7EA7A0350C9FACBB5B71CF716B8E2346 /* FWriteTreeRef.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FWriteTreeRef.h; path = Firebase/Database/Core/FWriteTreeRef.h; sourceTree = ""; }; - 7F05C8D80949A3129C0089DFF2EE9478 /* db_impl.cc */ = {isa = PBXFileReference; includeInIndex = 1; name = db_impl.cc; path = db/db_impl.cc; sourceTree = ""; }; - 7F5ED259268F12D89F28441E903186EE /* FTrackedQueryManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FTrackedQueryManager.m; path = Firebase/Database/Persistence/FTrackedQueryManager.m; sourceTree = ""; }; - 80A8CC83042D8324C7A06F123B197A9D /* FSyncPoint.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FSyncPoint.m; path = Firebase/Database/Core/FSyncPoint.m; sourceTree = ""; }; - 80AD45270824FB9D5E197366D7C854C0 /* RLMThreadSafeReference.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = RLMThreadSafeReference.mm; path = Realm/RLMThreadSafeReference.mm; sourceTree = ""; }; - 817703DBA5262B8C8282DE0329E58909 /* pb_common.c */ = {isa = PBXFileReference; includeInIndex = 1; path = pb_common.c; sourceTree = ""; }; - 8178041E04BC15BEECD2EBC06838968D /* GULNetwork.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GULNetwork.h; path = GoogleUtilities/Network/Private/GULNetwork.h; sourceTree = ""; }; - 81EDD38A0060B334DEA96CA47D652562 /* FSnapshotHolder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FSnapshotHolder.m; path = Firebase/Database/Core/FSnapshotHolder.m; sourceTree = ""; }; - 822CE64BC5451FBF6F3C6A7758C67BC2 /* FChildrenNode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FChildrenNode.h; path = Firebase/Database/Snapshot/FChildrenNode.h; sourceTree = ""; }; - 829624137DE06741D18AC3911DD3D243 /* RLMSchema.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RLMSchema.h; path = include/RLMSchema.h; sourceTree = ""; }; - 83CB9A5B9D8361C11A6AECBE0F8232B4 /* FLLRBEmptyNode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FLLRBEmptyNode.h; path = Firebase/Database/third_party/FImmutableSortedDictionary/FImmutableSortedDictionary/FLLRBEmptyNode.h; sourceTree = ""; }; - 85A197D8EDFCAF02A96F1F978530617D /* log_reader.cc */ = {isa = PBXFileReference; includeInIndex = 1; name = log_reader.cc; path = db/log_reader.cc; sourceTree = ""; }; - 85F06AEF7F1478A710C14029C6CA61EA /* RealmConfiguration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RealmConfiguration.swift; path = RealmSwift/RealmConfiguration.swift; sourceTree = ""; }; - 86A048EF5F83CC152DE3FAE1AE8047A2 /* FIRLogger.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRLogger.h; path = Firebase/Core/Private/FIRLogger.h; sourceTree = ""; }; - 86B87E4CFA5517F1A2DED99AF91F7B2A /* RLMSyncConfiguration.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = RLMSyncConfiguration.mm; path = Realm/RLMSyncConfiguration.mm; sourceTree = ""; }; - 86BD7026584FB526028C8F797D7961AE /* sync_file.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = sync_file.cpp; path = Realm/ObjectStore/src/sync/impl/sync_file.cpp; sourceTree = ""; }; - 872F2BD8244D91CB7895F596313B8378 /* Schema.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Schema.swift; path = RealmSwift/Schema.swift; sourceTree = ""; }; - 8781C7A06915CE846BEB2C09ABD379BC /* FMaxNode.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FMaxNode.m; path = Firebase/Database/FMaxNode.m; sourceTree = ""; }; - 87C85E96D635FCAE4D9AE6E75721DDFD /* FServerValues.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FServerValues.m; path = Firebase/Database/Core/FServerValues.m; sourceTree = ""; }; - 87DAAA3F88EE9947811324BCE945DF30 /* RLMManagedArray.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = RLMManagedArray.mm; path = Realm/RLMManagedArray.mm; sourceTree = ""; }; - 88A4F67DE1A86BC644DF0C48A938B7BD /* FParsedUrl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FParsedUrl.h; path = Firebase/Database/Utilities/FParsedUrl.h; sourceTree = ""; }; - 8931F5A3DF99DA2FCFF69A197DDB7176 /* FIRInstanceIDStringEncoding.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstanceIDStringEncoding.m; path = Firebase/InstanceID/FIRInstanceIDStringEncoding.m; sourceTree = ""; }; - 89BF3317E8CD6395BE7C89F1FED23C69 /* FKeyIndex.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FKeyIndex.m; path = Firebase/Database/FKeyIndex.m; sourceTree = ""; }; - 8A182903ADBE84DBC8D9404EC7E37BC3 /* FSyncTree.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FSyncTree.h; path = Firebase/Database/Core/FSyncTree.h; sourceTree = ""; }; - 8A4D28D8A4554494333F8A1B3F7CEF10 /* RLMJSONModels.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RLMJSONModels.m; path = Realm/RLMJSONModels.m; sourceTree = ""; }; - 8A726C02EE21EB72AC5CC440E03F2AE0 /* FKeepSyncedEventRegistration.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FKeepSyncedEventRegistration.m; path = Firebase/Database/Core/View/FKeepSyncedEventRegistration.m; sourceTree = ""; }; - 8A729337F7D6D4DDD3831E74D401F32A /* GULMutableDictionary.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GULMutableDictionary.m; path = GoogleUtilities/Network/GULMutableDictionary.m; sourceTree = ""; }; - 8A9ACB8A2501EDF7917DE909BA41091A /* nanopb.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = nanopb.xcconfig; sourceTree = ""; }; - 8B6BEBECA682714CDF79E4FA16552AEA /* coding.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = coding.h; path = util/coding.h; sourceTree = ""; }; - 8BB3D4CC8A0C10310703AA55D8015BA9 /* port_example.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = port_example.h; path = port/port_example.h; sourceTree = ""; }; - 8C15328F8A27109C2BCBE6B708E07E97 /* FirebaseInstanceID.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = FirebaseInstanceID.xcconfig; sourceTree = ""; }; - 8C595CE53C956B40B0149846F8FD4C76 /* ObjectiveCSupport.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ObjectiveCSupport.swift; path = RealmSwift/ObjectiveCSupport.swift; sourceTree = ""; }; - 8CB16866F8C55245754CAFE7D3BD5D28 /* FIRInstanceIDVersionUtilities.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstanceIDVersionUtilities.m; path = Firebase/InstanceID/FIRInstanceIDVersionUtilities.m; sourceTree = ""; }; - 8CFDA344EE6DBC20BA1B3C43707EC0C9 /* FRangedFilter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FRangedFilter.m; path = Firebase/Database/FRangedFilter.m; sourceTree = ""; }; - 8D02D7FE2710571FA669070AEF471093 /* slice.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = slice.h; path = include/leveldb/slice.h; sourceTree = ""; }; - 8D4ABB7A14D42E4D4BAEF3596AA2CC1C /* FIRInstanceIDURLQueryItem.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstanceIDURLQueryItem.m; path = Firebase/InstanceID/FIRInstanceIDURLQueryItem.m; sourceTree = ""; }; - 8D6B8FADBAE7FB1230A0D81DCCDA471E /* FIRServerValue.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRServerValue.m; path = Firebase/Database/Api/FIRServerValue.m; sourceTree = ""; }; - 8D90B040C854267F52EE784EEBD6FFC9 /* FNamedNode.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FNamedNode.m; path = Firebase/Database/FNamedNode.m; sourceTree = ""; }; - 8DA99E6A2FCFE520F99D00E83CA380E4 /* FIRDatabaseComponent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRDatabaseComponent.h; path = Firebase/Database/Api/FIRDatabaseComponent.h; sourceTree = ""; }; - 8E35F409527BC576A882FA472C6EC04F /* FIRAppInternal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRAppInternal.h; path = Firebase/Core/Private/FIRAppInternal.h; sourceTree = ""; }; - 8E6980A91892A04189B1AD9965A13E49 /* table_builder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = table_builder.h; path = include/leveldb/table_builder.h; sourceTree = ""; }; - 8EC9F9E0B447E15E01D9D23F64F7D987 /* FIRAnalyticsConnector.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = FIRAnalyticsConnector.framework; path = Frameworks/FIRAnalyticsConnector.framework; sourceTree = ""; }; - 8F9030C96551DEC962ACBAA8C5AAC5B1 /* FIRInstanceIDKeyPair.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceIDKeyPair.h; path = Firebase/InstanceID/FIRInstanceIDKeyPair.h; sourceTree = ""; }; - 8F9FC0717EA4E706E47A0BC2954EF3BF /* FIRInstanceIDTokenOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceIDTokenOperation.h; path = Firebase/InstanceID/FIRInstanceIDTokenOperation.h; sourceTree = ""; }; - 8FAF49A0011487DEA7A27988A67BFD66 /* RLMArray_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RLMArray_Private.h; path = include/RLMArray_Private.h; sourceTree = ""; }; - 907A74919D7EA92D6BC1D8BB990FC4F3 /* FIRAnalyticsConfiguration.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRAnalyticsConfiguration.m; path = Firebase/Core/FIRAnalyticsConfiguration.m; sourceTree = ""; }; - 908EE5E0CDF43673D9D5118565302B27 /* leveldb-library-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "leveldb-library-umbrella.h"; sourceTree = ""; }; - 909CF9BAE5B00C78CAE8FA1678360F76 /* FView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FView.h; path = Firebase/Database/Core/View/FView.h; sourceTree = ""; }; - 91177B2C1BF38D47F96DBEAA6C4CAE9F /* FPath.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FPath.h; path = Firebase/Database/Core/Utilities/FPath.h; sourceTree = ""; }; - 91C18286D15353ED3C01C3ED4A05D208 /* thread_annotations.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = thread_annotations.h; path = port/thread_annotations.h; sourceTree = ""; }; - 91E12C6E3E1379DA89079A27A50BB8B1 /* FDataEvent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FDataEvent.m; path = Firebase/Database/Core/View/FDataEvent.m; sourceTree = ""; }; + 554A7411EC0903FC084B2A0C5A1CD496 /* FIRConfigurationInternal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRConfigurationInternal.h; path = Firebase/Core/Private/FIRConfigurationInternal.h; sourceTree = ""; }; + 55835572A31065F33A3D4E1E1A5420A4 /* FIRInstanceIDCheckinPreferences.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstanceIDCheckinPreferences.m; path = Firebase/InstanceID/FIRInstanceIDCheckinPreferences.m; sourceTree = ""; }; + 55CAF08D7A9B373A3F5DD2D32D8B6634 /* Realm.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = Realm.modulemap; sourceTree = ""; }; + 565635761C859EA8EFCA5D1EF4AEF687 /* FImmutableSortedSet.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FImmutableSortedSet.m; path = Firebase/Database/third_party/FImmutableSortedDictionary/FImmutableSortedDictionary/FImmutableSortedSet.m; sourceTree = ""; }; + 56F46E70C63C9CBB205FCC9E75F1E3B4 /* FIRAuthWebViewController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRAuthWebViewController.m; path = Firebase/Auth/Source/Utilities/FIRAuthWebViewController.m; sourceTree = ""; }; + 5718911B1B9EDB57BAAA9758DC7DAB88 /* results.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = results.cpp; path = Realm/ObjectStore/src/results.cpp; sourceTree = ""; }; + 57BD8B51062386C46B011BCA0E999DB8 /* GoogleToolboxForMac-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "GoogleToolboxForMac-prefix.pch"; sourceTree = ""; }; + 57D159C5054D0173F0D35B3E8C1BB029 /* FIROAuthCredential_Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIROAuthCredential_Internal.h; path = Firebase/Auth/Source/AuthProvider/OAuth/FIROAuthCredential_Internal.h; sourceTree = ""; }; + 588E4A7E54B0E72AAD3020B32F0FC35E /* FIRConfiguration.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRConfiguration.h; path = Firebase/Core/Public/FIRConfiguration.h; sourceTree = ""; }; + 58A8AF83C291BF94270911EF1EF60C43 /* GoogleAppMeasurement.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = GoogleAppMeasurement.framework; path = Frameworks/GoogleAppMeasurement.framework; sourceTree = ""; }; + 58F2FAAB9283C92807C1C5044B43D38F /* FTupleTSN.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FTupleTSN.h; path = Firebase/Database/Utilities/Tuples/FTupleTSN.h; sourceTree = ""; }; + 59A3946729DF8775EAD48A7F5AF4E89D /* FIREmailPasswordAuthCredential.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIREmailPasswordAuthCredential.m; path = Firebase/Auth/Source/AuthProvider/Email/FIREmailPasswordAuthCredential.m; sourceTree = ""; }; + 59E69C641B211AAF5A6680C1C3BC60D9 /* GTMSessionFetcherLogging.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTMSessionFetcherLogging.h; path = Source/GTMSessionFetcherLogging.h; sourceTree = ""; }; + 5A44DFA281250C6F1B97AB2F052F810F /* FViewProcessorResult.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FViewProcessorResult.h; path = Firebase/Database/FViewProcessorResult.h; sourceTree = ""; }; + 5A59EA50E30FBB945002961FC06E4138 /* FIRVerifyPhoneNumberRequest.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRVerifyPhoneNumberRequest.h; path = Firebase/Auth/Source/Backend/RPC/FIRVerifyPhoneNumberRequest.h; sourceTree = ""; }; + 5A891F7EBE4968C13DFF186CA8B491CD /* GTMSessionFetcher-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "GTMSessionFetcher-dummy.m"; sourceTree = ""; }; + 5AA0C14D59EEFFA0D9EBD6F0B814B48D /* RLMConstants.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RLMConstants.m; path = Realm/RLMConstants.m; sourceTree = ""; }; + 5AA3211F2B6BD04013790D930EA24D45 /* FIRDatabaseConfig_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRDatabaseConfig_Private.h; path = Firebase/Database/FIRDatabaseConfig_Private.h; sourceTree = ""; }; + 5AC2F598FE870D4139CC3B2A48C6695A /* merger.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = merger.h; path = table/merger.h; sourceTree = ""; }; + 5B136302758017FF309B3F5F8496601F /* leveldb-library.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "leveldb-library.xcconfig"; sourceTree = ""; }; + 5B4C137FA1C9110191A73369615CA2B8 /* FIRAppInternal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRAppInternal.h; path = Firebase/Core/Private/FIRAppInternal.h; sourceTree = ""; }; + 5B9CFBBCB540068933DB1D0B466FA60E /* FIRAuthDispatcher.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRAuthDispatcher.m; path = Firebase/Auth/Source/Auth/FIRAuthDispatcher.m; sourceTree = ""; }; + 5C1B10B9332D21AE74863B70D475B0B6 /* FIRServerValue.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRServerValue.m; path = Firebase/Database/Api/FIRServerValue.m; sourceTree = ""; }; + 5CC2314E0B43D04B02C2843E95525FB8 /* FIRInstanceIDKeychain.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstanceIDKeychain.m; path = Firebase/InstanceID/FIRInstanceIDKeychain.m; sourceTree = ""; }; + 5D209639A08210F13C606B111B26E02E /* FImmutableSortedDictionary.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FImmutableSortedDictionary.m; path = Firebase/Database/third_party/FImmutableSortedDictionary/FImmutableSortedDictionary/FImmutableSortedDictionary.m; sourceTree = ""; }; + 5D563D6BB4A5C51856E4CFB54B4AD255 /* FIRAuthSettings.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRAuthSettings.h; path = Firebase/Auth/Source/Public/FIRAuthSettings.h; sourceTree = ""; }; + 5DADF70A784364C3ACC5993CB98C80DB /* FIRInstanceIDTokenOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceIDTokenOperation.h; path = Firebase/InstanceID/FIRInstanceIDTokenOperation.h; sourceTree = ""; }; + 5DDA820155A7FCA9403B7F33E331627D /* FEmptyNode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FEmptyNode.h; path = Firebase/Database/Snapshot/FEmptyNode.h; sourceTree = ""; }; + 5E5A0E050BA4CB73B1AAFB7BE90CE532 /* env.cc */ = {isa = PBXFileReference; includeInIndex = 1; name = env.cc; path = util/env.cc; sourceTree = ""; }; + 5ECF3BDF84079A26437DC9CD6A1292C1 /* GoogleUtilities-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "GoogleUtilities-Info.plist"; sourceTree = ""; }; + 5F9A796BDA5E22A8B72A206AA04EF4BF /* FIREmailLinkSignInRequest.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIREmailLinkSignInRequest.h; path = Firebase/Auth/Source/Backend/RPC/FIREmailLinkSignInRequest.h; sourceTree = ""; }; + 5FA6AF7BA09A4F02044C8A3B46C08089 /* FIRInstanceIDTokenDeleteOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceIDTokenDeleteOperation.h; path = Firebase/InstanceID/FIRInstanceIDTokenDeleteOperation.h; sourceTree = ""; }; + 6005768DCDE6041EE8ED9353CC5043D7 /* object.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = object.cpp; path = Realm/ObjectStore/src/object.cpp; sourceTree = ""; }; + 600732E712026647139565CAE4E5BA6A /* cache.cc */ = {isa = PBXFileReference; includeInIndex = 1; name = cache.cc; path = util/cache.cc; sourceTree = ""; }; + 60081811535884BC64B61144AAA55BA0 /* FIRAuthErrors.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRAuthErrors.h; path = Firebase/Auth/Source/Public/FIRAuthErrors.h; sourceTree = ""; }; + 600F94AD0FB1F18D7D28AC246AF4BD13 /* cache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = cache.h; path = include/leveldb/cache.h; sourceTree = ""; }; + 6012B7E1E8E560B653653AEACAF1CFC3 /* FNamedNode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FNamedNode.h; path = Firebase/Database/FNamedNode.h; sourceTree = ""; }; + 606B2C81D8B184416C27EDE734CBB7CF /* RLMResults.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = RLMResults.mm; path = Realm/RLMResults.mm; sourceTree = ""; }; + 60B37E75EDF9313CCCA5B9F5E3EE724B /* RLMObjectBase_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RLMObjectBase_Private.h; path = include/RLMObjectBase_Private.h; sourceTree = ""; }; + 60EF9C184E17E4955ED1317A63DBB6A1 /* FIRDataSnapshot_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRDataSnapshot_Private.h; path = Firebase/Database/Api/Private/FIRDataSnapshot_Private.h; sourceTree = ""; }; + 610C1E7BF24A764091822B913A24C730 /* FIRInstanceIDUtilities.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstanceIDUtilities.m; path = Firebase/InstanceID/FIRInstanceIDUtilities.m; sourceTree = ""; }; + 61811ADAE2CA0802F0E12A7F2003289B /* FEventRaiser.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FEventRaiser.h; path = Firebase/Database/Core/View/FEventRaiser.h; sourceTree = ""; }; + 61CC9128F00CD21B6646A5F75278EFA6 /* FParsedUrl.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FParsedUrl.m; path = Firebase/Database/Utilities/FParsedUrl.m; sourceTree = ""; }; + 626FDD0CFA426DC8302A661DFCEABD02 /* FirebaseDatabase.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = FirebaseDatabase.xcconfig; sourceTree = ""; }; + 628EED77FDF2A3178C9CDCA9EA834116 /* FIRSetAccountInfoResponse.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRSetAccountInfoResponse.h; path = Firebase/Auth/Source/Backend/RPC/FIRSetAccountInfoResponse.h; sourceTree = ""; }; + 62B394E32B95975C25A4595A09487F85 /* FEventEmitter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FEventEmitter.m; path = Firebase/Database/Utilities/FEventEmitter.m; sourceTree = ""; }; + 630B3A7577F58B1A9F241E39E3866FDD /* FIRPhoneAuthProvider.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRPhoneAuthProvider.h; path = Firebase/Auth/Source/Public/FIRPhoneAuthProvider.h; sourceTree = ""; }; + 63D97D80C930841A5BBB075B1043EEE6 /* FIRServerValue.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRServerValue.h; path = Firebase/Database/Public/FIRServerValue.h; sourceTree = ""; }; + 63E0C9380760106F0D0EB1782F017224 /* FSnapshotUtilities.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FSnapshotUtilities.m; path = Firebase/Database/Snapshot/FSnapshotUtilities.m; sourceTree = ""; }; + 640F6EA21951193DDC66D4707D91D974 /* FAuthTokenProvider.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FAuthTokenProvider.m; path = Firebase/Database/Login/FAuthTokenProvider.m; sourceTree = ""; }; + 64144CD0F6D74841B8B0AE168E5352B0 /* db_impl.cc */ = {isa = PBXFileReference; includeInIndex = 1; name = db_impl.cc; path = db/db_impl.cc; sourceTree = ""; }; + 645A519F82D777141DD6012C56592B78 /* GULNetworkConstants.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GULNetworkConstants.h; path = GoogleUtilities/Network/Private/GULNetworkConstants.h; sourceTree = ""; }; + 650BE7067521C44A7989F69B9235943D /* YMTGetDeviceName.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = YMTGetDeviceName.xcconfig; sourceTree = ""; }; + 652298EFA23E8B3F7711B8C9E0600FB2 /* RLMUtil.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = RLMUtil.mm; path = Realm/RLMUtil.mm; sourceTree = ""; }; + 656099B163E9187B52F3D857C0369160 /* FOperationSource.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FOperationSource.h; path = Firebase/Database/Core/Operation/FOperationSource.h; sourceTree = ""; }; + 65AFFDCA0C4F9C5F1D240D898A4B797F /* sync_permission.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = sync_permission.cpp; path = Realm/ObjectStore/src/sync/sync_permission.cpp; sourceTree = ""; }; + 6649521C65EC8F74445299C949873B45 /* FIRFacebookAuthCredential.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRFacebookAuthCredential.h; path = Firebase/Auth/Source/AuthProvider/Facebook/FIRFacebookAuthCredential.h; sourceTree = ""; }; + 664EC5306CF77A245F5C91B7925505E1 /* FIRAuthURLPresenter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRAuthURLPresenter.h; path = Firebase/Auth/Source/Utilities/FIRAuthURLPresenter.h; sourceTree = ""; }; + 66885C8EEEF8AA3E5154DD1E135C329D /* FIRVersion.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRVersion.m; path = Firebase/Core/FIRVersion.m; sourceTree = ""; }; + 66F1AE16987AA3C4B7AF01EBD8876742 /* RLMObjectSchema.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RLMObjectSchema.h; path = include/RLMObjectSchema.h; sourceTree = ""; }; + 67180CA04893BAB29BD7E7B0E486150E /* GULNetworkLoggerProtocol.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GULNetworkLoggerProtocol.h; path = GoogleUtilities/Network/Private/GULNetworkLoggerProtocol.h; sourceTree = ""; }; + 6785C988ACE77DDC69C3D13099575326 /* FIRInstanceIDCheckinPreferences+Internal.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "FIRInstanceIDCheckinPreferences+Internal.m"; path = "Firebase/InstanceID/FIRInstanceIDCheckinPreferences+Internal.m"; sourceTree = ""; }; + 67B421E6D32A450420B8A8D07D98CB01 /* FIRNoopAuthTokenProvider.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRNoopAuthTokenProvider.h; path = Firebase/Database/Login/FIRNoopAuthTokenProvider.h; sourceTree = ""; }; + 686AA38529DF6CBAA5527903BB3713C4 /* FIRGameCenterAuthCredential.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRGameCenterAuthCredential.m; path = Firebase/Auth/Source/AuthProvider/GameCenter/FIRGameCenterAuthCredential.m; sourceTree = ""; }; + 68D05D808E354EB24B2095B30F1C9412 /* FIRDependency.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRDependency.h; path = Firebase/Core/Private/FIRDependency.h; sourceTree = ""; }; + 6904EF655B10B7DDA3AF6646796C4228 /* FIRVerifyClientRequest.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRVerifyClientRequest.h; path = Firebase/Auth/Source/Backend/RPC/FIRVerifyClientRequest.h; sourceTree = ""; }; + 694F96E51EFB484361BBAC82242C9A4A /* version_edit.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = version_edit.h; path = db/version_edit.h; sourceTree = ""; }; + 698CE8D8642001969026B1A83C9EE1E0 /* keychain_helper.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = keychain_helper.cpp; path = Realm/ObjectStore/src/impl/apple/keychain_helper.cpp; sourceTree = ""; }; + 6AB87DDDB0F6450F58E49C59EEB7E6C8 /* FConstants.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FConstants.h; path = Firebase/Database/Constants/FConstants.h; sourceTree = ""; }; + 6AFCE690970721A963DCA28123A6FFA0 /* GULNetwork.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GULNetwork.m; path = GoogleUtilities/Network/GULNetwork.m; sourceTree = ""; }; + 6B278F87F04C5AB3C4A75C6668BBFBCF /* FIRRetryHelper.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRRetryHelper.m; path = Firebase/Database/Core/Utilities/FIRRetryHelper.m; sourceTree = ""; }; + 6B54000B5D0C86BAF4316DBE71C1C1D9 /* FWriteTree.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FWriteTree.m; path = Firebase/Database/Core/FWriteTree.m; sourceTree = ""; }; + 6B92E2949EF1A4543406805BB9147E84 /* FIRInstanceIDAuthService.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceIDAuthService.h; path = Firebase/InstanceID/FIRInstanceIDAuthService.h; sourceTree = ""; }; + 6BE15A4C4C687EC37FFF4A13D7876726 /* RLMRealm.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RLMRealm.h; path = include/RLMRealm.h; sourceTree = ""; }; + 6C236FFC4A99909AFB99AF736F33E348 /* FirebaseAuth.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FirebaseAuth.h; path = Firebase/Auth/Source/Public/FirebaseAuth.h; sourceTree = ""; }; + 6C56F823A71B2B10C5A5807B71F8E09C /* FIRDataSnapshot.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRDataSnapshot.m; path = Firebase/Database/Api/FIRDataSnapshot.m; sourceTree = ""; }; + 6C9454906FABBA27AFC8FB43B50A7D4F /* FIRAuthRequestConfiguration.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRAuthRequestConfiguration.h; path = Firebase/Auth/Source/Backend/FIRAuthRequestConfiguration.h; sourceTree = ""; }; + 6CA8DD45CC2AF137386C7D9460B27651 /* FValueEventRegistration.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FValueEventRegistration.h; path = Firebase/Database/Core/View/FValueEventRegistration.h; sourceTree = ""; }; + 6CF48DCA91CEE349F0FC30621352C93B /* GTMNSDictionary+URLArguments.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "GTMNSDictionary+URLArguments.h"; path = "Foundation/GTMNSDictionary+URLArguments.h"; sourceTree = ""; }; + 6D2C7C15952893D5EA825B8BA44A6D68 /* FIRAuthDataResult_Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRAuthDataResult_Internal.h; path = Firebase/Auth/Source/Auth/FIRAuthDataResult_Internal.h; sourceTree = ""; }; + 6D73C6130D8E71B19C986DBFE56AA389 /* FIRGetAccountInfoRequest.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRGetAccountInfoRequest.h; path = Firebase/Auth/Source/Backend/RPC/FIRGetAccountInfoRequest.h; sourceTree = ""; }; + 6DB3143C873A0A210FD68090F3166A0D /* FIRAuthWebUtils.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRAuthWebUtils.h; path = Firebase/Auth/Source/Utilities/FIRAuthWebUtils.h; sourceTree = ""; }; + 6DF2FEAF06B70077096EA222B4FC3EFF /* RLMSyncPermission.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = RLMSyncPermission.mm; path = Realm/RLMSyncPermission.mm; sourceTree = ""; }; + 6E05AF6DC02F67299B43073D3082957B /* testutil.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = testutil.h; path = util/testutil.h; sourceTree = ""; }; + 6E062538C34E992CE34F8605F95B29B9 /* GoogleUtilities-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "GoogleUtilities-umbrella.h"; sourceTree = ""; }; + 6E0EE3B7E8E983D0D36C98514377F88D /* uuid.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = uuid.cpp; path = Realm/ObjectStore/src/util/uuid.cpp; sourceTree = ""; }; + 6E268075750285AF449610E21DDE7ED5 /* bloom.cc */ = {isa = PBXFileReference; includeInIndex = 1; name = bloom.cc; path = util/bloom.cc; sourceTree = ""; }; + 6E2F9203F1A40BC3FABB837D6456E0A8 /* FIRAuthOperationType.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRAuthOperationType.h; path = Firebase/Auth/Source/Auth/FIRAuthOperationType.h; sourceTree = ""; }; + 6E4A4C75D82451B16C6FDF75CABD9C76 /* FIRGetProjectConfigResponse.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRGetProjectConfigResponse.h; path = Firebase/Auth/Source/Backend/RPC/FIRGetProjectConfigResponse.h; sourceTree = ""; }; + 6E53793F5F48711BD8994FEAB6191924 /* Migration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Migration.swift; path = RealmSwift/Migration.swift; sourceTree = ""; }; + 6EA12B476EEAB87960D6009E6A6E348F /* FLeafNode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FLeafNode.h; path = Firebase/Database/Snapshot/FLeafNode.h; sourceTree = ""; }; + 6F2F6831811871F08EA5EEEC4DAEF2D9 /* FIRInstanceIDUtilities.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceIDUtilities.h; path = Firebase/InstanceID/FIRInstanceIDUtilities.h; sourceTree = ""; }; + 6F614A59C515BF539E5825E48A86BD37 /* Pods-shlack-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-shlack-acknowledgements.markdown"; sourceTree = ""; }; + 6FDA355010AE5FBE175F4995972A3FE4 /* FIRDatabase_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRDatabase_Private.h; path = Firebase/Database/Api/Private/FIRDatabase_Private.h; sourceTree = ""; }; + 6FF972AF8902F39BEB6F97A7C7CBBEEB /* FIRPhoneAuthCredential_Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRPhoneAuthCredential_Internal.h; path = Firebase/Auth/Source/AuthProvider/Phone/FIRPhoneAuthCredential_Internal.h; sourceTree = ""; }; + 709BD6E16BBBCE1CFADE35865972A461 /* FIRComponent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRComponent.h; path = Firebase/Core/Private/FIRComponent.h; sourceTree = ""; }; + 70EB793A78384653BFCB7C98051B8665 /* FIRAuthExceptionUtils.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRAuthExceptionUtils.h; path = Firebase/Auth/Source/Utilities/FIRAuthExceptionUtils.h; sourceTree = ""; }; + 712C1E55D4371809FAD6F7FA6F17FDB3 /* FIndexedFilter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIndexedFilter.m; path = Firebase/Database/Core/View/Filter/FIndexedFilter.m; sourceTree = ""; }; + 71322847B812F2A6A11C8438E0D4E832 /* FIRGetAccountInfoResponse.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRGetAccountInfoResponse.m; path = Firebase/Auth/Source/Backend/RPC/FIRGetAccountInfoResponse.m; sourceTree = ""; }; + 713A2E8223BF33493CC27B47DA2C2855 /* FIRLogger.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRLogger.h; path = Firebase/Core/Private/FIRLogger.h; sourceTree = ""; }; + 7146A95BAD635A6859AA10444471F301 /* FIRAuthWebView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRAuthWebView.m; path = Firebase/Auth/Source/Utilities/FIRAuthWebView.m; sourceTree = ""; }; + 7183094E6CE9940DEA380A4AAD05B82D /* RLMAccessor.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = RLMAccessor.mm; path = Realm/RLMAccessor.mm; sourceTree = ""; }; + 7187687AE1979822167437219293C530 /* FirebaseCore-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "FirebaseCore-Info.plist"; sourceTree = ""; }; + 720DF860890927AC616F3FC98C5A49D2 /* FLevelDBStorageEngine.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FLevelDBStorageEngine.m; path = Firebase/Database/Persistence/FLevelDBStorageEngine.m; sourceTree = ""; }; + 733D2C3DCAE532480631343DF2DE5F8C /* GoogleToolboxForMac-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "GoogleToolboxForMac-umbrella.h"; sourceTree = ""; }; + 734E687ED0B9659B4B8296F7501174D4 /* FRangedFilter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FRangedFilter.m; path = Firebase/Database/FRangedFilter.m; sourceTree = ""; }; + 7378B0C7211B514906A1311BE05739A8 /* filter_block.cc */ = {isa = PBXFileReference; includeInIndex = 1; name = filter_block.cc; path = table/filter_block.cc; sourceTree = ""; }; + 73A0AE5015A40A0A6F62437EE11DF153 /* FIROptionsInternal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIROptionsInternal.h; path = Firebase/Core/Private/FIROptionsInternal.h; sourceTree = ""; }; + 73B8D32ABF17CCF5F69C8FE894A47560 /* FIRTransactionResult_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRTransactionResult_Private.h; path = Firebase/Database/Api/Private/FIRTransactionResult_Private.h; sourceTree = ""; }; + 73F5CC2CB62E376FBF9637F9C438F5BA /* FIRAuthInterop.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRAuthInterop.h; path = Interop/Auth/Public/FIRAuthInterop.h; sourceTree = ""; }; + 74D06664137D959297922DA443A7C806 /* FTupleObjects.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FTupleObjects.m; path = Firebase/Database/Utilities/Tuples/FTupleObjects.m; sourceTree = ""; }; + 753941396DD46748D1C7680E2F710173 /* FIRInstanceID+Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FIRInstanceID+Private.h"; path = "Firebase/InstanceID/FIRInstanceID+Private.h"; sourceTree = ""; }; + 75556F5ED89B4574623EB21206A6796D /* RLMResults.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RLMResults.h; path = include/RLMResults.h; sourceTree = ""; }; + 7570FD92653A11DC6BDFBBF5C39611A0 /* FIRInstanceIDAPNSInfo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstanceIDAPNSInfo.m; path = Firebase/InstanceID/FIRInstanceIDAPNSInfo.m; sourceTree = ""; }; + 75851C3EA0A56EB53D95CC2A2960DF4A /* FIRSignInWithGameCenterRequest.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRSignInWithGameCenterRequest.m; path = Firebase/Auth/Source/Backend/RPC/FIRSignInWithGameCenterRequest.m; sourceTree = ""; }; + 759562FE71043082EA077DA28A7CB242 /* FIRUserMetadata_Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRUserMetadata_Internal.h; path = Firebase/Auth/Source/User/FIRUserMetadata_Internal.h; sourceTree = ""; }; + 75B7CC37B985F7F6F55F9778EB00A93C /* FIRGameCenterAuthCredential.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRGameCenterAuthCredential.h; path = Firebase/Auth/Source/AuthProvider/GameCenter/FIRGameCenterAuthCredential.h; sourceTree = ""; }; + 76064AC4B09D665012247BAC6BEDCE87 /* RLMRealmConfiguration+Sync.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "RLMRealmConfiguration+Sync.h"; path = "include/RLMRealmConfiguration+Sync.h"; sourceTree = ""; }; + 7616DE9DE5B4E2CB76343B48A1DAD676 /* GTMSessionFetcher-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "GTMSessionFetcher-umbrella.h"; sourceTree = ""; }; + 7664852FD86F309CAED256F1E02896CF /* FIRMutableData.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRMutableData.m; path = Firebase/Database/Api/FIRMutableData.m; sourceTree = ""; }; + 769B8341FDE45A543CB6C94B6C3CA4C3 /* RLMRealm+Sync.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "RLMRealm+Sync.h"; path = "include/RLMRealm+Sync.h"; sourceTree = ""; }; + 76EF4FECC523C278D692A2182682D711 /* schema.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = schema.cpp; path = Realm/ObjectStore/src/schema.cpp; sourceTree = ""; }; + 7726B8A5EB71F990F78266CE9A5615DD /* FIRAuthRPCResponse.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRAuthRPCResponse.h; path = Firebase/Auth/Source/Backend/FIRAuthRPCResponse.h; sourceTree = ""; }; + 779941B0AB7179D76E9AC94F155A0F35 /* GTMSessionFetcher.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = GTMSessionFetcher.xcconfig; sourceTree = ""; }; + 78A07F0120465584ED28394F01E823E1 /* GoogleToolboxForMac-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "GoogleToolboxForMac-Info.plist"; sourceTree = ""; }; + 78D20851FCB538104DD13D41CB744D3E /* FIRInstanceIDCheckinPreferences_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceIDCheckinPreferences_Private.h; path = Firebase/InstanceID/FIRInstanceIDCheckinPreferences_Private.h; sourceTree = ""; }; + 78F1DE95DF34A9605B649CB07D488C7A /* FNodeFilter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FNodeFilter.h; path = Firebase/Database/Core/View/Filter/FNodeFilter.h; sourceTree = ""; }; + 792E44A5F66B2442AF607AB071254814 /* Pods-shlack.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-shlack.modulemap"; sourceTree = ""; }; + 794211A97E497258686A436223DEE367 /* memtable.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = memtable.h; path = db/memtable.h; sourceTree = ""; }; + 79F60D7CD69F106CB044C0B2FDAA96B1 /* log_writer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = log_writer.h; path = db/log_writer.h; sourceTree = ""; }; + 7A808AC15356B0C652B6E11F7ED8AE8D /* ThreadSafeReference.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ThreadSafeReference.swift; path = RealmSwift/ThreadSafeReference.swift; sourceTree = ""; }; + 7A86801907EBD73B77C646B67ACFECE6 /* status.cc */ = {isa = PBXFileReference; includeInIndex = 1; name = status.cc; path = util/status.cc; sourceTree = ""; }; + 7B4C8086099D45DE9C56B5A1B6BE00E1 /* FDataEvent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FDataEvent.m; path = Firebase/Database/Core/View/FDataEvent.m; sourceTree = ""; }; + 7D3D5920517A5D2B9A06D4434A0F2581 /* histogram.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = histogram.h; path = util/histogram.h; sourceTree = ""; }; + 7D61429A391247AACEE99FAEBBC5D70A /* nanopb-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "nanopb-prefix.pch"; sourceTree = ""; }; + 7D6E0609F0193400CB0FA596A38187CA /* FTree.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FTree.m; path = Firebase/Database/Core/Utilities/FTree.m; sourceTree = ""; }; + 7D7FCB8C02F75A0F1F7C613C617E7098 /* FCancelEvent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FCancelEvent.m; path = Firebase/Database/Core/View/FCancelEvent.m; sourceTree = ""; }; + 7E5693E2D51AA01EA9C50FA68F17A918 /* index_set.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = index_set.cpp; path = Realm/ObjectStore/src/index_set.cpp; sourceTree = ""; }; + 7E70F725C50E3934DFC2D68476DA8C15 /* RLMSyncSubscription.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = RLMSyncSubscription.mm; path = Realm/RLMSyncSubscription.mm; sourceTree = ""; }; + 7E8E26C4F9EEB25BE0767CF34183AF75 /* FPruneForest.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FPruneForest.m; path = Firebase/Database/Persistence/FPruneForest.m; sourceTree = ""; }; + 7F0242E2488B47778EAF0B955381FEE1 /* FIRAuthAPNSTokenType.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRAuthAPNSTokenType.h; path = Firebase/Auth/Source/Public/FIRAuthAPNSTokenType.h; sourceTree = ""; }; + 7F1BF7AD2E69E15E5A1C40DBC28CCCC3 /* sync_metadata.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = sync_metadata.cpp; path = Realm/ObjectStore/src/sync/impl/sync_metadata.cpp; sourceTree = ""; }; + 7F1E8D2FBE6B60F5EC9B40E8312C7DE5 /* FChildChangeAccumulator.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FChildChangeAccumulator.h; path = Firebase/Database/Core/View/Filter/FChildChangeAccumulator.h; sourceTree = ""; }; + 7F92614552A752024142C08FA27BFB18 /* FIRSignInWithGameCenterRequest.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRSignInWithGameCenterRequest.h; path = Firebase/Auth/Source/Backend/RPC/FIRSignInWithGameCenterRequest.h; sourceTree = ""; }; + 7F9304FEC6A0F08E28B774C336BCE525 /* RLMPredicateUtil.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = RLMPredicateUtil.mm; path = Realm/RLMPredicateUtil.mm; sourceTree = ""; }; + 7F9BF1DE3F2AB72712538847DCC467FB /* FIRAuthWebView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRAuthWebView.h; path = Firebase/Auth/Source/Utilities/FIRAuthWebView.h; sourceTree = ""; }; + 7F9D73E07FFF6147C23CA59AD34B92CA /* FIRInstanceIDCheckinPreferences.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceIDCheckinPreferences.h; path = Firebase/InstanceID/FIRInstanceIDCheckinPreferences.h; sourceTree = ""; }; + 7FFB1CFCB7AE208F8D3D089B15488C60 /* FIRFacebookAuthProvider.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRFacebookAuthProvider.h; path = Firebase/Auth/Source/Public/FIRFacebookAuthProvider.h; sourceTree = ""; }; + 800A285036A1C72C13CE84856A6DF915 /* FIRActionCodeSettings.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRActionCodeSettings.h; path = Firebase/Auth/Source/Public/FIRActionCodeSettings.h; sourceTree = ""; }; + 8037AE9DE81A8F53FAB75B109848DDB9 /* FAtomicNumber.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FAtomicNumber.h; path = Firebase/Database/Utilities/FAtomicNumber.h; sourceTree = ""; }; + 80802B72EB152AEA0A022E73EBBECCC2 /* FRepoInfo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FRepoInfo.h; path = Firebase/Database/Core/FRepoInfo.h; sourceTree = ""; }; + 8086BDCAF2450AD0C34B61108E12D23E /* FIRGetAccountInfoRequest.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRGetAccountInfoRequest.m; path = Firebase/Auth/Source/Backend/RPC/FIRGetAccountInfoRequest.m; sourceTree = ""; }; + 8165FB9ADE22631BBE3200B60A6CF17E /* FirebaseAuth-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "FirebaseAuth-dummy.m"; sourceTree = ""; }; + 816C47B14540E922562B2F7A0AF25684 /* GULReachabilityChecker.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GULReachabilityChecker.h; path = GoogleUtilities/Reachability/Private/GULReachabilityChecker.h; sourceTree = ""; }; + 81E552747E514BC894B2FA2671AD4F62 /* FStorageEngine.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FStorageEngine.h; path = Firebase/Database/Persistence/FStorageEngine.h; sourceTree = ""; }; + 8211A1FFBD88C81D6A50C491C86CA3FF /* FIRInstanceIDLogger.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceIDLogger.h; path = Firebase/InstanceID/FIRInstanceIDLogger.h; sourceTree = ""; }; + 8236E64C073482BA7586E8CCDE688387 /* filename.cc */ = {isa = PBXFileReference; includeInIndex = 1; name = filename.cc; path = db/filename.cc; sourceTree = ""; }; + 826CE4BF95A1250C93125C1683B7C4A1 /* FirebaseAuth.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = FirebaseAuth.modulemap; sourceTree = ""; }; + 8295AFFB6E5D0634BBC1EC87B3D404C0 /* filename.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = filename.h; path = db/filename.h; sourceTree = ""; }; + 82A9B813E254325D96A9C5B35B4F4FBA /* FTupleBoolBlock.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FTupleBoolBlock.m; path = Firebase/Database/Utilities/Tuples/FTupleBoolBlock.m; sourceTree = ""; }; + 82D8B01FD180CFE6C72AB20576E2D280 /* FNextPushId.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FNextPushId.m; path = Firebase/Database/Utilities/FNextPushId.m; sourceTree = ""; }; + 8339E4AC239148D2E1BC012A7792CDB1 /* nanopb-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "nanopb-Info.plist"; sourceTree = ""; }; + 834519348EA9354FA135B93DE1146B13 /* RLMSwiftSupport.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RLMSwiftSupport.m; path = Realm/RLMSwiftSupport.m; sourceTree = ""; }; + 838C6552858C245D9560D7948DAFC057 /* GTMDebugThreadValidation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTMDebugThreadValidation.h; path = DebugUtils/GTMDebugThreadValidation.h; sourceTree = ""; }; + 8390CAAFAA2B5B7F47FC0742BC409DC8 /* FIRAuthAPNSToken.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRAuthAPNSToken.m; path = Firebase/Auth/Source/SystemService/FIRAuthAPNSToken.m; sourceTree = ""; }; + 840809733AFDA8C2C8BF80FEA474063E /* FTupleObjects.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FTupleObjects.h; path = Firebase/Database/Utilities/Tuples/FTupleObjects.h; sourceTree = ""; }; + 843CDCE82343D5064FB5A924E2CA6C50 /* FIRDatabaseReference.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRDatabaseReference.h; path = Firebase/Database/Public/FIRDatabaseReference.h; sourceTree = ""; }; + 844C21BAF3D357863CBABB78905C2C0F /* FIRGitHubAuthProvider.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRGitHubAuthProvider.h; path = Firebase/Auth/Source/Public/FIRGitHubAuthProvider.h; sourceTree = ""; }; + 846134E0C1FE4B19BAE203AFC5D5C5D7 /* RLMCollection.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = RLMCollection.mm; path = Realm/RLMCollection.mm; sourceTree = ""; }; + 84721690A36C05785F13ACDFC535E3BA /* GTMNSDictionary+URLArguments.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "GTMNSDictionary+URLArguments.m"; path = "Foundation/GTMNSDictionary+URLArguments.m"; sourceTree = ""; }; + 84F80DE6177F8732EACA7487982C406F /* RLMObjectSchema_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RLMObjectSchema_Private.h; path = include/RLMObjectSchema_Private.h; sourceTree = ""; }; + 85366F8E3898D45D85CEE2F8C70205A5 /* log_writer.cc */ = {isa = PBXFileReference; includeInIndex = 1; name = log_writer.cc; path = db/log_writer.cc; sourceTree = ""; }; + 85828CAF2C09013792F5B4A6BF3737DE /* GULOriginalIMPConvenienceMacros.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GULOriginalIMPConvenienceMacros.h; path = GoogleUtilities/MethodSwizzler/Private/GULOriginalIMPConvenienceMacros.h; sourceTree = ""; }; + 85860B8EFEA3512605A46E8157900EF0 /* FIRInstanceIDTokenDeleteOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstanceIDTokenDeleteOperation.m; path = Firebase/InstanceID/FIRInstanceIDTokenDeleteOperation.m; sourceTree = ""; }; + 85D0B35D3F6C8AE536AE7FA7C37F2CA7 /* options.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = options.h; path = include/leveldb/options.h; sourceTree = ""; }; + 874ADBD29C538221F2E792A14B1AB80F /* RLMSyncUser.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RLMSyncUser.h; path = include/RLMSyncUser.h; sourceTree = ""; }; + 87B067CF88F9934DF556AE2863AD79F7 /* FIRInstanceIDCheckinService.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceIDCheckinService.h; path = Firebase/InstanceID/FIRInstanceIDCheckinService.h; sourceTree = ""; }; + 8821C4EAD2D871AE17AB8FC34386D6CC /* FCompoundWrite.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FCompoundWrite.h; path = Firebase/Database/Snapshot/FCompoundWrite.h; sourceTree = ""; }; + 88B865ECBDCF736FA92084EC45816DD3 /* FIRSendVerificationCodeRequest.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRSendVerificationCodeRequest.h; path = Firebase/Auth/Source/Backend/RPC/FIRSendVerificationCodeRequest.h; sourceTree = ""; }; + 88C8E6FFB32B1A88056718CF862D4A79 /* list.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = list.cpp; path = Realm/ObjectStore/src/list.cpp; sourceTree = ""; }; + 890C7A4D405C2F2089F37E0DAF07826E /* FCompleteChildSource.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FCompleteChildSource.h; path = Firebase/Database/Core/View/Filter/FCompleteChildSource.h; sourceTree = ""; }; + 89A887688FA23EA660C1C65238C57A5E /* FIRAuthCredential.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRAuthCredential.m; path = Firebase/Auth/Source/AuthProvider/FIRAuthCredential.m; sourceTree = ""; }; + 89CCF1C40EB92C7E6EE130415FE2A93C /* thread_safe_reference.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = thread_safe_reference.cpp; path = Realm/ObjectStore/src/thread_safe_reference.cpp; sourceTree = ""; }; + 89D494CBC93A35AE9100DDC587C9AB05 /* GTMDebugSelectorValidation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTMDebugSelectorValidation.h; path = DebugUtils/GTMDebugSelectorValidation.h; sourceTree = ""; }; + 8B0B094B7E42252A9F06BDA31219F490 /* skiplist.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = skiplist.h; path = db/skiplist.h; sourceTree = ""; }; + 8B8C73044AF0FE20EF2301CE5E37B081 /* FIRAuthAPNSToken.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRAuthAPNSToken.h; path = Firebase/Auth/Source/SystemService/FIRAuthAPNSToken.h; sourceTree = ""; }; + 8C67FC0A26ABE274C1B65C10C955EEA9 /* FPathIndex.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FPathIndex.m; path = Firebase/Database/FPathIndex.m; sourceTree = ""; }; + 8C7A0B5816E439A5C3F0DE7104B4825D /* GoogleSignIn.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = GoogleSignIn.xcconfig; sourceTree = ""; }; + 8CBDE858ADC53E69AA81D87E345D2FA0 /* testharness.cc */ = {isa = PBXFileReference; includeInIndex = 1; name = testharness.cc; path = util/testharness.cc; sourceTree = ""; }; + 8CDC780159B55410507B3752000BAECD /* FSRWebSocket.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FSRWebSocket.m; path = Firebase/Database/third_party/SocketRocket/FSRWebSocket.m; sourceTree = ""; }; + 8CE6705149DB9563E4B9089C447FE13C /* network_reachability_observer.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = network_reachability_observer.cpp; path = Realm/ObjectStore/src/sync/impl/apple/network_reachability_observer.cpp; sourceTree = ""; }; + 8D334483E2E6F7EE9902BA1480CA2762 /* RLMCollection.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RLMCollection.h; path = include/RLMCollection.h; sourceTree = ""; }; + 8DBCF752BFC22CECC68D698A40C23A2B /* FTupleUserCallback.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FTupleUserCallback.m; path = Firebase/Database/Utilities/Tuples/FTupleUserCallback.m; sourceTree = ""; }; + 8E553B569C18DFA1AC66671B2799401C /* FIRAuthTokenResult.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRAuthTokenResult.m; path = Firebase/Auth/Source/Auth/FIRAuthTokenResult.m; sourceTree = ""; }; + 8ECDABF9AB0CA8F83D4590424B20E0D7 /* FIROAuthCredential.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIROAuthCredential.h; path = Firebase/Auth/Source/Public/FIROAuthCredential.h; sourceTree = ""; }; + 8ECF4C5791B498BE6416566555758B03 /* RLMOptionalBase.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = RLMOptionalBase.mm; path = Realm/RLMOptionalBase.mm; sourceTree = ""; }; + 8EE7F71638BDFD912AFCE02790D04BA0 /* FSRWebSocket.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FSRWebSocket.h; path = Firebase/Database/third_party/SocketRocket/FSRWebSocket.h; sourceTree = ""; }; + 8F186BFBD23EE125311E4AB45F99CF84 /* FirebaseDatabase-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "FirebaseDatabase-umbrella.h"; sourceTree = ""; }; + 8F39CD3D4452D3B66568553467302538 /* RLMRealmConfiguration+Sync.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = "RLMRealmConfiguration+Sync.mm"; path = "Realm/RLMRealmConfiguration+Sync.mm"; sourceTree = ""; }; + 8F48277CAF1C0BBDC388795C1119FE00 /* FRepo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FRepo.h; path = Firebase/Database/Core/FRepo.h; sourceTree = ""; }; + 8F5E21ED0742C844100BE9764330C0E7 /* RLMAnalytics.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = RLMAnalytics.mm; path = Realm/RLMAnalytics.mm; sourceTree = ""; }; + 8F6DE6AD1028A4D2AE028461BDB16770 /* mutexlock.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = mutexlock.h; path = util/mutexlock.h; sourceTree = ""; }; + 8F8725D4D36E8CE22102EA3CF7AABC89 /* APLevelDB.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = APLevelDB.mm; path = "Firebase/Database/third_party/Wrap-leveldb/APLevelDB.mm"; sourceTree = ""; }; + 8FAA8D07AD2C2F333B3892217980A2A0 /* FPersistentConnection.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FPersistentConnection.h; path = Firebase/Database/Core/FPersistentConnection.h; sourceTree = ""; }; + 9018C388971EEE407C4EE5B7A38ACFD5 /* RLMConstants.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RLMConstants.h; path = include/RLMConstants.h; sourceTree = ""; }; + 9019A686D2810C3BF4601AE0513C82AF /* FIRAuth.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRAuth.h; path = Firebase/Auth/Source/Public/FIRAuth.h; sourceTree = ""; }; + 90533111C976BBF06981B4890E7646AA /* FIRGetOOBConfirmationCodeResponse.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRGetOOBConfirmationCodeResponse.h; path = Firebase/Auth/Source/Backend/RPC/FIRGetOOBConfirmationCodeResponse.h; sourceTree = ""; }; + 90639A07E4D80F26976C27617ED816E9 /* FIRLibrary.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRLibrary.h; path = Firebase/Core/Private/FIRLibrary.h; sourceTree = ""; }; + 90719D6571B23A2A07893FE9B770DF02 /* RealmCollection.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RealmCollection.swift; path = RealmSwift/RealmCollection.swift; sourceTree = ""; }; + 908666ADE4FBDCFE74CF707F697378DA /* FIRAuthErrorUtils.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRAuthErrorUtils.h; path = Firebase/Auth/Source/Utilities/FIRAuthErrorUtils.h; sourceTree = ""; }; + 90A3BCFEB57B7AED418AE27280992314 /* YMTGetDeviceName-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "YMTGetDeviceName-prefix.pch"; sourceTree = ""; }; + 90BBC5F4614361D6802C0955F5F7FD6F /* collection_change_builder.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = collection_change_builder.cpp; path = Realm/ObjectStore/src/impl/collection_change_builder.cpp; sourceTree = ""; }; + 90C023251D69063DF88D89CF04B38F98 /* FIRSignInWithGameCenterResponse.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRSignInWithGameCenterResponse.m; path = Firebase/Auth/Source/Backend/RPC/FIRSignInWithGameCenterResponse.m; sourceTree = ""; }; + 91F9FE77061A16B37A212F2945591314 /* port_example.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = port_example.h; path = port/port_example.h; sourceTree = ""; }; 921BE4A82C4A7A5C72A0C6F8B8FEF200 /* Realm.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Realm.framework; path = Realm.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 9281E6A291A8C568F5C0CE1182D4D803 /* nanopb.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = nanopb.modulemap; sourceTree = ""; }; - 92EB02F6240A5D7F8BB826B9D700C38F /* FListenProvider.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FListenProvider.h; path = Firebase/Database/Core/FListenProvider.h; sourceTree = ""; }; - 92F37DCB1BA5FBC85C39369C207ECDE4 /* FIndex.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIndex.h; path = Firebase/Database/FIndex.h; sourceTree = ""; }; - 9391F04A644E0209A6F7F1C92AB2541E /* leveldb-library-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "leveldb-library-Info.plist"; sourceTree = ""; }; - 951721F056BC808FE1FB0CC2A0D370FD /* port_posix.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = port_posix.h; path = port/port_posix.h; sourceTree = ""; }; - 953EF2BD32497560790AA08AE9B2D057 /* FIRInstanceIDTokenStore.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceIDTokenStore.h; path = Firebase/InstanceID/FIRInstanceIDTokenStore.h; sourceTree = ""; }; - 95AB6CD34FBFFF81FD20C63CB991FB3C /* RLMRealm+Sync.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "RLMRealm+Sync.h"; path = "include/RLMRealm+Sync.h"; sourceTree = ""; }; - 95FAD538204FA5D047B742FDC630D693 /* FirebaseInstanceID-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "FirebaseInstanceID-umbrella.h"; sourceTree = ""; }; - 95FD024F010448AE198FEAF40DA88040 /* FIRNoopAuthTokenProvider.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRNoopAuthTokenProvider.h; path = Firebase/Database/Login/FIRNoopAuthTokenProvider.h; sourceTree = ""; }; - 9693A32E3D3AE4A6A64D89F5FE5C6842 /* Realm.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Realm.xcconfig; sourceTree = ""; }; - 96A064E42F4DAAF2385416A19D627D1C /* FTupleSetIdPath.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FTupleSetIdPath.h; path = Firebase/Database/Utilities/Tuples/FTupleSetIdPath.h; sourceTree = ""; }; - 96D7B586A22D0FDF6C502794CD097BB2 /* RLMAccessor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RLMAccessor.h; path = include/RLMAccessor.h; sourceTree = ""; }; - 9803894BB3093DD53DB8CF7B6F05A62F /* bloom.cc */ = {isa = PBXFileReference; includeInIndex = 1; name = bloom.cc; path = util/bloom.cc; sourceTree = ""; }; - 9843BC20AC2ED23810EDF684637C15C5 /* RLMResults.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RLMResults.h; path = include/RLMResults.h; sourceTree = ""; }; - 98BC557003393E5B6A222C403A5E06FE /* FPriorityIndex.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FPriorityIndex.m; path = Firebase/Database/FPriorityIndex.m; sourceTree = ""; }; - 99818133B2260B106022702610DC650B /* Aliases.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Aliases.swift; path = RealmSwift/Aliases.swift; sourceTree = ""; }; - 99A55B1A156801B69DCDC5188017CDE1 /* partial_sync.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = partial_sync.cpp; path = Realm/ObjectStore/src/sync/partial_sync.cpp; sourceTree = ""; }; - 99EB3B614B8C061A7DC06765BE10D0F9 /* object.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = object.cpp; path = Realm/ObjectStore/src/object.cpp; sourceTree = ""; }; - 9A1CCE5149144282C117C9E78B51D22B /* FIRDataSnapshot.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRDataSnapshot.h; path = Firebase/Database/Public/FIRDataSnapshot.h; sourceTree = ""; }; - 9A240BB32B4FF323AF9B910237F47F34 /* RealmSwift-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "RealmSwift-dummy.m"; sourceTree = ""; }; - 9ABCE100DA703E4DA46A38A32DF9C959 /* binding_callback_thread_observer.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = binding_callback_thread_observer.cpp; path = Realm/ObjectStore/src/binding_callback_thread_observer.cpp; sourceTree = ""; }; - 9BF6AC03DA6DD95107B1920EC6ECCE2F /* RLMMigration.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RLMMigration.h; path = include/RLMMigration.h; sourceTree = ""; }; - 9C019372595DED9AB88F4623CEFC0F83 /* realm_coordinator.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = realm_coordinator.cpp; path = Realm/ObjectStore/src/impl/realm_coordinator.cpp; sourceTree = ""; }; - 9CC4B5172FBBB51FD79B4F660221EBEE /* FTrackedQuery.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FTrackedQuery.m; path = Firebase/Database/Persistence/FTrackedQuery.m; sourceTree = ""; }; - 9D045672218BD8A4309A41E3B34BF366 /* RLMConstants.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RLMConstants.h; path = include/RLMConstants.h; sourceTree = ""; }; - 9D2DA84A9FA77488723EC0F2E643180A /* FImmutableSortedDictionary.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FImmutableSortedDictionary.m; path = Firebase/Database/third_party/FImmutableSortedDictionary/FImmutableSortedDictionary/FImmutableSortedDictionary.m; sourceTree = ""; }; - 9D727AF5545A9254938770945F89ECFE /* FIRErrors.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRErrors.h; path = Firebase/Core/Private/FIRErrors.h; sourceTree = ""; }; - 9D89388C71B2B1FD6EC78EBEBBF31E53 /* FIRServerValue.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRServerValue.h; path = Firebase/Database/Public/FIRServerValue.h; sourceTree = ""; }; + 9290926BBBB928FA3B8C2DB305F0C4D5 /* FPersistentConnection.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FPersistentConnection.m; path = Firebase/Database/Core/FPersistentConnection.m; sourceTree = ""; }; + 929AE1832275AFBC62861424C1AE7F2F /* Pods-shlack-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-shlack-resources.sh"; sourceTree = ""; }; + 92ADBAF3A2C7EC182800DA7081D2D816 /* FIRErrorCode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRErrorCode.h; path = Firebase/Core/Private/FIRErrorCode.h; sourceTree = ""; }; + 92BCC7C0CEAEC882638A0FE6B84F7795 /* FIRGetOOBConfirmationCodeRequest.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRGetOOBConfirmationCodeRequest.h; path = Firebase/Auth/Source/Backend/RPC/FIRGetOOBConfirmationCodeRequest.h; sourceTree = ""; }; + 92FAADBDA4EFC457B8E526B091845F04 /* FOverwrite.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FOverwrite.m; path = Firebase/Database/Core/Operation/FOverwrite.m; sourceTree = ""; }; + 931B7F66FB9024BCD0629F03799B167F /* FPathIndex.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FPathIndex.h; path = Firebase/Database/FPathIndex.h; sourceTree = ""; }; + 9445A295A5DAAF312B3015CA3966FA7E /* FIRSecureTokenRequest.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRSecureTokenRequest.h; path = Firebase/Auth/Source/Backend/RPC/FIRSecureTokenRequest.h; sourceTree = ""; }; + 9485AFB8607075CD0DFBF32E62AA4447 /* write_batch_internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = write_batch_internal.h; path = db/write_batch_internal.h; sourceTree = ""; }; + 952FE2409E0334273396C732E17D34F2 /* FIRInstanceIDKeyPairStore.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceIDKeyPairStore.h; path = Firebase/InstanceID/FIRInstanceIDKeyPairStore.h; sourceTree = ""; }; + 953A7128CE9476055E2510BA47220556 /* dumpfile.cc */ = {isa = PBXFileReference; includeInIndex = 1; name = dumpfile.cc; path = db/dumpfile.cc; sourceTree = ""; }; + 960C042647A3ED6C8C00814EE00B41CC /* FIRAdditionalUserInfo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRAdditionalUserInfo.h; path = Firebase/Auth/Source/Public/FIRAdditionalUserInfo.h; sourceTree = ""; }; + 9610649D5B7A1EF3E78027C64CC1F65B /* FIRAuthRequestConfiguration.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRAuthRequestConfiguration.m; path = Firebase/Auth/Source/Backend/FIRAuthRequestConfiguration.m; sourceTree = ""; }; + 9651C433B718EAA10022E1613255A895 /* RLMArray.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RLMArray.h; path = include/RLMArray.h; sourceTree = ""; }; + 96F8E35A34C661EC8ED3BE07CCE88B94 /* FirebaseAuth-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "FirebaseAuth-Info.plist"; sourceTree = ""; }; + 97295361277BD22FF7037B30D2DE444D /* RLMMigration.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RLMMigration.h; path = include/RLMMigration.h; sourceTree = ""; }; + 9816C36948CE2553DB4BE8E8987BE70E /* RLMMigration.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = RLMMigration.mm; path = Realm/RLMMigration.mm; sourceTree = ""; }; + 9848DC38F61C072F9EFD459DC7F1D2E2 /* FIRActionCodeSettings.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRActionCodeSettings.m; path = Firebase/Auth/Source/Auth/FIRActionCodeSettings.m; sourceTree = ""; }; + 9866F096503E2223E40044F891E7148D /* FEventGenerator.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FEventGenerator.m; path = Firebase/Database/FEventGenerator.m; sourceTree = ""; }; + 98ACC074E83B832BCA32A28F224DE4BE /* FIRVerifyAssertionResponse.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRVerifyAssertionResponse.m; path = Firebase/Auth/Source/Backend/RPC/FIRVerifyAssertionResponse.m; sourceTree = ""; }; + 98CC55D7B263D085C9BBC58494F20747 /* FIRGetAccountInfoResponse.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRGetAccountInfoResponse.h; path = Firebase/Auth/Source/Backend/RPC/FIRGetAccountInfoResponse.h; sourceTree = ""; }; + 98D314B7B00C1663199A813DACDC7F17 /* GULLogger.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GULLogger.m; path = GoogleUtilities/Logger/GULLogger.m; sourceTree = ""; }; + 9984B99F803A00F0B02A4E700741E7E0 /* FKeepSyncedEventRegistration.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FKeepSyncedEventRegistration.h; path = Firebase/Database/Core/View/FKeepSyncedEventRegistration.h; sourceTree = ""; }; + 99CD60BC57D32DF9C038E8BE112FED4C /* table_builder.cc */ = {isa = PBXFileReference; includeInIndex = 1; name = table_builder.cc; path = table/table_builder.cc; sourceTree = ""; }; + 9A8422D16BEF38E158597614E14D2A71 /* FirebaseDatabase.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FirebaseDatabase.h; path = Firebase/Database/Public/FirebaseDatabase.h; sourceTree = ""; }; + 9A8DD9F9E4D089EA0A0BE2137ED87C29 /* FCompoundHash.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FCompoundHash.h; path = Firebase/Database/Core/FCompoundHash.h; sourceTree = ""; }; + 9B994AACC237C8237D8EC966A01A5CD0 /* YMTGetDeviceName.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = YMTGetDeviceName.swift; path = YMTGetDeviceName/YMTGetDeviceName.swift; sourceTree = ""; }; + 9C18287BBE1F9EE7CADB21C90C0736BE /* FIRSendVerificationCodeResponse.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRSendVerificationCodeResponse.m; path = Firebase/Auth/Source/Backend/RPC/FIRSendVerificationCodeResponse.m; sourceTree = ""; }; + 9CCE247AF3AD8A8C665DE382E4E71208 /* FOperationSource.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FOperationSource.m; path = Firebase/Database/Core/Operation/FOperationSource.m; sourceTree = ""; }; + 9CD9BCD407DED5F2DDA00A180D12F8E9 /* iterator.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = iterator.h; path = include/leveldb/iterator.h; sourceTree = ""; }; + 9D31ED110C3A5C21CF71740C8DFA57C3 /* FListenComplete.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FListenComplete.h; path = Firebase/Database/FListenComplete.h; sourceTree = ""; }; + 9D6948FE6F5CCA55283F677AC65538E8 /* FIREmailLinkSignInRequest.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIREmailLinkSignInRequest.m; path = Firebase/Auth/Source/Backend/RPC/FIREmailLinkSignInRequest.m; sourceTree = ""; }; 9D940727FF8FB9C785EB98E56350EF41 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; - 9DFE31ED74B2B0CF5CF1B48C343AB34D /* FIRInstanceIDConstants.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceIDConstants.h; path = Firebase/InstanceID/FIRInstanceIDConstants.h; sourceTree = ""; }; + 9E06A1EBDB24838B3CF520C2AE1D1831 /* FIRAuthExceptionUtils.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRAuthExceptionUtils.m; path = Firebase/Auth/Source/Utilities/FIRAuthExceptionUtils.m; sourceTree = ""; }; + 9E3C8531B93F2D03226A887AA398BCF6 /* FPruneForest.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FPruneForest.h; path = Firebase/Database/Persistence/FPruneForest.h; sourceTree = ""; }; 9E8DC05D460737D52C44DF9E4CE31A70 /* Realm.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Realm.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 9F6D304D5EFE8F43EED0B67F5519A85E /* builder.cc */ = {isa = PBXFileReference; includeInIndex = 1; name = builder.cc; path = db/builder.cc; sourceTree = ""; }; - 9FCD78B89FA06B11E1602820B62E0B26 /* FIRDependency.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRDependency.m; path = Firebase/Core/FIRDependency.m; sourceTree = ""; }; - A116FCD593C7527EAAA12F1527DC47E7 /* GULNetworkURLSession.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GULNetworkURLSession.m; path = GoogleUtilities/Network/GULNetworkURLSession.m; sourceTree = ""; }; - A1CA43453FA816A0A880B02CB2A1BF71 /* FLLRBValueNode.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FLLRBValueNode.m; path = Firebase/Database/third_party/FImmutableSortedDictionary/FImmutableSortedDictionary/FLLRBValueNode.m; sourceTree = ""; }; - A1D0E58815360DE82ECFA8ABF6E6530D /* FirebaseInstanceID.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FirebaseInstanceID.h; path = Firebase/InstanceID/Public/FirebaseInstanceID.h; sourceTree = ""; }; - A1E1D517209C3F2ADEFC8A4A06A7007B /* RLMOptionalBase.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RLMOptionalBase.h; path = include/RLMOptionalBase.h; sourceTree = ""; }; - A20EB07A8D79B5E5268EDD89188267B3 /* RLMRealmUtil.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = RLMRealmUtil.mm; path = Realm/RLMRealmUtil.mm; sourceTree = ""; }; - A22B0302CF4C8B9EF16E9411F53E2CA8 /* FTupleObjectNode.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FTupleObjectNode.m; path = Firebase/Database/Utilities/Tuples/FTupleObjectNode.m; sourceTree = ""; }; - A24F3E1A7929B59A3F2A4A4F9E2D210B /* FIRDataSnapshot.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRDataSnapshot.m; path = Firebase/Database/Api/FIRDataSnapshot.m; sourceTree = ""; }; - A27455128329242102E432E9B83E4A67 /* RLMListBase.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = RLMListBase.mm; path = Realm/RLMListBase.mm; sourceTree = ""; }; - A428DE7C793B6D8629956E811905F4E6 /* Pods-shlack-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-shlack-Info.plist"; sourceTree = ""; }; - A434CC6C6809654C06366391491ECAF9 /* FTreeNode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FTreeNode.h; path = Firebase/Database/Core/Utilities/FTreeNode.h; sourceTree = ""; }; - A499F6893A04608DC60141646FDE36F7 /* RLMCollection.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RLMCollection.h; path = include/RLMCollection.h; sourceTree = ""; }; - A4AF2035141DF1584A2FCAFE8F64D88C /* RLMObject.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RLMObject.h; path = include/RLMObject.h; sourceTree = ""; }; - A4F8C8B36C6A1D82C59F84E4E6CEA54B /* FTupleUserCallback.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FTupleUserCallback.m; path = Firebase/Database/Utilities/Tuples/FTupleUserCallback.m; sourceTree = ""; }; - A4FF28B17689447E1E0477D1AA932149 /* RLMThreadSafeReference.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RLMThreadSafeReference.h; path = include/RLMThreadSafeReference.h; sourceTree = ""; }; - A519D3E35D7CAE8C0799448FD236C4BC /* Realm-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Realm-prefix.pch"; sourceTree = ""; }; - A5340C02A073613C483C6B33B80F3B4F /* repair.cc */ = {isa = PBXFileReference; includeInIndex = 1; name = repair.cc; path = db/repair.cc; sourceTree = ""; }; - A556F2666E6DB22010E3776F333A5B5B /* NSData+SRB64Additions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSData+SRB64Additions.h"; path = "Firebase/Database/third_party/SocketRocket/NSData+SRB64Additions.h"; sourceTree = ""; }; - A56CAC7090FE7B4BD4B6F308D829EF06 /* FPendingPut.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FPendingPut.m; path = Firebase/Database/Persistence/FPendingPut.m; sourceTree = ""; }; - A5C0F17E53B197BDB6824B6E65955619 /* FirebaseCore.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FirebaseCore.h; path = Firebase/Core/Public/FirebaseCore.h; sourceTree = ""; }; - A5EEC903DAA9889C414B212DEB69C9EB /* leveldb-library-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "leveldb-library-prefix.pch"; sourceTree = ""; }; - A64BBA1C856A4201DAC3BD0D8E098766 /* results_notifier.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = results_notifier.cpp; path = Realm/ObjectStore/src/impl/results_notifier.cpp; sourceTree = ""; }; - A698D1510223E0932B451B1E628DA832 /* FIRInstanceIDKeyPairUtilities.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstanceIDKeyPairUtilities.m; path = Firebase/InstanceID/FIRInstanceIDKeyPairUtilities.m; sourceTree = ""; }; - A6B3C7817D724A8A3302400BAB56D778 /* FTreeSortedDictionaryEnumerator.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FTreeSortedDictionaryEnumerator.h; path = Firebase/Database/third_party/FImmutableSortedDictionary/FImmutableSortedDictionary/FTreeSortedDictionaryEnumerator.h; sourceTree = ""; }; - A72EFF634E4D3BF54875061C0C717FA9 /* FLevelDBStorageEngine.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FLevelDBStorageEngine.h; path = Firebase/Database/Persistence/FLevelDBStorageEngine.h; sourceTree = ""; }; - A74BE1C3B38E191CFE615E651EB7BE2A /* RLMUtil.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = RLMUtil.mm; path = Realm/RLMUtil.mm; sourceTree = ""; }; - A7787FE428147EE7C12C5F94C299406A /* RLMSyncConfiguration_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RLMSyncConfiguration_Private.h; path = include/RLMSyncConfiguration_Private.h; sourceTree = ""; }; - A88BF4C13FC276E4362A34A12E2EB4A6 /* FIRMutableData.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRMutableData.m; path = Firebase/Database/Api/FIRMutableData.m; sourceTree = ""; }; - A890328063DB325604218EF882464D19 /* list_notifier.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = list_notifier.cpp; path = Realm/ObjectStore/src/impl/list_notifier.cpp; sourceTree = ""; }; - A8951E5F7EA456FA0578B3DD1E884381 /* FIRRetryHelper.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRRetryHelper.h; path = Firebase/Database/Core/Utilities/FIRRetryHelper.h; sourceTree = ""; }; - A9070054AB139029FDD2E0670A0318DC /* FNextPushId.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FNextPushId.h; path = Firebase/Database/Utilities/FNextPushId.h; sourceTree = ""; }; - A9280009C3D5F3BFD9BF39C760BFCC65 /* RLMSyncSession.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = RLMSyncSession.mm; path = Realm/RLMSyncSession.mm; sourceTree = ""; }; - A92FF9E6AB06C3C75197D5A06B4A7D9F /* RLMCollection.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = RLMCollection.mm; path = Realm/RLMCollection.mm; sourceTree = ""; }; - A954D946069AAC616E37E3600F91D0EE /* mutexlock.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = mutexlock.h; path = util/mutexlock.h; sourceTree = ""; }; - A9947A1B156CF5409AA2D9B4C6B08F7B /* FWriteRecord.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FWriteRecord.h; path = Firebase/Database/Core/FWriteRecord.h; sourceTree = ""; }; - A9A562BB6C6729A8501A16A3E398F8AC /* FNextPushId.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FNextPushId.m; path = Firebase/Database/Utilities/FNextPushId.m; sourceTree = ""; }; - A9C1EA42FABA879D36D4C65391FF08D3 /* FIRErrors.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRErrors.m; path = Firebase/Core/FIRErrors.m; sourceTree = ""; }; - AAB3C145E6056757861BA936291ABC7F /* RLMClassInfo.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = RLMClassInfo.mm; path = Realm/RLMClassInfo.mm; sourceTree = ""; }; - AADE9CEA7E9C2126E6F2F459734C73FD /* collection_notifications.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = collection_notifications.cpp; path = Realm/ObjectStore/src/collection_notifications.cpp; sourceTree = ""; }; - AAFA7E75C9A5878917AA505C0CB45F70 /* RLMListBase.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RLMListBase.h; path = include/RLMListBase.h; sourceTree = ""; }; - AB1694076D836C6163D4577E96E21EFF /* FirebaseDatabase.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = FirebaseDatabase.modulemap; sourceTree = ""; }; - AB3829D8AC7F13572C6781D8AA526776 /* FTrackedQuery.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FTrackedQuery.h; path = Firebase/Database/Persistence/FTrackedQuery.h; sourceTree = ""; }; - ABA4AD7A43DEC81F10C2FF0F2DD9B30C /* GULNSData+zlib.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "GULNSData+zlib.m"; path = "GoogleUtilities/NSData+zlib/GULNSData+zlib.m"; sourceTree = ""; }; - AC107BA1A8279B39F9D35818356DDC0C /* dumpfile.cc */ = {isa = PBXFileReference; includeInIndex = 1; name = dumpfile.cc; path = db/dumpfile.cc; sourceTree = ""; }; - AC4D11FC46FE59DC567F0DABA72CB07D /* RLMObject.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = RLMObject.mm; path = Realm/RLMObject.mm; sourceTree = ""; }; - AC9A8AC932E8EF20B24FCA58FD918620 /* FIRDatabaseConfig.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRDatabaseConfig.h; path = Firebase/Database/Api/FIRDatabaseConfig.h; sourceTree = ""; }; - AD6F935AF337404801EF7299D23DE75C /* FQueryParams.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FQueryParams.m; path = Firebase/Database/Core/FQueryParams.m; sourceTree = ""; }; - AE0E09EEA6DEC893BD7EC371D0DF0F05 /* FAtomicNumber.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FAtomicNumber.h; path = Firebase/Database/Utilities/FAtomicNumber.h; sourceTree = ""; }; - AE6A585FB55D856F4F767F4B1307D654 /* Migration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Migration.swift; path = RealmSwift/Migration.swift; sourceTree = ""; }; - B05B881816751106CA8912C1D9F7A355 /* RLMSchema.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = RLMSchema.mm; path = Realm/RLMSchema.mm; sourceTree = ""; }; - B06538CA6602D0F35E348807C5A19F68 /* FIRInstanceIDUtilities.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstanceIDUtilities.m; path = Firebase/InstanceID/FIRInstanceIDUtilities.m; sourceTree = ""; }; - B071D3FE29E413E7ABBBA61B6E5971EC /* FIRBundleUtil.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRBundleUtil.m; path = Firebase/Core/FIRBundleUtil.m; sourceTree = ""; }; - B072F854F793C1B6A5617085AB28CE67 /* Error.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Error.swift; path = RealmSwift/Error.swift; sourceTree = ""; }; - B0EB9D0D0FE5ED106C8C90A441BFC53D /* FPersistenceManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FPersistenceManager.m; path = Firebase/Database/Persistence/FPersistenceManager.m; sourceTree = ""; }; - B0F05B15A1B23EE3469F516DDA99A120 /* fbase64.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = fbase64.h; path = Firebase/Database/third_party/SocketRocket/fbase64.h; sourceTree = ""; }; - B1FE488050874954E1F8A35B399F9245 /* log_writer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = log_writer.h; path = db/log_writer.h; sourceTree = ""; }; - B21649DAB208CD435F380FE208887827 /* FIRNoopAuthTokenProvider.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRNoopAuthTokenProvider.m; path = Firebase/Database/Login/FIRNoopAuthTokenProvider.m; sourceTree = ""; }; - B25D39FBE9196DE0BB4485D886CF30A3 /* FIRDatabaseQuery.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRDatabaseQuery.h; path = Firebase/Database/Public/FIRDatabaseQuery.h; sourceTree = ""; }; - B295EE4778194C05D9AE2594C78EDE0C /* Util.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Util.swift; path = RealmSwift/Util.swift; sourceTree = ""; }; - B2AE63F6661A63AEC6C718E2DF32AF01 /* FIRDatabaseReference_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRDatabaseReference_Private.h; path = Firebase/Database/Api/Private/FIRDatabaseReference_Private.h; sourceTree = ""; }; - B2B9E5A00C7EB75B2E5B9C70F8A3F5C2 /* FStringUtilities.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FStringUtilities.h; path = Firebase/Database/Utilities/FStringUtilities.h; sourceTree = ""; }; - B2C19E586EF9AC4AC9E4F92431077361 /* FirebaseAnalytics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = FirebaseAnalytics.framework; path = Frameworks/FirebaseAnalytics.framework; sourceTree = ""; }; - B2E09D7F94F383DFF92D53643F9EC3D5 /* SwiftyJSON-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SwiftyJSON-prefix.pch"; sourceTree = ""; }; - B327834213EA2CFC6D5EC9C13EF7BDC6 /* RLMObjectBase_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RLMObjectBase_Private.h; path = include/RLMObjectBase_Private.h; sourceTree = ""; }; - B3453F66B08741D6ACA2A66435B99FB0 /* FIRInstanceIDStore.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstanceIDStore.m; path = Firebase/InstanceID/FIRInstanceIDStore.m; sourceTree = ""; }; + 9F1F07FA7481BAC45217E47C31186BB9 /* GoogleToolboxForMac.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = GoogleToolboxForMac.modulemap; sourceTree = ""; }; + 9F83FEB4006D3DF1767533CFE98D9FF6 /* FIRDatabaseReference_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRDatabaseReference_Private.h; path = Firebase/Database/Api/Private/FIRDatabaseReference_Private.h; sourceTree = ""; }; + 9F8A2E993F402BE9C680DF4865AFA38E /* RealmSwift-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "RealmSwift-umbrella.h"; sourceTree = ""; }; + 9FD3F9FB28F9DC36499105A3E0FA206C /* port_posix_sse.cc */ = {isa = PBXFileReference; includeInIndex = 1; name = port_posix_sse.cc; path = port/port_posix_sse.cc; sourceTree = ""; }; + 9FFF2ED0EC5A40671406A6A3A4FA6789 /* FIRErrors.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRErrors.h; path = Firebase/Core/Private/FIRErrors.h; sourceTree = ""; }; + A00ED326371D2BC421C2156E30799399 /* FPendingPut.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FPendingPut.m; path = Firebase/Database/Persistence/FPendingPut.m; sourceTree = ""; }; + A061C4B2E6C6AA3A233B91A05306DD75 /* RealmSwift-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "RealmSwift-Info.plist"; sourceTree = ""; }; + A098A33F61A9A31C1F8A8C386C2D0717 /* FIROAuthProvider.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIROAuthProvider.h; path = Firebase/Auth/Source/Public/FIROAuthProvider.h; sourceTree = ""; }; + A12C91A610BF1A3320BB959CCA59D715 /* FWebSocketConnection.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FWebSocketConnection.h; path = Firebase/Database/Realtime/FWebSocketConnection.h; sourceTree = ""; }; + A18613CEFEB8F5A09C34A72030A5744F /* port_posix.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = port_posix.h; path = port/port_posix.h; sourceTree = ""; }; + A221084F76B8EF12399B79FF37C7C018 /* FTupleUserCallback.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FTupleUserCallback.h; path = Firebase/Database/Utilities/Tuples/FTupleUserCallback.h; sourceTree = ""; }; + A25400298CE5C60EC7610EFADE099C6C /* pb_common.c */ = {isa = PBXFileReference; includeInIndex = 1; path = pb_common.c; sourceTree = ""; }; + A26B1BF3D3D1CA8C963F3BAEDE9B752D /* FIRBundleUtil.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRBundleUtil.m; path = Firebase/Core/FIRBundleUtil.m; sourceTree = ""; }; + A27FE471CDCEA372109072F776C8D6BC /* FIRAuthSettings.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRAuthSettings.m; path = Firebase/Auth/Source/Auth/FIRAuthSettings.m; sourceTree = ""; }; + A2844654F2753C45219E09FCC969FDC3 /* repair.cc */ = {isa = PBXFileReference; includeInIndex = 1; name = repair.cc; path = db/repair.cc; sourceTree = ""; }; + A2D6E538ED4100E8E69220E9BF510E71 /* FIRAuthUserDefaultsStorage.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRAuthUserDefaultsStorage.h; path = Firebase/Auth/Source/Storage/FIRAuthUserDefaultsStorage.h; sourceTree = ""; }; + A2EA08EB6D1ED8796A151FB3DD4CA7CC /* RLMRealm+Sync.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = "RLMRealm+Sync.mm"; path = "Realm/RLMRealm+Sync.mm"; sourceTree = ""; }; + A30268BFBB92AA06C4B62D2E79D572BD /* RLMClassInfo.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = RLMClassInfo.mm; path = Realm/RLMClassInfo.mm; sourceTree = ""; }; + A351360A70B2429BF18A09C253255DCB /* FIRGetOOBConfirmationCodeRequest.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRGetOOBConfirmationCodeRequest.m; path = Firebase/Auth/Source/Backend/RPC/FIRGetOOBConfirmationCodeRequest.m; sourceTree = ""; }; + A35583ECCBCEB0999189C8A13C1E7079 /* RLMJSONModels.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RLMJSONModels.m; path = Realm/RLMJSONModels.m; sourceTree = ""; }; + A3722686712CCFF7E10C8A5413C149D6 /* FIRInstanceIDKeyPairUtilities.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceIDKeyPairUtilities.h; path = Firebase/InstanceID/FIRInstanceIDKeyPairUtilities.h; sourceTree = ""; }; + A373DEE0775C8C95177A225CF72AC38A /* FPendingPut.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FPendingPut.h; path = Firebase/Database/Persistence/FPendingPut.h; sourceTree = ""; }; + A3A96C2678D44EFE4DBF723EE5A72C55 /* RLMObjectBase.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RLMObjectBase.h; path = include/RLMObjectBase.h; sourceTree = ""; }; + A3C25863F4E5C8A71C2F6FF516080B8A /* Schema.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Schema.swift; path = RealmSwift/Schema.swift; sourceTree = ""; }; + A3EF8A21484153FA9DA1FE98B50D6CDE /* FIRInstanceIDCheckinPreferences+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FIRInstanceIDCheckinPreferences+Internal.h"; path = "Firebase/InstanceID/FIRInstanceIDCheckinPreferences+Internal.h"; sourceTree = ""; }; + A3F11A3C7329497BD83D1C605219D828 /* YMTGetDeviceName.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = YMTGetDeviceName.modulemap; sourceTree = ""; }; + A402DA57E0EEAE3B5CCEC9A8E53AB314 /* FTrackedQueryManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FTrackedQueryManager.h; path = Firebase/Database/Persistence/FTrackedQueryManager.h; sourceTree = ""; }; + A41FF1A78EECBB87CA75CE6ECE23D234 /* FIRSetAccountInfoRequest.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRSetAccountInfoRequest.h; path = Firebase/Auth/Source/Backend/RPC/FIRSetAccountInfoRequest.h; sourceTree = ""; }; + A4D0E010BEBCAA24A0EAA4DE3CE70AE3 /* FIRInstanceIDURLQueryItem.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstanceIDURLQueryItem.m; path = Firebase/InstanceID/FIRInstanceIDURLQueryItem.m; sourceTree = ""; }; + A4DF10D039847B43CD017433A846BE65 /* FIRPhoneAuthCredential.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRPhoneAuthCredential.h; path = Firebase/Auth/Source/Public/FIRPhoneAuthCredential.h; sourceTree = ""; }; + A51683E4164EB54C25E8A31D5FD9FA8B /* RealmSwift-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "RealmSwift-dummy.m"; sourceTree = ""; }; + A5353C6A726445286BF6EA59D033A114 /* GULLoggerLevel.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GULLoggerLevel.h; path = GoogleUtilities/Logger/Public/GULLoggerLevel.h; sourceTree = ""; }; + A544F2B5BDA3346A8A24C423369B02AD /* FirebaseAnalytics.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = FirebaseAnalytics.xcconfig; sourceTree = ""; }; + A5A38A92F1DDA5DD9ADEAB425E0E62E7 /* FNextPushId.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FNextPushId.h; path = Firebase/Database/Utilities/FNextPushId.h; sourceTree = ""; }; + A5AEDDD63CE7C0CD93035E3FC6A6E828 /* FIRVerifyPhoneNumberRequest.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRVerifyPhoneNumberRequest.m; path = Firebase/Auth/Source/Backend/RPC/FIRVerifyPhoneNumberRequest.m; sourceTree = ""; }; + A607ED0A0BE0F45529AF19E856E587BC /* FTupleNodePath.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FTupleNodePath.m; path = Firebase/Database/Utilities/Tuples/FTupleNodePath.m; sourceTree = ""; }; + A652FE56D57C99A8508C105821FCD649 /* GoogleToolboxForMac.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = GoogleToolboxForMac.xcconfig; sourceTree = ""; }; + A6E6A7D4999278C896A79B9C5550F5DC /* FMaxNode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FMaxNode.h; path = Firebase/Database/FMaxNode.h; sourceTree = ""; }; + A718FE3CB3E9E72D3C3D51588333B8BF /* FCachePolicy.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FCachePolicy.h; path = Firebase/Database/Persistence/FCachePolicy.h; sourceTree = ""; }; + A7760D9DB3D22F67FF879ED10752C385 /* RLMSyncSession.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = RLMSyncSession.mm; path = Realm/RLMSyncSession.mm; sourceTree = ""; }; + A7F65EE630652D31A93CAF315876BEA5 /* Property.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Property.swift; path = RealmSwift/Property.swift; sourceTree = ""; }; + A8009E465002A5F884C0CC39887EDD8D /* logging.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = logging.h; path = util/logging.h; sourceTree = ""; }; + A802538D247C82A4FF30DCC8D9ABFDFC /* GTMSessionFetcher.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTMSessionFetcher.h; path = Source/GTMSessionFetcher.h; sourceTree = ""; }; + A852D81D7C81BE821C6A17C3A140C59E /* RLMManagedArray.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = RLMManagedArray.mm; path = Realm/RLMManagedArray.mm; sourceTree = ""; }; + A87EF188A5E3D2752A651EA1938675F9 /* FirebaseInstanceID-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "FirebaseInstanceID-Info.plist"; sourceTree = ""; }; + A8856392940E3B82F2F239C2AF1213ED /* RLMSyncSession.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RLMSyncSession.h; path = include/RLMSyncSession.h; sourceTree = ""; }; + A8B5308D9192D7E880BD61D63B04D6B2 /* FIRVerifyCustomTokenRequest.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRVerifyCustomTokenRequest.h; path = Firebase/Auth/Source/Backend/RPC/FIRVerifyCustomTokenRequest.h; sourceTree = ""; }; + A8FA9E569B39A1DE8F0763FCCEA2BB7B /* FTupleTransaction.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FTupleTransaction.m; path = Firebase/Database/Utilities/Tuples/FTupleTransaction.m; sourceTree = ""; }; + A903005631AC9C5FADFC6C5A126FCC45 /* RLMSchema.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = RLMSchema.mm; path = Realm/RLMSchema.mm; sourceTree = ""; }; + AA289684F1112D0416DEC76337B8E5F2 /* FIRSetAccountInfoResponse.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRSetAccountInfoResponse.m; path = Firebase/Auth/Source/Backend/RPC/FIRSetAccountInfoResponse.m; sourceTree = ""; }; + AA427C3E16AEC975371F102F14B4F20E /* FIRInstanceIDTokenOperation+Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FIRInstanceIDTokenOperation+Private.h"; path = "Firebase/InstanceID/FIRInstanceIDTokenOperation+Private.h"; sourceTree = ""; }; + AA881EC9667CD67D5AD1423D4D253A28 /* FIRInstanceIDURLQueryItem.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceIDURLQueryItem.h; path = Firebase/InstanceID/FIRInstanceIDURLQueryItem.h; sourceTree = ""; }; + AA92A4F85E2993BEF1FDC4B0828FD863 /* FIRAppAssociationRegistration.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRAppAssociationRegistration.m; path = Firebase/Core/FIRAppAssociationRegistration.m; sourceTree = ""; }; + AAB4894CF3318CE7EA1A70A22F3A4E36 /* FIRAuthSerialTaskQueue.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRAuthSerialTaskQueue.h; path = Firebase/Auth/Source/Auth/FIRAuthSerialTaskQueue.h; sourceTree = ""; }; + AACF28E1A2D2F9FE0BE171BBCFD045CA /* FirebaseAuth-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "FirebaseAuth-umbrella.h"; sourceTree = ""; }; + AB3CBC258054D04865CFC4D83D2F660A /* RLMObjectBase_Dynamic.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RLMObjectBase_Dynamic.h; path = include/RLMObjectBase_Dynamic.h; sourceTree = ""; }; + ABC2F525B1D8FBA1007C328A16898AF6 /* FIRGitHubAuthCredential.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRGitHubAuthCredential.m; path = Firebase/Auth/Source/AuthProvider/GitHub/FIRGitHubAuthCredential.m; sourceTree = ""; }; + ABE9741D4F81F872EDBA2E51BFAF8D1E /* FIRInstanceID.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceID.h; path = Firebase/InstanceID/Public/FIRInstanceID.h; sourceTree = ""; }; + ABF36141FBECA785CC48607985706346 /* Util.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Util.swift; path = RealmSwift/Util.swift; sourceTree = ""; }; + ABFE82B1CFA704BF96B84CFEF80A185C /* RLMSchema.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RLMSchema.h; path = include/RLMSchema.h; sourceTree = ""; }; + AC0CACDC3D144446C0DB8CFDAE09CFF9 /* FIRVerifyPasswordRequest.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRVerifyPasswordRequest.m; path = Firebase/Auth/Source/Backend/RPC/FIRVerifyPasswordRequest.m; sourceTree = ""; }; + AC12CB594977AA9992BE69DB2D60237C /* FSnapshotUtilities.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FSnapshotUtilities.h; path = Firebase/Database/Snapshot/FSnapshotUtilities.h; sourceTree = ""; }; + AC34CFC19FACD073DEF0F301269EFFAC /* FirebaseAuthVersion.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FirebaseAuthVersion.h; path = Firebase/Auth/Source/Public/FirebaseAuthVersion.h; sourceTree = ""; }; + AC4BFBDF4DD6BB237FCC21FA55682814 /* FCacheNode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FCacheNode.h; path = Firebase/Database/Core/View/FCacheNode.h; sourceTree = ""; }; + AC5C463C527B8A9BBC85C66035796FE8 /* LinkingObjects.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = LinkingObjects.swift; path = RealmSwift/LinkingObjects.swift; sourceTree = ""; }; + AC621A3E56AA419AE4D56F0CC2BC8053 /* FIRErrors.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRErrors.m; path = Firebase/Core/FIRErrors.m; sourceTree = ""; }; + AC836764EE632A171018079BA24C6F94 /* merger.cc */ = {isa = PBXFileReference; includeInIndex = 1; name = merger.cc; path = table/merger.cc; sourceTree = ""; }; + ACC0F8CF01D640B7ADC025DA696085B0 /* FIRInstanceIDLogger.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstanceIDLogger.m; path = Firebase/InstanceID/FIRInstanceIDLogger.m; sourceTree = ""; }; + AD3957E2C653C89360E7086E824EF347 /* FAckUserWrite.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FAckUserWrite.m; path = Firebase/Database/Core/Operation/FAckUserWrite.m; sourceTree = ""; }; + AD52B279EA2AC09169D29364CFD23F6F /* two_level_iterator.cc */ = {isa = PBXFileReference; includeInIndex = 1; name = two_level_iterator.cc; path = table/two_level_iterator.cc; sourceTree = ""; }; + AD589215D74BA7D59C8AEF57FE525034 /* log_format.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = log_format.h; path = db/log_format.h; sourceTree = ""; }; + AD5C0D942A1AA6E107F1B199F88119E7 /* NSError+RLMSync.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSError+RLMSync.m"; path = "Realm/NSError+RLMSync.m"; sourceTree = ""; }; + AD75F6F8377161E820B76C39CD91B574 /* FIRInstanceIDTokenManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstanceIDTokenManager.m; path = Firebase/InstanceID/FIRInstanceIDTokenManager.m; sourceTree = ""; }; + AD761357D66650C8939FDD11F504EDB0 /* env_posix.cc */ = {isa = PBXFileReference; includeInIndex = 1; name = env_posix.cc; path = util/env_posix.cc; sourceTree = ""; }; + ADBCA8B417E07F18DAF8456392903D6E /* RLMSyncSubscription.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RLMSyncSubscription.h; path = include/RLMSyncSubscription.h; sourceTree = ""; }; + AE5C6FA3B3C8472B28E77B79EE0245F2 /* GULNSData+zlib.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "GULNSData+zlib.h"; path = "GoogleUtilities/NSData+zlib/GULNSData+zlib.h"; sourceTree = ""; }; + AE5C7B4D8E7E7E47FE5FEF69CC1B2B06 /* FIRAuthDataResult.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRAuthDataResult.m; path = Firebase/Auth/Source/Auth/FIRAuthDataResult.m; sourceTree = ""; }; + AE90504A6FF7DB088266D730CA985014 /* FIRCreateAuthURIResponse.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRCreateAuthURIResponse.m; path = Firebase/Auth/Source/Backend/RPC/FIRCreateAuthURIResponse.m; sourceTree = ""; }; + AF568C2BDFE5DA7F3BB888CBAB54FB50 /* FIRAuthInternalErrors.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRAuthInternalErrors.h; path = Firebase/Auth/Source/Utilities/FIRAuthInternalErrors.h; sourceTree = ""; }; + AFF84D9DB30BDBB29D196044608B6709 /* FIRAuthAppCredentialManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRAuthAppCredentialManager.m; path = Firebase/Auth/Source/SystemService/FIRAuthAppCredentialManager.m; sourceTree = ""; }; + B061083E93348F25AD8454A90AF95B1D /* FIRAuthAPNSTokenManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRAuthAPNSTokenManager.m; path = Firebase/Auth/Source/SystemService/FIRAuthAPNSTokenManager.m; sourceTree = ""; }; + B088CD9A297CEE21F1B5F207AE9ED091 /* FRepo_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FRepo_Private.h; path = Firebase/Database/Core/FRepo_Private.h; sourceTree = ""; }; + B11165CE850B96B457E475B8F0D2B618 /* testharness.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = testharness.h; path = util/testharness.h; sourceTree = ""; }; + B11DA717C549EA2743BF5B52DCA1451F /* FIRPhoneAuthProvider.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRPhoneAuthProvider.m; path = Firebase/Auth/Source/AuthProvider/Phone/FIRPhoneAuthProvider.m; sourceTree = ""; }; + B173555413A897913F96AC06E1A920CD /* FIRResetPasswordResponse.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRResetPasswordResponse.h; path = Firebase/Auth/Source/Backend/RPC/FIRResetPasswordResponse.h; sourceTree = ""; }; + B218C6A133EF5CC9F3B50BCF89EDA9FD /* FIRSignUpNewUserResponse.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRSignUpNewUserResponse.h; path = Firebase/Auth/Source/Backend/RPC/FIRSignUpNewUserResponse.h; sourceTree = ""; }; + B2419D687C8C33ED7CDCB06D4A7716AC /* block_builder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = block_builder.h; path = table/block_builder.h; sourceTree = ""; }; + B24867D9CD2585E9435AF8FEA4434AD0 /* FIRInstanceIDAPNSInfo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceIDAPNSInfo.h; path = Firebase/InstanceID/FIRInstanceIDAPNSInfo.h; sourceTree = ""; }; + B2CF6DB72820D6358D225A175ADCE45B /* ObjectiveCSupport.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ObjectiveCSupport.swift; path = RealmSwift/ObjectiveCSupport.swift; sourceTree = ""; }; + B2EF1BEB09B0FB783BF5B6C00786ECFA /* FStringUtilities.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FStringUtilities.h; path = Firebase/Database/Utilities/FStringUtilities.h; sourceTree = ""; }; + B3335695C4D824B28E49AC20951FD113 /* FRangeMerge.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FRangeMerge.h; path = Firebase/Database/Core/FRangeMerge.h; sourceTree = ""; }; + B3521801B91A5CF75EC528344B8D2A77 /* FIRAuthStoredUserManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRAuthStoredUserManager.h; path = Firebase/Auth/Source/SystemService/FIRAuthStoredUserManager.h; sourceTree = ""; }; + B3611F38D4D93238F8E7F467D3C5D58C /* dbformat.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = dbformat.h; path = db/dbformat.h; sourceTree = ""; }; + B365636DDC3FF3D4AA0F09B59D0DD06F /* RLMProperty.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = RLMProperty.mm; path = Realm/RLMProperty.mm; sourceTree = ""; }; + B391FFC995CCE8659980D535986D718F /* FIRApp.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRApp.h; path = Firebase/Core/Public/FIRApp.h; sourceTree = ""; }; + B3BBD37B5E9B1529005D5D42DD140EE4 /* FIRGetProjectConfigRequest.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRGetProjectConfigRequest.m; path = Firebase/Auth/Source/Backend/RPC/FIRGetProjectConfigRequest.m; sourceTree = ""; }; + B3D72BF360EC0A16FA31CDF18D8453DB /* FIRVerifyPhoneNumberResponse.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRVerifyPhoneNumberResponse.h; path = Firebase/Auth/Source/Backend/RPC/FIRVerifyPhoneNumberResponse.h; sourceTree = ""; }; B43874C6CBB50E7134FBEC24BABFE14F /* GoogleUtilities.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = GoogleUtilities.framework; path = GoogleUtilities.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - B445143D10CCECEA2127F8644BFF5C7C /* FImmutableSortedSet.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FImmutableSortedSet.m; path = Firebase/Database/third_party/FImmutableSortedDictionary/FImmutableSortedDictionary/FImmutableSortedSet.m; sourceTree = ""; }; - B52D90179A83A1E66BD01DBF3B97164C /* FPath.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FPath.m; path = Firebase/Database/Core/Utilities/FPath.m; sourceTree = ""; }; - B53AF1C2D84F65BD0ADB7381E127554D /* FOverwrite.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FOverwrite.h; path = Firebase/Database/Core/Operation/FOverwrite.h; sourceTree = ""; }; - B56350CA13386B3EDDF4C194E49F7121 /* write_batch.cc */ = {isa = PBXFileReference; includeInIndex = 1; name = write_batch.cc; path = db/write_batch.cc; sourceTree = ""; }; - B5D6FA8C66D85AB30DE497D5E4747D0E /* FIRApp.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRApp.h; path = Firebase/Core/Public/FIRApp.h; sourceTree = ""; }; - B62AE3C306534561AAD91028899CCC32 /* pb_common.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = pb_common.h; sourceTree = ""; }; - B65EF170836E480791C8C36BEBE84727 /* RLMSyncSessionRefreshHandle.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = RLMSyncSessionRefreshHandle.mm; path = Realm/RLMSyncSessionRefreshHandle.mm; sourceTree = ""; }; - B6C37F287EF9306F2341AC77561327CA /* FIndexedNode.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIndexedNode.m; path = Firebase/Database/Snapshot/FIndexedNode.m; sourceTree = ""; }; - B8381E1F386EC4FCEAE004E579361FFB /* FCachePolicy.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FCachePolicy.h; path = Firebase/Database/Persistence/FCachePolicy.h; sourceTree = ""; }; - B83BFEAE0F3F683626A7D9A05650D07F /* RLMRealm_Dynamic.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RLMRealm_Dynamic.h; path = include/RLMRealm_Dynamic.h; sourceTree = ""; }; - B8636D2B4EF08CCD366144BC9E047E5B /* FTypedefs.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FTypedefs.h; path = Firebase/Database/Utilities/FTypedefs.h; sourceTree = ""; }; - B88E7704EFFE4554AC66D6A2F8C99069 /* FIRInstanceIDAuthService.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstanceIDAuthService.m; path = Firebase/InstanceID/FIRInstanceIDAuthService.m; sourceTree = ""; }; - B8B0301D28A002B9C27FD15EAA313804 /* FIRInstanceID.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstanceID.m; path = Firebase/InstanceID/FIRInstanceID.m; sourceTree = ""; }; - B8E7B3DDFD971E4411F95C63DC91781D /* pb_decode.c */ = {isa = PBXFileReference; includeInIndex = 1; path = pb_decode.c; sourceTree = ""; }; - B8F566106A1C9CE3691B012FE4CB0BAA /* GoogleUtilities-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "GoogleUtilities-dummy.m"; sourceTree = ""; }; - B91216E0F43DEC04683E6647D3A9D1AD /* FTupleCallbackStatus.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FTupleCallbackStatus.h; path = Firebase/Database/Utilities/Tuples/FTupleCallbackStatus.h; sourceTree = ""; }; - B97D20AB8D7A1D8E6A813743AE731ECB /* RLMSyncPermission.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RLMSyncPermission.h; path = include/RLMSyncPermission.h; sourceTree = ""; }; - B9A93F0E486590B86179CEBD4B8DE62B /* RLMSyncUser.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = RLMSyncUser.mm; path = Realm/RLMSyncUser.mm; sourceTree = ""; }; - BACEA4BDD54B2F58FD9318FB2730A299 /* FWebSocketConnection.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FWebSocketConnection.m; path = Firebase/Database/Realtime/FWebSocketConnection.m; sourceTree = ""; }; - BB0F66ECFE5B40D3ACAE5EFC538FE2A5 /* librealmcore-ios.a */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = archive.ar; name = "librealmcore-ios.a"; path = "core/librealmcore-ios.a"; sourceTree = ""; }; - BB11EC750FDDA7792BB2DE688D324135 /* FIRComponentContainerInternal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRComponentContainerInternal.h; path = Firebase/Core/Private/FIRComponentContainerInternal.h; sourceTree = ""; }; - BB93C4BC3FA69CFE9AF57869270B57CA /* FTree.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FTree.h; path = Firebase/Database/Core/Utilities/FTree.h; sourceTree = ""; }; - BBF7A9D4E3FEB858B5EF75CC7283B681 /* FChange.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FChange.h; path = Firebase/Database/Core/View/FChange.h; sourceTree = ""; }; - BC14A157593EA8A559A3EC68470E0233 /* FIRLibrary.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRLibrary.h; path = Firebase/Core/Private/FIRLibrary.h; sourceTree = ""; }; - BC5ADE6AB94E6894CAA69DC8B747B03F /* version_edit.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = version_edit.h; path = db/version_edit.h; sourceTree = ""; }; - BC7FD05162AB136A2A18FD34147587FC /* FIRInstanceIDStringEncoding.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceIDStringEncoding.h; path = Firebase/InstanceID/FIRInstanceIDStringEncoding.h; sourceTree = ""; }; - BC9E409369D99CD85D16327025FCE939 /* RLMSyncConfiguration.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RLMSyncConfiguration.h; path = include/RLMSyncConfiguration.h; sourceTree = ""; }; - BCCCE66A2B27DF53585DF23808DE6B7F /* GULAppDelegateSwizzler.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GULAppDelegateSwizzler.m; path = GoogleUtilities/AppDelegateSwizzler/GULAppDelegateSwizzler.m; sourceTree = ""; }; + B4D15B837FB823C09A304B128DFF48D9 /* FIRAuthKeychain.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRAuthKeychain.m; path = Firebase/Auth/Source/Storage/FIRAuthKeychain.m; sourceTree = ""; }; + B4F89A5F362C43B1BD03B0FEB5633609 /* RLMRealm.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = RLMRealm.mm; path = Realm/RLMRealm.mm; sourceTree = ""; }; + B52891204042E606DC4BE8E688623E18 /* FIRInstanceIDStringEncoding.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstanceIDStringEncoding.m; path = Firebase/InstanceID/FIRInstanceIDStringEncoding.m; sourceTree = ""; }; + B60D473005D873C1D8C8D4F9FC312DB6 /* SwiftyJSON.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = SwiftyJSON.modulemap; sourceTree = ""; }; + B61821F595C5E1DDB20211EDC5AA83DB /* Realm-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Realm-prefix.pch"; sourceTree = ""; }; + B62AF7954DD9B84003AB6AA55B2020E3 /* version_edit.cc */ = {isa = PBXFileReference; includeInIndex = 1; name = version_edit.cc; path = db/version_edit.cc; sourceTree = ""; }; + B6659701BEDFDF94D55A2E5458223DEC /* FIRUserMetadata.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRUserMetadata.m; path = Firebase/Auth/Source/User/FIRUserMetadata.m; sourceTree = ""; }; + B6F3FBA524B9389AFF98387286C9DCC8 /* FConnection.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FConnection.h; path = Firebase/Database/Realtime/FConnection.h; sourceTree = ""; }; + B72D70C0268415C7597DC39BFD41C8F4 /* FSnapshotHolder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FSnapshotHolder.h; path = Firebase/Database/Core/FSnapshotHolder.h; sourceTree = ""; }; + B80E99B8D91DAE3ABE832CD321A2AB41 /* FIRTransactionResult.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRTransactionResult.h; path = Firebase/Database/Public/FIRTransactionResult.h; sourceTree = ""; }; + B86D8C22D13DB5E9A4ED3828066031EB /* pb_decode.c */ = {isa = PBXFileReference; includeInIndex = 1; path = pb_decode.c; sourceTree = ""; }; + B8E22EC0F5926794A07E3461D0B55C7E /* FIRAuthGlobalWorkQueue.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRAuthGlobalWorkQueue.h; path = Firebase/Auth/Source/Auth/FIRAuthGlobalWorkQueue.h; sourceTree = ""; }; + B914889E114F0488A3BF44A9787815E2 /* FIRAuthRPCRequest.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRAuthRPCRequest.h; path = Firebase/Auth/Source/Backend/FIRAuthRPCRequest.h; sourceTree = ""; }; + B93C92919F658F6F30669E9504A3A6A8 /* YMTGetDeviceName-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "YMTGetDeviceName-dummy.m"; sourceTree = ""; }; + B944D1BBDEE7C0154D2ED6FA9B5B6FA0 /* FIndexedNode.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIndexedNode.m; path = Firebase/Database/Snapshot/FIndexedNode.m; sourceTree = ""; }; + B95BF4C35448D59864B6247257FBF27A /* Realm.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Realm.h; path = include/Realm.h; sourceTree = ""; }; + B98BF99DA1BF369D14433020F9602923 /* posix_logger.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = posix_logger.h; path = util/posix_logger.h; sourceTree = ""; }; + B9A97640DFEEF7D761C970C50156C2EB /* GTMNSString+URLArguments.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "GTMNSString+URLArguments.h"; path = "Foundation/GTMNSString+URLArguments.h"; sourceTree = ""; }; + B9E0EEA77A2125568369F3B4E4EDDBAD /* FIRTwitterAuthCredential.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRTwitterAuthCredential.m; path = Firebase/Auth/Source/AuthProvider/Twitter/FIRTwitterAuthCredential.m; sourceTree = ""; }; + B9E3976BEC37FC3C11815E4513100CAE /* GTMDefines.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = GTMDefines.h; sourceTree = ""; }; + B9E600C3F2886823112F339CB91B92F5 /* pb_common.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = pb_common.h; sourceTree = ""; }; + B9E939DF716A920BB85C9FBB5CC73C86 /* FIRTransactionResult.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRTransactionResult.m; path = Firebase/Database/Api/FIRTransactionResult.m; sourceTree = ""; }; + B9EACBD1ED6FC861499CD9D6E44DB3F4 /* GTMSessionUploadFetcher.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GTMSessionUploadFetcher.m; path = Source/GTMSessionUploadFetcher.m; sourceTree = ""; }; + BA81289B1578869A8FCB45DAD08C1C0B /* FTreeSortedDictionary.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FTreeSortedDictionary.m; path = Firebase/Database/third_party/FImmutableSortedDictionary/FImmutableSortedDictionary/FTreeSortedDictionary.m; sourceTree = ""; }; + BA90D6EC748D1FF923CA0E636E0D223C /* FIRInstanceIDConstants.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceIDConstants.h; path = Firebase/InstanceID/FIRInstanceIDConstants.h; sourceTree = ""; }; + BA976B92FFBCEED91BE98519675F0B62 /* write_batch.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = write_batch.h; path = include/leveldb/write_batch.h; sourceTree = ""; }; + BABFB720055DEF174A683E695BC5CA83 /* GULLoggerCodes.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GULLoggerCodes.h; path = GoogleUtilities/Common/GULLoggerCodes.h; sourceTree = ""; }; + BAC17716C48FBD173A8FB0D8832B5ADE /* port_posix.cc */ = {isa = PBXFileReference; includeInIndex = 1; name = port_posix.cc; path = port/port_posix.cc; sourceTree = ""; }; + BAF0DB110289DA7508DF42DCFBAE5B29 /* FIRDatabase.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRDatabase.h; path = Firebase/Database/Public/FIRDatabase.h; sourceTree = ""; }; + BB71CB2A1269390295C83916A638536D /* FIRAuthStoredUserManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRAuthStoredUserManager.m; path = Firebase/Auth/Source/SystemService/FIRAuthStoredUserManager.m; sourceTree = ""; }; + BB9309C3262E7E77128C494AD45863B5 /* FEventEmitter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FEventEmitter.h; path = Firebase/Database/Utilities/FEventEmitter.h; sourceTree = ""; }; + BB9E2AED6FBD522A2CE5F863C5F5514A /* FIRSignUpNewUserResponse.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRSignUpNewUserResponse.m; path = Firebase/Auth/Source/Backend/RPC/FIRSignUpNewUserResponse.m; sourceTree = ""; }; + BBBEF5898306A1E4D81A0614AFA88084 /* Firebase.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Firebase.h; path = CoreOnly/Sources/Firebase.h; sourceTree = ""; }; + BBC35D37B27896B3E80B6AADA347A902 /* FChildrenNode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FChildrenNode.h; path = Firebase/Database/Snapshot/FChildrenNode.h; sourceTree = ""; }; + BC40C66BD83DECB298E2743CB33068FB /* FIRConfiguration.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRConfiguration.m; path = Firebase/Core/FIRConfiguration.m; sourceTree = ""; }; + BC6519253F5B94D10F2249F7B15002CF /* FIRIdentityToolkitRequest.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRIdentityToolkitRequest.m; path = Firebase/Auth/Source/Backend/FIRIdentityToolkitRequest.m; sourceTree = ""; }; + BC943097B98BFD9A880A28D7331B52C3 /* GTMSessionFetcherService.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GTMSessionFetcherService.m; path = Source/GTMSessionFetcherService.m; sourceTree = ""; }; + BCCA0DAE79662E911CBBEEEBDA45B5F3 /* RLMRealm_Dynamic.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RLMRealm_Dynamic.h; path = include/RLMRealm_Dynamic.h; sourceTree = ""; }; BD87420AB4A1FCBC153D1A9F15C3513B /* YMTGetDeviceName.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = YMTGetDeviceName.framework; path = YMTGetDeviceName.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - BDC3E48E0A62764A8CC18A68CDC15CCF /* YMTGetDeviceName-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "YMTGetDeviceName-dummy.m"; sourceTree = ""; }; - BEE691FE721F6DD9499B60A929D1621F /* version_set.cc */ = {isa = PBXFileReference; includeInIndex = 1; name = version_set.cc; path = db/version_set.cc; sourceTree = ""; }; - BF86AAC42DF8F3CD8DC22A4D7C2A61EE /* index_set.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = index_set.cpp; path = Realm/ObjectStore/src/index_set.cpp; sourceTree = ""; }; - BFACEC065260A9E95A074F61D414B71B /* GULAppEnvironmentUtil.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GULAppEnvironmentUtil.m; path = GoogleUtilities/Environment/third_party/GULAppEnvironmentUtil.m; sourceTree = ""; }; - C02827617ADFCC7B76ECFD4A586D4CE4 /* FUtilities.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FUtilities.h; path = Firebase/Database/Utilities/FUtilities.h; sourceTree = ""; }; - C03456C7CEF32940EDB46833E8A638AC /* Realm-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Realm-Info.plist"; sourceTree = ""; }; - C06B11A710615ECC6C3AA155D24455E8 /* FIRInstanceIDTokenDeleteOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceIDTokenDeleteOperation.h; path = Firebase/InstanceID/FIRInstanceIDTokenDeleteOperation.h; sourceTree = ""; }; - C0917B859BC3B605F18B11AED57C5E1F /* GULAppDelegateSwizzler_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GULAppDelegateSwizzler_Private.h; path = GoogleUtilities/AppDelegateSwizzler/Internal/GULAppDelegateSwizzler_Private.h; sourceTree = ""; }; - C0BC0A402DD574D3C18E3DED9FEFFE12 /* table_builder.cc */ = {isa = PBXFileReference; includeInIndex = 1; name = table_builder.cc; path = table/table_builder.cc; sourceTree = ""; }; - C0C2B4EB5465606120A31E46F2FB7CEF /* SwiftVersion.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SwiftVersion.swift; path = RealmSwift/SwiftVersion.swift; sourceTree = ""; }; - C16733277C6D45EEF12DBFAF2748FE42 /* SwiftyJSON-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "SwiftyJSON-Info.plist"; sourceTree = ""; }; - C22DE7CBE891E917FBA4E0A1B3D73675 /* Firebase.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Firebase.xcconfig; sourceTree = ""; }; - C278A1CDFADAE92EA4CF7C48A8BDA710 /* port_posix.cc */ = {isa = PBXFileReference; includeInIndex = 1; name = port_posix.cc; path = port/port_posix.cc; sourceTree = ""; }; - C3667D61C09AF1510303969EBFCDF4E8 /* FCompoundHash.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FCompoundHash.h; path = Firebase/Database/Core/FCompoundHash.h; sourceTree = ""; }; - C385947A01FBBF7CD5509D65021C76B0 /* List.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = List.swift; path = RealmSwift/List.swift; sourceTree = ""; }; - C4561E7A49EDD9FA4DB6BB3158DA956F /* FValueEventRegistration.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FValueEventRegistration.h; path = Firebase/Database/Core/View/FValueEventRegistration.h; sourceTree = ""; }; - C51830307EA9C530EEE538B2389427A0 /* FListenProvider.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FListenProvider.m; path = Firebase/Database/Core/FListenProvider.m; sourceTree = ""; }; - C57B25337A77122982D201D671C80712 /* FIRInstanceIDTokenManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstanceIDTokenManager.m; path = Firebase/InstanceID/FIRInstanceIDTokenManager.m; sourceTree = ""; }; - C5AEB5ECE1D2EACE276EB75163CF71EE /* FSnapshotHolder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FSnapshotHolder.h; path = Firebase/Database/Core/FSnapshotHolder.h; sourceTree = ""; }; - C6398C5D1C3942760F749E8D98573534 /* FServerValues.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FServerValues.h; path = Firebase/Database/Core/FServerValues.h; sourceTree = ""; }; - C64F69CF4FCDC501D724405FB5B9B11D /* FTreeSortedDictionary.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FTreeSortedDictionary.h; path = Firebase/Database/third_party/FImmutableSortedDictionary/FImmutableSortedDictionary/FTreeSortedDictionary.h; sourceTree = ""; }; - C65A5F060F02C74467206A13DE391472 /* db_iter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = db_iter.h; path = db/db_iter.h; sourceTree = ""; }; - C6E4FC7BC71C3C6A219BD88D744C1222 /* sync_permission.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = sync_permission.cpp; path = Realm/ObjectStore/src/sync/sync_permission.cpp; sourceTree = ""; }; - C85318A5572C789B14E88E04BC7C5B17 /* RLMSyncPermissionResults.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = RLMSyncPermissionResults.mm; path = Realm/RLMSyncPermissionResults.mm; sourceTree = ""; }; - C873B359BD343FD9C6CE235E16D330A7 /* filename.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = filename.h; path = db/filename.h; sourceTree = ""; }; - C881E1AFAD816A9D3CE453848E45786B /* FRepoInfo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FRepoInfo.m; path = Firebase/Database/Core/FRepoInfo.m; sourceTree = ""; }; - C92AF00A8AB6382E1EF86F0A591F4C6D /* RLMSyncUtil_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RLMSyncUtil_Private.h; path = include/RLMSyncUtil_Private.h; sourceTree = ""; }; - C9C261C6290F3318DB344013380C67C4 /* FChildEventRegistration.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FChildEventRegistration.h; path = Firebase/Database/Core/View/FChildEventRegistration.h; sourceTree = ""; }; - C9D1A710C3853E938F35FB78263C176F /* FWriteRecord.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FWriteRecord.m; path = Firebase/Database/Core/FWriteRecord.m; sourceTree = ""; }; - CAF9C5E74EA71697D28B4E8B5CAEC364 /* Pods-shlack-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-shlack-acknowledgements.plist"; sourceTree = ""; }; - CB0C08D683CB74133843957838435D95 /* FListenComplete.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FListenComplete.h; path = Firebase/Database/FListenComplete.h; sourceTree = ""; }; - CB331BA83A88B234E835E5AC37B57317 /* iterator_wrapper.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = iterator_wrapper.h; path = table/iterator_wrapper.h; sourceTree = ""; }; - CB496417C83C32CC1293322F7690355F /* FViewCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FViewCache.m; path = Firebase/Database/Core/View/FViewCache.m; sourceTree = ""; }; - CBCA1BA073AFD3B8923217C6CCB55FCA /* RLMAccessor.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = RLMAccessor.mm; path = Realm/RLMAccessor.mm; sourceTree = ""; }; - CC09FE00F3820B1F81624F3E21A69DB2 /* NSData+SRB64Additions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSData+SRB64Additions.m"; path = "Firebase/Database/third_party/SocketRocket/NSData+SRB64Additions.m"; sourceTree = ""; }; - CD2CC43780BF7E6C9A6607C441B6B81B /* schema.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = schema.cpp; path = Realm/ObjectStore/src/schema.cpp; sourceTree = ""; }; - CD3842C28774AD982DDC19ECA9D61C9A /* FEmptyNode.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FEmptyNode.m; path = Firebase/Database/Snapshot/FEmptyNode.m; sourceTree = ""; }; - CD6585AC9D15B34FB6FF757AFBAC5FA8 /* FIRInstanceIDURLQueryItem.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceIDURLQueryItem.h; path = Firebase/InstanceID/FIRInstanceIDURLQueryItem.h; sourceTree = ""; }; - CE37DFB9E42D0DA8E4C7BC9A7DB7A995 /* FTransformedEnumerator.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FTransformedEnumerator.h; path = Firebase/Database/FTransformedEnumerator.h; sourceTree = ""; }; - CE7E7363C8FCB3A0EDFFA7EB43B370B3 /* FSparseSnapshotTree.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FSparseSnapshotTree.h; path = Firebase/Database/Core/FSparseSnapshotTree.h; sourceTree = ""; }; - CE9076D2CAC3B5B43EB2296148146AC6 /* cache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = cache.h; path = include/leveldb/cache.h; sourceTree = ""; }; - D003DDA0EC59D5AF7F0AB5B68744B89B /* cache.cc */ = {isa = PBXFileReference; includeInIndex = 1; name = cache.cc; path = util/cache.cc; sourceTree = ""; }; - D00BDC1E165DD6DA4625F59638268FDF /* leveldb-library.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "leveldb-library.xcconfig"; sourceTree = ""; }; - D01A95439B21FE07165AFA82B22A38BD /* FPruneForest.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FPruneForest.h; path = Firebase/Database/Persistence/FPruneForest.h; sourceTree = ""; }; - D0269142D09862C6237479D4D5F1D535 /* FirebaseInstanceID-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "FirebaseInstanceID-dummy.m"; sourceTree = ""; }; - D0783C531C600A880AB8D38127D7E674 /* FIRInstanceIDVersionUtilities.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceIDVersionUtilities.h; path = Firebase/InstanceID/FIRInstanceIDVersionUtilities.h; sourceTree = ""; }; - D23710AE6A2CE9885B82833DF1448057 /* RLMUpdateChecker.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = RLMUpdateChecker.mm; path = Realm/RLMUpdateChecker.mm; sourceTree = ""; }; - D282C456DAD7E8B18E7D2B9AB0C00325 /* Pods-shlack-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-shlack-acknowledgements.markdown"; sourceTree = ""; }; - D2A9C94A856AA8185FE955767793455B /* RLMSyncSubscription.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = RLMSyncSubscription.mm; path = Realm/RLMSyncSubscription.mm; sourceTree = ""; }; - D2BF564255C58BF3DD39C2C463E6CAD3 /* testharness.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = testharness.h; path = util/testharness.h; sourceTree = ""; }; - D36D53D2F0E0BFCC1D057A9B62A272D8 /* version_set.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = version_set.h; path = db/version_set.h; sourceTree = ""; }; - D3983151C53760A454F4ACE38FAF51F9 /* FView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FView.m; path = Firebase/Database/Core/View/FView.m; sourceTree = ""; }; - D451800621CC2FDC8A999D954BCE543F /* table_cache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = table_cache.h; path = db/table_cache.h; sourceTree = ""; }; - D468814F8D40F17D4F6124DB099789CC /* merger.cc */ = {isa = PBXFileReference; includeInIndex = 1; name = merger.cc; path = table/merger.cc; sourceTree = ""; }; - D485EF8A0C92ECD8465BD71A0E73FCB6 /* FIRInstanceIDCheckinPreferences+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FIRInstanceIDCheckinPreferences+Internal.h"; path = "Firebase/InstanceID/FIRInstanceIDCheckinPreferences+Internal.h"; sourceTree = ""; }; - D56850E3C3D2BFCEC85080A7D98B6F05 /* FPendingPut.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FPendingPut.h; path = Firebase/Database/Persistence/FPendingPut.h; sourceTree = ""; }; - D59FC9D41442DBFF5B0271E5E2F1FB99 /* FirebaseAnalytics.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = FirebaseAnalytics.xcconfig; sourceTree = ""; }; - D5CFE4DBB50AB327172E04A722EC13DD /* FEventGenerator.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FEventGenerator.m; path = Firebase/Database/FEventGenerator.m; sourceTree = ""; }; - D5EED1578D1E2C5E9EF187D618D0B8F2 /* FIRInstanceIDCheckinStore.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstanceIDCheckinStore.m; path = Firebase/InstanceID/FIRInstanceIDCheckinStore.m; sourceTree = ""; }; - D61B470737FFE1C7601893DC21314D77 /* FAckUserWrite.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FAckUserWrite.h; path = Firebase/Database/Core/Operation/FAckUserWrite.h; sourceTree = ""; }; - D69F64663123F2C1E88BEEFC7FDDC191 /* FIRInstanceIDTokenInfo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstanceIDTokenInfo.m; path = Firebase/InstanceID/FIRInstanceIDTokenInfo.m; sourceTree = ""; }; - D6EC34C0E433F15E3AB3DD0961A41FF8 /* FIRIMessageCode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRIMessageCode.h; path = Firebase/InstanceID/FIRIMessageCode.h; sourceTree = ""; }; - D70A40616A72588714BC21FC80946CBD /* FPersistentConnection.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FPersistentConnection.h; path = Firebase/Database/Core/FPersistentConnection.h; sourceTree = ""; }; - D7211408662E27E036FECBE6564F829A /* FIRInstanceIDUtilities.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceIDUtilities.h; path = Firebase/InstanceID/FIRInstanceIDUtilities.h; sourceTree = ""; }; - D800A318A29E77159C89E61B406CAC6A /* FIndexedFilter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIndexedFilter.h; path = Firebase/Database/Core/View/Filter/FIndexedFilter.h; sourceTree = ""; }; - D8800C8C0D59FD75255FD85A9284E976 /* FIRConfiguration.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRConfiguration.m; path = Firebase/Core/FIRConfiguration.m; sourceTree = ""; }; - D899BBF7DD951B296A24B1338D427B97 /* posix_logger.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = posix_logger.h; path = util/posix_logger.h; sourceTree = ""; }; - D8F7D27B502CA8DE6BEEDB762534E0B7 /* transact_log_handler.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = transact_log_handler.cpp; path = Realm/ObjectStore/src/impl/transact_log_handler.cpp; sourceTree = ""; }; - D939A2ACF7F13E9858F1B48C0EE9461A /* FIRMutableData_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRMutableData_Private.h; path = Firebase/Database/Api/Private/FIRMutableData_Private.h; sourceTree = ""; }; + BD95192D6A86F239E89F634D58DE2D01 /* thread_annotations.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = thread_annotations.h; path = port/thread_annotations.h; sourceTree = ""; }; + BD968216050411DE3D6A2BE717F6D0B2 /* FValidation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FValidation.h; path = Firebase/Database/Utilities/FValidation.h; sourceTree = ""; }; + BDABFE3CF558B04C26761C183DC295F7 /* FIRLogger.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRLogger.m; path = Firebase/Core/FIRLogger.m; sourceTree = ""; }; + BE2B79861C8A2D3D6086F79F54A1EB77 /* FIRSignUpNewUserRequest.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRSignUpNewUserRequest.h; path = Firebase/Auth/Source/Backend/RPC/FIRSignUpNewUserRequest.h; sourceTree = ""; }; + BE714588580A60CEC8BCC24FFBBB1CC6 /* FIRAuthAppCredential.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRAuthAppCredential.h; path = Firebase/Auth/Source/SystemService/FIRAuthAppCredential.h; sourceTree = ""; }; + BE8C57275FEE5A96EAF32878ECB57356 /* FStringUtilities.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FStringUtilities.m; path = Firebase/Database/Utilities/FStringUtilities.m; sourceTree = ""; }; + BEB7251CD6F4DDFB313EFEE8739A506B /* dumpfile.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = dumpfile.h; path = include/leveldb/dumpfile.h; sourceTree = ""; }; + BEFBB7C830DDC83D80AD2F74F3EBA126 /* RLMCollection_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RLMCollection_Private.h; path = include/RLMCollection_Private.h; sourceTree = ""; }; + BF170117016186777D945C99BAABE983 /* FValidation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FValidation.m; path = Firebase/Database/Utilities/FValidation.m; sourceTree = ""; }; + BF6D835DCAA2CE049A0B15AB22681ACE /* RLMSyncManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RLMSyncManager.h; path = include/RLMSyncManager.h; sourceTree = ""; }; + BF87D2AFF0B91F316DB946AAC9D77EC7 /* FArraySortedDictionary.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FArraySortedDictionary.h; path = Firebase/Database/third_party/FImmutableSortedDictionary/FImmutableSortedDictionary/FArraySortedDictionary.h; sourceTree = ""; }; + BFABC8CEC73E272C69162ADE3CD09616 /* FIRAuthDataResult.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRAuthDataResult.h; path = Firebase/Auth/Source/Public/FIRAuthDataResult.h; sourceTree = ""; }; + BFB851610A9C9F3854A729AA8DACA460 /* object_store.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = object_store.cpp; path = Realm/ObjectStore/src/object_store.cpp; sourceTree = ""; }; + C0254A04FC451023C10AF5591DD77A05 /* FTrackedQuery.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FTrackedQuery.m; path = Firebase/Database/Persistence/FTrackedQuery.m; sourceTree = ""; }; + C07474E49A157B53C7ED4DF0A03F415B /* work_queue.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = work_queue.cpp; path = Realm/ObjectStore/src/sync/impl/work_queue.cpp; sourceTree = ""; }; + C08E4C27AE9E66D93ECC57FE3F608804 /* FIRMutableData.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRMutableData.h; path = Firebase/Database/Public/FIRMutableData.h; sourceTree = ""; }; + C0D4E22F2EC21B8D37CBD38E88E9C0C7 /* FirebaseInstanceID.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FirebaseInstanceID.h; path = Firebase/InstanceID/Public/FirebaseInstanceID.h; sourceTree = ""; }; + C0F0C1B5DFB48FE8E8AE35973A00066A /* FClock.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FClock.m; path = Firebase/Database/FClock.m; sourceTree = ""; }; + C1302589B0CD0B2305B36AEA7359B03E /* RLMRealm_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RLMRealm_Private.h; path = include/RLMRealm_Private.h; sourceTree = ""; }; + C13170C2475D2B45CEBCBF43AFC370E9 /* FTupleBoolBlock.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FTupleBoolBlock.h; path = Firebase/Database/Utilities/Tuples/FTupleBoolBlock.h; sourceTree = ""; }; + C1998E0D8085221AD87F89B614C10E52 /* GTMSessionFetcher.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = GTMSessionFetcher.framework; path = GTMSessionFetcher.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + C19AAE6832A5803EE9C4245436FCFD49 /* FTransformedEnumerator.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FTransformedEnumerator.h; path = Firebase/Database/FTransformedEnumerator.h; sourceTree = ""; }; + C1EABB42C0837B34F36F303B99C6C817 /* FChildEventRegistration.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FChildEventRegistration.h; path = Firebase/Database/Core/View/FChildEventRegistration.h; sourceTree = ""; }; + C2FED75D51C22AF56FF850D796814A8D /* SwiftyJSON-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SwiftyJSON-prefix.pch"; sourceTree = ""; }; + C30A1A0C141DDCE25A678FC7309D8FC2 /* FQueryParams.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FQueryParams.h; path = Firebase/Database/Core/FQueryParams.h; sourceTree = ""; }; + C317BD0AB08496ED654FB2E03745B9E3 /* FTreeSortedDictionaryEnumerator.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FTreeSortedDictionaryEnumerator.h; path = Firebase/Database/third_party/FImmutableSortedDictionary/FImmutableSortedDictionary/FTreeSortedDictionaryEnumerator.h; sourceTree = ""; }; + C338F3B727459D429963BBCC5001F010 /* FMerge.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FMerge.h; path = Firebase/Database/Core/Operation/FMerge.h; sourceTree = ""; }; + C3A230894F1686507A5AE71545855A27 /* FIRDependency.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRDependency.m; path = Firebase/Core/FIRDependency.m; sourceTree = ""; }; + C3A2B47BD9C50714D55D9ED9B48F383F /* FIRNoopAuthTokenProvider.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRNoopAuthTokenProvider.m; path = Firebase/Database/Login/FIRNoopAuthTokenProvider.m; sourceTree = ""; }; + C3CA75049D935FF1CBA90C362ABA4576 /* coding.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = coding.h; path = util/coding.h; sourceTree = ""; }; + C3FA7E866B1EC7FA6827C6C60BAF40FB /* FIRFacebookAuthCredential.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRFacebookAuthCredential.m; path = Firebase/Auth/Source/AuthProvider/Facebook/FIRFacebookAuthCredential.m; sourceTree = ""; }; + C437C241AA473E1646DF5EBF05007953 /* FIRInstanceIDTokenStore.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstanceIDTokenStore.m; path = Firebase/InstanceID/FIRInstanceIDTokenStore.m; sourceTree = ""; }; + C46BD3E9A3B45911099C3E9E86AE1FCF /* FIRAuthUserDefaultsStorage.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRAuthUserDefaultsStorage.m; path = Firebase/Auth/Source/Storage/FIRAuthUserDefaultsStorage.m; sourceTree = ""; }; + C557A1E2F035C3C0A8C291DAE00314A3 /* GULLogger.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GULLogger.h; path = GoogleUtilities/Logger/Private/GULLogger.h; sourceTree = ""; }; + C5E2DF89659131B98759E8ACB5590F54 /* FIRAuthCredential.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRAuthCredential.h; path = Firebase/Auth/Source/Public/FIRAuthCredential.h; sourceTree = ""; }; + C5E84A273D7C2C2723DBADD1DD6FAD97 /* Object.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Object.swift; path = RealmSwift/Object.swift; sourceTree = ""; }; + C6097F06E8257BEC5AB23AD81E0B1B9D /* FLLRBNode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FLLRBNode.h; path = Firebase/Database/third_party/FImmutableSortedDictionary/FImmutableSortedDictionary/FLLRBNode.h; sourceTree = ""; }; + C60F8CAA0B93FD9C99AC4EEDDF2CD5EB /* FIRAuthDefaultUIDelegate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRAuthDefaultUIDelegate.h; path = Firebase/Auth/Source/Utilities/FIRAuthDefaultUIDelegate.h; sourceTree = ""; }; + C614A4CBBEC838E353127FF4B0840795 /* GTMSessionFetcher-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "GTMSessionFetcher-Info.plist"; sourceTree = ""; }; + C6CB8D438BFF52322514E3602458A0EF /* FListenProvider.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FListenProvider.h; path = Firebase/Database/Core/FListenProvider.h; sourceTree = ""; }; + C7281018F1EC1759BB0C1473B98221C2 /* FSyncPoint.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FSyncPoint.h; path = Firebase/Database/Core/FSyncPoint.h; sourceTree = ""; }; + C750EF5E14526F4E479B93E01D08B2A6 /* FIROptions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIROptions.m; path = Firebase/Core/FIROptions.m; sourceTree = ""; }; + C769CDE7B231925D815EFDBA051F88D8 /* FChange.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FChange.m; path = Firebase/Database/Core/View/FChange.m; sourceTree = ""; }; + C7F4C51DFC05F9636C4AD64348512F68 /* FTree.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FTree.h; path = Firebase/Database/Core/Utilities/FTree.h; sourceTree = ""; }; + C7FD86C99DDA7B41BD9652528FD15E12 /* FLLRBEmptyNode.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FLLRBEmptyNode.m; path = Firebase/Database/third_party/FImmutableSortedDictionary/FImmutableSortedDictionary/FLLRBEmptyNode.m; sourceTree = ""; }; + C8293996F0E2D6A64B2DF4C3861A775E /* FTreeNode.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FTreeNode.m; path = Firebase/Database/Core/Utilities/FTreeNode.m; sourceTree = ""; }; + C84980C673C3EEC7200D01D3CB1D6D84 /* FIROAuthProvider.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIROAuthProvider.m; path = Firebase/Auth/Source/AuthProvider/OAuth/FIROAuthProvider.m; sourceTree = ""; }; + C850DE357FE20D83A24CF35AA8C9FBD7 /* FEvent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FEvent.h; path = Firebase/Database/Core/View/FEvent.h; sourceTree = ""; }; + C89845ED0A05646E8825A6D5E691B585 /* FMerge.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FMerge.m; path = Firebase/Database/Core/Operation/FMerge.m; sourceTree = ""; }; + C8DC72B67236FE29F3D8728B02665927 /* FIREmailLinkSignInResponse.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIREmailLinkSignInResponse.m; path = Firebase/Auth/Source/Backend/RPC/FIREmailLinkSignInResponse.m; sourceTree = ""; }; + C95005A2DCFA90BBA259F7AEAB162B3E /* FIRInstanceIDKeyPair.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstanceIDKeyPair.m; path = Firebase/InstanceID/FIRInstanceIDKeyPair.m; sourceTree = ""; }; + C9D84781252814C38E66B8879E62F3D4 /* FServerValues.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FServerValues.m; path = Firebase/Database/Core/FServerValues.m; sourceTree = ""; }; + CA161ED162460C65E32AA99B9E784FD7 /* FEventRegistration.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FEventRegistration.h; path = Firebase/Database/Core/View/FEventRegistration.h; sourceTree = ""; }; + CAA25BFC60E0CB873296948F7275E711 /* FIRInstanceIDCheckinStore.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstanceIDCheckinStore.m; path = Firebase/InstanceID/FIRInstanceIDCheckinStore.m; sourceTree = ""; }; + CB2DAE7D3D5AFAB38EABD9504C19A74C /* builder.cc */ = {isa = PBXFileReference; includeInIndex = 1; name = builder.cc; path = db/builder.cc; sourceTree = ""; }; + CB7A91BB382F392D09E24306C077E99F /* FNamedNode.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FNamedNode.m; path = Firebase/Database/FNamedNode.m; sourceTree = ""; }; + CBB04DC4590DDCEB0472802A59CB96BC /* leveldb-library-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "leveldb-library-Info.plist"; sourceTree = ""; }; + CBD0FC7BF8275E150CD0B01E5D7C3C57 /* FIRAdditionalUserInfo_Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRAdditionalUserInfo_Internal.h; path = Firebase/Auth/Source/User/FIRAdditionalUserInfo_Internal.h; sourceTree = ""; }; + CBD589EC66AC7BD4EFC9EFCE01AA57EE /* FIRDataEventType.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRDataEventType.h; path = Firebase/Database/Public/FIRDataEventType.h; sourceTree = ""; }; + CC0D3AE90E093743F50CEAD32163417C /* collection_notifications.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = collection_notifications.cpp; path = Realm/ObjectStore/src/collection_notifications.cpp; sourceTree = ""; }; + CCCE56F2AED803A6FF364C79F1E49388 /* RLMQueryUtil.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = RLMQueryUtil.mm; path = Realm/RLMQueryUtil.mm; sourceTree = ""; }; + CD103BD0CDFCBB1CD45B31DDA77C2CD2 /* SwiftyJSON-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "SwiftyJSON-dummy.m"; sourceTree = ""; }; + CD256CDB941E2C07A42C3210CCDEBA19 /* FIRResetPasswordRequest.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRResetPasswordRequest.h; path = Firebase/Auth/Source/Backend/RPC/FIRResetPasswordRequest.h; sourceTree = ""; }; + CDF533775B27567B4BCE480F3F3B4ED6 /* FIREmailPasswordAuthCredential.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIREmailPasswordAuthCredential.h; path = Firebase/Auth/Source/AuthProvider/Email/FIREmailPasswordAuthCredential.h; sourceTree = ""; }; + CE0E4205A9BA4BEC767014022FECAAB7 /* comparator.cc */ = {isa = PBXFileReference; includeInIndex = 1; name = comparator.cc; path = util/comparator.cc; sourceTree = ""; }; + CE815CF6EA113F8A2367B74C0DC06C76 /* testutil.cc */ = {isa = PBXFileReference; includeInIndex = 1; name = testutil.cc; path = util/testutil.cc; sourceTree = ""; }; + CE836EB59B7C7FE3BB95048018544524 /* Realm.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Realm.swift; path = RealmSwift/Realm.swift; sourceTree = ""; }; + CF350ACCEBFC5440D67CB94A1E73112D /* RLMObject.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = RLMObject.mm; path = Realm/RLMObject.mm; sourceTree = ""; }; + CFDEEDC12876FEF79A7C191F2F234989 /* FLeafNode.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FLeafNode.m; path = Firebase/Database/Snapshot/FLeafNode.m; sourceTree = ""; }; + CFE0F950DE21EAAD6A6E12615EDA1608 /* GULNetwork.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GULNetwork.h; path = GoogleUtilities/Network/Private/GULNetwork.h; sourceTree = ""; }; + CFF8B577F1B5ECB6BE9D220C44F576E6 /* FValueIndex.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FValueIndex.h; path = Firebase/Database/FValueIndex.h; sourceTree = ""; }; + D01DA25054F62F7A139DBD353DF6C260 /* FIRInstanceIDStore.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstanceIDStore.m; path = Firebase/InstanceID/FIRInstanceIDStore.m; sourceTree = ""; }; + D10B6AB3327AC7565624B7772DF413B2 /* FirebaseCoreDiagnostics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = FirebaseCoreDiagnostics.framework; path = Frameworks/FirebaseCoreDiagnostics.framework; sourceTree = ""; }; + D1264144B8D342837CF9AAF58389E6E7 /* FirebaseInstanceID.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = FirebaseInstanceID.xcconfig; sourceTree = ""; }; + D15A73BCEBC44FB33AA2FB6BDC13CFFA /* RLMSyncUtil_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RLMSyncUtil_Private.h; path = include/RLMSyncUtil_Private.h; sourceTree = ""; }; + D1D33C3581F1CD2795D1048283BA3EBD /* filter_policy.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = filter_policy.h; path = include/leveldb/filter_policy.h; sourceTree = ""; }; + D208A3B3BE1AF43F037885F9ABBA7CB5 /* FIndex.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIndex.m; path = Firebase/Database/FIndex.m; sourceTree = ""; }; + D249EE3C1F1AE3145A4FA75BA01E3BA3 /* FIRBundleUtil.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRBundleUtil.h; path = Firebase/Core/Private/FIRBundleUtil.h; sourceTree = ""; }; + D26725F1B56351CF328951B73016ACC5 /* FIRDeleteAccountResponse.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRDeleteAccountResponse.h; path = Firebase/Auth/Source/Backend/RPC/FIRDeleteAccountResponse.h; sourceTree = ""; }; + D2ABAC761081AD01AC92C51C5C9C334F /* FIRCreateAuthURIRequest.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRCreateAuthURIRequest.m; path = Firebase/Auth/Source/Backend/RPC/FIRCreateAuthURIRequest.m; sourceTree = ""; }; + D2D4EE74C04ED8410E1323DF06E8882A /* FTrackedQuery.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FTrackedQuery.h; path = Firebase/Database/Persistence/FTrackedQuery.h; sourceTree = ""; }; + D2D9F18979363D2EB45A64C237440E90 /* FCachePolicy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FCachePolicy.m; path = Firebase/Database/Persistence/FCachePolicy.m; sourceTree = ""; }; + D339920DDA4CE86D263FD3AC7A8CDEB8 /* FIRAuthErrorUtils.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRAuthErrorUtils.m; path = Firebase/Auth/Source/Utilities/FIRAuthErrorUtils.m; sourceTree = ""; }; + D34B33275ADF9D3D2FABDB52A29742BD /* RLMObjectStore.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = RLMObjectStore.mm; path = Realm/RLMObjectStore.mm; sourceTree = ""; }; + D34BBBCFB3C8DC90D303A4833D36F87A /* RealmSwift.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = RealmSwift.modulemap; sourceTree = ""; }; + D38E5B0DBCD3127BFE2F9E6AADAAAC01 /* FIRGitHubAuthCredential.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRGitHubAuthCredential.h; path = Firebase/Auth/Source/AuthProvider/GitHub/FIRGitHubAuthCredential.h; sourceTree = ""; }; + D39DCF3ED077FEA3B7C06ECEEB763966 /* GTMMethodCheck.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTMMethodCheck.h; path = DebugUtils/GTMMethodCheck.h; sourceTree = ""; }; + D3E6245AA639DD4F79E02234362A5337 /* FIRSendVerificationCodeRequest.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRSendVerificationCodeRequest.m; path = Firebase/Auth/Source/Backend/RPC/FIRSendVerificationCodeRequest.m; sourceTree = ""; }; + D41C036A3ABAC4E0A610258ED95D0F9D /* Pods-shlack.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-shlack.release.xcconfig"; sourceTree = ""; }; + D49BBBB24DB37669F35254F5C6B5B9C4 /* FIRDatabase.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRDatabase.m; path = Firebase/Database/Api/FIRDatabase.m; sourceTree = ""; }; + D4FFEA6FD881113D9263C10F0E9A4FA8 /* FIRAuthNotificationManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRAuthNotificationManager.m; path = Firebase/Auth/Source/SystemService/FIRAuthNotificationManager.m; sourceTree = ""; }; + D51E7B7896D14EC8B294A3A9267E9BEF /* sync_file.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = sync_file.cpp; path = Realm/ObjectStore/src/sync/impl/sync_file.cpp; sourceTree = ""; }; + D54414200B3958A4605308DBABB25B0F /* FIRUserMetadata.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRUserMetadata.h; path = Firebase/Auth/Source/Public/FIRUserMetadata.h; sourceTree = ""; }; + D561260D45C0F504BA5213746D8446C4 /* snapshot.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = snapshot.h; path = db/snapshot.h; sourceTree = ""; }; + D5DA52F517F853D0C6C5CFADBCB08541 /* port.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = port.h; path = port/port.h; sourceTree = ""; }; + D5FA0F8FFB172F36D623B335B827A630 /* FIRCreateAuthURIRequest.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCreateAuthURIRequest.h; path = Firebase/Auth/Source/Backend/RPC/FIRCreateAuthURIRequest.h; sourceTree = ""; }; + D60FAC0498113B55C1DF9F52E6A76FED /* FAuthTokenProvider.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FAuthTokenProvider.h; path = Firebase/Database/Login/FAuthTokenProvider.h; sourceTree = ""; }; + D6463C6BE0BD91DCE1970594EAB532BD /* sync_manager.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = sync_manager.cpp; path = Realm/ObjectStore/src/sync/sync_manager.cpp; sourceTree = ""; }; + D66EBE81F91C4172FD1DF68C78475D81 /* FTupleTSN.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FTupleTSN.m; path = Firebase/Database/Utilities/Tuples/FTupleTSN.m; sourceTree = ""; }; + D7FF265E8A2D7722A7C6C913057900EE /* FIRInstanceIDTokenInfo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstanceIDTokenInfo.m; path = Firebase/InstanceID/FIRInstanceIDTokenInfo.m; sourceTree = ""; }; + D80711938FC49CAF187055869A3E5B50 /* primitive_list_notifier.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = primitive_list_notifier.cpp; path = Realm/ObjectStore/src/impl/primitive_list_notifier.cpp; sourceTree = ""; }; + D8705957293E320E38E862B42B93C701 /* FIRInstanceIDKeyPairUtilities.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstanceIDKeyPairUtilities.m; path = Firebase/InstanceID/FIRInstanceIDKeyPairUtilities.m; sourceTree = ""; }; + D89A39093B5EF95B1053A0DCF6E9DE46 /* FSyncPoint.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FSyncPoint.m; path = Firebase/Database/Core/FSyncPoint.m; sourceTree = ""; }; D984BE5444A65E2FEE90297457AF9AA3 /* Security.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Security.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/Security.framework; sourceTree = DEVELOPER_DIR; }; - DA6636537C30A4AB828E1936648CBDF7 /* FConnection.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FConnection.h; path = Firebase/Database/Realtime/FConnection.h; sourceTree = ""; }; - DA769F5B26F8DFE20783CC3A4D066FBC /* placeholder.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = placeholder.cpp; path = Realm/ObjectStore/src/placeholder.cpp; sourceTree = ""; }; - DAFEA2D6B681E5C02DDB71702A8E1FFE /* RLMPlatform.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RLMPlatform.h; path = include/RLMPlatform.h; sourceTree = ""; }; - DB627AADB9E69BF7C3D432DA8000EFF2 /* NSError+FIRInstanceID.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSError+FIRInstanceID.m"; path = "Firebase/InstanceID/NSError+FIRInstanceID.m"; sourceTree = ""; }; - DB83E66076A97630EF5DF7B121B994BA /* FIRInstanceID_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceID_Private.h; path = Firebase/InstanceID/Private/FIRInstanceID_Private.h; sourceTree = ""; }; - DBD07B180498B306219B7D869995A4C2 /* format.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = format.h; path = table/format.h; sourceTree = ""; }; - DC08EC17D19A33377F52A2114ECA4031 /* comparator.cc */ = {isa = PBXFileReference; includeInIndex = 1; name = comparator.cc; path = util/comparator.cc; sourceTree = ""; }; - DD18F7C36379B02C2C6E4BEE75A3073C /* RLMAnalytics.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = RLMAnalytics.mm; path = Realm/RLMAnalytics.mm; sourceTree = ""; }; - DD227D6A09345E978BED5BDFCE2AF31A /* FIRTransactionResult.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRTransactionResult.h; path = Firebase/Database/Public/FIRTransactionResult.h; sourceTree = ""; }; - DD648D41267E573F43282A7DA40D2E04 /* GULReachabilityMessageCode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GULReachabilityMessageCode.h; path = GoogleUtilities/Reachability/Private/GULReachabilityMessageCode.h; sourceTree = ""; }; - DD852FBFAA153D71C49AB7E01ED80080 /* db_iter.cc */ = {isa = PBXFileReference; includeInIndex = 1; name = db_iter.cc; path = db/db_iter.cc; sourceTree = ""; }; - DDE6548B905AB6BED00509498E3AC5FF /* FIRInstanceIDTokenInfo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceIDTokenInfo.h; path = Firebase/InstanceID/FIRInstanceIDTokenInfo.h; sourceTree = ""; }; - DE71A7191C2116236B7355C9D76DBCB3 /* FClock.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FClock.h; path = Firebase/Database/FClock.h; sourceTree = ""; }; - DE74BA9A039AED146C805A3B335A5A45 /* FTupleOnDisconnect.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FTupleOnDisconnect.m; path = Firebase/Database/Utilities/Tuples/FTupleOnDisconnect.m; sourceTree = ""; }; - DECAFEFD54355961D884C28EFB32AB6C /* FTupleRemovedQueriesEvents.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FTupleRemovedQueriesEvents.m; path = Firebase/Database/Utilities/Tuples/FTupleRemovedQueriesEvents.m; sourceTree = ""; }; - DF70012FB7B27E7D34ED5DB67119C6FA /* FCancelEvent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FCancelEvent.h; path = Firebase/Database/Core/View/FCancelEvent.h; sourceTree = ""; }; - E0112BE0C29F13D051D70B7999B8309D /* c.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = c.h; path = include/leveldb/c.h; sourceTree = ""; }; - E060BE00308AB7327E6FCDBD68637C67 /* sync_metadata.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = sync_metadata.cpp; path = Realm/ObjectStore/src/sync/impl/sync_metadata.cpp; sourceTree = ""; }; - E0EAE40F22B9636DEA4D7400330F2622 /* NSError+RLMSync.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSError+RLMSync.h"; path = "include/NSError+RLMSync.h"; sourceTree = ""; }; - E11FE26D659D2DB40B62C615A8BB4FDD /* FIRInstanceIDCheckinStore.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceIDCheckinStore.h; path = Firebase/InstanceID/FIRInstanceIDCheckinStore.h; sourceTree = ""; }; - E12F0AFFFCDB303E55E84E9398F43435 /* RLMSyncSession.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RLMSyncSession.h; path = include/RLMSyncSession.h; sourceTree = ""; }; - E17650BCE5DAA3100577549FA2BBFD06 /* FCompoundHash.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FCompoundHash.m; path = Firebase/Database/Core/FCompoundHash.m; sourceTree = ""; }; - E1D3336AC1A1B76DCDCD4189EE26EFAD /* FQuerySpec.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FQuerySpec.m; path = Firebase/Database/Core/FQuerySpec.m; sourceTree = ""; }; - E1DDFC9FBF27A99865B52A810661DE3F /* FClock.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FClock.m; path = Firebase/Database/FClock.m; sourceTree = ""; }; - E1F67397D5F8B49CF54E38110720B257 /* ThreadSafeReference.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ThreadSafeReference.swift; path = RealmSwift/ThreadSafeReference.swift; sourceTree = ""; }; - E20962DFCAA5C9EBF3999E8BCC87C2A1 /* db.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = db.h; path = include/leveldb/db.h; sourceTree = ""; }; + D9D70557FC61E750FDB0051AC59343E2 /* FirebaseCore-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "FirebaseCore-umbrella.h"; sourceTree = ""; }; + DA221695A4F6B98CD7044593667C01C4 /* FImmutableTree.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FImmutableTree.h; path = Firebase/Database/Core/Utilities/FImmutableTree.h; sourceTree = ""; }; + DA855AEEB54D36726188ABAB69F45570 /* FIRAuthBackend.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRAuthBackend.h; path = Firebase/Auth/Source/Backend/FIRAuthBackend.h; sourceTree = ""; }; + DAC356C4713FBF936C5936751E518197 /* Realm-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Realm-dummy.m"; sourceTree = ""; }; + DB337DA58FF30A7E798311741D8534CB /* RLMUpdateChecker.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = RLMUpdateChecker.mm; path = Realm/RLMUpdateChecker.mm; sourceTree = ""; }; + DBFAA6B0C183685BBD97B3344B4DBF10 /* FIRSetAccountInfoRequest.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRSetAccountInfoRequest.m; path = Firebase/Auth/Source/Backend/RPC/FIRSetAccountInfoRequest.m; sourceTree = ""; }; + DC93E8D49C0AEB2B4B0EF98FD1AD22F9 /* nanopb-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "nanopb-umbrella.h"; sourceTree = ""; }; + DCEB5AE1A0CBA7227C5DA65B0EF875CB /* FPriorityIndex.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FPriorityIndex.h; path = Firebase/Database/FPriorityIndex.h; sourceTree = ""; }; + DD36DE2C77CBBCD9A6DD650CBC3C9FB9 /* dbformat.cc */ = {isa = PBXFileReference; includeInIndex = 1; name = dbformat.cc; path = db/dbformat.cc; sourceTree = ""; }; + DD79DA46E12615E54FD0186D434F55A3 /* FTupleCallbackStatus.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FTupleCallbackStatus.m; path = Firebase/Database/Utilities/Tuples/FTupleCallbackStatus.m; sourceTree = ""; }; + DD9C8F77BE81575237462FF1AB4EF3B0 /* SwiftyJSON-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SwiftyJSON-umbrella.h"; sourceTree = ""; }; + DDC1498A2BD692D161409A8E9B562C4A /* fifo.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = fifo.cpp; path = Realm/ObjectStore/src/util/fifo.cpp; sourceTree = ""; }; + DE37477A80DAA557714BF689D5BE02C7 /* FIRInstanceIDTokenOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstanceIDTokenOperation.m; path = Firebase/InstanceID/FIRInstanceIDTokenOperation.m; sourceTree = ""; }; + DE438E52F0A7E6FEC61F2FAB8696BB65 /* env.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = env.h; path = include/leveldb/env.h; sourceTree = ""; }; + DE5D6EAAAA8E630514B9684970ECC656 /* FIRSecureTokenService.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRSecureTokenService.h; path = Firebase/Auth/Source/SystemService/FIRSecureTokenService.h; sourceTree = ""; }; + DE815E82153434B0700F29ACB65F045C /* FIRAuthSerialTaskQueue.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRAuthSerialTaskQueue.m; path = Firebase/Auth/Source/Auth/FIRAuthSerialTaskQueue.m; sourceTree = ""; }; + DEA2DC39E1EFD567940823DBD9244425 /* GTMSessionFetcher-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "GTMSessionFetcher-prefix.pch"; sourceTree = ""; }; + DF2611CA01949B5334790514092BFD22 /* Pods-shlack-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-shlack-acknowledgements.plist"; sourceTree = ""; }; + DF2A2CC608AD49F3BAC267FD038414A6 /* GULUserDefaults.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GULUserDefaults.h; path = GoogleUtilities/UserDefaults/Private/GULUserDefaults.h; sourceTree = ""; }; + DF6870434F40F97F3366354A0E73E789 /* filter_policy.cc */ = {isa = PBXFileReference; includeInIndex = 1; name = filter_policy.cc; path = util/filter_policy.cc; sourceTree = ""; }; + DF6BB5B6345AA720565F522DF2B3C8D8 /* FIRInstanceIDDefines.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceIDDefines.h; path = Firebase/InstanceID/FIRInstanceIDDefines.h; sourceTree = ""; }; + DFD915F32B415D7FFD3667671334CCD1 /* FTuplePathValue.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FTuplePathValue.h; path = Firebase/Database/Utilities/Tuples/FTuplePathValue.h; sourceTree = ""; }; + E00FB06CA2BE3CB143CCB541D9FF432F /* FConnection.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FConnection.m; path = Firebase/Database/Realtime/FConnection.m; sourceTree = ""; }; + E03DD375627DAB4A5A87B9185F44E20A /* FSparseSnapshotTree.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FSparseSnapshotTree.h; path = Firebase/Database/Core/FSparseSnapshotTree.h; sourceTree = ""; }; + E05DDD2D325CEA2146BBFBCF38ACF69B /* FLLRBEmptyNode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FLLRBEmptyNode.h; path = Firebase/Database/third_party/FImmutableSortedDictionary/FImmutableSortedDictionary/FLLRBEmptyNode.h; sourceTree = ""; }; + E0873E6476F1CE78473958D50C2CC017 /* format.cc */ = {isa = PBXFileReference; includeInIndex = 1; name = format.cc; path = table/format.cc; sourceTree = ""; }; + E15AD84E865CA3368A0C52D6750D6BAE /* FValueEventRegistration.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FValueEventRegistration.m; path = Firebase/Database/Core/View/FValueEventRegistration.m; sourceTree = ""; }; + E1A67A806445D107C967D96A37989861 /* FWriteTreeRef.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FWriteTreeRef.m; path = Firebase/Database/Core/FWriteTreeRef.m; sourceTree = ""; }; + E1C5490D15E8E9C6552EFDC1CE9EFA0E /* FIRAuthAppCredentialManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRAuthAppCredentialManager.h; path = Firebase/Auth/Source/SystemService/FIRAuthAppCredentialManager.h; sourceTree = ""; }; + E1F00DF06C3044983E4F4F4B761E513B /* FMaxNode.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FMaxNode.m; path = Firebase/Database/FMaxNode.m; sourceTree = ""; }; + E2132231C42D65DA3DA076C893171EFE /* FirebaseAuthInterop.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = FirebaseAuthInterop.xcconfig; sourceTree = ""; }; E23C076BA70925415F490FEDB215DA92 /* SwiftyJSON.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = SwiftyJSON.framework; path = SwiftyJSON.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - E25D56E2AE9DF5D7E8862DDD3EA38BBC /* FNode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FNode.h; path = Firebase/Database/Snapshot/FNode.h; sourceTree = ""; }; + E27450E8F1F772EAB21DF4C39794A794 /* FIRGameCenterAuthProvider.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRGameCenterAuthProvider.m; path = Firebase/Auth/Source/AuthProvider/GameCenter/FIRGameCenterAuthProvider.m; sourceTree = ""; }; + E2776BBFB8F2BC2F2F3A2B7B48DB5D04 /* FViewProcessor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FViewProcessor.h; path = Firebase/Database/FViewProcessor.h; sourceTree = ""; }; + E2A38E3F34CBDC6C03E3FB00E4D4DCBE /* RLMSyncUser.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = RLMSyncUser.mm; path = Realm/RLMSyncUser.mm; sourceTree = ""; }; + E2B1A0FE1A0A40012BB6C6090F54DF20 /* RLMArray_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RLMArray_Private.h; path = include/RLMArray_Private.h; sourceTree = ""; }; E2B63D462DB7F827C4B11FD51E4F8E2D /* FirebaseCore.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = FirebaseCore.framework; path = FirebaseCore.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - E2EDCBDB6DDAEEE2C14318AEB855E9E5 /* FIRInstanceIDCheckinService.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceIDCheckinService.h; path = Firebase/InstanceID/FIRInstanceIDCheckinService.h; sourceTree = ""; }; - E3592EF7BCC6B77368F5B92F993050FB /* RLMNetworkClient.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = RLMNetworkClient.mm; path = Realm/RLMNetworkClient.mm; sourceTree = ""; }; - E387039809B580B0DA4DBE435D03CC50 /* Realm.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = Realm.modulemap; sourceTree = ""; }; - E4570B8C7E368DD4DD267728B778CB3E /* FRepo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FRepo.h; path = Firebase/Database/Core/FRepo.h; sourceTree = ""; }; - E4A03006F0EFA373770B0E58C4AEAA1F /* FPriorityIndex.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FPriorityIndex.h; path = Firebase/Database/FPriorityIndex.h; sourceTree = ""; }; - E4EC468C7B68B6E00EDAF9F470F80973 /* RLMSwiftSupport.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RLMSwiftSupport.m; path = Realm/RLMSwiftSupport.m; sourceTree = ""; }; - E593C16D643BACC5E4698D1EEE2F2042 /* FTupleStringNode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FTupleStringNode.h; path = Firebase/Database/Utilities/Tuples/FTupleStringNode.h; sourceTree = ""; }; - E5F094D4D975B057F576217E1658E1F6 /* Realm.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Realm.swift; path = RealmSwift/Realm.swift; sourceTree = ""; }; - E67E35298ED63F3E67572FBE23154F5A /* RLMConstants.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RLMConstants.m; path = Realm/RLMConstants.m; sourceTree = ""; }; - E6D7E4600AC09D13EA4BAABBB5A41DF8 /* arena.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = arena.h; path = util/arena.h; sourceTree = ""; }; - E7BEBCDA90FC526CBF5088FC91938C86 /* FIRDatabaseConfig.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRDatabaseConfig.m; path = Firebase/Database/Api/FIRDatabaseConfig.m; sourceTree = ""; }; - E87085B271DE4E3CA9D2160D5965A6A4 /* filter_block.cc */ = {isa = PBXFileReference; includeInIndex = 1; name = filter_block.cc; path = table/filter_block.cc; sourceTree = ""; }; - E874A3930833716E7E68D7862DEF7520 /* FRangeMerge.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FRangeMerge.m; path = Firebase/Database/Core/FRangeMerge.m; sourceTree = ""; }; - E956CED4160A0DDFAE463FFCA8865DCD /* FIRInstanceIDCheckinPreferences+Internal.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "FIRInstanceIDCheckinPreferences+Internal.m"; path = "Firebase/InstanceID/FIRInstanceIDCheckinPreferences+Internal.m"; sourceTree = ""; }; - EA0C9C5BAC8F1A23863BC4FB72D5AF62 /* FTupleCallbackStatus.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FTupleCallbackStatus.m; path = Firebase/Database/Utilities/Tuples/FTupleCallbackStatus.m; sourceTree = ""; }; - EA3040D642F30EDAFD74D347AFF460CC /* block_builder.cc */ = {isa = PBXFileReference; includeInIndex = 1; name = block_builder.cc; path = table/block_builder.cc; sourceTree = ""; }; - EA414CCAFA3FB6F475B8CEA782E3F436 /* RealmSwift-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "RealmSwift-umbrella.h"; sourceTree = ""; }; - EB1E7E0D62BED5CF76CB85CADCDD4976 /* FIROptions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIROptions.h; path = Firebase/Core/Public/FIROptions.h; sourceTree = ""; }; - EBC5C61CC9AD2F6282EFFC889E043680 /* status.cc */ = {isa = PBXFileReference; includeInIndex = 1; name = status.cc; path = util/status.cc; sourceTree = ""; }; - EBE26D1FF64CCFBCD68F732793E490FE /* FKeyIndex.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FKeyIndex.h; path = Firebase/Database/FKeyIndex.h; sourceTree = ""; }; - EBFF659FD75EE6D6591D3B29C1A6D873 /* GULNSData+zlib.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "GULNSData+zlib.h"; path = "GoogleUtilities/NSData+zlib/GULNSData+zlib.h"; sourceTree = ""; }; - EC1F085546D1D5E30BDCF02E9A944AFA /* Firebase.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Firebase.h; path = CoreOnly/Sources/Firebase.h; sourceTree = ""; }; - EC54C34DA74E3DAF3DFC93DCE5B6E940 /* GULNetworkLoggerProtocol.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GULNetworkLoggerProtocol.h; path = GoogleUtilities/Network/Private/GULNetworkLoggerProtocol.h; sourceTree = ""; }; - EC8027660BFAFCEC1042E74E2195A08A /* GULNetworkMessageCode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GULNetworkMessageCode.h; path = GoogleUtilities/Network/Private/GULNetworkMessageCode.h; sourceTree = ""; }; - ECA01B52E39D410FEB884E6293FC8829 /* FOverwrite.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FOverwrite.m; path = Firebase/Database/Core/Operation/FOverwrite.m; sourceTree = ""; }; - ECBEB4A72237D43F4498046D719CAB0E /* FWebSocketConnection.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FWebSocketConnection.h; path = Firebase/Database/Realtime/FWebSocketConnection.h; sourceTree = ""; }; - ECDD3C59A0A1254B266D120502DBEE26 /* FTupleTSN.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FTupleTSN.m; path = Firebase/Database/Utilities/Tuples/FTupleTSN.m; sourceTree = ""; }; - ED24953FC45339D3E47A22935D3EFDC0 /* write_batch_internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = write_batch_internal.h; path = db/write_batch_internal.h; sourceTree = ""; }; - EDAD72CAF046D238473BDB7D12DD6753 /* FIRLoggerLevel.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRLoggerLevel.h; path = Firebase/Core/Public/FIRLoggerLevel.h; sourceTree = ""; }; - EDD95CB096AB50883B64E3CC5BAFFD18 /* FLeafNode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FLeafNode.h; path = Firebase/Database/Snapshot/FLeafNode.h; sourceTree = ""; }; - EE35FF84894CD6820706A105C0EBC645 /* FChange.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FChange.m; path = Firebase/Database/Core/View/FChange.m; sourceTree = ""; }; - EEDD89E782509485877D5E42C8185AF2 /* FIRTransactionResult.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRTransactionResult.m; path = Firebase/Database/Api/FIRTransactionResult.m; sourceTree = ""; }; - EEF61379CE37066B7B3335D89DCFA5FB /* GULReachabilityChecker.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GULReachabilityChecker.h; path = GoogleUtilities/Reachability/Private/GULReachabilityChecker.h; sourceTree = ""; }; - EF15A43804CDC57252EE721FBE98BB9E /* SwiftyJSON.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SwiftyJSON.xcconfig; sourceTree = ""; }; - EFA0B1C2A18100743525B591A76BF5DA /* Pods-shlack-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-shlack-dummy.m"; sourceTree = ""; }; - EFA876E4747BF8F66B3330D12C6A19EE /* dbformat.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = dbformat.h; path = db/dbformat.h; sourceTree = ""; }; - EFE335DC5B8FCE0CE211BB9D7AC93D2D /* FImmutableTree.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FImmutableTree.m; path = Firebase/Database/Core/Utilities/FImmutableTree.m; sourceTree = ""; }; - F07997ECC199F8251298FED988C18D3B /* FIRInstanceIDAuthKeyChain.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceIDAuthKeyChain.h; path = Firebase/InstanceID/FIRInstanceIDAuthKeyChain.h; sourceTree = ""; }; - F12E891C300C2EDCD9D145FA1D11BC94 /* snapshot.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = snapshot.h; path = db/snapshot.h; sourceTree = ""; }; - F170D44A0009688D7CD2744A00CD1C0A /* FIROptionsInternal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIROptionsInternal.h; path = Firebase/Core/Private/FIROptionsInternal.h; sourceTree = ""; }; - F176EEB98BF07589D0144F24E7D3649A /* FPathIndex.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FPathIndex.m; path = Firebase/Database/FPathIndex.m; sourceTree = ""; }; - F1A346D79A9034136582F63EFD3EB351 /* FEvent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FEvent.h; path = Firebase/Database/Core/View/FEvent.h; sourceTree = ""; }; - F1B94CB9EEA07CECCE673771A5DFC778 /* FIRInstanceID.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceID.h; path = Firebase/InstanceID/Public/FIRInstanceID.h; sourceTree = ""; }; - F2155BA367E62EDB156F27E56FDFF7F6 /* FLeafNode.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FLeafNode.m; path = Firebase/Database/Snapshot/FLeafNode.m; sourceTree = ""; }; - F223C5E7C9503F5B2EF5BE4BE2F6B569 /* FIRAppAssociationRegistration.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRAppAssociationRegistration.h; path = Firebase/Core/Private/FIRAppAssociationRegistration.h; sourceTree = ""; }; - F23BA1CCEEFD97A5FBC5256E6310A9C9 /* weak_realm_notifier.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = weak_realm_notifier.cpp; path = Realm/ObjectStore/src/impl/weak_realm_notifier.cpp; sourceTree = ""; }; - F26846E34EB79B93988189DDC46DF4D5 /* FIRComponentType.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRComponentType.h; path = Firebase/Core/Private/FIRComponentType.h; sourceTree = ""; }; - F35E730FB06ECB2418569BB95F3A5BD1 /* RLMProperty.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RLMProperty.h; path = include/RLMProperty.h; sourceTree = ""; }; - F38B3CCCE12D32FA9EA1093E16DCAE4F /* merger.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = merger.h; path = table/merger.h; sourceTree = ""; }; - F3D14E66BDB2841D0EFEC8F5AEFDD339 /* FirebaseCore.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = FirebaseCore.xcconfig; sourceTree = ""; }; - F47180B8A21816378CA7BCA9E2755D02 /* GULApplication.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GULApplication.h; path = GoogleUtilities/AppDelegateSwizzler/Private/GULApplication.h; sourceTree = ""; }; - F4C20F60F9342B8B82D65C1570C0F432 /* env_posix_test_helper.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = env_posix_test_helper.h; path = util/env_posix_test_helper.h; sourceTree = ""; }; - F50E9C77DCFF0E376F74FEB5C6932CFC /* ObjectiveCSupport+Sync.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "ObjectiveCSupport+Sync.swift"; path = "RealmSwift/ObjectiveCSupport+Sync.swift"; sourceTree = ""; }; - F513B682A0902B1AF982E39670F168F7 /* FIRDataSnapshot_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRDataSnapshot_Private.h; path = Firebase/Database/Api/Private/FIRDataSnapshot_Private.h; sourceTree = ""; }; - F57744E663AE1E78FE543630E9F2A139 /* FTypedefs_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FTypedefs_Private.h; path = Firebase/Database/Api/Private/FTypedefs_Private.h; sourceTree = ""; }; - F59BC7A16A66FA14351F20FA2BBFFEAF /* RLMCollection_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RLMCollection_Private.h; path = include/RLMCollection_Private.h; sourceTree = ""; }; - F5DDED695B9F822AC7E55E13C7D37D21 /* FValueIndex.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FValueIndex.m; path = Firebase/Database/FValueIndex.m; sourceTree = ""; }; - F74FB87471B140E234E03F1F96C7BCAF /* RealmSwift-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "RealmSwift-Info.plist"; sourceTree = ""; }; - F78421F029BB8A8E02A400B723189AA1 /* fbase64.c */ = {isa = PBXFileReference; includeInIndex = 1; name = fbase64.c; path = Firebase/Database/third_party/SocketRocket/fbase64.c; sourceTree = ""; }; - F7C0667A3A1C1CFC512A5112FA3856C1 /* RLMSchema_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RLMSchema_Private.h; path = include/RLMSchema_Private.h; sourceTree = ""; }; - F8A3DB8BFE0116EB37E50F4B24B89A7D /* FIRDatabaseComponent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRDatabaseComponent.m; path = Firebase/Database/Api/FIRDatabaseComponent.m; sourceTree = ""; }; - F8B02D4182CE4347FF5C653EBAEEC73A /* port.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = port.h; path = port/port.h; sourceTree = ""; }; - F8D87E0DB549635A81DB403FAF68092D /* FIRInstanceIDKeyPair.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstanceIDKeyPair.m; path = Firebase/InstanceID/FIRInstanceIDKeyPair.m; sourceTree = ""; }; - F93AFAED2CAB8BE4703BC903FFD5999E /* FTuplePathValue.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FTuplePathValue.h; path = Firebase/Database/Utilities/Tuples/FTuplePathValue.h; sourceTree = ""; }; - F9D2FE8FAC9AE9A32DE90EC9EAEC0737 /* RealmSwift.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = RealmSwift.modulemap; sourceTree = ""; }; - F9EE53CE4FAE921E2315618D5706DF83 /* SwiftyJSON-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SwiftyJSON-umbrella.h"; sourceTree = ""; }; - FA2B832E8F3FE80F751DB1819DA58D36 /* Pods-shlack.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-shlack.debug.xcconfig"; sourceTree = ""; }; - FBE7AA56320221FD0C738106C357CA8D /* builder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = builder.h; path = db/builder.h; sourceTree = ""; }; - FC3D17CB39521023CF8DE39DFCC1F083 /* YMTGetDeviceName.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = YMTGetDeviceName.modulemap; sourceTree = ""; }; - FCCDBA4C00C13320C4B739A41B8DF480 /* RLMSyncUtil.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RLMSyncUtil.h; path = include/RLMSyncUtil.h; sourceTree = ""; }; - FCE7CBF0406D1926A617016502A76B9D /* RLMProperty_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RLMProperty_Private.h; path = include/RLMProperty_Private.h; sourceTree = ""; }; - FCF1A8D5CDC0A4815258D87A2F627603 /* sync_config.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = sync_config.cpp; path = Realm/ObjectStore/src/sync/sync_config.cpp; sourceTree = ""; }; - FD108C2E1B33C5F684030636825D9779 /* nanopb-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "nanopb-dummy.m"; sourceTree = ""; }; - FD4F5D9D774C3ECB3E407B0716CFC2C9 /* RLMSyncPermission.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = RLMSyncPermission.mm; path = Realm/RLMSyncPermission.mm; sourceTree = ""; }; - FE0D276AFD1DA80923B78F332D3CCDA0 /* RLMPredicateUtil.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = RLMPredicateUtil.mm; path = Realm/RLMPredicateUtil.mm; sourceTree = ""; }; - FE6911E08C9C60005A1F832BBA21898C /* FStringUtilities.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FStringUtilities.m; path = Firebase/Database/Utilities/FStringUtilities.m; sourceTree = ""; }; - FEFC2BB53EA3D8994C1ACC0F17ED92FC /* FOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FOperation.h; path = Firebase/Database/Core/Operation/FOperation.h; sourceTree = ""; }; - FFD9847BC8112C92BE7316A67739B7FB /* FAuthTokenProvider.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FAuthTokenProvider.h; path = Firebase/Database/Login/FAuthTokenProvider.h; sourceTree = ""; }; + E2B71F30B223EE0B24C4766D7B451AAF /* FRepoManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FRepoManager.m; path = Firebase/Database/Core/FRepoManager.m; sourceTree = ""; }; + E2BC63C278657C2953BC4542ED1A3AFE /* RLMRealmUtil.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = RLMRealmUtil.mm; path = Realm/RLMRealmUtil.mm; sourceTree = ""; }; + E2D15F0B18D5D45392A1F8048F3D846A /* FIRFederatedAuthProvider.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRFederatedAuthProvider.h; path = Firebase/Auth/Source/Public/FIRFederatedAuthProvider.h; sourceTree = ""; }; + E30A4304036780C57A6A4C5FF8F0102B /* FIRInstanceIDBackupExcludedPlist.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceIDBackupExcludedPlist.h; path = Firebase/InstanceID/FIRInstanceIDBackupExcludedPlist.h; sourceTree = ""; }; + E39B3D2280A946B6D0D2A5BE820ABAE6 /* FIRVersion.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRVersion.h; path = Firebase/Core/Private/FIRVersion.h; sourceTree = ""; }; + E55A55CE8C7BE5281B75CF2D9A69ABEF /* RLMOptionalBase.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RLMOptionalBase.h; path = include/RLMOptionalBase.h; sourceTree = ""; }; + E5B3A983D7942A2D6839EE7A9EF00216 /* db.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = db.h; path = include/leveldb/db.h; sourceTree = ""; }; + E665438643EAB4A514B6BB0B628139A4 /* GoogleUtilities.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = GoogleUtilities.xcconfig; sourceTree = ""; }; + E6EDE7AD67976782F91B7CBB7F5E23AF /* GULNSData+zlib.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "GULNSData+zlib.m"; path = "GoogleUtilities/NSData+zlib/GULNSData+zlib.m"; sourceTree = ""; }; + E7EB9918F5E535EAD721D9354B856C44 /* Sync.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Sync.swift; path = RealmSwift/Sync.swift; sourceTree = ""; }; + E8EA673105DF649516D896FF2A1D3271 /* db_iter.cc */ = {isa = PBXFileReference; includeInIndex = 1; name = db_iter.cc; path = db/db_iter.cc; sourceTree = ""; }; + E9C17B4604F37A79B7D4B4F6B27AAFD9 /* FViewProcessorResult.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FViewProcessorResult.m; path = Firebase/Database/FViewProcessorResult.m; sourceTree = ""; }; + E9F077FE4C063A2CA564C50BED45603F /* leveldb-library-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "leveldb-library-dummy.m"; sourceTree = ""; }; + EACA1A696255F6A798A17C054F2B66DC /* FDataEvent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FDataEvent.h; path = Firebase/Database/Core/View/FDataEvent.h; sourceTree = ""; }; + EACFC133A569E8874D71BB324BE66FA4 /* GULSwizzler.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GULSwizzler.m; path = GoogleUtilities/MethodSwizzler/GULSwizzler.m; sourceTree = ""; }; + EB4308910109BD2D8A9769EF85E1C647 /* RLMObjectBase.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = RLMObjectBase.mm; path = Realm/RLMObjectBase.mm; sourceTree = ""; }; + EB6FC8D8EB3430BFEFF7A78FE521B65E /* FSnapshotHolder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FSnapshotHolder.m; path = Firebase/Database/Core/FSnapshotHolder.m; sourceTree = ""; }; + EBB1E781F01648C5B0C8E97711ECD03F /* RLMNetworkClient.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = RLMNetworkClient.mm; path = Realm/RLMNetworkClient.mm; sourceTree = ""; }; + EBEEAE107EDF9BD702B1A54392D08B63 /* FIndexedFilter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIndexedFilter.h; path = Firebase/Database/Core/View/Filter/FIndexedFilter.h; sourceTree = ""; }; + EBF2291F70755348E2D5441C87E242AB /* FIRVerifyPasswordResponse.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRVerifyPasswordResponse.m; path = Firebase/Auth/Source/Backend/RPC/FIRVerifyPasswordResponse.m; sourceTree = ""; }; + EBFFEA66C26CDF5A514CC30E13F0C688 /* NSError+FIRInstanceID.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSError+FIRInstanceID.h"; path = "Firebase/InstanceID/NSError+FIRInstanceID.h"; sourceTree = ""; }; + EC04E3FAE92FE1249F2540C622DB82F5 /* memtable.cc */ = {isa = PBXFileReference; includeInIndex = 1; name = memtable.cc; path = db/memtable.cc; sourceTree = ""; }; + EC0CE3B29E2BEF9317F430A14A80F888 /* RealmSwift.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = RealmSwift.xcconfig; sourceTree = ""; }; + EC52200C64938913E2A145909FCB1DE5 /* FIRApp.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRApp.m; path = Firebase/Core/FIRApp.m; sourceTree = ""; }; + ED83681F312D41A6CC433BAA9D963A64 /* FQuerySpec.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FQuerySpec.h; path = Firebase/Database/Core/FQuerySpec.h; sourceTree = ""; }; + ED9456BB37DDD86BB1D674494200C374 /* FPriorityIndex.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FPriorityIndex.m; path = Firebase/Database/FPriorityIndex.m; sourceTree = ""; }; + EE3D153DA535398A7536C329AD6B1875 /* FIRDatabaseConfig.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRDatabaseConfig.h; path = Firebase/Database/Api/FIRDatabaseConfig.h; sourceTree = ""; }; + EE78392C8BAF863D7E3378CEB3256B53 /* leveldb-library-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "leveldb-library-umbrella.h"; sourceTree = ""; }; + EEAE026D72736A8213FE655A02440501 /* FIRAuthNotificationManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRAuthNotificationManager.h; path = Firebase/Auth/Source/SystemService/FIRAuthNotificationManager.h; sourceTree = ""; }; + EEBF1CFF356039410AAD67E17DD212A8 /* FIRGoogleAuthCredential.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRGoogleAuthCredential.h; path = Firebase/Auth/Source/AuthProvider/Google/FIRGoogleAuthCredential.h; sourceTree = ""; }; + EEE2EB34AE62A69CFA17F062BEEACB71 /* nanopb.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = nanopb.modulemap; sourceTree = ""; }; + EEE9128D2C8E311A51541B4375FB1152 /* iterator.cc */ = {isa = PBXFileReference; includeInIndex = 1; name = iterator.cc; path = table/iterator.cc; sourceTree = ""; }; + EF0F1B2565A2FD3D55B18F997286577A /* FIRSecureTokenRequest.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRSecureTokenRequest.m; path = Firebase/Auth/Source/Backend/RPC/FIRSecureTokenRequest.m; sourceTree = ""; }; + EF7ADFA7A3DD30DF1969975ACD565F7B /* FLimitedFilter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FLimitedFilter.m; path = Firebase/Database/Core/View/Filter/FLimitedFilter.m; sourceTree = ""; }; + EF8EEBCF50D02BE154F4537D7561E4A2 /* FIRTwitterAuthProvider.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRTwitterAuthProvider.h; path = Firebase/Auth/Source/Public/FIRTwitterAuthProvider.h; sourceTree = ""; }; + EF9513E0A55CF6FE869B0F4F3B334147 /* GoogleSignIn.bundle */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "wrapper.plug-in"; name = GoogleSignIn.bundle; path = Resources/GoogleSignIn.bundle; sourceTree = ""; }; + EFFCE391EAFB6F007DFD423BEBE66367 /* GULNetworkURLSession.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GULNetworkURLSession.m; path = GoogleUtilities/Network/GULNetworkURLSession.m; sourceTree = ""; }; + F0D013508DF2015BA0651D633AD5CCAF /* FViewCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FViewCache.m; path = Firebase/Database/Core/View/FViewCache.m; sourceTree = ""; }; + F1131702FCF50804F90B6CE53CC76202 /* GTMNSString+URLArguments.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "GTMNSString+URLArguments.m"; path = "Foundation/GTMNSString+URLArguments.m"; sourceTree = ""; }; + F113AB8F41762B4D250C788ABE86CB7E /* SortDescriptor.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SortDescriptor.swift; path = RealmSwift/SortDescriptor.swift; sourceTree = ""; }; + F11C679C19610AAB159BBB07AFE9BE4B /* db_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = db_impl.h; path = db/db_impl.h; sourceTree = ""; }; + F11CC91535397460ABF2A2F42FA89D99 /* FIRAnalyticsConfiguration.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRAnalyticsConfiguration.h; path = Firebase/Core/Private/FIRAnalyticsConfiguration.h; sourceTree = ""; }; + F190377A8066F6FA86F87932D6F9604E /* FTupleRemovedQueriesEvents.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FTupleRemovedQueriesEvents.h; path = Firebase/Database/Utilities/Tuples/FTupleRemovedQueriesEvents.h; sourceTree = ""; }; + F1A05FAEA1549862CE321111DE9249E5 /* FImmutableSortedDictionary.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FImmutableSortedDictionary.h; path = Firebase/Database/third_party/FImmutableSortedDictionary/FImmutableSortedDictionary/FImmutableSortedDictionary.h; sourceTree = ""; }; + F1B5CCDFB0BAAB70AA2D75AE5B3A89B0 /* FTrackedQueryManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FTrackedQueryManager.m; path = Firebase/Database/Persistence/FTrackedQueryManager.m; sourceTree = ""; }; + F1C0555D01E4856884BC963BDC4FDE63 /* FIRVerifyClientRequest.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRVerifyClientRequest.m; path = Firebase/Auth/Source/Backend/RPC/FIRVerifyClientRequest.m; sourceTree = ""; }; + F1E6130103C2603AE95565CA88C72C7A /* external_commit_helper.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = external_commit_helper.cpp; path = Realm/ObjectStore/src/impl/apple/external_commit_helper.cpp; sourceTree = ""; }; + F1EE2AE40C752B25929EDF168CDCE1B3 /* FIRGoogleAuthProvider.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRGoogleAuthProvider.h; path = Firebase/Auth/Source/Public/FIRGoogleAuthProvider.h; sourceTree = ""; }; + F251286296ED597D07078468E189E282 /* FirebaseDatabase.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = FirebaseDatabase.modulemap; sourceTree = ""; }; + F27EF94A79D5240CBD3F77565F4D15A5 /* Realm-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Realm-Info.plist"; sourceTree = ""; }; + F2E4F3789E438C86ED47BAE5DE25734B /* sync_config.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = sync_config.cpp; path = Realm/ObjectStore/src/sync/sync_config.cpp; sourceTree = ""; }; + F2EAD57FEA0D865E34970DF30433DA0B /* ObjectSchema.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ObjectSchema.swift; path = RealmSwift/ObjectSchema.swift; sourceTree = ""; }; + F2EE2AA613D0898F5C0B348699708685 /* FTupleRemovedQueriesEvents.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FTupleRemovedQueriesEvents.m; path = Firebase/Database/Utilities/Tuples/FTupleRemovedQueriesEvents.m; sourceTree = ""; }; + F3164F2DB01949911CF7A5D08378163B /* FTupleSetIdPath.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FTupleSetIdPath.m; path = Firebase/Database/Utilities/Tuples/FTupleSetIdPath.m; sourceTree = ""; }; + F3462F1A580FE4DE43C18CEE86254352 /* RLMProperty.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RLMProperty.h; path = include/RLMProperty.h; sourceTree = ""; }; + F39A0FF1A4DE5B6303CFDCB25A7A5E78 /* FIRInstanceIDCombinedHandler.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstanceIDCombinedHandler.m; path = Firebase/InstanceID/FIRInstanceIDCombinedHandler.m; sourceTree = ""; }; + F3B2F9BDD28E780FACBCB5B1FEB987D5 /* librealmcore-ios.a */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = archive.ar; name = "librealmcore-ios.a"; path = "core/librealmcore-ios.a"; sourceTree = ""; }; + F4355FC4302E34A0C9237E2498D2CAB1 /* FIRInstanceIDVersionUtilities.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceIDVersionUtilities.h; path = Firebase/InstanceID/FIRInstanceIDVersionUtilities.h; sourceTree = ""; }; + F45CB4E615D46548F5FE46BA0BDB05C7 /* FIRInstanceIDConstants.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstanceIDConstants.m; path = Firebase/InstanceID/FIRInstanceIDConstants.m; sourceTree = ""; }; + F46198EB3BBEF40E0CA8E0AC7C763008 /* GoogleUtilities.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = GoogleUtilities.modulemap; sourceTree = ""; }; + F48585DCE51682F2C6A18945895BD823 /* NSData+FIRBase64.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSData+FIRBase64.m"; path = "Firebase/Auth/Source/Utilities/NSData+FIRBase64.m"; sourceTree = ""; }; + F4CB939B6F03AF7D2547B827376F38F7 /* FImmutableSortedSet.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FImmutableSortedSet.h; path = Firebase/Database/third_party/FImmutableSortedDictionary/FImmutableSortedDictionary/FImmutableSortedSet.h; sourceTree = ""; }; + F504EB1CAAB3232360A88B314C1C2D1B /* FIRInstanceIDBackupExcludedPlist.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstanceIDBackupExcludedPlist.m; path = Firebase/InstanceID/FIRInstanceIDBackupExcludedPlist.m; sourceTree = ""; }; + F592AA371EB377F2067291A8CACCEF0A /* FNode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FNode.h; path = Firebase/Database/Snapshot/FNode.h; sourceTree = ""; }; + F60650407F30EFAFD7A927BCC7039F6C /* fbase64.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = fbase64.h; path = Firebase/Database/third_party/SocketRocket/fbase64.h; sourceTree = ""; }; + F65031AC8F02E3E0CC4A8E8ABE584CD8 /* binding_callback_thread_observer.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = binding_callback_thread_observer.cpp; path = Realm/ObjectStore/src/binding_callback_thread_observer.cpp; sourceTree = ""; }; + F66B9F3E79A18CD1B62CE109D42EEA25 /* FIRComponentType.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRComponentType.h; path = Firebase/Core/Private/FIRComponentType.h; sourceTree = ""; }; + F6BDFEE22A027EDA088B914A73075820 /* FClock.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FClock.h; path = Firebase/Database/FClock.h; sourceTree = ""; }; + F6E345D0E6A7F0FD1C06E250C7BC2D9E /* log_reader.cc */ = {isa = PBXFileReference; includeInIndex = 1; name = log_reader.cc; path = db/log_reader.cc; sourceTree = ""; }; + F70514697574A528AFF8943BE38EB4AB /* GULReachabilityChecker+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "GULReachabilityChecker+Internal.h"; path = "GoogleUtilities/Reachability/GULReachabilityChecker+Internal.h"; sourceTree = ""; }; + F76739191D142DA6D95DAC5D6196997D /* FQueryParams.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FQueryParams.m; path = Firebase/Database/Core/FQueryParams.m; sourceTree = ""; }; + F794984E472BE48555F62A6478B247AD /* FIROAuthCredential.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIROAuthCredential.m; path = Firebase/Auth/Source/AuthProvider/OAuth/FIROAuthCredential.m; sourceTree = ""; }; + F7E5B6134E7807C8BFD150B54EB04E63 /* c.cc */ = {isa = PBXFileReference; includeInIndex = 1; name = c.cc; path = db/c.cc; sourceTree = ""; }; + F80BE1B566C2CBD33CC2390D1D8102DE /* FLevelDBStorageEngine.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FLevelDBStorageEngine.h; path = Firebase/Database/Persistence/FLevelDBStorageEngine.h; sourceTree = ""; }; + F834DD7E4D2FDC85A193292024BE0163 /* FLLRBValueNode.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FLLRBValueNode.m; path = Firebase/Database/third_party/FImmutableSortedDictionary/FImmutableSortedDictionary/FLLRBValueNode.m; sourceTree = ""; }; + F8DAE815AAC1D460EF6E0B3613DFF6AD /* FIRCreateAuthURIResponse.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCreateAuthURIResponse.h; path = Firebase/Auth/Source/Backend/RPC/FIRCreateAuthURIResponse.h; sourceTree = ""; }; + F8F39F1A7C8B8CE24E3D0CD384E63027 /* GULReachabilityChecker.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GULReachabilityChecker.m; path = GoogleUtilities/Reachability/GULReachabilityChecker.m; sourceTree = ""; }; + F9220BA54BBDA9DFF1C2C3A090DFA6FA /* logging.cc */ = {isa = PBXFileReference; includeInIndex = 1; name = logging.cc; path = util/logging.cc; sourceTree = ""; }; + F931337BE5651F984D5264DDE741E1B0 /* FIRUser.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRUser.h; path = Firebase/Auth/Source/Public/FIRUser.h; sourceTree = ""; }; + F9FBC15B2889C9585713CEDD70ECC742 /* GTMSessionFetcher.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = GTMSessionFetcher.modulemap; sourceTree = ""; }; + FB3A4FA5B780EDD13FE6CF54CB1AB181 /* FIRInstanceIDAuthService.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstanceIDAuthService.m; path = Firebase/InstanceID/FIRInstanceIDAuthService.m; sourceTree = ""; }; + FB40BF9DEBBE839EB63A8CFE8DF8DD7F /* Pods-shlack-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-shlack-frameworks.sh"; sourceTree = ""; }; + FB74B24525380A5D381204D444E86AA2 /* log_reader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = log_reader.h; path = db/log_reader.h; sourceTree = ""; }; + FBE8BF9263F2387AC9E0D9A87867BB8D /* RLMSyncConfiguration.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RLMSyncConfiguration.h; path = include/RLMSyncConfiguration.h; sourceTree = ""; }; + FC39F6A4FD9EB627E18D201923B134F8 /* FWriteRecord.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FWriteRecord.m; path = Firebase/Database/Core/FWriteRecord.m; sourceTree = ""; }; + FC428D41E465FE75C6E949EF7AB1007F /* FWriteTree.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FWriteTree.h; path = Firebase/Database/Core/FWriteTree.h; sourceTree = ""; }; + FD258AD86496B2B6B7342C5934F2F1B3 /* FIRAuthProvider.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRAuthProvider.m; path = Firebase/Auth/Source/AuthProvider/FIRAuthProvider.m; sourceTree = ""; }; + FD64C6C4D061C17FF3992D5C46B05637 /* FIRAnalyticsConfiguration.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRAnalyticsConfiguration.m; path = Firebase/Core/FIRAnalyticsConfiguration.m; sourceTree = ""; }; + FD9C98B78F87A2DE67BA60D41994BE3A /* GTMSessionUploadFetcher.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTMSessionUploadFetcher.h; path = Source/GTMSessionUploadFetcher.h; sourceTree = ""; }; + FDF10A25E18204238B7625A98D7A547C /* version_set.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = version_set.h; path = db/version_set.h; sourceTree = ""; }; + FE030394944805A769BBC241C480477D /* FCacheNode.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FCacheNode.m; path = Firebase/Database/Core/View/FCacheNode.m; sourceTree = ""; }; + FE29E69132BB4653FB6C48387F122A5D /* FPath.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FPath.h; path = Firebase/Database/Core/Utilities/FPath.h; sourceTree = ""; }; + FE453E6737AC5DE7A22A60956F365082 /* FIRDatabaseQuery.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRDatabaseQuery.h; path = Firebase/Database/Public/FIRDatabaseQuery.h; sourceTree = ""; }; + FEF9CDDC521EA7A16A3AEFFEE263AB55 /* hash.cc */ = {isa = PBXFileReference; includeInIndex = 1; name = hash.cc; path = util/hash.cc; sourceTree = ""; }; + FF1F0D9FEC1CCD9F4E4835A60D397CD6 /* RealmConfiguration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RealmConfiguration.swift; path = RealmSwift/RealmConfiguration.swift; sourceTree = ""; }; + FF7A42D6EDFEFF83540F9E8A78ED2AA1 /* table_cache.cc */ = {isa = PBXFileReference; includeInIndex = 1; name = table_cache.cc; path = db/table_cache.cc; sourceTree = ""; }; + FFD643D3F704840F34C839384F691EFC /* FIRDeleteAccountRequest.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRDeleteAccountRequest.h; path = Firebase/Auth/Source/Backend/RPC/FIRDeleteAccountRequest.h; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - 2D632BC91937375E86AC42ED026093A4 /* Frameworks */ = { + 01B426F209EDE04752FBC8551822AF2A /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 35775FB898E095199DC5656316207802 /* Foundation.framework in Frameworks */, + 0B5872127B8AEFA27DD36BB387DDEB65 /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - 57E714585194E469459E9A1FDA3471BA /* Frameworks */ = { + 08D638204D426905C3BCB3C4408B4AAE /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - EE2A5AE21E43B6A17BFFFE1695AF66FE /* Foundation.framework in Frameworks */, - 530EC7E20DB092A84F13DFAF89701619 /* Realm.framework in Frameworks */, + 51D2A2EA65E0C91A4E7972C91209BFEF /* Foundation.framework in Frameworks */, + F1F1488D0B04124C830C3F00EAF2DA13 /* Security.framework in Frameworks */, + F0DA7436AB2BE9AB7DFA267D81FC6A2E /* SystemConfiguration.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - 7BA7500DBB489DEFDD7CC1FAE6073065 /* Frameworks */ = { + 20407601DE0907D5B622FA41E12430EB /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 19F765EA7211C1AB6CAA21972C191E67 /* Foundation.framework in Frameworks */, + CA3E33D21E80FC563BCA7F7BDDAB0121 /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - 976E51A906BC5FF2EF5F3F9150364146 /* Frameworks */ = { + 241FBE170EB6B942C36A53A423CA5EF9 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - B716C65DD09AF6E98190284B67A268F7 /* Foundation.framework in Frameworks */, + F5CB5E1E848A8D696191F6F8EACE6340 /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - A4B64A4E147E9E5CEBD97510B6DD69E5 /* Frameworks */ = { + 3DEC4458D88E0CF64837B0E9DBF1CD5F /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 235AC15AE371809F1467428D022D01CC /* Foundation.framework in Frameworks */, + 80FA43170606741FDD94FC95FE8AAC04 /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - A79A23EE5ED77D57026428441ACD6557 /* Frameworks */ = { + 409F4D834D5C9080DCA4EC5A6B57CA36 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - B7622B470DD663E9239AC5E1B539EE76 /* Foundation.framework in Frameworks */, + E329602EF1FB0CC5591A1C4B8039B28C /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - AD9C5A8DAF4334B670E91B2EC08DBE2C /* Frameworks */ = { + 57E714585194E469459E9A1FDA3471BA /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 464450D037D17ED5EE2322E180A6A9F5 /* Foundation.framework in Frameworks */, + EE2A5AE21E43B6A17BFFFE1695AF66FE /* Foundation.framework in Frameworks */, + 530EC7E20DB092A84F13DFAF89701619 /* Realm.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - B7D024CD4C070FA492DF42423B9C36C6 /* Frameworks */ = { + 7891C922237B87F7A34CC4BB0A54279A /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - DCC34F4CC38D374C98B5D07038E9E061 /* Foundation.framework in Frameworks */, + 1B95A14A156D4F942D4F9A63A5C60A49 /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - BCAD81D85C5E96CF5047D7977C5333D2 /* Frameworks */ = { + 7ABE6983AF6B046095FE488DCBABFB97 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 851727821EFE54325DA483D93F59ECDC /* Foundation.framework in Frameworks */, - 083362BCF3EA85FE13F2EB221A209C42 /* Security.framework in Frameworks */, + 97F309462427A5D549FED303FA9AAFCE /* Foundation.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 886454233DDB01469048D216A81D4433 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + CEF57D007F29743EE1F3BD93DAD5F99C /* Foundation.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + A4B64A4E147E9E5CEBD97510B6DD69E5 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 235AC15AE371809F1467428D022D01CC /* Foundation.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + AD9C5A8DAF4334B670E91B2EC08DBE2C /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 464450D037D17ED5EE2322E180A6A9F5 /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - DB0EC5A1ADE5082A47339C126D970A82 /* Frameworks */ = { + BCAD81D85C5E96CF5047D7977C5333D2 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - CAB5ED5AF21CB3DD3C96A76C2FD37BF9 /* Foundation.framework in Frameworks */, - 30E6C0B5D27FDD48D60BB0259010B33F /* Security.framework in Frameworks */, - 5E2CAB2BFF770FB45251BE3DE5B0525A /* SystemConfiguration.framework in Frameworks */, + 851727821EFE54325DA483D93F59ECDC /* Foundation.framework in Frameworks */, + 083362BCF3EA85FE13F2EB221A209C42 /* Security.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - F46A0EDAAA4E82EDBC0DB972F383AB30 /* Frameworks */ = { + BE5B1AC1F143680DA6864E968D9479CB /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 8703D25BE9A09A0DE8AEA23D81B22277 /* Foundation.framework in Frameworks */, + 32215F4D95D6F24D9957522BF5333E95 /* Foundation.framework in Frameworks */, + DA5ABCCE55C9FEA2EA069D67C9779124 /* Security.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 061A4812B237DF17886BC5802818C56F /* Environment */ = { + 0C94CB1FBDCE7BF6507ABCE58B746504 /* Headers */ = { isa = PBXGroup; children = ( - 380E7FEB1E34817223258CC2E47839B8 /* GULAppEnvironmentUtil.h */, - BFACEC065260A9E95A074F61D414B71B /* GULAppEnvironmentUtil.m */, + 51063623BCA58E848432E19D54879107 /* NSError+RLMSync.h */, + B95BF4C35448D59864B6247257FBF27A /* Realm.h */, + 9651C433B718EAA10022E1613255A895 /* RLMArray.h */, + 8D334483E2E6F7EE9902BA1480CA2762 /* RLMCollection.h */, + 9018C388971EEE407C4EE5B7A38ACFD5 /* RLMConstants.h */, + 97295361277BD22FF7037B30D2DE444D /* RLMMigration.h */, + 253D0BC75A7429141DD68D630377A630 /* RLMObject.h */, + A3A96C2678D44EFE4DBF723EE5A72C55 /* RLMObjectBase.h */, + AB3CBC258054D04865CFC4D83D2F660A /* RLMObjectBase_Dynamic.h */, + 66F1AE16987AA3C4B7AF01EBD8876742 /* RLMObjectSchema.h */, + 077A4146A733517C3C1626D699546AAD /* RLMPlatform.h */, + F3462F1A580FE4DE43C18CEE86254352 /* RLMProperty.h */, + 6BE15A4C4C687EC37FFF4A13D7876726 /* RLMRealm.h */, + 769B8341FDE45A543CB6C94B6C3CA4C3 /* RLMRealm+Sync.h */, + BCCA0DAE79662E911CBBEEEBDA45B5F3 /* RLMRealm_Dynamic.h */, + 31D5065414E22C1D253011FB1102B863 /* RLMRealmConfiguration.h */, + 76064AC4B09D665012247BAC6BEDCE87 /* RLMRealmConfiguration+Sync.h */, + 75556F5ED89B4574623EB21206A6796D /* RLMResults.h */, + ABFE82B1CFA704BF96B84CFEF80A185C /* RLMSchema.h */, + FBE8BF9263F2387AC9E0D9A87867BB8D /* RLMSyncConfiguration.h */, + 319C651F668A24B16876B0232DED9873 /* RLMSyncCredentials.h */, + BF6D835DCAA2CE049A0B15AB22681ACE /* RLMSyncManager.h */, + 50F9650492AACAF7C1049D722783270F /* RLMSyncPermission.h */, + A8856392940E3B82F2F239C2AF1213ED /* RLMSyncSession.h */, + ADBCA8B417E07F18DAF8456392903D6E /* RLMSyncSubscription.h */, + 874ADBD29C538221F2E792A14B1AB80F /* RLMSyncUser.h */, + 51A3B651AD393C33184960AABD78F452 /* RLMSyncUtil.h */, + 45F21713D2B7D52DE8A90B302E56361E /* RLMThreadSafeReference.h */, ); - name = Environment; + name = Headers; sourceTree = ""; }; - 0F86650BE64D4E46E0E66B28C74FE864 /* Support Files */ = { + 0CEB082E15E41C3D3B66FC97F7CFD408 /* Support Files */ = { isa = PBXGroup; children = ( - C22DE7CBE891E917FBA4E0A1B3D73675 /* Firebase.xcconfig */, + 02D67D74F651B74DEEA46690B13916A1 /* GoogleAppMeasurement.xcconfig */, ); name = "Support Files"; - path = "../Target Support Files/Firebase"; + path = "../Target Support Files/GoogleAppMeasurement"; sourceTree = ""; }; - 1070B38EA164720AC3D65EE8CBD90D7E /* Targets Support Files */ = { + 0DA4CDE80626F1F56F1A1D7651FD1BCC /* UserDefaults */ = { isa = PBXGroup; children = ( - 12C75804F4AB6A69341BE100D3F30A12 /* Pods-shlack */, + DF2A2CC608AD49F3BAC267FD038414A6 /* GULUserDefaults.h */, + 0E505AEB51C810ECED7D9CDB59039119 /* GULUserDefaults.m */, ); - name = "Targets Support Files"; + name = UserDefaults; sourceTree = ""; }; - 12ACC9D8ACE2FB88ADA5123A45F86B2F /* Frameworks */ = { + 11E782566616B3FA063F7B4A436888B3 /* Frameworks */ = { isa = PBXGroup; children = ( - BB0F66ECFE5B40D3ACAE5EFC538FE2A5 /* librealmcore-ios.a */, + 58A8AF83C291BF94270911EF1EF60C43 /* GoogleAppMeasurement.framework */, ); name = Frameworks; sourceTree = ""; }; - 12C75804F4AB6A69341BE100D3F30A12 /* Pods-shlack */ = { + 12B27EC4AF4C3726B2657830FC68E4F8 /* Support Files */ = { isa = PBXGroup; children = ( - 190F3CC4B3F3CFA3DF96AECE5B3EA6D0 /* Pods-shlack.modulemap */, - D282C456DAD7E8B18E7D2B9AB0C00325 /* Pods-shlack-acknowledgements.markdown */, - CAF9C5E74EA71697D28B4E8B5CAEC364 /* Pods-shlack-acknowledgements.plist */, - EFA0B1C2A18100743525B591A76BF5DA /* Pods-shlack-dummy.m */, - 3EA42F70B1784F4D075A352FF8C115BA /* Pods-shlack-frameworks.sh */, - A428DE7C793B6D8629956E811905F4E6 /* Pods-shlack-Info.plist */, - 5E5908CD47E8809377098A523758133E /* Pods-shlack-umbrella.h */, - FA2B832E8F3FE80F751DB1819DA58D36 /* Pods-shlack.debug.xcconfig */, - 235E01FCEEA7F67507DB1F4E538A25BB /* Pods-shlack.release.xcconfig */, + A544F2B5BDA3346A8A24C423369B02AD /* FirebaseAnalytics.xcconfig */, ); - name = "Pods-shlack"; - path = "Target Support Files/Pods-shlack"; + name = "Support Files"; + path = "../Target Support Files/FirebaseAnalytics"; sourceTree = ""; }; - 1AC1B2F291A27DC4939960FAED8F83F4 /* leveldb-library */ = { + 145636C63A42E43885B9F5CF8FEE5821 /* Defines */ = { isa = PBXGroup; children = ( - 3DFAA0F16D1348D8C2B1658D9FEEBA6F /* arena.cc */, - E6D7E4600AC09D13EA4BAABBB5A41DF8 /* arena.h */, - 1150FC8A702B2DAF5A47FAD0560B2ED2 /* atomic_pointer.h */, - 6C539B38DC200475939ACD6A2AA0C9DA /* block.cc */, - 50A384C9CA26FE5598BA6C43724571E0 /* block.h */, - EA3040D642F30EDAFD74D347AFF460CC /* block_builder.cc */, - 2B8F1094B09DD1FC2F583026C6939BF3 /* block_builder.h */, - 9803894BB3093DD53DB8CF7B6F05A62F /* bloom.cc */, - 9F6D304D5EFE8F43EED0B67F5519A85E /* builder.cc */, - FBE7AA56320221FD0C738106C357CA8D /* builder.h */, - 6DFA8195BD627C8AC822698B906F4AAC /* c.cc */, - E0112BE0C29F13D051D70B7999B8309D /* c.h */, - D003DDA0EC59D5AF7F0AB5B68744B89B /* cache.cc */, - CE9076D2CAC3B5B43EB2296148146AC6 /* cache.h */, - 3EEDAC8F7F06C08AB9877AA430A7983F /* coding.cc */, - 8B6BEBECA682714CDF79E4FA16552AEA /* coding.h */, - DC08EC17D19A33377F52A2114ECA4031 /* comparator.cc */, - 11BCE8CE1264A0F003A94E74A0278747 /* comparator.h */, - 427CD3BA94C49C7D6C2B23D08F0FEFA9 /* crc32c.cc */, - 5B5DD85F6549F5AB5E28D8BFC596D1BC /* crc32c.h */, - E20962DFCAA5C9EBF3999E8BCC87C2A1 /* db.h */, - 7F05C8D80949A3129C0089DFF2EE9478 /* db_impl.cc */, - 54594BC3ECF721AE29252010C2CD5A87 /* db_impl.h */, - DD852FBFAA153D71C49AB7E01ED80080 /* db_iter.cc */, - C65A5F060F02C74467206A13DE391472 /* db_iter.h */, - 6407733308EDDEA57E305164F4C21FFF /* dbformat.cc */, - EFA876E4747BF8F66B3330D12C6A19EE /* dbformat.h */, - AC107BA1A8279B39F9D35818356DDC0C /* dumpfile.cc */, - 646B5BD7E481625B298D4EC2B3F903EE /* dumpfile.h */, - 6BD9E51C74E54CDF7B8C30315AFA37AE /* env.cc */, - 18F57C63543E48918260382B3C0AC92E /* env.h */, - 6257B240538B1FCABF83C3D705CA1ED8 /* env_posix.cc */, - F4C20F60F9342B8B82D65C1570C0F432 /* env_posix_test_helper.h */, - 3DB9A61749E2672591F3744B8E0A809B /* filename.cc */, - C873B359BD343FD9C6CE235E16D330A7 /* filename.h */, - E87085B271DE4E3CA9D2160D5965A6A4 /* filter_block.cc */, - 39B9E708E29D6B502BEE2C8C220DCD01 /* filter_block.h */, - 1524CFB671448079E284EA5A5F0D6C81 /* filter_policy.cc */, - 31800C2488B08FF45979A152907DF412 /* filter_policy.h */, - 6D78BA6A29CBA8D77405C6D5EA97EBF6 /* format.cc */, - DBD07B180498B306219B7D869995A4C2 /* format.h */, - 486CBCA5F01350802AD975849019BE61 /* hash.cc */, - 3AAE1D6E20CDBD3EF2F63E2AEE3900E5 /* hash.h */, - 288231BE0CA63DA6DBCB712EEED7FA93 /* histogram.cc */, - 4F423D73A7D310CD1CBBD58AD48A9EEC /* histogram.h */, - 298336778EB733D007DF50E7B79E39DA /* iterator.cc */, - 64CB5A1C55D0DFCA324F5B2488F7F31D /* iterator.h */, - CB331BA83A88B234E835E5AC37B57317 /* iterator_wrapper.h */, - 2B68ECFAB84178558737939B9D00275C /* log_format.h */, - 85A197D8EDFCAF02A96F1F978530617D /* log_reader.cc */, - 6AE2BAA186211C8905ADC2A9C875D796 /* log_reader.h */, - 254D15F0BED38402FA64F2CE897BD30D /* log_writer.cc */, - B1FE488050874954E1F8A35B399F9245 /* log_writer.h */, - 5FF6A45D78980BFC3B688A50B0742026 /* logging.cc */, - 11D01DD003F31171CE7B17167EA12D67 /* logging.h */, - 51D392DCD6F7E78F352FAD8842C9342F /* memtable.cc */, - 32FCEDC31CAE44403C5489CD6E2F60D1 /* memtable.h */, - D468814F8D40F17D4F6124DB099789CC /* merger.cc */, - F38B3CCCE12D32FA9EA1093E16DCAE4F /* merger.h */, - A954D946069AAC616E37E3600F91D0EE /* mutexlock.h */, - 324605F9A7C1A835798788A242AC925F /* options.cc */, - 47B7F04C40333858D84A0FBCB76E331E /* options.h */, - F8B02D4182CE4347FF5C653EBAEEC73A /* port.h */, - 8BB3D4CC8A0C10310703AA55D8015BA9 /* port_example.h */, - C278A1CDFADAE92EA4CF7C48A8BDA710 /* port_posix.cc */, - 951721F056BC808FE1FB0CC2A0D370FD /* port_posix.h */, - 6882CDEDA0F009416E43F9D067403556 /* port_posix_sse.cc */, - D899BBF7DD951B296A24B1338D427B97 /* posix_logger.h */, - 66DEA65F5310D61C072B32E12C655944 /* random.h */, - A5340C02A073613C483C6B33B80F3B4F /* repair.cc */, - 4FC7EC69CE16F71F6F735F6535B6BC03 /* skiplist.h */, - 8D02D7FE2710571FA669070AEF471093 /* slice.h */, - F12E891C300C2EDCD9D145FA1D11BC94 /* snapshot.h */, - EBC5C61CC9AD2F6282EFFC889E043680 /* status.cc */, - 0E3A3666C5E309C2AD0750B6523FAEEC /* status.h */, - 30B48C9E3842725C6D720A64A8F821B0 /* table.cc */, - 5384656717C3A6C572CD7DF79C450CA1 /* table.h */, - C0BC0A402DD574D3C18E3DED9FEFFE12 /* table_builder.cc */, - 8E6980A91892A04189B1AD9965A13E49 /* table_builder.h */, - 010208BF5BCFF569ED50125DCAFDDCE4 /* table_cache.cc */, - D451800621CC2FDC8A999D954BCE543F /* table_cache.h */, - 2B5EDC32878131D9A5EE4D477508FDEC /* testharness.cc */, - D2BF564255C58BF3DD39C2C463E6CAD3 /* testharness.h */, - 4D76E5B55051BE4BEB78A09CAB455BB2 /* testutil.cc */, - 00B12DB8DF44E90725FF75F399D710F7 /* testutil.h */, - 91C18286D15353ED3C01C3ED4A05D208 /* thread_annotations.h */, - 358D4DCDCDD9B38F0A7ED8571CAC249A /* two_level_iterator.cc */, - 4F302E9739C8CBFB76BCACDF6AA11384 /* two_level_iterator.h */, - 4DCEFEF627F0A21FD0FBFA3A901ABD16 /* version_edit.cc */, - BC5ADE6AB94E6894CAA69DC8B747B03F /* version_edit.h */, - BEE691FE721F6DD9499B60A929D1621F /* version_set.cc */, - D36D53D2F0E0BFCC1D057A9B62A272D8 /* version_set.h */, - B56350CA13386B3EDDF4C194E49F7121 /* write_batch.cc */, - 498CCCF8ABE35F7A0B071FCB3FCB3473 /* write_batch.h */, - ED24953FC45339D3E47A22935D3EFDC0 /* write_batch_internal.h */, - 8141DE45AE4B81369C4C05CD7D65FB03 /* Support Files */, + B9E3976BEC37FC3C11815E4513100CAE /* GTMDefines.h */, ); - name = "leveldb-library"; - path = "leveldb-library"; + name = Defines; sourceTree = ""; }; - 1D5506593F9A0E4F279BA2DF3F944D93 /* Support Files */ = { + 15F89E020CD8675CD7638665FF2EC50C /* FirebaseDatabase */ = { isa = PBXGroup; children = ( - 0FA7EF31B7BE01AA3E240349E659B60A /* SwiftyJSON.modulemap */, - EF15A43804CDC57252EE721FBE98BB9E /* SwiftyJSON.xcconfig */, - 6C0FDC5A901061D4647C269C1223E966 /* SwiftyJSON-dummy.m */, - C16733277C6D45EEF12DBFAF2748FE42 /* SwiftyJSON-Info.plist */, - B2E09D7F94F383DFF92D53643F9EC3D5 /* SwiftyJSON-prefix.pch */, - F9EE53CE4FAE921E2315618D5706DF83 /* SwiftyJSON-umbrella.h */, + 24EB27B9D358997C30CE52903E4F39D8 /* APLevelDB.h */, + 8F8725D4D36E8CE22102EA3CF7AABC89 /* APLevelDB.mm */, + 13666EFB797F97CB2462E213B71F7516 /* FAckUserWrite.h */, + AD3957E2C653C89360E7086E824EF347 /* FAckUserWrite.m */, + BF87D2AFF0B91F316DB946AAC9D77EC7 /* FArraySortedDictionary.h */, + 43534C5F1E6AC39386A29E62F180519D /* FArraySortedDictionary.m */, + 8037AE9DE81A8F53FAB75B109848DDB9 /* FAtomicNumber.h */, + 4283D2DCDBD88BDD98B50A3DEE500BBE /* FAtomicNumber.m */, + D60FAC0498113B55C1DF9F52E6A76FED /* FAuthTokenProvider.h */, + 640F6EA21951193DDC66D4707D91D974 /* FAuthTokenProvider.m */, + 371E92FE1D34B870CA3743CEE73E7984 /* fbase64.c */, + F60650407F30EFAFD7A927BCC7039F6C /* fbase64.h */, + AC4BFBDF4DD6BB237FCC21FA55682814 /* FCacheNode.h */, + FE030394944805A769BBC241C480477D /* FCacheNode.m */, + A718FE3CB3E9E72D3C3D51588333B8BF /* FCachePolicy.h */, + D2D9F18979363D2EB45A64C237440E90 /* FCachePolicy.m */, + 4F4920DD9F72D5DAC57A1DD95FBC5C00 /* FCancelEvent.h */, + 7D7FCB8C02F75A0F1F7C613C617E7098 /* FCancelEvent.m */, + 403A530960A073F147E1456CAF0B48C2 /* FChange.h */, + C769CDE7B231925D815EFDBA051F88D8 /* FChange.m */, + 7F1E8D2FBE6B60F5EC9B40E8312C7DE5 /* FChildChangeAccumulator.h */, + 0F9B91AF6463F5F42306F5EF8F78C0E7 /* FChildChangeAccumulator.m */, + C1EABB42C0837B34F36F303B99C6C817 /* FChildEventRegistration.h */, + 05A04223649CC9528E3BE62992DCC774 /* FChildEventRegistration.m */, + BBC35D37B27896B3E80B6AADA347A902 /* FChildrenNode.h */, + 3FC03AE08D8CC0D4ADB047141E3E2A4C /* FChildrenNode.m */, + F6BDFEE22A027EDA088B914A73075820 /* FClock.h */, + C0F0C1B5DFB48FE8E8AE35973A00066A /* FClock.m */, + 890C7A4D405C2F2089F37E0DAF07826E /* FCompleteChildSource.h */, + 9A8DD9F9E4D089EA0A0BE2137ED87C29 /* FCompoundHash.h */, + 06C874060D1EC0DEC948C3DEC25DB576 /* FCompoundHash.m */, + 8821C4EAD2D871AE17AB8FC34386D6CC /* FCompoundWrite.h */, + 293017362BF588B7E01B3365BA0DD8D5 /* FCompoundWrite.m */, + B6F3FBA524B9389AFF98387286C9DCC8 /* FConnection.h */, + E00FB06CA2BE3CB143CCB541D9FF432F /* FConnection.m */, + 6AB87DDDB0F6450F58E49C59EEB7E6C8 /* FConstants.h */, + 0D94AC28263D760FB28DB16254CD7EE0 /* FConstants.m */, + EACA1A696255F6A798A17C054F2B66DC /* FDataEvent.h */, + 7B4C8086099D45DE9C56B5A1B6BE00E1 /* FDataEvent.m */, + 5DDA820155A7FCA9403B7F33E331627D /* FEmptyNode.h */, + 0DB217C21D25DD57BD4ED01980863F57 /* FEmptyNode.m */, + C850DE357FE20D83A24CF35AA8C9FBD7 /* FEvent.h */, + BB9309C3262E7E77128C494AD45863B5 /* FEventEmitter.h */, + 62B394E32B95975C25A4595A09487F85 /* FEventEmitter.m */, + 2731E026BEDB7B9C9FAF3E6588E4B25B /* FEventGenerator.h */, + 9866F096503E2223E40044F891E7148D /* FEventGenerator.m */, + 61811ADAE2CA0802F0E12A7F2003289B /* FEventRaiser.h */, + 39A16E6E03CED12E43AF45C278F768FC /* FEventRaiser.m */, + CA161ED162460C65E32AA99B9E784FD7 /* FEventRegistration.h */, + F1A05FAEA1549862CE321111DE9249E5 /* FImmutableSortedDictionary.h */, + 5D209639A08210F13C606B111B26E02E /* FImmutableSortedDictionary.m */, + F4CB939B6F03AF7D2547B827376F38F7 /* FImmutableSortedSet.h */, + 565635761C859EA8EFCA5D1EF4AEF687 /* FImmutableSortedSet.m */, + DA221695A4F6B98CD7044593667C01C4 /* FImmutableTree.h */, + 103244C20EE5B714BD105D34AB43F909 /* FImmutableTree.m */, + 30A75DEC06AE53698309EEB59A309021 /* FIndex.h */, + D208A3B3BE1AF43F037885F9ABBA7CB5 /* FIndex.m */, + EBEEAE107EDF9BD702B1A54392D08B63 /* FIndexedFilter.h */, + 712C1E55D4371809FAD6F7FA6F17FDB3 /* FIndexedFilter.m */, + 15700BCCF72D99AE9843DAAFC1B6C3D9 /* FIndexedNode.h */, + B944D1BBDEE7C0154D2ED6FA9B5B6FA0 /* FIndexedNode.m */, + BAF0DB110289DA7508DF42DCFBAE5B29 /* FIRDatabase.h */, + D49BBBB24DB37669F35254F5C6B5B9C4 /* FIRDatabase.m */, + 6FDA355010AE5FBE175F4995972A3FE4 /* FIRDatabase_Private.h */, + 06646823752E5DEE796F0F6DFD138917 /* FIRDatabaseComponent.h */, + 37DF19FC2B88C9423419C6300C786538 /* FIRDatabaseComponent.m */, + EE3D153DA535398A7536C329AD6B1875 /* FIRDatabaseConfig.h */, + 1064E9E80E2A22543B78E6EE17AA7478 /* FIRDatabaseConfig.m */, + 5AA3211F2B6BD04013790D930EA24D45 /* FIRDatabaseConfig_Private.h */, + FE453E6737AC5DE7A22A60956F365082 /* FIRDatabaseQuery.h */, + 050EEA7B488831E6AC9B7298410E6AE5 /* FIRDatabaseQuery.m */, + 42B6E510B94EE2181DA5B0B4DD1BC413 /* FIRDatabaseQuery_Private.h */, + 843CDCE82343D5064FB5A924E2CA6C50 /* FIRDatabaseReference.h */, + 079773EBA3C2C5C334385ABE31712383 /* FIRDatabaseReference.m */, + 9F83FEB4006D3DF1767533CFE98D9FF6 /* FIRDatabaseReference_Private.h */, + CBD589EC66AC7BD4EFC9EFCE01AA57EE /* FIRDataEventType.h */, + 34BF668BBDBF8FF1E6058B2D519D7E74 /* FIRDataSnapshot.h */, + 6C56F823A71B2B10C5A5807B71F8E09C /* FIRDataSnapshot.m */, + 60EF9C184E17E4955ED1317A63DBB6A1 /* FIRDataSnapshot_Private.h */, + 9A8422D16BEF38E158597614E14D2A71 /* FirebaseDatabase.h */, + C08E4C27AE9E66D93ECC57FE3F608804 /* FIRMutableData.h */, + 7664852FD86F309CAED256F1E02896CF /* FIRMutableData.m */, + 06879569ADF817D91E402710318AC768 /* FIRMutableData_Private.h */, + 67B421E6D32A450420B8A8D07D98CB01 /* FIRNoopAuthTokenProvider.h */, + C3A2B47BD9C50714D55D9ED9B48F383F /* FIRNoopAuthTokenProvider.m */, + 1B668599D384089F3325D8A55E981C5C /* FIRRetryHelper.h */, + 6B278F87F04C5AB3C4A75C6668BBFBCF /* FIRRetryHelper.m */, + 63D97D80C930841A5BBB075B1043EEE6 /* FIRServerValue.h */, + 5C1B10B9332D21AE74863B70D475B0B6 /* FIRServerValue.m */, + B80E99B8D91DAE3ABE832CD321A2AB41 /* FIRTransactionResult.h */, + B9E939DF716A920BB85C9FBB5CC73C86 /* FIRTransactionResult.m */, + 73B8D32ABF17CCF5F69C8FE894A47560 /* FIRTransactionResult_Private.h */, + 9984B99F803A00F0B02A4E700741E7E0 /* FKeepSyncedEventRegistration.h */, + 1BD37A5203C1973DBFE2C823214C754B /* FKeepSyncedEventRegistration.m */, + 19A89385F91044B0912780EECC14C715 /* FKeyIndex.h */, + 415E965384979083FA16A4BE75038648 /* FKeyIndex.m */, + 6EA12B476EEAB87960D6009E6A6E348F /* FLeafNode.h */, + CFDEEDC12876FEF79A7C191F2F234989 /* FLeafNode.m */, + F80BE1B566C2CBD33CC2390D1D8102DE /* FLevelDBStorageEngine.h */, + 720DF860890927AC616F3FC98C5A49D2 /* FLevelDBStorageEngine.m */, + 32D64A674E07A597261E5B4E5306A40E /* FLimitedFilter.h */, + EF7ADFA7A3DD30DF1969975ACD565F7B /* FLimitedFilter.m */, + 9D31ED110C3A5C21CF71740C8DFA57C3 /* FListenComplete.h */, + 366F4C1F56F6E0B10E73A943629F9128 /* FListenComplete.m */, + C6CB8D438BFF52322514E3602458A0EF /* FListenProvider.h */, + 3AA1B6314F3E0694E42F14AF73C93E2B /* FListenProvider.m */, + E05DDD2D325CEA2146BBFBCF38ACF69B /* FLLRBEmptyNode.h */, + C7FD86C99DDA7B41BD9652528FD15E12 /* FLLRBEmptyNode.m */, + C6097F06E8257BEC5AB23AD81E0B1B9D /* FLLRBNode.h */, + 34F49BD5DE455C81859F8CE999F87D89 /* FLLRBValueNode.h */, + F834DD7E4D2FDC85A193292024BE0163 /* FLLRBValueNode.m */, + A6E6A7D4999278C896A79B9C5550F5DC /* FMaxNode.h */, + E1F00DF06C3044983E4F4F4B761E513B /* FMaxNode.m */, + C338F3B727459D429963BBCC5001F010 /* FMerge.h */, + C89845ED0A05646E8825A6D5E691B585 /* FMerge.m */, + 6012B7E1E8E560B653653AEACAF1CFC3 /* FNamedNode.h */, + CB7A91BB382F392D09E24306C077E99F /* FNamedNode.m */, + A5A38A92F1DDA5DD9ADEAB425E0E62E7 /* FNextPushId.h */, + 82D8B01FD180CFE6C72AB20576E2D280 /* FNextPushId.m */, + F592AA371EB377F2067291A8CACCEF0A /* FNode.h */, + 78F1DE95DF34A9605B649CB07D488C7A /* FNodeFilter.h */, + 4D7FCD64F86B4ECEB77B0F8F3F5421BE /* FOperation.h */, + 656099B163E9187B52F3D857C0369160 /* FOperationSource.h */, + 9CCE247AF3AD8A8C665DE382E4E71208 /* FOperationSource.m */, + 3502BA5E54A949CC685BE45EB6002540 /* FOverwrite.h */, + 92FAADBDA4EFC457B8E526B091845F04 /* FOverwrite.m */, + 5081E64B331779B3C3A43EF3AD04343E /* FParsedUrl.h */, + 61CC9128F00CD21B6646A5F75278EFA6 /* FParsedUrl.m */, + FE29E69132BB4653FB6C48387F122A5D /* FPath.h */, + 1E3881598FEC21DCB337FDB827BA761C /* FPath.m */, + 931B7F66FB9024BCD0629F03799B167F /* FPathIndex.h */, + 8C67FC0A26ABE274C1B65C10C955EEA9 /* FPathIndex.m */, + A373DEE0775C8C95177A225CF72AC38A /* FPendingPut.h */, + A00ED326371D2BC421C2156E30799399 /* FPendingPut.m */, + 36216EDB4A6471893874ECC4B0DC140B /* FPersistenceManager.h */, + 4C776EFB57EF3F884ECC512EAC4060A6 /* FPersistenceManager.m */, + 8FAA8D07AD2C2F333B3892217980A2A0 /* FPersistentConnection.h */, + 9290926BBBB928FA3B8C2DB305F0C4D5 /* FPersistentConnection.m */, + DCEB5AE1A0CBA7227C5DA65B0EF875CB /* FPriorityIndex.h */, + ED9456BB37DDD86BB1D674494200C374 /* FPriorityIndex.m */, + 9E3C8531B93F2D03226A887AA398BCF6 /* FPruneForest.h */, + 7E8E26C4F9EEB25BE0767CF34183AF75 /* FPruneForest.m */, + C30A1A0C141DDCE25A678FC7309D8FC2 /* FQueryParams.h */, + F76739191D142DA6D95DAC5D6196997D /* FQueryParams.m */, + ED83681F312D41A6CC433BAA9D963A64 /* FQuerySpec.h */, + 2D847DD9F3FB0F68A17DDB5FBE6DDBD4 /* FQuerySpec.m */, + 2739BDBBDB736DDE2AD7D9AE3B0E7F23 /* FRangedFilter.h */, + 734E687ED0B9659B4B8296F7501174D4 /* FRangedFilter.m */, + B3335695C4D824B28E49AC20951FD113 /* FRangeMerge.h */, + 3E3F1AE0F2ED283BE153136FF024CAAF /* FRangeMerge.m */, + 8F48277CAF1C0BBDC388795C1119FE00 /* FRepo.h */, + 3A63A9AECC089F84F0DA8D356F4C9803 /* FRepo.m */, + B088CD9A297CEE21F1B5F207AE9ED091 /* FRepo_Private.h */, + 80802B72EB152AEA0A022E73EBBECCC2 /* FRepoInfo.h */, + 4AD358AF8B8E457FBABF9186BFDB8714 /* FRepoInfo.m */, + 23D468811C0D949050562E629BEE98D8 /* FRepoManager.h */, + E2B71F30B223EE0B24C4766D7B451AAF /* FRepoManager.m */, + 36495A048833A2B960CF63D1AE73C26B /* FServerValues.h */, + C9D84781252814C38E66B8879E62F3D4 /* FServerValues.m */, + B72D70C0268415C7597DC39BFD41C8F4 /* FSnapshotHolder.h */, + EB6FC8D8EB3430BFEFF7A78FE521B65E /* FSnapshotHolder.m */, + AC12CB594977AA9992BE69DB2D60237C /* FSnapshotUtilities.h */, + 63E0C9380760106F0D0EB1782F017224 /* FSnapshotUtilities.m */, + E03DD375627DAB4A5A87B9185F44E20A /* FSparseSnapshotTree.h */, + 1F7B3B758E092FAF7DF008CA3C8740C2 /* FSparseSnapshotTree.m */, + 8EE7F71638BDFD912AFCE02790D04BA0 /* FSRWebSocket.h */, + 8CDC780159B55410507B3752000BAECD /* FSRWebSocket.m */, + 81E552747E514BC894B2FA2671AD4F62 /* FStorageEngine.h */, + B2EF1BEB09B0FB783BF5B6C00786ECFA /* FStringUtilities.h */, + BE8C57275FEE5A96EAF32878ECB57356 /* FStringUtilities.m */, + C7281018F1EC1759BB0C1473B98221C2 /* FSyncPoint.h */, + D89A39093B5EF95B1053A0DCF6E9DE46 /* FSyncPoint.m */, + 23AD6FBA52ABE1C628E5D6C40B0C7506 /* FSyncTree.h */, + 01CC685F23F5952E47D06AAC8F40127D /* FSyncTree.m */, + D2D4EE74C04ED8410E1323DF06E8882A /* FTrackedQuery.h */, + C0254A04FC451023C10AF5591DD77A05 /* FTrackedQuery.m */, + A402DA57E0EEAE3B5CCEC9A8E53AB314 /* FTrackedQueryManager.h */, + F1B5CCDFB0BAAB70AA2D75AE5B3A89B0 /* FTrackedQueryManager.m */, + C19AAE6832A5803EE9C4245436FCFD49 /* FTransformedEnumerator.h */, + 00AD000A907DF26A376D4BD10CE0F617 /* FTransformedEnumerator.m */, + C7F4C51DFC05F9636C4AD64348512F68 /* FTree.h */, + 7D6E0609F0193400CB0FA596A38187CA /* FTree.m */, + 25A3BC7BEAEDB5DD17BBDA2377F7B961 /* FTreeNode.h */, + C8293996F0E2D6A64B2DF4C3861A775E /* FTreeNode.m */, + 4F45D0FA0F04D4A08AC604AFD5D68EC4 /* FTreeSortedDictionary.h */, + BA81289B1578869A8FCB45DAD08C1C0B /* FTreeSortedDictionary.m */, + C317BD0AB08496ED654FB2E03745B9E3 /* FTreeSortedDictionaryEnumerator.h */, + 4D83019C4A08762D24C8CEE791963D06 /* FTreeSortedDictionaryEnumerator.m */, + C13170C2475D2B45CEBCBF43AFC370E9 /* FTupleBoolBlock.h */, + 82A9B813E254325D96A9C5B35B4F4FBA /* FTupleBoolBlock.m */, + 1520860169C36F558C9400AEE9B85B05 /* FTupleCallbackStatus.h */, + DD79DA46E12615E54FD0186D434F55A3 /* FTupleCallbackStatus.m */, + 5497FA47B8B99D14E3C9AE15477C3CB7 /* FTupleFirebase.h */, + 4AF9771F0D34D60A3872BC9C17851737 /* FTupleFirebase.m */, + 41D26BD3734A72793ED5E83ECF7860EB /* FTupleNodePath.h */, + A607ED0A0BE0F45529AF19E856E587BC /* FTupleNodePath.m */, + 46B7687FD3EE101278137DB4F2D15F76 /* FTupleObjectNode.h */, + 1CE41B1B68A7964377A4CB3269B1109A /* FTupleObjectNode.m */, + 840809733AFDA8C2C8BF80FEA474063E /* FTupleObjects.h */, + 74D06664137D959297922DA443A7C806 /* FTupleObjects.m */, + 41ECA2E45BA02E9B11751E9D60D9A752 /* FTupleOnDisconnect.h */, + 085496656FD3219252B44B257816BAE2 /* FTupleOnDisconnect.m */, + DFD915F32B415D7FFD3667671334CCD1 /* FTuplePathValue.h */, + 128321EB1AAE6BC36CA4C01CE6C4EB68 /* FTuplePathValue.m */, + F190377A8066F6FA86F87932D6F9604E /* FTupleRemovedQueriesEvents.h */, + F2EE2AA613D0898F5C0B348699708685 /* FTupleRemovedQueriesEvents.m */, + 063868A7238E402A87C1FA6918D34928 /* FTupleSetIdPath.h */, + F3164F2DB01949911CF7A5D08378163B /* FTupleSetIdPath.m */, + 5298DB7938311C818199F20BD5E9B17B /* FTupleStringNode.h */, + 24A4568EB58D5E7203824CA349987388 /* FTupleStringNode.m */, + 5105C45B6D562B34D4718F4AC8D0217D /* FTupleTransaction.h */, + A8FA9E569B39A1DE8F0763FCCEA2BB7B /* FTupleTransaction.m */, + 58F2FAAB9283C92807C1C5044B43D38F /* FTupleTSN.h */, + D66EBE81F91C4172FD1DF68C78475D81 /* FTupleTSN.m */, + A221084F76B8EF12399B79FF37C7C018 /* FTupleUserCallback.h */, + 8DBCF752BFC22CECC68D698A40C23A2B /* FTupleUserCallback.m */, + 3B4105D5FCBFD78F353F2704EE28A967 /* FTypedefs.h */, + 263856EB11737FC99187DE4601B56CB6 /* FTypedefs_Private.h */, + 0D7BBF1CA256DD5CC5373AF9AFA6DAA3 /* FUtilities.h */, + 493A4671FC982E50E1722AAC3D936C82 /* FUtilities.m */, + BD968216050411DE3D6A2BE717F6D0B2 /* FValidation.h */, + BF170117016186777D945C99BAABE983 /* FValidation.m */, + 6CA8DD45CC2AF137386C7D9460B27651 /* FValueEventRegistration.h */, + E15AD84E865CA3368A0C52D6750D6BAE /* FValueEventRegistration.m */, + CFF8B577F1B5ECB6BE9D220C44F576E6 /* FValueIndex.h */, + 48EAB618D8FFF168760FB3FA884AA7EE /* FValueIndex.m */, + 4837A3E145374AA54FB7959101EB68C9 /* FView.h */, + 4E9BB07A8A7D7C6B7CA6E041C907215D /* FView.m */, + 514833201E9BE927812DDC98E5FC0105 /* FViewCache.h */, + F0D013508DF2015BA0651D633AD5CCAF /* FViewCache.m */, + E2776BBFB8F2BC2F2F3A2B7B48DB5D04 /* FViewProcessor.h */, + 12E383778E61F9116632B44A1D457BC1 /* FViewProcessor.m */, + 5A44DFA281250C6F1B97AB2F052F810F /* FViewProcessorResult.h */, + E9C17B4604F37A79B7D4B4F6B27AAFD9 /* FViewProcessorResult.m */, + A12C91A610BF1A3320BB959CCA59D715 /* FWebSocketConnection.h */, + 50EA409F18B6F7D0E0B80546BFED75BE /* FWebSocketConnection.m */, + 0218B74CC13521AEEEFE4AA9AC07CB8D /* FWriteRecord.h */, + FC39F6A4FD9EB627E18D201923B134F8 /* FWriteRecord.m */, + FC428D41E465FE75C6E949EF7AB1007F /* FWriteTree.h */, + 6B54000B5D0C86BAF4316DBE71C1C1D9 /* FWriteTree.m */, + 0958206339652DA5E7606732FEC1F80F /* FWriteTreeRef.h */, + E1A67A806445D107C967D96A37989861 /* FWriteTreeRef.m */, + 1E46A75AC055110C5FEBBFDE000DB696 /* NSData+SRB64Additions.h */, + 1C93662A36961564F04BFD14E042300E /* NSData+SRB64Additions.m */, + E97E03AF3FE4BFA9D5F4D36170E898D8 /* Support Files */, ); - name = "Support Files"; - path = "../Target Support Files/SwiftyJSON"; + name = FirebaseDatabase; + path = FirebaseDatabase; sourceTree = ""; }; - 22F209035837CA954C3937D499BA3533 /* Support Files */ = { + 1D86619F04C8DCE61E70BE46F4F0DDD5 /* FirebaseCore */ = { isa = PBXGroup; children = ( - AB1694076D836C6163D4577E96E21EFF /* FirebaseDatabase.modulemap */, - 67136CB4DA6EC030CF85638850AFC7F9 /* FirebaseDatabase.xcconfig */, - 486A4C9FC893D0234AB58A405C818C98 /* FirebaseDatabase-dummy.m */, - 4A4A11DCC17E1A84AB4D81E46E41CC23 /* FirebaseDatabase-Info.plist */, - 5DC24D9D371596510B2DFA6387EC24D9 /* FirebaseDatabase-umbrella.h */, + F11CC91535397460ABF2A2F42FA89D99 /* FIRAnalyticsConfiguration.h */, + FD64C6C4D061C17FF3992D5C46B05637 /* FIRAnalyticsConfiguration.m */, + B391FFC995CCE8659980D535986D718F /* FIRApp.h */, + EC52200C64938913E2A145909FCB1DE5 /* FIRApp.m */, + 413E1484712A1BFF58AF1EF3E2411B2F /* FIRAppAssociationRegistration.h */, + AA92A4F85E2993BEF1FDC4B0828FD863 /* FIRAppAssociationRegistration.m */, + 5B4C137FA1C9110191A73369615CA2B8 /* FIRAppInternal.h */, + D249EE3C1F1AE3145A4FA75BA01E3BA3 /* FIRBundleUtil.h */, + A26B1BF3D3D1CA8C963F3BAEDE9B752D /* FIRBundleUtil.m */, + 709BD6E16BBBCE1CFADE35865972A461 /* FIRComponent.h */, + 241522859A23A26D32973D23832D41A2 /* FIRComponent.m */, + 312694387F111886B150F37D1EAA0F0F /* FIRComponentContainer.h */, + 30101B7582E0484BB58CD82EC5173C97 /* FIRComponentContainer.m */, + 0AD902D398751FBD203D4FE1642023D5 /* FIRComponentContainerInternal.h */, + F66B9F3E79A18CD1B62CE109D42EEA25 /* FIRComponentType.h */, + 1C7461648B53892AA774581D4B45263F /* FIRComponentType.m */, + 588E4A7E54B0E72AAD3020B32F0FC35E /* FIRConfiguration.h */, + BC40C66BD83DECB298E2743CB33068FB /* FIRConfiguration.m */, + 554A7411EC0903FC084B2A0C5A1CD496 /* FIRConfigurationInternal.h */, + 68D05D808E354EB24B2095B30F1C9412 /* FIRDependency.h */, + C3A230894F1686507A5AE71545855A27 /* FIRDependency.m */, + 032BB8894E2D66B49610113240881411 /* FirebaseCore.h */, + 92ADBAF3A2C7EC182800DA7081D2D816 /* FIRErrorCode.h */, + 9FFF2ED0EC5A40671406A6A3A4FA6789 /* FIRErrors.h */, + AC621A3E56AA419AE4D56F0CC2BC8053 /* FIRErrors.m */, + 90639A07E4D80F26976C27617ED816E9 /* FIRLibrary.h */, + 713A2E8223BF33493CC27B47DA2C2855 /* FIRLogger.h */, + BDABFE3CF558B04C26761C183DC295F7 /* FIRLogger.m */, + 517B287F59CA9BC282D4BC820092A3F0 /* FIRLoggerLevel.h */, + 2C3CF6927BBA3DC654DDDFBBE5A826A1 /* FIROptions.h */, + C750EF5E14526F4E479B93E01D08B2A6 /* FIROptions.m */, + 73A0AE5015A40A0A6F62437EE11DF153 /* FIROptionsInternal.h */, + E39B3D2280A946B6D0D2A5BE820ABAE6 /* FIRVersion.h */, + 66885C8EEEF8AA3E5154DD1E135C329D /* FIRVersion.m */, + 484ED3DC7463A219A346C295CBA0756B /* Support Files */, ); - name = "Support Files"; - path = "../Target Support Files/FirebaseDatabase"; + name = FirebaseCore; + path = FirebaseCore; sourceTree = ""; }; - 24462D84A37392241507F5738075DBBC /* SwiftyJSON */ = { + 21FB614CFBA11F43FE33E70EF5BA7387 /* NSDictionary+URLArguments */ = { isa = PBXGroup; children = ( - 47D78AA3536A7E72F9E0CCBBB0289C6B /* SwiftyJSON.swift */, - 1D5506593F9A0E4F279BA2DF3F944D93 /* Support Files */, + 6CF48DCA91CEE349F0FC30621352C93B /* GTMNSDictionary+URLArguments.h */, + 84721690A36C05785F13ACDFC535E3BA /* GTMNSDictionary+URLArguments.m */, ); - name = SwiftyJSON; - path = SwiftyJSON; + name = "NSDictionary+URLArguments"; sourceTree = ""; }; - 26AEDFFA121DA96AAEB1F4990E2EA686 /* Products */ = { + 23E12AEECFE83476344067A78F13ADD3 /* GoogleToolboxForMac */ = { isa = PBXGroup; children = ( - E2B63D462DB7F827C4B11FD51E4F8E2D /* FirebaseCore.framework */, - 51671C73F008B5C0C3751B3855999213 /* FirebaseDatabase.framework */, - 2DA0D814DFCB860D31D7BCD63D795858 /* FirebaseInstanceID.framework */, - B43874C6CBB50E7134FBEC24BABFE14F /* GoogleUtilities.framework */, - 0A9F46A999C47653013D3AD854352507 /* leveldb.framework */, - 06FC5C9CF96D60C50FCD47D339C91951 /* nanopb.framework */, - 554465FEB9CBF982D86FB8B8587FB36C /* Pods_shlack.framework */, - 921BE4A82C4A7A5C72A0C6F8B8FEF200 /* Realm.framework */, - 437919EE08EC6BFCCBAC3BD346309742 /* RealmSwift.framework */, - E23C076BA70925415F490FEDB215DA92 /* SwiftyJSON.framework */, - BD87420AB4A1FCBC153D1A9F15C3513B /* YMTGetDeviceName.framework */, - ); - name = Products; + FA3A970AC04F4AA7313D248A79FDAE19 /* DebugUtils */, + 145636C63A42E43885B9F5CF8FEE5821 /* Defines */, + 21FB614CFBA11F43FE33E70EF5BA7387 /* NSDictionary+URLArguments */, + A7082DFA2445C5FC1C6ACD2B511782B2 /* NSString+URLArguments */, + FCED79215E1ECBB05161D4559BA9229A /* Support Files */, + ); + name = GoogleToolboxForMac; + path = GoogleToolboxForMac; sourceTree = ""; }; - 27D02D9FD6AC07166C6CBC20BFF58F06 /* YMTGetDeviceName */ = { + 23F253A117051AD656C5EEB732E03D3F /* CoreOnly */ = { isa = PBXGroup; children = ( - 3D2D6183AF49702E75CD5060B8B6B996 /* YMTGetDeviceName.swift */, - 72CEFBE18E48A3FC18ED9ED571CFAE22 /* Support Files */, + BBBEF5898306A1E4D81A0614AFA88084 /* Firebase.h */, ); - name = YMTGetDeviceName; - path = YMTGetDeviceName; + name = CoreOnly; sourceTree = ""; }; - 306E7CC67299D80B47F3EAD843BC822D /* Frameworks */ = { + 258B574232F663F2166936899695885B /* Environment */ = { isa = PBXGroup; children = ( - 8EC9F9E0B447E15E01D9D23F64F7D987 /* FIRAnalyticsConnector.framework */, - B2C19E586EF9AC4AC9E4F92431077361 /* FirebaseAnalytics.framework */, - 725A31046FE43D2A49E868FB506F151D /* FirebaseCoreDiagnostics.framework */, + 1E3CC3A0903D2B06FBABD098A30B6D98 /* GULAppEnvironmentUtil.h */, + 0CB127B0EF3C6CC65015F2A14A64229D /* GULAppEnvironmentUtil.m */, ); - name = Frameworks; + name = Environment; sourceTree = ""; }; - 3A7131AEC18A0ED7897839AF30D84394 /* UserDefaults */ = { + 2BC51778AAAA90826D755E4EE0167F40 /* Support Files */ = { isa = PBXGroup; children = ( - 6995A6D50582A628AF6752F9F34FD53D /* GULUserDefaults.h */, - 413F455B2175522766286EA7FB80499B /* GULUserDefaults.m */, + 826CE4BF95A1250C93125C1683B7C4A1 /* FirebaseAuth.modulemap */, + 1BF3F64E1475BE07E028DA55AFA132B1 /* FirebaseAuth.xcconfig */, + 8165FB9ADE22631BBE3200B60A6CF17E /* FirebaseAuth-dummy.m */, + 96F8E35A34C661EC8ED3BE07CCE88B94 /* FirebaseAuth-Info.plist */, + AACF28E1A2D2F9FE0BE171BBCFD045CA /* FirebaseAuth-umbrella.h */, ); - name = UserDefaults; + name = "Support Files"; + path = "../Target Support Files/FirebaseAuth"; sourceTree = ""; }; - 3AFC6FA08AA6BF3B8568B6029422478E /* RealmSwift */ = { + 33797FE8560BE5F18AE885A0C01594F5 /* Support Files */ = { isa = PBXGroup; children = ( - 99818133B2260B106022702610DC650B /* Aliases.swift */, - B072F854F793C1B6A5617085AB28CE67 /* Error.swift */, - 3DBA7F7E33E765B5EF83F01853E4A8D3 /* LinkingObjects.swift */, - C385947A01FBBF7CD5509D65021C76B0 /* List.swift */, - AE6A585FB55D856F4F767F4B1307D654 /* Migration.swift */, - 367FC09A1CDE1772FA3C07D07C9EBFDD /* Object.swift */, - 8C595CE53C956B40B0149846F8FD4C76 /* ObjectiveCSupport.swift */, - F50E9C77DCFF0E376F74FEB5C6932CFC /* ObjectiveCSupport+Sync.swift */, - 12E39F3C7E0D14603936B4F2545364B4 /* ObjectSchema.swift */, - 699E2B56BD28AB68FD1F5DF3E6D398CC /* Optional.swift */, - 790E6D42214C2EC39D767F3CEBE0D7B9 /* Property.swift */, - E5F094D4D975B057F576217E1658E1F6 /* Realm.swift */, - 12DD1ACB14D5310062FDAA97B3DF1732 /* RealmCollection.swift */, - 85F06AEF7F1478A710C14029C6CA61EA /* RealmConfiguration.swift */, - 4692F82DDBA180AD597A2B309C09AF53 /* Results.swift */, - 872F2BD8244D91CB7895F596313B8378 /* Schema.swift */, - 2FD42CD6F7559A5019D12D8D9CB074A3 /* SortDescriptor.swift */, - C0C2B4EB5465606120A31E46F2FB7CEF /* SwiftVersion.swift */, - 4B7E0C0A6A08418336DEB36B566B336A /* Sync.swift */, - E1F67397D5F8B49CF54E38110720B257 /* ThreadSafeReference.swift */, - B295EE4778194C05D9AE2594C78EDE0C /* Util.swift */, - BA1852755CBA6A0C6C209D8CACEB7C8F /* Support Files */, + A3F11A3C7329497BD83D1C605219D828 /* YMTGetDeviceName.modulemap */, + 650BE7067521C44A7989F69B9235943D /* YMTGetDeviceName.xcconfig */, + B93C92919F658F6F30669E9504A3A6A8 /* YMTGetDeviceName-dummy.m */, + 51B692F2AD284B41E7A410FA7C153035 /* YMTGetDeviceName-Info.plist */, + 90A3BCFEB57B7AED418AE27280992314 /* YMTGetDeviceName-prefix.pch */, + 05BA8E5D5F402BD088A7AA15C1282405 /* YMTGetDeviceName-umbrella.h */, ); - name = RealmSwift; - path = RealmSwift; + name = "Support Files"; + path = "../Target Support Files/YMTGetDeviceName"; sourceTree = ""; }; - 3CB68516A08E8F2EDB8CDB4F383986BB /* CoreOnly */ = { + 3C9B9D182D1586BC5EEEA5EC1779A473 /* Core */ = { isa = PBXGroup; children = ( - EC1F085546D1D5E30BDCF02E9A944AFA /* Firebase.h */, - ); - name = CoreOnly; + A802538D247C82A4FF30DCC8D9ABFDFC /* GTMSessionFetcher.h */, + 3D0E589ABCC22FD1F7DE955BAF9421EB /* GTMSessionFetcher.m */, + 59E69C641B211AAF5A6680C1C3BC60D9 /* GTMSessionFetcherLogging.h */, + 3BD5E3EB0A8F75398B40CAF81DAA4994 /* GTMSessionFetcherLogging.m */, + 1BD203F642850FB99D53FF90B3648713 /* GTMSessionFetcherService.h */, + BC943097B98BFD9A880A28D7331B52C3 /* GTMSessionFetcherService.m */, + FD9C98B78F87A2DE67BA60D41994BE3A /* GTMSessionUploadFetcher.h */, + B9EACBD1ED6FC861499CD9D6E44DB3F4 /* GTMSessionUploadFetcher.m */, + ); + name = Core; sourceTree = ""; }; - 42BA08F0D1CEDAAC93D2913F7F978F42 /* NSData+zlib */ = { + 3D475F5EB05A9F6EC701E34FF5AD6ED5 /* Frameworks */ = { isa = PBXGroup; children = ( - EBFF659FD75EE6D6591D3B29C1A6D873 /* GULNSData+zlib.h */, - ABA4AD7A43DEC81F10C2FF0F2DD9B30C /* GULNSData+zlib.m */, + 4B25DF3B407F2F65EE79BA48912F8028 /* GoogleSignIn.framework */, ); - name = "NSData+zlib"; + name = Frameworks; sourceTree = ""; }; - 512DBD85BDC4B1E9BAA59013F60F7D5D /* nanopb */ = { + 41E19018649A25B3E9633620DF590B66 /* GoogleAppMeasurement */ = { isa = PBXGroup; children = ( - 64941E8E9CE8E593AB0A0178E4FBED95 /* pb.h */, - 817703DBA5262B8C8282DE0329E58909 /* pb_common.c */, - B62AE3C306534561AAD91028899CCC32 /* pb_common.h */, - B8E7B3DDFD971E4411F95C63DC91781D /* pb_decode.c */, - 4A1672A7686DA002ECE0F97EC493A4C8 /* pb_decode.h */, - 71C3B1AD58B91309FE32954E2674450A /* pb_encode.c */, - 2E90DC5761B0C1820542E5FDA3CB58E9 /* pb_encode.h */, - 915CBD5D5971995861A6CA1D7C73AA8C /* decode */, - B15704D01F7430E8FDDFD52C99067825 /* encode */, - B6A8311A553B957D842E48B9E5093F4C /* Support Files */, + 11E782566616B3FA063F7B4A436888B3 /* Frameworks */, + 0CEB082E15E41C3D3B66FC97F7CFD408 /* Support Files */, ); - name = nanopb; - path = nanopb; + name = GoogleAppMeasurement; + path = GoogleAppMeasurement; sourceTree = ""; }; - 536C2A4E982AA1911D53D1AAF10CEDE6 /* Logger */ = { + 4244A124B915D64632BBF206BED59543 /* Frameworks */ = { isa = PBXGroup; children = ( - 76586E07571BC6F0545AF668C8C1DEBB /* GULLogger.h */, - 59CED40174F5C78767B17971C6B50E34 /* GULLogger.m */, - 4FAE6D1A1E91ED0984156C20CB37B099 /* GULLoggerLevel.h */, + 5251558E9013572636EC32825B0C2B5B /* FIRAnalyticsConnector.framework */, + 423E3228634A546B789421C8EC80D70A /* FirebaseAnalytics.framework */, + D10B6AB3327AC7565624B7772DF413B2 /* FirebaseCoreDiagnostics.framework */, ); - name = Logger; + name = Frameworks; sourceTree = ""; }; - 542C12DB29200F201E47D430596284DF /* FirebaseCore */ = { + 43BCDD1FED69B70BBB739BD90D182BD5 /* MethodSwizzler */ = { isa = PBXGroup; children = ( - 12E00CD98290A1BBF996B5E841380B15 /* FIRAnalyticsConfiguration.h */, - 907A74919D7EA92D6BC1D8BB990FC4F3 /* FIRAnalyticsConfiguration.m */, - B5D6FA8C66D85AB30DE497D5E4747D0E /* FIRApp.h */, - 4DB4BBE0D8A037AB3E89BCF4CEEDF4B6 /* FIRApp.m */, - F223C5E7C9503F5B2EF5BE4BE2F6B569 /* FIRAppAssociationRegistration.h */, - 2A7501BF49CE61E83A923D8588BFF72D /* FIRAppAssociationRegistration.m */, - 8E35F409527BC576A882FA472C6EC04F /* FIRAppInternal.h */, - 5A0E1E84910D7F5F5112C8CCA2535BED /* FIRBundleUtil.h */, - B071D3FE29E413E7ABBBA61B6E5971EC /* FIRBundleUtil.m */, - 72513B4FCE64223E66FBB0852919524C /* FIRComponent.h */, - 72B2D1ED02C0D21DB70B617D705A65C1 /* FIRComponent.m */, - 773BFE43ADB302623977777A18310461 /* FIRComponentContainer.h */, - 43651A7A75597B228F098861DBC219A6 /* FIRComponentContainer.m */, - BB11EC750FDDA7792BB2DE688D324135 /* FIRComponentContainerInternal.h */, - F26846E34EB79B93988189DDC46DF4D5 /* FIRComponentType.h */, - 4A3E9EBA81C313F72F7E28D9CC8EACBE /* FIRComponentType.m */, - 0E25B17C116EB81D489896E73E91F065 /* FIRConfiguration.h */, - D8800C8C0D59FD75255FD85A9284E976 /* FIRConfiguration.m */, - 13F55E76F5010DDD421FA1B8CC990899 /* FIRConfigurationInternal.h */, - 04F2ACC0FFE91B4D815B5C9306BF00F3 /* FIRDependency.h */, - 9FCD78B89FA06B11E1602820B62E0B26 /* FIRDependency.m */, - A5C0F17E53B197BDB6824B6E65955619 /* FirebaseCore.h */, - 3DF61F0A3188A0CDD2831F96085441DA /* FIRErrorCode.h */, - 9D727AF5545A9254938770945F89ECFE /* FIRErrors.h */, - A9C1EA42FABA879D36D4C65391FF08D3 /* FIRErrors.m */, - BC14A157593EA8A559A3EC68470E0233 /* FIRLibrary.h */, - 86A048EF5F83CC152DE3FAE1AE8047A2 /* FIRLogger.h */, - 064BF53BD9419D42E78FC0A0DAC8CFE6 /* FIRLogger.m */, - EDAD72CAF046D238473BDB7D12DD6753 /* FIRLoggerLevel.h */, - EB1E7E0D62BED5CF76CB85CADCDD4976 /* FIROptions.h */, - 605C8CBA2775EE42C197990788F44817 /* FIROptions.m */, - F170D44A0009688D7CD2744A00CD1C0A /* FIROptionsInternal.h */, - 04A156BB913EBCD3776EEBBA24B1DB95 /* FIRVersion.h */, - 0A0D58189220B7D97AD3CE614BF62214 /* FIRVersion.m */, - B4FCB48584EB15630BAFE2E1FEF2697E /* Support Files */, + 85828CAF2C09013792F5B4A6BF3737DE /* GULOriginalIMPConvenienceMacros.h */, + 0B1D106CB434215C0CF0080ED7096662 /* GULSwizzler.h */, + EACFC133A569E8874D71BB324BE66FA4 /* GULSwizzler.m */, ); - name = FirebaseCore; - path = FirebaseCore; + name = MethodSwizzler; sourceTree = ""; }; - 596C7651B1ECF6424F05F21C0FCB562B /* Support Files */ = { + 484ED3DC7463A219A346C295CBA0756B /* Support Files */ = { isa = PBXGroup; children = ( - 74691497CC18DB9AEE8E0E4D92A442AC /* FirebaseAuthInterop.xcconfig */, + 0C4C62C89ADDD0B52E3E9A781BAC8713 /* FirebaseCore.modulemap */, + 01B4F88D28D6A32495ABD50958F8CDF7 /* FirebaseCore.xcconfig */, + 178175168534476B25D815CCE09FFBAA /* FirebaseCore-dummy.m */, + 7187687AE1979822167437219293C530 /* FirebaseCore-Info.plist */, + D9D70557FC61E750FDB0051AC59343E2 /* FirebaseCore-umbrella.h */, ); name = "Support Files"; - path = "../Target Support Files/FirebaseAuthInterop"; + path = "../Target Support Files/FirebaseCore"; sourceTree = ""; }; - 64B8BE279E1186FB45BD38A58F068131 /* MethodSwizzler */ = { + 49B2EBDAB70BAE22697E41212A7313ED /* Resources */ = { isa = PBXGroup; children = ( - 196FCC22FC28B70022611585557A4C06 /* GULOriginalIMPConvenienceMacros.h */, - 6BC9F0DC725D2ADF77D9B413589C76B7 /* GULSwizzler.h */, - 141026FF3EBFBFECB80FC18937BA4BC6 /* GULSwizzler.m */, + EF9513E0A55CF6FE869B0F4F3B334147 /* GoogleSignIn.bundle */, ); - name = MethodSwizzler; + name = Resources; sourceTree = ""; }; - 6BFF8038D5A4A20428C4EFCDC1FD3A7F /* GoogleAppMeasurement */ = { + 4BF5FAD1E0B4C9C9DD6C1625832EC138 /* YMTGetDeviceName */ = { isa = PBXGroup; children = ( - 90122F15A5BBDE89780035857151BA23 /* Frameworks */, - 6C51429FD586A13D1DCEE7ADAA418992 /* Support Files */, + 9B994AACC237C8237D8EC966A01A5CD0 /* YMTGetDeviceName.swift */, + 33797FE8560BE5F18AE885A0C01594F5 /* Support Files */, ); - name = GoogleAppMeasurement; - path = GoogleAppMeasurement; + name = YMTGetDeviceName; + path = YMTGetDeviceName; sourceTree = ""; }; - 6C51429FD586A13D1DCEE7ADAA418992 /* Support Files */ = { + 4F0E5DC249506089BD1E4890B95FDA94 /* Support Files */ = { isa = PBXGroup; children = ( - 331AE045C22D6C1F25D1F2E041AA8D07 /* GoogleAppMeasurement.xcconfig */, + B60D473005D873C1D8C8D4F9FC312DB6 /* SwiftyJSON.modulemap */, + 3AA569CA9554B67CC7193B1F9F48E987 /* SwiftyJSON.xcconfig */, + CD103BD0CDFCBB1CD45B31DDA77C2CD2 /* SwiftyJSON-dummy.m */, + 42903EEB17E4647540A3FF8C326242C9 /* SwiftyJSON-Info.plist */, + C2FED75D51C22AF56FF850D796814A8D /* SwiftyJSON-prefix.pch */, + DD9C8F77BE81575237462FF1AB4EF3B0 /* SwiftyJSON-umbrella.h */, ); name = "Support Files"; - path = "../Target Support Files/GoogleAppMeasurement"; + path = "../Target Support Files/SwiftyJSON"; sourceTree = ""; }; - 72CEFBE18E48A3FC18ED9ED571CFAE22 /* Support Files */ = { + 60C90A5B322EA839F60148ED731C9354 /* Support Files */ = { isa = PBXGroup; children = ( - FC3D17CB39521023CF8DE39DFCC1F083 /* YMTGetDeviceName.modulemap */, - 28BBEC04B983CBBD5FF45C2EA0F3F227 /* YMTGetDeviceName.xcconfig */, - BDC3E48E0A62764A8CC18A68CDC15CCF /* YMTGetDeviceName-dummy.m */, - 0DDF2FD50F41B281F7A8D748943628D8 /* YMTGetDeviceName-Info.plist */, - 3F6F738A475EE187EFCC6CA3D7D7BDED /* YMTGetDeviceName-prefix.pch */, - 5855A8E7F2EDEE3B89093D3E8369CD82 /* YMTGetDeviceName-umbrella.h */, + F46198EB3BBEF40E0CA8E0AC7C763008 /* GoogleUtilities.modulemap */, + E665438643EAB4A514B6BB0B628139A4 /* GoogleUtilities.xcconfig */, + 02D15912C2A468486D27EEB5C1155330 /* GoogleUtilities-dummy.m */, + 5ECF3BDF84079A26437DC9CD6A1292C1 /* GoogleUtilities-Info.plist */, + 49FE57DEE02C8273164BA4B17B74FD7D /* GoogleUtilities-prefix.pch */, + 6E062538C34E992CE34F8605F95B29B9 /* GoogleUtilities-umbrella.h */, ); name = "Support Files"; - path = "../Target Support Files/YMTGetDeviceName"; + path = "../Target Support Files/GoogleUtilities"; sourceTree = ""; }; - 75BD30CAAB0905E7CDF9D544816B9A93 /* FirebaseAuthInterop */ = { + 6401813F562623CF6E25019B5DB82302 /* Support Files */ = { isa = PBXGroup; children = ( - 5D3FE637504FCE117299B6C7F6841AD7 /* FIRAuthInterop.h */, - 596C7651B1ECF6424F05F21C0FCB562B /* Support Files */, + E2132231C42D65DA3DA076C893171EFE /* FirebaseAuthInterop.xcconfig */, ); - name = FirebaseAuthInterop; - path = FirebaseAuthInterop; + name = "Support Files"; + path = "../Target Support Files/FirebaseAuthInterop"; sourceTree = ""; }; - 76BFEC1E4CE325A7BD4583DB1BCE7955 /* AppDelegateSwizzler */ = { + 64C530E9D98976A0FC7A69E59389012C /* Logger */ = { isa = PBXGroup; children = ( - 2F53AC4CE8E33751494D1B47F8E19C09 /* GULAppDelegateSwizzler.h */, - BCCCE66A2B27DF53585DF23808DE6B7F /* GULAppDelegateSwizzler.m */, - C0917B859BC3B605F18B11AED57C5E1F /* GULAppDelegateSwizzler_Private.h */, - F47180B8A21816378CA7BCA9E2755D02 /* GULApplication.h */, - 1B307B38EB1FA1D94DD39CAEAF9806C9 /* GULLoggerCodes.h */, + C557A1E2F035C3C0A8C291DAE00314A3 /* GULLogger.h */, + 98D314B7B00C1663199A813DACDC7F17 /* GULLogger.m */, + A5353C6A726445286BF6EA59D033A114 /* GULLoggerLevel.h */, ); - name = AppDelegateSwizzler; + name = Logger; sourceTree = ""; }; - 803A9BAADEE1ED44A6A9CEFDD63D1258 /* Support Files */ = { + 745521D02DC183F3C5F868E45023DBC1 /* AppDelegateSwizzler */ = { isa = PBXGroup; children = ( - 4B8FF6200FBB6FB428CA39B34CA3CF4A /* GoogleUtilities.modulemap */, - 0E48A978F489122979C445FA01A8BBA9 /* GoogleUtilities.xcconfig */, - B8F566106A1C9CE3691B012FE4CB0BAA /* GoogleUtilities-dummy.m */, - 25DD80EE615066DCD6DCB4EAE4FD9272 /* GoogleUtilities-Info.plist */, - 6B2778F8E602D74E1C549A49A1B00C6B /* GoogleUtilities-prefix.pch */, - 447184185E7C104FDC3809D8238AE451 /* GoogleUtilities-umbrella.h */, + 04540068EF5284F0F3E837C96514AC2E /* GULAppDelegateSwizzler.h */, + 1975096C14821AA766EFBEE3A0253389 /* GULAppDelegateSwizzler.m */, + 3A6A3A305FA74E69E99FF8ECF47B12B4 /* GULAppDelegateSwizzler_Private.h */, + 50B08459E8B6C646541EC049125FBE02 /* GULApplication.h */, + BABFB720055DEF174A683E695BC5CA83 /* GULLoggerCodes.h */, ); - name = "Support Files"; - path = "../Target Support Files/GoogleUtilities"; + name = AppDelegateSwizzler; sourceTree = ""; }; - 8141DE45AE4B81369C4C05CD7D65FB03 /* Support Files */ = { + 74A0A39674441FA08DE2840184AE3935 /* Pods */ = { isa = PBXGroup; children = ( - 02A9912CA48F7671293C5809F86C6447 /* leveldb-library.modulemap */, - D00BDC1E165DD6DA4625F59638268FDF /* leveldb-library.xcconfig */, - 2271BF2B610000B35AF3317E38D1C8E5 /* leveldb-library-dummy.m */, - 9391F04A644E0209A6F7F1C92AB2541E /* leveldb-library-Info.plist */, - A5EEC903DAA9889C414B212DEB69C9EB /* leveldb-library-prefix.pch */, - 908EE5E0CDF43673D9D5118565302B27 /* leveldb-library-umbrella.h */, + 9AEAB315D3C85CCA9F9FB09AFB20B652 /* Firebase */, + 9106E179CE97382A221B7452A0C44A75 /* FirebaseAnalytics */, + CEE2B08D20FF8CE7473AD7D50FC52C03 /* FirebaseAuth */, + 9EA0C5D6E44D7EAEF735A80AB66A95AA /* FirebaseAuthInterop */, + 1D86619F04C8DCE61E70BE46F4F0DDD5 /* FirebaseCore */, + 15F89E020CD8675CD7638665FF2EC50C /* FirebaseDatabase */, + A0C3FD0A8D7BB5CD221F4907F25BCAC3 /* FirebaseInstanceID */, + 41E19018649A25B3E9633620DF590B66 /* GoogleAppMeasurement */, + EE19AEE2CCF4BA591A535C9905ACDD4C /* GoogleSignIn */, + 23E12AEECFE83476344067A78F13ADD3 /* GoogleToolboxForMac */, + A843CDFA523EEA4E4552F407D5A364F6 /* GoogleUtilities */, + A11D78274FC47F77F19DD7C34B686BA2 /* GTMSessionFetcher */, + C38BD867FB295D1EE426E77FF5E04FC2 /* leveldb-library */, + ED1F65B6B48044328CCB90375EF4D1FD /* nanopb */, + 7829BB3814236A81B4D24C46CFC5222A /* Realm */, + AF709BB7251DC0479A1A5A39B13E5699 /* RealmSwift */, + E67A715703783A659A2D90EA7D8598B0 /* SwiftyJSON */, + 4BF5FAD1E0B4C9C9DD6C1625832EC138 /* YMTGetDeviceName */, ); - name = "Support Files"; - path = "../Target Support Files/leveldb-library"; + name = Pods; + sourceTree = ""; + }; + 7829BB3814236A81B4D24C46CFC5222A /* Realm */ = { + isa = PBXGroup; + children = ( + 2B52BD06E070EF7C3FDEB2EF15008A73 /* async_open_task.cpp */, + F65031AC8F02E3E0CC4A8E8ABE584CD8 /* binding_callback_thread_observer.cpp */, + 90BBC5F4614361D6802C0955F5F7FD6F /* collection_change_builder.cpp */, + CC0D3AE90E093743F50CEAD32163417C /* collection_notifications.cpp */, + 10C125F733171CD6B7989E871CFA746E /* collection_notifier.cpp */, + F1E6130103C2603AE95565CA88C72C7A /* external_commit_helper.cpp */, + DDC1498A2BD692D161409A8E9B562C4A /* fifo.cpp */, + 7E5693E2D51AA01EA9C50FA68F17A918 /* index_set.cpp */, + 698CE8D8642001969026B1A83C9EE1E0 /* keychain_helper.cpp */, + 88C8E6FFB32B1A88056718CF862D4A79 /* list.cpp */, + 2BE761807F568B9CA55FF574D4AA85F5 /* list_notifier.cpp */, + 8CE6705149DB9563E4B9089C447FE13C /* network_reachability_observer.cpp */, + AD5C0D942A1AA6E107F1B199F88119E7 /* NSError+RLMSync.m */, + 6005768DCDE6041EE8ED9353CC5043D7 /* object.cpp */, + 3A048EA54D63E7A9BD39B4388DCA6B48 /* object_notifier.cpp */, + 3CCBEF4E5A31ADF0304F144058BC1082 /* object_schema.cpp */, + BFB851610A9C9F3854A729AA8DACA460 /* object_store.cpp */, + 2F3BC906D70B72CD86FDA8DFC5414068 /* partial_sync.cpp */, + 377C2A565B327FAF69E7F68B85B028A3 /* placeholder.cpp */, + D80711938FC49CAF187055869A3E5B50 /* primitive_list_notifier.cpp */, + 48FCC86FEB7E9E854C3B3D6964303499 /* realm_coordinator.cpp */, + 5718911B1B9EDB57BAAA9758DC7DAB88 /* results.cpp */, + 350E24159FEDE19D0AC2FB86346B163D /* results_notifier.cpp */, + 112C9645A6188F09F438B736FC62A9C2 /* RLMAccessor.h */, + 7183094E6CE9940DEA380A4AAD05B82D /* RLMAccessor.mm */, + 8F5E21ED0742C844100BE9764330C0E7 /* RLMAnalytics.mm */, + 0B9B76A0647CED8F68D9678666AF843E /* RLMArray.mm */, + E2B1A0FE1A0A40012BB6C6090F54DF20 /* RLMArray_Private.h */, + A30268BFBB92AA06C4B62D2E79D572BD /* RLMClassInfo.mm */, + 846134E0C1FE4B19BAE203AFC5D5C5D7 /* RLMCollection.mm */, + BEFBB7C830DDC83D80AD2F74F3EBA126 /* RLMCollection_Private.h */, + 5AA0C14D59EEFFA0D9EBD6F0B814B48D /* RLMConstants.m */, + A35583ECCBCEB0999189C8A13C1E7079 /* RLMJSONModels.m */, + 3E9412137487BB363BB73FF86053C103 /* RLMListBase.h */, + 0B710E8698CF1344D9DD7860A817BBF4 /* RLMListBase.mm */, + A852D81D7C81BE821C6A17C3A140C59E /* RLMManagedArray.mm */, + 9816C36948CE2553DB4BE8E8987BE70E /* RLMMigration.mm */, + EBB1E781F01648C5B0C8E97711ECD03F /* RLMNetworkClient.mm */, + CF350ACCEBFC5440D67CB94A1E73112D /* RLMObject.mm */, + 13A0DFB91F5EBB15E52FAD0BCC8F0D6B /* RLMObject_Private.h */, + EB4308910109BD2D8A9769EF85E1C647 /* RLMObjectBase.mm */, + 60B37E75EDF9313CCCA5B9F5E3EE724B /* RLMObjectBase_Private.h */, + 331DCDC6C84B7C2086F1F566F14552F6 /* RLMObjectSchema.mm */, + 84F80DE6177F8732EACA7487982C406F /* RLMObjectSchema_Private.h */, + 490954DCB8534A557B489D042124D4AB /* RLMObjectStore.h */, + D34B33275ADF9D3D2FABDB52A29742BD /* RLMObjectStore.mm */, + 317104CE9CF18B885952E493FE2C9863 /* RLMObservation.mm */, + E55A55CE8C7BE5281B75CF2D9A69ABEF /* RLMOptionalBase.h */, + 8ECF4C5791B498BE6416566555758B03 /* RLMOptionalBase.mm */, + 7F9304FEC6A0F08E28B774C336BCE525 /* RLMPredicateUtil.mm */, + B365636DDC3FF3D4AA0F09B59D0DD06F /* RLMProperty.mm */, + 403DDE32930258D77204697883A2E4AD /* RLMProperty_Private.h */, + CCCE56F2AED803A6FF364C79F1E49388 /* RLMQueryUtil.mm */, + B4F89A5F362C43B1BD03B0FEB5633609 /* RLMRealm.mm */, + A2EA08EB6D1ED8796A151FB3DD4CA7CC /* RLMRealm+Sync.mm */, + C1302589B0CD0B2305B36AEA7359B03E /* RLMRealm_Private.h */, + 2A569AFA27683A40C14753793F8102C9 /* RLMRealmConfiguration.mm */, + 8F39CD3D4452D3B66568553467302538 /* RLMRealmConfiguration+Sync.mm */, + 3CA7730B596A939B000074A39900B638 /* RLMRealmConfiguration_Private.h */, + E2BC63C278657C2953BC4542ED1A3AFE /* RLMRealmUtil.mm */, + 606B2C81D8B184416C27EDE734CBB7CF /* RLMResults.mm */, + 49E8998024BDCEBA0D417DED78B7A72B /* RLMResults_Private.h */, + A903005631AC9C5FADFC6C5A126FCC45 /* RLMSchema.mm */, + 4BD117894C2FCA8640DAFFFCF5B5C23D /* RLMSchema_Private.h */, + 834519348EA9354FA135B93DE1146B13 /* RLMSwiftSupport.m */, + 38529296CA8DE7D231F53145F4FF91D0 /* RLMSyncConfiguration.mm */, + 1C54C0E8B35B80A544F2AE04C0026A92 /* RLMSyncConfiguration_Private.h */, + 35165AAD2F2326C05636F3180530013B /* RLMSyncCredentials.m */, + 10BD96D87CE24BF448FD1E1ED1BEEB76 /* RLMSyncManager.mm */, + 6DF2FEAF06B70077096EA222B4FC3EFF /* RLMSyncPermission.mm */, + 07032503BF3ECE0B00F02E2D58B24F04 /* RLMSyncPermissionResults.mm */, + A7760D9DB3D22F67FF879ED10752C385 /* RLMSyncSession.mm */, + 33E5678280D2DDB66796338EB6F2E441 /* RLMSyncSessionRefreshHandle.mm */, + 7E70F725C50E3934DFC2D68476DA8C15 /* RLMSyncSubscription.mm */, + E2A38E3F34CBDC6C03E3FB00E4D4DCBE /* RLMSyncUser.mm */, + 45B9E8F78EB3A653A4998443A4E0EA42 /* RLMSyncUtil.mm */, + D15A73BCEBC44FB33AA2FB6BDC13CFFA /* RLMSyncUtil_Private.h */, + 369C78DEF4C634414A21D2E08A7F86AC /* RLMThreadSafeReference.mm */, + DB337DA58FF30A7E798311741D8534CB /* RLMUpdateChecker.mm */, + 652298EFA23E8B3F7711B8C9E0600FB2 /* RLMUtil.mm */, + 76EF4FECC523C278D692A2182682D711 /* schema.cpp */, + 266E6E4B14ED9DCDEE8A2AC2201E5DF0 /* shared_realm.cpp */, + F2E4F3789E438C86ED47BAE5DE25734B /* sync_config.cpp */, + D51E7B7896D14EC8B294A3A9267E9BEF /* sync_file.cpp */, + D6463C6BE0BD91DCE1970594EAB532BD /* sync_manager.cpp */, + 7F1BF7AD2E69E15E5A1C40DBC28CCCC3 /* sync_metadata.cpp */, + 65AFFDCA0C4F9C5F1D240D898A4B797F /* sync_permission.cpp */, + 2E241B23BEB8AA88993981E98BC563BB /* sync_session.cpp */, + 413799D8A1874E143FA31C63114DB4AA /* sync_user.cpp */, + 2A63A661A09F5AF8BE8D73E7C32CEDF0 /* system_configuration.cpp */, + 89CCF1C40EB92C7E6EE130415FE2A93C /* thread_safe_reference.cpp */, + 2C50BEF0A78A877D50A490383E2F69F7 /* transact_log_handler.cpp */, + 6E0EE3B7E8E983D0D36C98514377F88D /* uuid.cpp */, + 40BDC989C087F10D8FE131E1160E1568 /* weak_realm_notifier.cpp */, + C07474E49A157B53C7ED4DF0A03F415B /* work_queue.cpp */, + B183D61ACB31E4D1F097FFC8326FB1D7 /* Frameworks */, + 0C94CB1FBDCE7BF6507ABCE58B746504 /* Headers */, + 988285ECA87193AD48B5C646F8C21EC9 /* Support Files */, + ); + name = Realm; + path = Realm; sourceTree = ""; }; 81BEE8583CB2BFBE2E9AD63426388EB0 /* Frameworks */ = { @@ -2330,109 +3141,37 @@ name = Frameworks; sourceTree = ""; }; - 8F363B07649ACF2918D0F78016530D32 /* Network */ = { + 861BF217A81106E830F8B3D05DDD7FB6 /* decode */ = { isa = PBXGroup; children = ( - 5D623542074868ED96FD9D908BB1E6A1 /* GULMutableDictionary.h */, - 8A729337F7D6D4DDD3831E74D401F32A /* GULMutableDictionary.m */, - 8178041E04BC15BEECD2EBC06838968D /* GULNetwork.h */, - 3E64B20CD2651D359E1075FA9DD005A4 /* GULNetwork.m */, - 6360FE52FEB4053859DF02AF837D48CE /* GULNetworkConstants.h */, - 4E112AE6B24E5753313012A31DA501B3 /* GULNetworkConstants.m */, - EC54C34DA74E3DAF3DFC93DCE5B6E940 /* GULNetworkLoggerProtocol.h */, - EC8027660BFAFCEC1042E74E2195A08A /* GULNetworkMessageCode.h */, - 74B116BB4C3F1F8BC8C2570DBC184EA8 /* GULNetworkURLSession.h */, - A116FCD593C7527EAAA12F1527DC47E7 /* GULNetworkURLSession.m */, ); - name = Network; + name = decode; sourceTree = ""; }; - 90122F15A5BBDE89780035857151BA23 /* Frameworks */ = { + 864372D2E7487ED317B78172C1CD0023 /* Support Files */ = { isa = PBXGroup; children = ( - 27D143C5F5D3713350CD17F5D83F5F0A /* GoogleAppMeasurement.framework */, + 17876D81B0B570803637EFAD8FF96AA9 /* Firebase.xcconfig */, ); - name = Frameworks; + name = "Support Files"; + path = "../Target Support Files/Firebase"; sourceTree = ""; }; - 915CBD5D5971995861A6CA1D7C73AA8C /* decode */ = { + 9106E179CE97382A221B7452A0C44A75 /* FirebaseAnalytics */ = { isa = PBXGroup; children = ( + 4244A124B915D64632BBF206BED59543 /* Frameworks */, + 12B27EC4AF4C3726B2657830FC68E4F8 /* Support Files */, ); - name = decode; + name = FirebaseAnalytics; + path = FirebaseAnalytics; sourceTree = ""; }; - 929B68E36CEDC6644572F3631A363F9A /* FirebaseInstanceID */ = { + 9323E62E9A917B36A738F48A03DA5181 /* encode */ = { isa = PBXGroup; children = ( - A1D0E58815360DE82ECFA8ABF6E6530D /* FirebaseInstanceID.h */, - D6EC34C0E433F15E3AB3DD0961A41FF8 /* FIRIMessageCode.h */, - F1B94CB9EEA07CECCE673771A5DFC778 /* FIRInstanceID.h */, - B8B0301D28A002B9C27FD15EAA313804 /* FIRInstanceID.m */, - 3EB756799EAEA078553AC4D8FAF16C12 /* FIRInstanceID+Private.h */, - 4C0F65922B305108D340B1E3E7C098AE /* FIRInstanceID+Private.m */, - DB83E66076A97630EF5DF7B121B994BA /* FIRInstanceID_Private.h */, - 7717FA216AB30866451522599CA00940 /* FIRInstanceIDAPNSInfo.h */, - 6D0F8BB58114A0C5C2FC448162FF2018 /* FIRInstanceIDAPNSInfo.m */, - F07997ECC199F8251298FED988C18D3B /* FIRInstanceIDAuthKeyChain.h */, - 047E1336D8AE33C72345487ED716EA50 /* FIRInstanceIDAuthKeyChain.m */, - 2234724A5F7687743151FFE0F29C8F54 /* FIRInstanceIDAuthService.h */, - B88E7704EFFE4554AC66D6A2F8C99069 /* FIRInstanceIDAuthService.m */, - 4DC4DA200959AF34BC53A06B37D1B29F /* FIRInstanceIDBackupExcludedPlist.h */, - 62F769A62377AE074D83BF833BDCEC4B /* FIRInstanceIDBackupExcludedPlist.m */, - 7A02C8CD9C2A5C27125D0829DB90EDF3 /* FIRInstanceIDCheckinPreferences.h */, - 412BF47C340E394AF8A525A4774A6693 /* FIRInstanceIDCheckinPreferences.m */, - D485EF8A0C92ECD8465BD71A0E73FCB6 /* FIRInstanceIDCheckinPreferences+Internal.h */, - E956CED4160A0DDFAE463FFCA8865DCD /* FIRInstanceIDCheckinPreferences+Internal.m */, - 58E5A2E85D3A882C01D7831D09EBC379 /* FIRInstanceIDCheckinPreferences_Private.h */, - E2EDCBDB6DDAEEE2C14318AEB855E9E5 /* FIRInstanceIDCheckinService.h */, - 447D1DEC11F18E90AA91D4FD16321C09 /* FIRInstanceIDCheckinService.m */, - E11FE26D659D2DB40B62C615A8BB4FDD /* FIRInstanceIDCheckinStore.h */, - D5EED1578D1E2C5E9EF187D618D0B8F2 /* FIRInstanceIDCheckinStore.m */, - 3E57E32692DD986A3AF9041B520C8991 /* FIRInstanceIDCombinedHandler.h */, - 61FFAF66F5EFD6FDAFEBEC40611CC4E1 /* FIRInstanceIDCombinedHandler.m */, - 9DFE31ED74B2B0CF5CF1B48C343AB34D /* FIRInstanceIDConstants.h */, - 5BE74820DD643E7AE1AD76F84A71451A /* FIRInstanceIDConstants.m */, - 374861B0DCA3C592DB0126E641796E9D /* FIRInstanceIDDefines.h */, - 4D650E035292728FB6762A033D55D90E /* FIRInstanceIDKeychain.h */, - 42E165143E04061420005C3CC9D3B9C4 /* FIRInstanceIDKeychain.m */, - 8F9030C96551DEC962ACBAA8C5AAC5B1 /* FIRInstanceIDKeyPair.h */, - F8D87E0DB549635A81DB403FAF68092D /* FIRInstanceIDKeyPair.m */, - 534C5C59B17DB02D034ADCB92BF3CA51 /* FIRInstanceIDKeyPairStore.h */, - 1CAF821104A3EE66A918096C98AF7BE9 /* FIRInstanceIDKeyPairStore.m */, - 227565AD60546A76F3D5D196E85DF731 /* FIRInstanceIDKeyPairUtilities.h */, - A698D1510223E0932B451B1E628DA832 /* FIRInstanceIDKeyPairUtilities.m */, - 3085AAF6DF83EF661073653D6C902F72 /* FIRInstanceIDLogger.h */, - 6E3982B4A4CB2A959FEFE70C317ABBC0 /* FIRInstanceIDLogger.m */, - 2BC2DDD408D1D4F3246A5DADD01744BC /* FIRInstanceIDStore.h */, - B3453F66B08741D6ACA2A66435B99FB0 /* FIRInstanceIDStore.m */, - BC7FD05162AB136A2A18FD34147587FC /* FIRInstanceIDStringEncoding.h */, - 8931F5A3DF99DA2FCFF69A197DDB7176 /* FIRInstanceIDStringEncoding.m */, - C06B11A710615ECC6C3AA155D24455E8 /* FIRInstanceIDTokenDeleteOperation.h */, - 356F28678750FDD965D0826202430215 /* FIRInstanceIDTokenDeleteOperation.m */, - 4D4E000B7FC260074F439925ACF6BEA6 /* FIRInstanceIDTokenFetchOperation.h */, - 75567932D7B2F865F9F9FE967F2B6F2A /* FIRInstanceIDTokenFetchOperation.m */, - DDE6548B905AB6BED00509498E3AC5FF /* FIRInstanceIDTokenInfo.h */, - D69F64663123F2C1E88BEEFC7FDDC191 /* FIRInstanceIDTokenInfo.m */, - 468C3CBBC0059F4102A666C15EB466C0 /* FIRInstanceIDTokenManager.h */, - C57B25337A77122982D201D671C80712 /* FIRInstanceIDTokenManager.m */, - 8F9FC0717EA4E706E47A0BC2954EF3BF /* FIRInstanceIDTokenOperation.h */, - 4FFADE515AE28D09D752179317522308 /* FIRInstanceIDTokenOperation.m */, - 070F632279373DF6E2F7821FBA22B6F3 /* FIRInstanceIDTokenOperation+Private.h */, - 953EF2BD32497560790AA08AE9B2D057 /* FIRInstanceIDTokenStore.h */, - 1FE11E126D85D3F8DF9050D0B9D47B6E /* FIRInstanceIDTokenStore.m */, - CD6585AC9D15B34FB6FF757AFBAC5FA8 /* FIRInstanceIDURLQueryItem.h */, - 8D4ABB7A14D42E4D4BAEF3596AA2CC1C /* FIRInstanceIDURLQueryItem.m */, - D7211408662E27E036FECBE6564F829A /* FIRInstanceIDUtilities.h */, - B06538CA6602D0F35E348807C5A19F68 /* FIRInstanceIDUtilities.m */, - D0783C531C600A880AB8D38127D7E674 /* FIRInstanceIDVersionUtilities.h */, - 8CB16866F8C55245754CAFE7D3BD5D28 /* FIRInstanceIDVersionUtilities.m */, - 4BBC90E46D2D567A9C5DB776BC55647B /* NSError+FIRInstanceID.h */, - DB627AADB9E69BF7C3D432DA8000EFF2 /* NSError+FIRInstanceID.m */, - AF403EC6622787342C0D09BF35AF3A44 /* Support Files */, ); - name = FirebaseInstanceID; - path = FirebaseInstanceID; + name = encode; sourceTree = ""; }; 939AD82800B43EB7326F13DD4EF67C95 /* iOS */ = { @@ -2445,502 +3184,600 @@ name = iOS; sourceTree = ""; }; - 93AE04A79E3FA7F8FFACFE08915B12EC /* GoogleUtilities */ = { + 988285ECA87193AD48B5C646F8C21EC9 /* Support Files */ = { isa = PBXGroup; children = ( - 76BFEC1E4CE325A7BD4583DB1BCE7955 /* AppDelegateSwizzler */, - 061A4812B237DF17886BC5802818C56F /* Environment */, - 536C2A4E982AA1911D53D1AAF10CEDE6 /* Logger */, - 64B8BE279E1186FB45BD38A58F068131 /* MethodSwizzler */, - 8F363B07649ACF2918D0F78016530D32 /* Network */, - 42BA08F0D1CEDAAC93D2913F7F978F42 /* NSData+zlib */, - C0153DBE79E249D319F287ABDEA2F03D /* Reachability */, - 803A9BAADEE1ED44A6A9CEFDD63D1258 /* Support Files */, - 3A7131AEC18A0ED7897839AF30D84394 /* UserDefaults */, + 55CAF08D7A9B373A3F5DD2D32D8B6634 /* Realm.modulemap */, + 2954CFD22F14C6F62EC86398F2662B5F /* Realm.xcconfig */, + DAC356C4713FBF936C5936751E518197 /* Realm-dummy.m */, + F27EF94A79D5240CBD3F77565F4D15A5 /* Realm-Info.plist */, + B61821F595C5E1DDB20211EDC5AA83DB /* Realm-prefix.pch */, ); - name = GoogleUtilities; - path = GoogleUtilities; + name = "Support Files"; + path = "../Target Support Files/Realm"; sourceTree = ""; }; - 97D2700D14134FAB113968A2C26AB1A9 /* FirebaseAnalytics */ = { + 9897C059AB98F369D5DE8C535DD4B72D /* NSData+zlib */ = { isa = PBXGroup; children = ( - 306E7CC67299D80B47F3EAD843BC822D /* Frameworks */, - AA5694E6173AAEC2CC18A1A219F27CFB /* Support Files */, + AE5C6FA3B3C8472B28E77B79EE0245F2 /* GULNSData+zlib.h */, + E6EDE7AD67976782F91B7CBB7F5E23AF /* GULNSData+zlib.m */, ); - name = FirebaseAnalytics; - path = FirebaseAnalytics; + name = "NSData+zlib"; sourceTree = ""; }; - 9C5913166CBB033F31FC82F6BB56B587 /* Firebase */ = { + 9AEAB315D3C85CCA9F9FB09AFB20B652 /* Firebase */ = { isa = PBXGroup; children = ( - 3CB68516A08E8F2EDB8CDB4F383986BB /* CoreOnly */, - 0F86650BE64D4E46E0E66B28C74FE864 /* Support Files */, + 23F253A117051AD656C5EEB732E03D3F /* CoreOnly */, + 864372D2E7487ED317B78172C1CD0023 /* Support Files */, ); name = Firebase; path = Firebase; sourceTree = ""; }; - AA5694E6173AAEC2CC18A1A219F27CFB /* Support Files */ = { + 9EA0C5D6E44D7EAEF735A80AB66A95AA /* FirebaseAuthInterop */ = { isa = PBXGroup; children = ( - D59FC9D41442DBFF5B0271E5E2F1FB99 /* FirebaseAnalytics.xcconfig */, + 73F5CC2CB62E376FBF9637F9C438F5BA /* FIRAuthInterop.h */, + 6401813F562623CF6E25019B5DB82302 /* Support Files */, ); - name = "Support Files"; - path = "../Target Support Files/FirebaseAnalytics"; + name = FirebaseAuthInterop; + path = FirebaseAuthInterop; + sourceTree = ""; + }; + A0C3FD0A8D7BB5CD221F4907F25BCAC3 /* FirebaseInstanceID */ = { + isa = PBXGroup; + children = ( + C0D4E22F2EC21B8D37CBD38E88E9C0C7 /* FirebaseInstanceID.h */, + 1E355ACC916C76ABD3E66EF620E7F511 /* FIRIMessageCode.h */, + ABE9741D4F81F872EDBA2E51BFAF8D1E /* FIRInstanceID.h */, + 18DD7B3ABD6071BD9257EBDA91BF46EC /* FIRInstanceID.m */, + 753941396DD46748D1C7680E2F710173 /* FIRInstanceID+Private.h */, + 21B8D37C29BEA66851AD9C155AD04282 /* FIRInstanceID+Private.m */, + 51BBB72541441901F63ACA128FB233A1 /* FIRInstanceID_Private.h */, + B24867D9CD2585E9435AF8FEA4434AD0 /* FIRInstanceIDAPNSInfo.h */, + 7570FD92653A11DC6BDFBBF5C39611A0 /* FIRInstanceIDAPNSInfo.m */, + 3E69242FCA63EC421BBA8B9B440B2757 /* FIRInstanceIDAuthKeyChain.h */, + 3EE5E49E0608DF2B106FA14CD4382146 /* FIRInstanceIDAuthKeyChain.m */, + 6B92E2949EF1A4543406805BB9147E84 /* FIRInstanceIDAuthService.h */, + FB3A4FA5B780EDD13FE6CF54CB1AB181 /* FIRInstanceIDAuthService.m */, + E30A4304036780C57A6A4C5FF8F0102B /* FIRInstanceIDBackupExcludedPlist.h */, + F504EB1CAAB3232360A88B314C1C2D1B /* FIRInstanceIDBackupExcludedPlist.m */, + 7F9D73E07FFF6147C23CA59AD34B92CA /* FIRInstanceIDCheckinPreferences.h */, + 55835572A31065F33A3D4E1E1A5420A4 /* FIRInstanceIDCheckinPreferences.m */, + A3EF8A21484153FA9DA1FE98B50D6CDE /* FIRInstanceIDCheckinPreferences+Internal.h */, + 6785C988ACE77DDC69C3D13099575326 /* FIRInstanceIDCheckinPreferences+Internal.m */, + 78D20851FCB538104DD13D41CB744D3E /* FIRInstanceIDCheckinPreferences_Private.h */, + 87B067CF88F9934DF556AE2863AD79F7 /* FIRInstanceIDCheckinService.h */, + 40827A77ECF85BE14435A8DE114C9F72 /* FIRInstanceIDCheckinService.m */, + 2FD12836152CA9E3F0A98BB1ABFA18E8 /* FIRInstanceIDCheckinStore.h */, + CAA25BFC60E0CB873296948F7275E711 /* FIRInstanceIDCheckinStore.m */, + 0217F453A998FB4ED56D2B97E78D63E0 /* FIRInstanceIDCombinedHandler.h */, + F39A0FF1A4DE5B6303CFDCB25A7A5E78 /* FIRInstanceIDCombinedHandler.m */, + BA90D6EC748D1FF923CA0E636E0D223C /* FIRInstanceIDConstants.h */, + F45CB4E615D46548F5FE46BA0BDB05C7 /* FIRInstanceIDConstants.m */, + DF6BB5B6345AA720565F522DF2B3C8D8 /* FIRInstanceIDDefines.h */, + 094A227E5B0F04ED175DA6A90F5625CD /* FIRInstanceIDKeychain.h */, + 5CC2314E0B43D04B02C2843E95525FB8 /* FIRInstanceIDKeychain.m */, + 3CA4053F3021A8F8E3B6EF7EC08A49B8 /* FIRInstanceIDKeyPair.h */, + C95005A2DCFA90BBA259F7AEAB162B3E /* FIRInstanceIDKeyPair.m */, + 952FE2409E0334273396C732E17D34F2 /* FIRInstanceIDKeyPairStore.h */, + 00A718027A0C464E0524A38F409F41E9 /* FIRInstanceIDKeyPairStore.m */, + A3722686712CCFF7E10C8A5413C149D6 /* FIRInstanceIDKeyPairUtilities.h */, + D8705957293E320E38E862B42B93C701 /* FIRInstanceIDKeyPairUtilities.m */, + 8211A1FFBD88C81D6A50C491C86CA3FF /* FIRInstanceIDLogger.h */, + ACC0F8CF01D640B7ADC025DA696085B0 /* FIRInstanceIDLogger.m */, + 4AE0A71A51049A0E47078626C0441792 /* FIRInstanceIDStore.h */, + D01DA25054F62F7A139DBD353DF6C260 /* FIRInstanceIDStore.m */, + 3445F529774697D3E284BAEF8861D67E /* FIRInstanceIDStringEncoding.h */, + B52891204042E606DC4BE8E688623E18 /* FIRInstanceIDStringEncoding.m */, + 5FA6AF7BA09A4F02044C8A3B46C08089 /* FIRInstanceIDTokenDeleteOperation.h */, + 85860B8EFEA3512605A46E8157900EF0 /* FIRInstanceIDTokenDeleteOperation.m */, + 07E73509AE309CAFB836CEF8CEED4FD4 /* FIRInstanceIDTokenFetchOperation.h */, + 0E11605ED922BF3A9609BEDDA9D3A508 /* FIRInstanceIDTokenFetchOperation.m */, + 44D1A66BE035A78A2A5A9D08EBC400DD /* FIRInstanceIDTokenInfo.h */, + D7FF265E8A2D7722A7C6C913057900EE /* FIRInstanceIDTokenInfo.m */, + 47120502A26AB97C27E79E1E785CBE2B /* FIRInstanceIDTokenManager.h */, + AD75F6F8377161E820B76C39CD91B574 /* FIRInstanceIDTokenManager.m */, + 5DADF70A784364C3ACC5993CB98C80DB /* FIRInstanceIDTokenOperation.h */, + DE37477A80DAA557714BF689D5BE02C7 /* FIRInstanceIDTokenOperation.m */, + AA427C3E16AEC975371F102F14B4F20E /* FIRInstanceIDTokenOperation+Private.h */, + 33A41C9E357F72783A47CBE4CF871CB4 /* FIRInstanceIDTokenStore.h */, + C437C241AA473E1646DF5EBF05007953 /* FIRInstanceIDTokenStore.m */, + AA881EC9667CD67D5AD1423D4D253A28 /* FIRInstanceIDURLQueryItem.h */, + A4D0E010BEBCAA24A0EAA4DE3CE70AE3 /* FIRInstanceIDURLQueryItem.m */, + 6F2F6831811871F08EA5EEEC4DAEF2D9 /* FIRInstanceIDUtilities.h */, + 610C1E7BF24A764091822B913A24C730 /* FIRInstanceIDUtilities.m */, + F4355FC4302E34A0C9237E2498D2CAB1 /* FIRInstanceIDVersionUtilities.h */, + 3E95516A1622FF8188FED7734133C71D /* FIRInstanceIDVersionUtilities.m */, + EBFFEA66C26CDF5A514CC30E13F0C688 /* NSError+FIRInstanceID.h */, + 508B33D9B03F6454B42ABEDA929AA455 /* NSError+FIRInstanceID.m */, + A14D10FEDE6E056BA16599FF9D6002B1 /* Support Files */, + ); + name = FirebaseInstanceID; + path = FirebaseInstanceID; sourceTree = ""; }; - AF403EC6622787342C0D09BF35AF3A44 /* Support Files */ = { + A11D78274FC47F77F19DD7C34B686BA2 /* GTMSessionFetcher */ = { isa = PBXGroup; children = ( - 3CD20938E2A49E0DECE51AB2A29FA90B /* FirebaseInstanceID.modulemap */, - 8C15328F8A27109C2BCBE6B708E07E97 /* FirebaseInstanceID.xcconfig */, - D0269142D09862C6237479D4D5F1D535 /* FirebaseInstanceID-dummy.m */, - 1B5FCEC9F55A2D50BE54ED6FB5CC028D /* FirebaseInstanceID-Info.plist */, - 95FAD538204FA5D047B742FDC630D693 /* FirebaseInstanceID-umbrella.h */, + 3C9B9D182D1586BC5EEEA5EC1779A473 /* Core */, + DE9C2BEBDBA0743DE2A37442D5FC1CB9 /* Support Files */, + ); + name = GTMSessionFetcher; + path = GTMSessionFetcher; + sourceTree = ""; + }; + A14D10FEDE6E056BA16599FF9D6002B1 /* Support Files */ = { + isa = PBXGroup; + children = ( + 0A44C7667452E131F34025A236388216 /* FirebaseInstanceID.modulemap */, + D1264144B8D342837CF9AAF58389E6E7 /* FirebaseInstanceID.xcconfig */, + 34B70BF1D157DDBF3CE24B3D3F6689EB /* FirebaseInstanceID-dummy.m */, + A87EF188A5E3D2752A651EA1938675F9 /* FirebaseInstanceID-Info.plist */, + 493C2F15454D03A6AE8ACA399CFA55FB /* FirebaseInstanceID-umbrella.h */, ); name = "Support Files"; path = "../Target Support Files/FirebaseInstanceID"; sourceTree = ""; }; - B15704D01F7430E8FDDFD52C99067825 /* encode */ = { + A7082DFA2445C5FC1C6ACD2B511782B2 /* NSString+URLArguments */ = { isa = PBXGroup; children = ( + B9A97640DFEEF7D761C970C50156C2EB /* GTMNSString+URLArguments.h */, + F1131702FCF50804F90B6CE53CC76202 /* GTMNSString+URLArguments.m */, ); - name = encode; + name = "NSString+URLArguments"; + sourceTree = ""; + }; + A843CDFA523EEA4E4552F407D5A364F6 /* GoogleUtilities */ = { + isa = PBXGroup; + children = ( + 745521D02DC183F3C5F868E45023DBC1 /* AppDelegateSwizzler */, + 258B574232F663F2166936899695885B /* Environment */, + 64C530E9D98976A0FC7A69E59389012C /* Logger */, + 43BCDD1FED69B70BBB739BD90D182BD5 /* MethodSwizzler */, + CEA64A28D3A2A9667965E5F36605BFC6 /* Network */, + 9897C059AB98F369D5DE8C535DD4B72D /* NSData+zlib */, + F332052B35FE7B258BE93A7D0B203BF4 /* Reachability */, + 60C90A5B322EA839F60148ED731C9354 /* Support Files */, + 0DA4CDE80626F1F56F1A1D7651FD1BCC /* UserDefaults */, + ); + name = GoogleUtilities; + path = GoogleUtilities; sourceTree = ""; }; - B4FCB48584EB15630BAFE2E1FEF2697E /* Support Files */ = { + AA55215952CCA9DCDE6E989339E9E214 /* Support Files */ = { isa = PBXGroup; children = ( - 736CE4B9DCC53377A3D854670280265F /* FirebaseCore.modulemap */, - F3D14E66BDB2841D0EFEC8F5AEFDD339 /* FirebaseCore.xcconfig */, - 4F6804AF3CC99DDBFC096E15FC0E867A /* FirebaseCore-dummy.m */, - 14516C353C15A53C7197CDA94C18AC0D /* FirebaseCore-Info.plist */, - 5ADFCF2A6BEDA2EBC87BFF8D933CB84E /* FirebaseCore-umbrella.h */, + 8C7A0B5816E439A5C3F0DE7104B4825D /* GoogleSignIn.xcconfig */, ); name = "Support Files"; - path = "../Target Support Files/FirebaseCore"; + path = "../Target Support Files/GoogleSignIn"; sourceTree = ""; }; - B6A8311A553B957D842E48B9E5093F4C /* Support Files */ = { + AB896D29B29997192DCEFFC700E545D9 /* Support Files */ = { isa = PBXGroup; children = ( - 9281E6A291A8C568F5C0CE1182D4D803 /* nanopb.modulemap */, - 8A9ACB8A2501EDF7917DE909BA41091A /* nanopb.xcconfig */, - FD108C2E1B33C5F684030636825D9779 /* nanopb-dummy.m */, - 25383D0135DDDC892FC46AE5C5CA5C4A /* nanopb-Info.plist */, - 39AB95CDC1D1B2D6763872B50B64D557 /* nanopb-prefix.pch */, - 5250F6979C6A846466F1C96501CD26CF /* nanopb-umbrella.h */, + 1D722C4B7FB1A7069AAAEC261E6B6840 /* leveldb-library.modulemap */, + 5B136302758017FF309B3F5F8496601F /* leveldb-library.xcconfig */, + E9F077FE4C063A2CA564C50BED45603F /* leveldb-library-dummy.m */, + CBB04DC4590DDCEB0472802A59CB96BC /* leveldb-library-Info.plist */, + 5279E1699AE4BB2193E54A0BEA1E563C /* leveldb-library-prefix.pch */, + EE78392C8BAF863D7E3378CEB3256B53 /* leveldb-library-umbrella.h */, ); name = "Support Files"; - path = "../Target Support Files/nanopb"; + path = "../Target Support Files/leveldb-library"; sourceTree = ""; }; - BA1852755CBA6A0C6C209D8CACEB7C8F /* Support Files */ = { + AF709BB7251DC0479A1A5A39B13E5699 /* RealmSwift */ = { isa = PBXGroup; children = ( - F9D2FE8FAC9AE9A32DE90EC9EAEC0737 /* RealmSwift.modulemap */, - 5098DADAF593781C93B2902E1AD76B83 /* RealmSwift.xcconfig */, - 9A240BB32B4FF323AF9B910237F47F34 /* RealmSwift-dummy.m */, - F74FB87471B140E234E03F1F96C7BCAF /* RealmSwift-Info.plist */, - 19507253D2D25F2CEFAADB1BD815A39A /* RealmSwift-prefix.pch */, - EA414CCAFA3FB6F475B8CEA782E3F436 /* RealmSwift-umbrella.h */, + 4DF9FCC67F80A21091A6703EE114D0B5 /* Aliases.swift */, + 0420F900F8AD3CEA746CACCB0E6178ED /* Error.swift */, + AC5C463C527B8A9BBC85C66035796FE8 /* LinkingObjects.swift */, + 2E5C1C8353925A910534C6793C1F018A /* List.swift */, + 6E53793F5F48711BD8994FEAB6191924 /* Migration.swift */, + C5E84A273D7C2C2723DBADD1DD6FAD97 /* Object.swift */, + B2CF6DB72820D6358D225A175ADCE45B /* ObjectiveCSupport.swift */, + 4C02F64E3B8AF0F1985EDA70517FDF04 /* ObjectiveCSupport+Sync.swift */, + F2EAD57FEA0D865E34970DF30433DA0B /* ObjectSchema.swift */, + 25CBDA09181F1292E2E7B25A7C6E5DA1 /* Optional.swift */, + A7F65EE630652D31A93CAF315876BEA5 /* Property.swift */, + CE836EB59B7C7FE3BB95048018544524 /* Realm.swift */, + 90719D6571B23A2A07893FE9B770DF02 /* RealmCollection.swift */, + FF1F0D9FEC1CCD9F4E4835A60D397CD6 /* RealmConfiguration.swift */, + 016A4868CD91D80652B44F83CBBD553A /* Results.swift */, + A3C25863F4E5C8A71C2F6FF516080B8A /* Schema.swift */, + F113AB8F41762B4D250C788ABE86CB7E /* SortDescriptor.swift */, + 5138AAF10184F6333F18F47C379CE068 /* SwiftVersion.swift */, + E7EB9918F5E535EAD721D9354B856C44 /* Sync.swift */, + 7A808AC15356B0C652B6E11F7ED8AE8D /* ThreadSafeReference.swift */, + ABF36141FBECA785CC48607985706346 /* Util.swift */, + FD72498DC1A698F63AE6B73DD2D9049C /* Support Files */, + ); + name = RealmSwift; + path = RealmSwift; + sourceTree = ""; + }; + AFAA15ACF1E5E34D4C9437E3C1BFF578 /* Support Files */ = { + isa = PBXGroup; + children = ( + EEE2EB34AE62A69CFA17F062BEEACB71 /* nanopb.modulemap */, + 4CE3999652B86F545D1E365914E0CB07 /* nanopb.xcconfig */, + 28AFEE343D35DBF8B6DCFE87AFE69358 /* nanopb-dummy.m */, + 8339E4AC239148D2E1BC012A7792CDB1 /* nanopb-Info.plist */, + 7D61429A391247AACEE99FAEBBC5D70A /* nanopb-prefix.pch */, + DC93E8D49C0AEB2B4B0EF98FD1AD22F9 /* nanopb-umbrella.h */, ); name = "Support Files"; - path = "../Target Support Files/RealmSwift"; + path = "../Target Support Files/nanopb"; sourceTree = ""; }; - BC2788E46B4F7C9A57483528828A4E4D /* Pods */ = { + B183D61ACB31E4D1F097FFC8326FB1D7 /* Frameworks */ = { isa = PBXGroup; children = ( - 9C5913166CBB033F31FC82F6BB56B587 /* Firebase */, - 97D2700D14134FAB113968A2C26AB1A9 /* FirebaseAnalytics */, - 75BD30CAAB0905E7CDF9D544816B9A93 /* FirebaseAuthInterop */, - 542C12DB29200F201E47D430596284DF /* FirebaseCore */, - CD13EBC6778140B4BEBC5A65755E32FF /* FirebaseDatabase */, - 929B68E36CEDC6644572F3631A363F9A /* FirebaseInstanceID */, - 6BFF8038D5A4A20428C4EFCDC1FD3A7F /* GoogleAppMeasurement */, - 93AE04A79E3FA7F8FFACFE08915B12EC /* GoogleUtilities */, - 1AC1B2F291A27DC4939960FAED8F83F4 /* leveldb-library */, - 512DBD85BDC4B1E9BAA59013F60F7D5D /* nanopb */, - CC7A1042709279EE44344C3BC84A4047 /* Realm */, - 3AFC6FA08AA6BF3B8568B6029422478E /* RealmSwift */, - 24462D84A37392241507F5738075DBBC /* SwiftyJSON */, - 27D02D9FD6AC07166C6CBC20BFF58F06 /* YMTGetDeviceName */, + F3B2F9BDD28E780FACBCB5B1FEB987D5 /* librealmcore-ios.a */, ); - name = Pods; + name = Frameworks; sourceTree = ""; }; - C0153DBE79E249D319F287ABDEA2F03D /* Reachability */ = { + B4209F4D085B6189A858857BC8F239EA /* Pods-shlack */ = { isa = PBXGroup; children = ( - EEF61379CE37066B7B3335D89DCFA5FB /* GULReachabilityChecker.h */, - 6C7E50031E5AA0C49FC2904B0F52E927 /* GULReachabilityChecker.m */, - 663A7E45C8155B43597C41DEB7E64B66 /* GULReachabilityChecker+Internal.h */, - DD648D41267E573F43282A7DA40D2E04 /* GULReachabilityMessageCode.h */, + 792E44A5F66B2442AF607AB071254814 /* Pods-shlack.modulemap */, + 6F614A59C515BF539E5825E48A86BD37 /* Pods-shlack-acknowledgements.markdown */, + DF2611CA01949B5334790514092BFD22 /* Pods-shlack-acknowledgements.plist */, + 0227489CA87528683D15854631C1E35F /* Pods-shlack-dummy.m */, + FB40BF9DEBBE839EB63A8CFE8DF8DD7F /* Pods-shlack-frameworks.sh */, + 1FA5FE2C9ABE97C40A9AE87532F186B2 /* Pods-shlack-Info.plist */, + 929AE1832275AFBC62861424C1AE7F2F /* Pods-shlack-resources.sh */, + 365DF144F3775DC7733C55B5A3A2B6FE /* Pods-shlack-umbrella.h */, + 53E28C5A63DF6B7590F818E6075F14C7 /* Pods-shlack.debug.xcconfig */, + D41C036A3ABAC4E0A610258ED95D0F9D /* Pods-shlack.release.xcconfig */, ); - name = Reachability; + name = "Pods-shlack"; + path = "Target Support Files/Pods-shlack"; sourceTree = ""; }; - CC7A1042709279EE44344C3BC84A4047 /* Realm */ = { + C38BD867FB295D1EE426E77FF5E04FC2 /* leveldb-library */ = { isa = PBXGroup; children = ( - 69D541F5C1FEFAB528298D80DA53DD16 /* async_open_task.cpp */, - 9ABCE100DA703E4DA46A38A32DF9C959 /* binding_callback_thread_observer.cpp */, - 169690598F4F35B5A48BC5DC8FA3CD14 /* collection_change_builder.cpp */, - AADE9CEA7E9C2126E6F2F459734C73FD /* collection_notifications.cpp */, - 09FAA8AF1C493696D8FA336D38481000 /* collection_notifier.cpp */, - 58566803A75C6624E8A4ECC7CACC1009 /* external_commit_helper.cpp */, - 796B83E4FFDD0989683310CDFC841154 /* fifo.cpp */, - BF86AAC42DF8F3CD8DC22A4D7C2A61EE /* index_set.cpp */, - 0C2CD0FBB7975223F6A384762C817805 /* keychain_helper.cpp */, - 22C7E12BCB53FE4ED89AEFABE4229ADD /* list.cpp */, - A890328063DB325604218EF882464D19 /* list_notifier.cpp */, - 09E3B9A2D995E7B995D465A6C14176BE /* network_reachability_observer.cpp */, - 3503C42E4DCCECD330D850A42828A4B9 /* NSError+RLMSync.m */, - 99EB3B614B8C061A7DC06765BE10D0F9 /* object.cpp */, - 77B4B9F1A58E8CB4ECDD87BC6B7E1A5C /* object_notifier.cpp */, - 64967F4F7BFC1E0AF598DF0896A520F5 /* object_schema.cpp */, - 483464A3244B7A27FCE5CFE8C8B32C56 /* object_store.cpp */, - 99A55B1A156801B69DCDC5188017CDE1 /* partial_sync.cpp */, - DA769F5B26F8DFE20783CC3A4D066FBC /* placeholder.cpp */, - 3290AA8D179B7452FFC34E591B70F890 /* primitive_list_notifier.cpp */, - 9C019372595DED9AB88F4623CEFC0F83 /* realm_coordinator.cpp */, - 5B724C3E39CCECCC560D97BFF4386417 /* results.cpp */, - A64BBA1C856A4201DAC3BD0D8E098766 /* results_notifier.cpp */, - 96D7B586A22D0FDF6C502794CD097BB2 /* RLMAccessor.h */, - CBCA1BA073AFD3B8923217C6CCB55FCA /* RLMAccessor.mm */, - DD18F7C36379B02C2C6E4BEE75A3073C /* RLMAnalytics.mm */, - 19466576FA6A3823DD0A35E6EF6CBD1C /* RLMArray.mm */, - 8FAF49A0011487DEA7A27988A67BFD66 /* RLMArray_Private.h */, - AAB3C145E6056757861BA936291ABC7F /* RLMClassInfo.mm */, - A92FF9E6AB06C3C75197D5A06B4A7D9F /* RLMCollection.mm */, - F59BC7A16A66FA14351F20FA2BBFFEAF /* RLMCollection_Private.h */, - E67E35298ED63F3E67572FBE23154F5A /* RLMConstants.m */, - 8A4D28D8A4554494333F8A1B3F7CEF10 /* RLMJSONModels.m */, - AAFA7E75C9A5878917AA505C0CB45F70 /* RLMListBase.h */, - A27455128329242102E432E9B83E4A67 /* RLMListBase.mm */, - 87DAAA3F88EE9947811324BCE945DF30 /* RLMManagedArray.mm */, - 2C850F0AD955FD23E215626E3B366C2F /* RLMMigration.mm */, - E3592EF7BCC6B77368F5B92F993050FB /* RLMNetworkClient.mm */, - AC4D11FC46FE59DC567F0DABA72CB07D /* RLMObject.mm */, - 59757D47E77C9DE2758C39FF4FD6960B /* RLMObject_Private.h */, - 7019D4FCA52FDE02DB37D97202CD9999 /* RLMObjectBase.mm */, - B327834213EA2CFC6D5EC9C13EF7BDC6 /* RLMObjectBase_Private.h */, - 0645574B1D691E08ABF6941598A55F0A /* RLMObjectSchema.mm */, - 2F73F81DEA5CF679273B8F09D64D99AC /* RLMObjectSchema_Private.h */, - 05ECCE509C554602AD75019EF6BE5DFC /* RLMObjectStore.h */, - 39468BF6D2F36C7C55A25207EFAA8400 /* RLMObjectStore.mm */, - 1B1BE978180117D7A9F0FFAEFF97BDC0 /* RLMObservation.mm */, - A1E1D517209C3F2ADEFC8A4A06A7007B /* RLMOptionalBase.h */, - 690630AD468306399E4D4370F3CBBE52 /* RLMOptionalBase.mm */, - FE0D276AFD1DA80923B78F332D3CCDA0 /* RLMPredicateUtil.mm */, - 012E2C27C72F07CCA0144D66DA277C97 /* RLMProperty.mm */, - FCE7CBF0406D1926A617016502A76B9D /* RLMProperty_Private.h */, - 19167ABA8E3C67FBCAF3FDF46F792190 /* RLMQueryUtil.mm */, - 0618723009E3513AA3529A7366BD1651 /* RLMRealm.mm */, - 47A9C45E4D13FC0E853D154D2BF4EC25 /* RLMRealm+Sync.mm */, - 111A5A6ED76A0D9FF9C46BA259A8C94E /* RLMRealm_Private.h */, - 1A56100AD75D6F45FC0D0A57315577D9 /* RLMRealmConfiguration.mm */, - 3C46FBB4F3EFE1D6813BC3216242E777 /* RLMRealmConfiguration+Sync.mm */, - 7548F3A5D14CC65B8C5F2FB458CA1B24 /* RLMRealmConfiguration_Private.h */, - A20EB07A8D79B5E5268EDD89188267B3 /* RLMRealmUtil.mm */, - 2EE8E8646712F6465542DB43696599EA /* RLMResults.mm */, - 555A139457E8AA4030271B5DB035C1CC /* RLMResults_Private.h */, - B05B881816751106CA8912C1D9F7A355 /* RLMSchema.mm */, - F7C0667A3A1C1CFC512A5112FA3856C1 /* RLMSchema_Private.h */, - E4EC468C7B68B6E00EDAF9F470F80973 /* RLMSwiftSupport.m */, - 86B87E4CFA5517F1A2DED99AF91F7B2A /* RLMSyncConfiguration.mm */, - A7787FE428147EE7C12C5F94C299406A /* RLMSyncConfiguration_Private.h */, - 0287EDA0E300BF3B5C3C6674FC6FF9EA /* RLMSyncCredentials.m */, - 415713C0C4491CDFF625AC7F54AEC1A9 /* RLMSyncManager.mm */, - FD4F5D9D774C3ECB3E407B0716CFC2C9 /* RLMSyncPermission.mm */, - C85318A5572C789B14E88E04BC7C5B17 /* RLMSyncPermissionResults.mm */, - A9280009C3D5F3BFD9BF39C760BFCC65 /* RLMSyncSession.mm */, - B65EF170836E480791C8C36BEBE84727 /* RLMSyncSessionRefreshHandle.mm */, - D2A9C94A856AA8185FE955767793455B /* RLMSyncSubscription.mm */, - B9A93F0E486590B86179CEBD4B8DE62B /* RLMSyncUser.mm */, - 5D4557ADA6A33DAC8F262137BF3CB8EA /* RLMSyncUtil.mm */, - C92AF00A8AB6382E1EF86F0A591F4C6D /* RLMSyncUtil_Private.h */, - 80AD45270824FB9D5E197366D7C854C0 /* RLMThreadSafeReference.mm */, - D23710AE6A2CE9885B82833DF1448057 /* RLMUpdateChecker.mm */, - A74BE1C3B38E191CFE615E651EB7BE2A /* RLMUtil.mm */, - CD2CC43780BF7E6C9A6607C441B6B81B /* schema.cpp */, - 21AC6BB5104E12F7C39FD17A2E20BD12 /* shared_realm.cpp */, - FCF1A8D5CDC0A4815258D87A2F627603 /* sync_config.cpp */, - 86BD7026584FB526028C8F797D7961AE /* sync_file.cpp */, - 347C795EAA4A6BFE0316100938BDA496 /* sync_manager.cpp */, - E060BE00308AB7327E6FCDBD68637C67 /* sync_metadata.cpp */, - C6E4FC7BC71C3C6A219BD88D744C1222 /* sync_permission.cpp */, - 61A8B72D704CBD8227ED3877697FF6C1 /* sync_session.cpp */, - 0DD33F53EB6EED6ECCD2501263A891E1 /* sync_user.cpp */, - 3401E71B5CAB448A7EFAFBFC2C5E55EE /* system_configuration.cpp */, - 3DF2F499DB437D0FF2DBC83A20F5A7E0 /* thread_safe_reference.cpp */, - D8F7D27B502CA8DE6BEEDB762534E0B7 /* transact_log_handler.cpp */, - 181FDD035B4B0C5DB394ECB1E11AF002 /* uuid.cpp */, - F23BA1CCEEFD97A5FBC5256E6310A9C9 /* weak_realm_notifier.cpp */, - 3B71F4EF0FBDE6C2BE584F18FD758591 /* work_queue.cpp */, - 12ACC9D8ACE2FB88ADA5123A45F86B2F /* Frameworks */, - E6C8A990A4F984756D3B7C08F4FE9DE8 /* Headers */, - F83AF60039E208E8FD602B2AC5CD94FC /* Support Files */, + 5019C60E64C28FC2CEDA68240C1C26B2 /* arena.cc */, + 4954F1C6715BCE4C0192048F26C6B961 /* arena.h */, + 04110D59EBCF955D3B655A7CDA26D981 /* atomic_pointer.h */, + 014FDE209ED1C0D0CD89A78B77428077 /* block.cc */, + 4F0055900DA4C9C64FA802E4594AAFEF /* block.h */, + 1046E3A0853EDA0F23A2044A814171DD /* block_builder.cc */, + B2419D687C8C33ED7CDCB06D4A7716AC /* block_builder.h */, + 6E268075750285AF449610E21DDE7ED5 /* bloom.cc */, + CB2DAE7D3D5AFAB38EABD9504C19A74C /* builder.cc */, + 4B64FA0261C5F960F5C2637B3A67D9A8 /* builder.h */, + F7E5B6134E7807C8BFD150B54EB04E63 /* c.cc */, + 3193B3EA2ECEEFC05137F5A4028FAA82 /* c.h */, + 600732E712026647139565CAE4E5BA6A /* cache.cc */, + 600F94AD0FB1F18D7D28AC246AF4BD13 /* cache.h */, + 0825C64B1F30E1DEE973AEEE409989A9 /* coding.cc */, + C3CA75049D935FF1CBA90C362ABA4576 /* coding.h */, + CE0E4205A9BA4BEC767014022FECAAB7 /* comparator.cc */, + 1E128AF0D7AAA1FBE6524F842CCFA8E2 /* comparator.h */, + 2CA8AD0747075EFF0704CD466D531293 /* crc32c.cc */, + 280BDC3BD29903DC8D284AE0D359866F /* crc32c.h */, + E5B3A983D7942A2D6839EE7A9EF00216 /* db.h */, + 64144CD0F6D74841B8B0AE168E5352B0 /* db_impl.cc */, + F11C679C19610AAB159BBB07AFE9BE4B /* db_impl.h */, + E8EA673105DF649516D896FF2A1D3271 /* db_iter.cc */, + 510C193CD9FFA37673FC08ECF6072C76 /* db_iter.h */, + DD36DE2C77CBBCD9A6DD650CBC3C9FB9 /* dbformat.cc */, + B3611F38D4D93238F8E7F467D3C5D58C /* dbformat.h */, + 953A7128CE9476055E2510BA47220556 /* dumpfile.cc */, + BEB7251CD6F4DDFB313EFEE8739A506B /* dumpfile.h */, + 5E5A0E050BA4CB73B1AAFB7BE90CE532 /* env.cc */, + DE438E52F0A7E6FEC61F2FAB8696BB65 /* env.h */, + AD761357D66650C8939FDD11F504EDB0 /* env_posix.cc */, + 507DF04A7C2E3B009DF585F571037580 /* env_posix_test_helper.h */, + 8236E64C073482BA7586E8CCDE688387 /* filename.cc */, + 8295AFFB6E5D0634BBC1EC87B3D404C0 /* filename.h */, + 7378B0C7211B514906A1311BE05739A8 /* filter_block.cc */, + 358CEC6E846D137CE8EF2BC2CB08A915 /* filter_block.h */, + DF6870434F40F97F3366354A0E73E789 /* filter_policy.cc */, + D1D33C3581F1CD2795D1048283BA3EBD /* filter_policy.h */, + E0873E6476F1CE78473958D50C2CC017 /* format.cc */, + 42614DC729A6DCAAA9230BC763AE71F0 /* format.h */, + FEF9CDDC521EA7A16A3AEFFEE263AB55 /* hash.cc */, + 1075AF4BEE8D8B5C3A3087BA42F4EB6E /* hash.h */, + 40EE662D9466A0FCBCCE46D120E17B22 /* histogram.cc */, + 7D3D5920517A5D2B9A06D4434A0F2581 /* histogram.h */, + EEE9128D2C8E311A51541B4375FB1152 /* iterator.cc */, + 9CD9BCD407DED5F2DDA00A180D12F8E9 /* iterator.h */, + 35AE75C65D4395F4BBA0698E249E6DB8 /* iterator_wrapper.h */, + AD589215D74BA7D59C8AEF57FE525034 /* log_format.h */, + F6E345D0E6A7F0FD1C06E250C7BC2D9E /* log_reader.cc */, + FB74B24525380A5D381204D444E86AA2 /* log_reader.h */, + 85366F8E3898D45D85CEE2F8C70205A5 /* log_writer.cc */, + 79F60D7CD69F106CB044C0B2FDAA96B1 /* log_writer.h */, + F9220BA54BBDA9DFF1C2C3A090DFA6FA /* logging.cc */, + A8009E465002A5F884C0CC39887EDD8D /* logging.h */, + EC04E3FAE92FE1249F2540C622DB82F5 /* memtable.cc */, + 794211A97E497258686A436223DEE367 /* memtable.h */, + AC836764EE632A171018079BA24C6F94 /* merger.cc */, + 5AC2F598FE870D4139CC3B2A48C6695A /* merger.h */, + 8F6DE6AD1028A4D2AE028461BDB16770 /* mutexlock.h */, + 413F01E61AE1A7FEF3610C804F1720B6 /* options.cc */, + 85D0B35D3F6C8AE536AE7FA7C37F2CA7 /* options.h */, + D5DA52F517F853D0C6C5CFADBCB08541 /* port.h */, + 91F9FE77061A16B37A212F2945591314 /* port_example.h */, + BAC17716C48FBD173A8FB0D8832B5ADE /* port_posix.cc */, + A18613CEFEB8F5A09C34A72030A5744F /* port_posix.h */, + 9FD3F9FB28F9DC36499105A3E0FA206C /* port_posix_sse.cc */, + B98BF99DA1BF369D14433020F9602923 /* posix_logger.h */, + 06BAA7719371B161963154613F649AA8 /* random.h */, + A2844654F2753C45219E09FCC969FDC3 /* repair.cc */, + 8B0B094B7E42252A9F06BDA31219F490 /* skiplist.h */, + 32EC12462B9D39F14F0B8C3CFCB58150 /* slice.h */, + D561260D45C0F504BA5213746D8446C4 /* snapshot.h */, + 7A86801907EBD73B77C646B67ACFECE6 /* status.cc */, + 4053BAB64C893FA4E744547EE78692F2 /* status.h */, + 407EA5A7A2C53526148F28A437111F9D /* table.cc */, + 04FFD5CBFD7BCCBCCD66E9BCD51A2E0B /* table.h */, + 99CD60BC57D32DF9C038E8BE112FED4C /* table_builder.cc */, + 3ED160332E24F454510A2975E92DC7B4 /* table_builder.h */, + FF7A42D6EDFEFF83540F9E8A78ED2AA1 /* table_cache.cc */, + 1BE36150E0751B05AB5171595A0C88DB /* table_cache.h */, + 8CBDE858ADC53E69AA81D87E345D2FA0 /* testharness.cc */, + B11165CE850B96B457E475B8F0D2B618 /* testharness.h */, + CE815CF6EA113F8A2367B74C0DC06C76 /* testutil.cc */, + 6E05AF6DC02F67299B43073D3082957B /* testutil.h */, + BD95192D6A86F239E89F634D58DE2D01 /* thread_annotations.h */, + AD52B279EA2AC09169D29364CFD23F6F /* two_level_iterator.cc */, + 0A6EBF0A8C222DE3E9E319189FFC4BA8 /* two_level_iterator.h */, + B62AF7954DD9B84003AB6AA55B2020E3 /* version_edit.cc */, + 694F96E51EFB484361BBAC82242C9A4A /* version_edit.h */, + 2BA024687FB6DB667E32B4EB66307C83 /* version_set.cc */, + FDF10A25E18204238B7625A98D7A547C /* version_set.h */, + 5436A15B807598AA147D37A03ED78F4F /* write_batch.cc */, + BA976B92FFBCEED91BE98519675F0B62 /* write_batch.h */, + 9485AFB8607075CD0DFBF32E62AA4447 /* write_batch_internal.h */, + AB896D29B29997192DCEFFC700E545D9 /* Support Files */, ); - name = Realm; - path = Realm; + name = "leveldb-library"; + path = "leveldb-library"; + sourceTree = ""; + }; + C80BE119C5AFD04375E68775AEF82D1D /* Products */ = { + isa = PBXGroup; + children = ( + 43B1E4CD7B30B9FD278100133C2AC788 /* FirebaseAuth.framework */, + E2B63D462DB7F827C4B11FD51E4F8E2D /* FirebaseCore.framework */, + 51671C73F008B5C0C3751B3855999213 /* FirebaseDatabase.framework */, + 2DA0D814DFCB860D31D7BCD63D795858 /* FirebaseInstanceID.framework */, + 251C6319AD50CB50F18D50CBF727F8B2 /* GoogleToolboxForMac.framework */, + B43874C6CBB50E7134FBEC24BABFE14F /* GoogleUtilities.framework */, + C1998E0D8085221AD87F89B614C10E52 /* GTMSessionFetcher.framework */, + 0A9F46A999C47653013D3AD854352507 /* leveldb.framework */, + 06FC5C9CF96D60C50FCD47D339C91951 /* nanopb.framework */, + 554465FEB9CBF982D86FB8B8587FB36C /* Pods_shlack.framework */, + 921BE4A82C4A7A5C72A0C6F8B8FEF200 /* Realm.framework */, + 437919EE08EC6BFCCBAC3BD346309742 /* RealmSwift.framework */, + E23C076BA70925415F490FEDB215DA92 /* SwiftyJSON.framework */, + BD87420AB4A1FCBC153D1A9F15C3513B /* YMTGetDeviceName.framework */, + ); + name = Products; sourceTree = ""; }; - CD13EBC6778140B4BEBC5A65755E32FF /* FirebaseDatabase */ = { + CEA64A28D3A2A9667965E5F36605BFC6 /* Network */ = { isa = PBXGroup; children = ( - 5892CA43063974C0B8E8C8559151659E /* APLevelDB.h */, - 333C12F1E38DA147596F45D3EF0708DC /* APLevelDB.mm */, - D61B470737FFE1C7601893DC21314D77 /* FAckUserWrite.h */, - 5D8271AC3A1562894E9BBA64D08E59E0 /* FAckUserWrite.m */, - 1DBF9F9EC5E9DE9E41EFB0868C4C8A4F /* FArraySortedDictionary.h */, - 20935CAEED9983B9F3F0D3330DEDCC67 /* FArraySortedDictionary.m */, - AE0E09EEA6DEC893BD7EC371D0DF0F05 /* FAtomicNumber.h */, - 31CF49049567C2952F70001E266E8688 /* FAtomicNumber.m */, - FFD9847BC8112C92BE7316A67739B7FB /* FAuthTokenProvider.h */, - 03D8E809717EA857929080A649048E9A /* FAuthTokenProvider.m */, - F78421F029BB8A8E02A400B723189AA1 /* fbase64.c */, - B0F05B15A1B23EE3469F516DDA99A120 /* fbase64.h */, - 682534987613517E1D2745200990554A /* FCacheNode.h */, - 392BC607F30B1432035F81920C54708B /* FCacheNode.m */, - B8381E1F386EC4FCEAE004E579361FFB /* FCachePolicy.h */, - 254364C2F39D555980C6E8A0AC05D68A /* FCachePolicy.m */, - DF70012FB7B27E7D34ED5DB67119C6FA /* FCancelEvent.h */, - 44A4A8DDE5F1F353006691D0DFB1DCF9 /* FCancelEvent.m */, - BBF7A9D4E3FEB858B5EF75CC7283B681 /* FChange.h */, - EE35FF84894CD6820706A105C0EBC645 /* FChange.m */, - 79A7BC578FA6B8DBF2907CA31A40E533 /* FChildChangeAccumulator.h */, - 69147017F1CCE0913F4CE21CBB2D1206 /* FChildChangeAccumulator.m */, - C9C261C6290F3318DB344013380C67C4 /* FChildEventRegistration.h */, - 48D27D6942CCE9C373AFF71C8EB1638C /* FChildEventRegistration.m */, - 822CE64BC5451FBF6F3C6A7758C67BC2 /* FChildrenNode.h */, - 3D9B75AAAF457BEDD93B15CC2445F03E /* FChildrenNode.m */, - DE71A7191C2116236B7355C9D76DBCB3 /* FClock.h */, - E1DDFC9FBF27A99865B52A810661DE3F /* FClock.m */, - 2E254EAD6B039FB25D501597D8E756B9 /* FCompleteChildSource.h */, - C3667D61C09AF1510303969EBFCDF4E8 /* FCompoundHash.h */, - E17650BCE5DAA3100577549FA2BBFD06 /* FCompoundHash.m */, - 040252EB86405F1D7BBEFFFC6E3D456C /* FCompoundWrite.h */, - 53BD8835502113C574C389F5F72FDF16 /* FCompoundWrite.m */, - DA6636537C30A4AB828E1936648CBDF7 /* FConnection.h */, - 1CB91AAAA2DFB02E6A0A6C483A969754 /* FConnection.m */, - 1FE22062253F86EBDE8DBC1E4AF7D5A4 /* FConstants.h */, - 68A72EF067B60F56D8A99F7E34997541 /* FConstants.m */, - 71195E85F8BD8A2222CD16F8703FAC19 /* FDataEvent.h */, - 91E12C6E3E1379DA89079A27A50BB8B1 /* FDataEvent.m */, - 2D891FB6556F9D956EB6BEDCB751DBC9 /* FEmptyNode.h */, - CD3842C28774AD982DDC19ECA9D61C9A /* FEmptyNode.m */, - F1A346D79A9034136582F63EFD3EB351 /* FEvent.h */, - 467508FAF85EFF9A04195C0AEB94A583 /* FEventEmitter.h */, - 00CCB59A7C95A0138D0DA4F63246439C /* FEventEmitter.m */, - 7C81F484FD3E3CB5BEB04929028F92D7 /* FEventGenerator.h */, - D5CFE4DBB50AB327172E04A722EC13DD /* FEventGenerator.m */, - 42771769BD253F13FD4184175F0EF52E /* FEventRaiser.h */, - 21AFDDA117E511A3402F681BF627D41D /* FEventRaiser.m */, - 0952D1860824C1CA8ED07023B636A233 /* FEventRegistration.h */, - 1657E98838AEFEC85EE8EC91FE676CEF /* FImmutableSortedDictionary.h */, - 9D2DA84A9FA77488723EC0F2E643180A /* FImmutableSortedDictionary.m */, - 46F91C6D760ABDBFC4E8AD9AC05F5BF0 /* FImmutableSortedSet.h */, - B445143D10CCECEA2127F8644BFF5C7C /* FImmutableSortedSet.m */, - 7D2B31B9DC9417DBA072028C7544648D /* FImmutableTree.h */, - EFE335DC5B8FCE0CE211BB9D7AC93D2D /* FImmutableTree.m */, - 92F37DCB1BA5FBC85C39369C207ECDE4 /* FIndex.h */, - 694F140A39301B31EFDB6F309BBA679A /* FIndex.m */, - D800A318A29E77159C89E61B406CAC6A /* FIndexedFilter.h */, - 7A98FB20C023A1BB91C8DBAC0BA523F0 /* FIndexedFilter.m */, - 5BDB03EEE7AF7372DC965DB46E6F9355 /* FIndexedNode.h */, - B6C37F287EF9306F2341AC77561327CA /* FIndexedNode.m */, - 7D23DCD48CBB6653AB9FBED51DCD86C7 /* FIRDatabase.h */, - 7D26FA9ED591A75CB97F3A6C5C16AD55 /* FIRDatabase.m */, - 3B3D9F339FCA01A7F1DB3948E60D0D8A /* FIRDatabase_Private.h */, - 8DA99E6A2FCFE520F99D00E83CA380E4 /* FIRDatabaseComponent.h */, - F8A3DB8BFE0116EB37E50F4B24B89A7D /* FIRDatabaseComponent.m */, - AC9A8AC932E8EF20B24FCA58FD918620 /* FIRDatabaseConfig.h */, - E7BEBCDA90FC526CBF5088FC91938C86 /* FIRDatabaseConfig.m */, - 49C259BC6EA6008451F8A3BAB46B58F0 /* FIRDatabaseConfig_Private.h */, - B25D39FBE9196DE0BB4485D886CF30A3 /* FIRDatabaseQuery.h */, - 03F855A5B507F9CAEAD468E4EEAB9059 /* FIRDatabaseQuery.m */, - 53C097CBB058BD81846287E3694EBF2B /* FIRDatabaseQuery_Private.h */, - 0AA3340ECD599FE3AA8DEF6ACFD38A80 /* FIRDatabaseReference.h */, - 3EC378DBAAD14FED18E85BAC4DDC1B9C /* FIRDatabaseReference.m */, - B2AE63F6661A63AEC6C718E2DF32AF01 /* FIRDatabaseReference_Private.h */, - 0E2302B86EDACEB3402E8F4310195A9A /* FIRDataEventType.h */, - 9A1CCE5149144282C117C9E78B51D22B /* FIRDataSnapshot.h */, - A24F3E1A7929B59A3F2A4A4F9E2D210B /* FIRDataSnapshot.m */, - F513B682A0902B1AF982E39670F168F7 /* FIRDataSnapshot_Private.h */, - 13583B89378F90F6F6E13CF4A6DE6DA4 /* FirebaseDatabase.h */, - 2E964BEF81A9927844FF49288F190ABB /* FIRMutableData.h */, - A88BF4C13FC276E4362A34A12E2EB4A6 /* FIRMutableData.m */, - D939A2ACF7F13E9858F1B48C0EE9461A /* FIRMutableData_Private.h */, - 95FD024F010448AE198FEAF40DA88040 /* FIRNoopAuthTokenProvider.h */, - B21649DAB208CD435F380FE208887827 /* FIRNoopAuthTokenProvider.m */, - A8951E5F7EA456FA0578B3DD1E884381 /* FIRRetryHelper.h */, - 633916BB48ADABF057C4F0C5972F98D9 /* FIRRetryHelper.m */, - 9D89388C71B2B1FD6EC78EBEBBF31E53 /* FIRServerValue.h */, - 8D6B8FADBAE7FB1230A0D81DCCDA471E /* FIRServerValue.m */, - DD227D6A09345E978BED5BDFCE2AF31A /* FIRTransactionResult.h */, - EEDD89E782509485877D5E42C8185AF2 /* FIRTransactionResult.m */, - 0AE8BF278FA2DE959D77D7C0F99892E5 /* FIRTransactionResult_Private.h */, - 33708D4C6B415884B8D564FE3E539048 /* FKeepSyncedEventRegistration.h */, - 8A726C02EE21EB72AC5CC440E03F2AE0 /* FKeepSyncedEventRegistration.m */, - EBE26D1FF64CCFBCD68F732793E490FE /* FKeyIndex.h */, - 89BF3317E8CD6395BE7C89F1FED23C69 /* FKeyIndex.m */, - EDD95CB096AB50883B64E3CC5BAFFD18 /* FLeafNode.h */, - F2155BA367E62EDB156F27E56FDFF7F6 /* FLeafNode.m */, - A72EFF634E4D3BF54875061C0C717FA9 /* FLevelDBStorageEngine.h */, - 5FF4486873D7D06300DA3F90612842B8 /* FLevelDBStorageEngine.m */, - 4D3B36FC89E48CC66A13103306192863 /* FLimitedFilter.h */, - 71D30C845C69EB92744549CF18F1D528 /* FLimitedFilter.m */, - CB0C08D683CB74133843957838435D95 /* FListenComplete.h */, - 0FEC893D0AC066E0809BDE755B416AF5 /* FListenComplete.m */, - 92EB02F6240A5D7F8BB826B9D700C38F /* FListenProvider.h */, - C51830307EA9C530EEE538B2389427A0 /* FListenProvider.m */, - 83CB9A5B9D8361C11A6AECBE0F8232B4 /* FLLRBEmptyNode.h */, - 1E4CB7C3F490D71BFABB4A3CD53B54FE /* FLLRBEmptyNode.m */, - 2FE16464C8B5AED5E827AE2B5AD8D75B /* FLLRBNode.h */, - 1F9DDCF917A72B453DB56A63B5AA3947 /* FLLRBValueNode.h */, - A1CA43453FA816A0A880B02CB2A1BF71 /* FLLRBValueNode.m */, - 36110B45321463CA3F0F1C3E5235D72C /* FMaxNode.h */, - 8781C7A06915CE846BEB2C09ABD379BC /* FMaxNode.m */, - 63DFBBA4C20D77335FAA691AC209CEAC /* FMerge.h */, - 354821E162D3DDE10F0917D9640FB49F /* FMerge.m */, - 71155B113A427AFF9C3CC21D011E468E /* FNamedNode.h */, - 8D90B040C854267F52EE784EEBD6FFC9 /* FNamedNode.m */, - A9070054AB139029FDD2E0670A0318DC /* FNextPushId.h */, - A9A562BB6C6729A8501A16A3E398F8AC /* FNextPushId.m */, - E25D56E2AE9DF5D7E8862DDD3EA38BBC /* FNode.h */, - 1661E3FEE42630FE0B5236BB3F2577C9 /* FNodeFilter.h */, - FEFC2BB53EA3D8994C1ACC0F17ED92FC /* FOperation.h */, - 5A0D4812D5C0597A33010AEE9AFB843C /* FOperationSource.h */, - 4AC85087165273E9FAA51A309487E8F7 /* FOperationSource.m */, - B53AF1C2D84F65BD0ADB7381E127554D /* FOverwrite.h */, - ECA01B52E39D410FEB884E6293FC8829 /* FOverwrite.m */, - 88A4F67DE1A86BC644DF0C48A938B7BD /* FParsedUrl.h */, - 2F8CFA33148A22C836E8C5421FD1358E /* FParsedUrl.m */, - 91177B2C1BF38D47F96DBEAA6C4CAE9F /* FPath.h */, - B52D90179A83A1E66BD01DBF3B97164C /* FPath.m */, - 2DB2A085966F45C3A818CBC14047E6D6 /* FPathIndex.h */, - F176EEB98BF07589D0144F24E7D3649A /* FPathIndex.m */, - D56850E3C3D2BFCEC85080A7D98B6F05 /* FPendingPut.h */, - A56CAC7090FE7B4BD4B6F308D829EF06 /* FPendingPut.m */, - 1BAD6C9A418D41295BD5D6D9626A1DAB /* FPersistenceManager.h */, - B0EB9D0D0FE5ED106C8C90A441BFC53D /* FPersistenceManager.m */, - D70A40616A72588714BC21FC80946CBD /* FPersistentConnection.h */, - 15EC87D861893BB00E43B89933D8D2BC /* FPersistentConnection.m */, - E4A03006F0EFA373770B0E58C4AEAA1F /* FPriorityIndex.h */, - 98BC557003393E5B6A222C403A5E06FE /* FPriorityIndex.m */, - D01A95439B21FE07165AFA82B22A38BD /* FPruneForest.h */, - 57271B210AA779D7DCD08A4255A28720 /* FPruneForest.m */, - 774528B3F3430B49DD81A0CFFBBCE34C /* FQueryParams.h */, - AD6F935AF337404801EF7299D23DE75C /* FQueryParams.m */, - 2AD212F566EBB030D4D0C3FCE59BDBEE /* FQuerySpec.h */, - E1D3336AC1A1B76DCDCD4189EE26EFAD /* FQuerySpec.m */, - 703BDDC405CE8E05A570E64170F2A56A /* FRangedFilter.h */, - 8CFDA344EE6DBC20BA1B3C43707EC0C9 /* FRangedFilter.m */, - 2924F40BA1329BC6806BCD33605550AD /* FRangeMerge.h */, - E874A3930833716E7E68D7862DEF7520 /* FRangeMerge.m */, - E4570B8C7E368DD4DD267728B778CB3E /* FRepo.h */, - 5AED33C6E5E7F882974F37F687A259D8 /* FRepo.m */, - 6B69116847CD672F5FBFE5CA1DFE8BE7 /* FRepo_Private.h */, - 13DEB74003ED0A38243362A12E796250 /* FRepoInfo.h */, - C881E1AFAD816A9D3CE453848E45786B /* FRepoInfo.m */, - 403F1CA65D2DF40D5C0E923CA946D00B /* FRepoManager.h */, - 45A051CC54545D97B59C291534A1D1CB /* FRepoManager.m */, - C6398C5D1C3942760F749E8D98573534 /* FServerValues.h */, - 87C85E96D635FCAE4D9AE6E75721DDFD /* FServerValues.m */, - C5AEB5ECE1D2EACE276EB75163CF71EE /* FSnapshotHolder.h */, - 81EDD38A0060B334DEA96CA47D652562 /* FSnapshotHolder.m */, - 51C6DC0CE6EE32DBB86B38A970EA004A /* FSnapshotUtilities.h */, - 0377DDD8FA2E69276B2741A5A55C1E95 /* FSnapshotUtilities.m */, - CE7E7363C8FCB3A0EDFFA7EB43B370B3 /* FSparseSnapshotTree.h */, - 7B06A3465967CF33A3CC199936547FCF /* FSparseSnapshotTree.m */, - 6F474324356862E477F72648E392407D /* FSRWebSocket.h */, - 6486DA90003BF29BE5C7E6C3EC823CBC /* FSRWebSocket.m */, - 53A45680DF1A6981F49774BA0C52F49A /* FStorageEngine.h */, - B2B9E5A00C7EB75B2E5B9C70F8A3F5C2 /* FStringUtilities.h */, - FE6911E08C9C60005A1F832BBA21898C /* FStringUtilities.m */, - 63C81A5E1C52F5654076C17DAB39ECC3 /* FSyncPoint.h */, - 80A8CC83042D8324C7A06F123B197A9D /* FSyncPoint.m */, - 8A182903ADBE84DBC8D9404EC7E37BC3 /* FSyncTree.h */, - 05C498C49A32DA6585EBCBFD67B1A11F /* FSyncTree.m */, - AB3829D8AC7F13572C6781D8AA526776 /* FTrackedQuery.h */, - 9CC4B5172FBBB51FD79B4F660221EBEE /* FTrackedQuery.m */, - 4F046B1ECCAF349608951B6FEF96D73C /* FTrackedQueryManager.h */, - 7F5ED259268F12D89F28441E903186EE /* FTrackedQueryManager.m */, - CE37DFB9E42D0DA8E4C7BC9A7DB7A995 /* FTransformedEnumerator.h */, - 4C73AAF89E19AD8B6BB739BFB4772943 /* FTransformedEnumerator.m */, - BB93C4BC3FA69CFE9AF57869270B57CA /* FTree.h */, - 6BFEE871CFBBE8B140DCF7904F5E6EA5 /* FTree.m */, - A434CC6C6809654C06366391491ECAF9 /* FTreeNode.h */, - 0D529837A821AFCF926F27874ACC2550 /* FTreeNode.m */, - C64F69CF4FCDC501D724405FB5B9B11D /* FTreeSortedDictionary.h */, - 76A7B2317E7BFB917BD6FC7B8128A162 /* FTreeSortedDictionary.m */, - A6B3C7817D724A8A3302400BAB56D778 /* FTreeSortedDictionaryEnumerator.h */, - 1E31993E8C2DBBBA5813C268FCA75F52 /* FTreeSortedDictionaryEnumerator.m */, - 6C011302AADE803C99653794333624F3 /* FTupleBoolBlock.h */, - 6C34EFABCF8CB239462BA6490EDC257D /* FTupleBoolBlock.m */, - B91216E0F43DEC04683E6647D3A9D1AD /* FTupleCallbackStatus.h */, - EA0C9C5BAC8F1A23863BC4FB72D5AF62 /* FTupleCallbackStatus.m */, - 4D221017AB061F4FB8FF488CE9513AAA /* FTupleFirebase.h */, - 073D061194DC97B908EB2FFA562A2AB7 /* FTupleFirebase.m */, - 1C45751A5BA07489251DF56FA3C434A4 /* FTupleNodePath.h */, - 321E2CE1863C397239F21A2B7EB2C568 /* FTupleNodePath.m */, - 593B6C89872966E4FA108CE689CBD08C /* FTupleObjectNode.h */, - A22B0302CF4C8B9EF16E9411F53E2CA8 /* FTupleObjectNode.m */, - 360B1CE1375116C8D5A01EDF7C70D915 /* FTupleObjects.h */, - 3228708E5B58D25AAB313EA309F84449 /* FTupleObjects.m */, - 59AB8E05356D4530D27F43940B33DB45 /* FTupleOnDisconnect.h */, - DE74BA9A039AED146C805A3B335A5A45 /* FTupleOnDisconnect.m */, - F93AFAED2CAB8BE4703BC903FFD5999E /* FTuplePathValue.h */, - 5AFD917C105355EC1304F66D777BD022 /* FTuplePathValue.m */, - 0956F4B27D9C4B4CDAACF7E2732B439B /* FTupleRemovedQueriesEvents.h */, - DECAFEFD54355961D884C28EFB32AB6C /* FTupleRemovedQueriesEvents.m */, - 96A064E42F4DAAF2385416A19D627D1C /* FTupleSetIdPath.h */, - 412233D9181C6BAF1004CABE84CE904D /* FTupleSetIdPath.m */, - E593C16D643BACC5E4698D1EEE2F2042 /* FTupleStringNode.h */, - 59E6440908823817800B827396EA08D0 /* FTupleStringNode.m */, - 5257E36D799E88544790C001F9D2E3DB /* FTupleTransaction.h */, - 23D4A3FF5DBFCDACD0C419B55E3541D8 /* FTupleTransaction.m */, - 1AA7FAF474EB1EB3D0F6C5C5D30D54E5 /* FTupleTSN.h */, - ECDD3C59A0A1254B266D120502DBEE26 /* FTupleTSN.m */, - 295B5EDCCB25183E4AEE49DFA63DE530 /* FTupleUserCallback.h */, - A4F8C8B36C6A1D82C59F84E4E6CEA54B /* FTupleUserCallback.m */, - B8636D2B4EF08CCD366144BC9E047E5B /* FTypedefs.h */, - F57744E663AE1E78FE543630E9F2A139 /* FTypedefs_Private.h */, - C02827617ADFCC7B76ECFD4A586D4CE4 /* FUtilities.h */, - 638DAB50762126AF2B0062ECA7459CA2 /* FUtilities.m */, - 193B7FBB7A9C97AB0ED07793BB176DE4 /* FValidation.h */, - 70C317AAC76D178FE87D3ED351931099 /* FValidation.m */, - C4561E7A49EDD9FA4DB6BB3158DA956F /* FValueEventRegistration.h */, - 6E12A1D756DD76FACE71131D546095D0 /* FValueEventRegistration.m */, - 2D2A5A7F700CD01C27DA42AE076A7355 /* FValueIndex.h */, - F5DDED695B9F822AC7E55E13C7D37D21 /* FValueIndex.m */, - 909CF9BAE5B00C78CAE8FA1678360F76 /* FView.h */, - D3983151C53760A454F4ACE38FAF51F9 /* FView.m */, - 5E019C03F6D81056EDCC6E6727CC5C22 /* FViewCache.h */, - CB496417C83C32CC1293322F7690355F /* FViewCache.m */, - 56514FFC97467B4FF78779F66B4328D2 /* FViewProcessor.h */, - 66837E41AD88DE28BEF72385963ABB41 /* FViewProcessor.m */, - 570EED89545EE847A5FA7530B8E03517 /* FViewProcessorResult.h */, - 211A38F0BAF1590ED0F2AD7DA55D1820 /* FViewProcessorResult.m */, - ECBEB4A72237D43F4498046D719CAB0E /* FWebSocketConnection.h */, - BACEA4BDD54B2F58FD9318FB2730A299 /* FWebSocketConnection.m */, - A9947A1B156CF5409AA2D9B4C6B08F7B /* FWriteRecord.h */, - C9D1A710C3853E938F35FB78263C176F /* FWriteRecord.m */, - 49939A8FBCC02D977E09551F24F72189 /* FWriteTree.h */, - 1E2EA10FB892843677B9663F11006F50 /* FWriteTree.m */, - 7EA7A0350C9FACBB5B71CF716B8E2346 /* FWriteTreeRef.h */, - 2B57D55CAD7B15F7B131BC40D5C05E7C /* FWriteTreeRef.m */, - A556F2666E6DB22010E3776F333A5B5B /* NSData+SRB64Additions.h */, - CC09FE00F3820B1F81624F3E21A69DB2 /* NSData+SRB64Additions.m */, - 22F209035837CA954C3937D499BA3533 /* Support Files */, + 023DD0D1C923305C8AB775AB16154F7A /* GULMutableDictionary.h */, + 507F20DC0B1348EA5661820C9E8517A1 /* GULMutableDictionary.m */, + CFE0F950DE21EAAD6A6E12615EDA1608 /* GULNetwork.h */, + 6AFCE690970721A963DCA28123A6FFA0 /* GULNetwork.m */, + 645A519F82D777141DD6012C56592B78 /* GULNetworkConstants.h */, + 00E0C362DBAB7522CAF8692550B87352 /* GULNetworkConstants.m */, + 67180CA04893BAB29BD7E7B0E486150E /* GULNetworkLoggerProtocol.h */, + 225D1D84A56BD65445D95C2FA4F6F643 /* GULNetworkMessageCode.h */, + 3DFEAE7BC34411662E283597E9C0A476 /* GULNetworkURLSession.h */, + EFFCE391EAFB6F007DFD423BEBE66367 /* GULNetworkURLSession.m */, ); - name = FirebaseDatabase; - path = FirebaseDatabase; + name = Network; + sourceTree = ""; + }; + CEE2B08D20FF8CE7473AD7D50FC52C03 /* FirebaseAuth */ = { + isa = PBXGroup; + children = ( + 800A285036A1C72C13CE84856A6DF915 /* FIRActionCodeSettings.h */, + 9848DC38F61C072F9EFD459DC7F1D2E2 /* FIRActionCodeSettings.m */, + 960C042647A3ED6C8C00814EE00B41CC /* FIRAdditionalUserInfo.h */, + 3C250A1012E94B50B941142D6A25706B /* FIRAdditionalUserInfo.m */, + CBD0FC7BF8275E150CD0B01E5D7C3C57 /* FIRAdditionalUserInfo_Internal.h */, + 9019A686D2810C3BF4601AE0513C82AF /* FIRAuth.h */, + 03BD89E7CC2BEA46185ADB421AA9D268 /* FIRAuth.m */, + 1B5130DAE005652C131153373B074566 /* FIRAuth_Internal.h */, + 8B8C73044AF0FE20EF2301CE5E37B081 /* FIRAuthAPNSToken.h */, + 8390CAAFAA2B5B7F47FC0742BC409DC8 /* FIRAuthAPNSToken.m */, + 370069EE1992C0FA848E4FAA1CEF94F7 /* FIRAuthAPNSTokenManager.h */, + B061083E93348F25AD8454A90AF95B1D /* FIRAuthAPNSTokenManager.m */, + 7F0242E2488B47778EAF0B955381FEE1 /* FIRAuthAPNSTokenType.h */, + BE714588580A60CEC8BCC24FFBBB1CC6 /* FIRAuthAppCredential.h */, + 20E3BD16A5CBB39129D209EC02799FC2 /* FIRAuthAppCredential.m */, + E1C5490D15E8E9C6552EFDC1CE9EFA0E /* FIRAuthAppCredentialManager.h */, + AFF84D9DB30BDBB29D196044608B6709 /* FIRAuthAppCredentialManager.m */, + DA855AEEB54D36726188ABAB69F45570 /* FIRAuthBackend.h */, + 1FA59C26623D9F8F9CDE1F488830B294 /* FIRAuthBackend.m */, + C5E2DF89659131B98759E8ACB5590F54 /* FIRAuthCredential.h */, + 89A887688FA23EA660C1C65238C57A5E /* FIRAuthCredential.m */, + 04092C5B41E3A06BCDADE9378D70A572 /* FIRAuthCredential_Internal.h */, + BFABC8CEC73E272C69162ADE3CD09616 /* FIRAuthDataResult.h */, + AE5C7B4D8E7E7E47FE5FEF69CC1B2B06 /* FIRAuthDataResult.m */, + 6D2C7C15952893D5EA825B8BA44A6D68 /* FIRAuthDataResult_Internal.h */, + C60F8CAA0B93FD9C99AC4EEDDF2CD5EB /* FIRAuthDefaultUIDelegate.h */, + 4AD4B752DF2DA928435F3866BA819EDC /* FIRAuthDefaultUIDelegate.m */, + 13E0199B05E9B7DB1E665CBECF17E0A3 /* FIRAuthDispatcher.h */, + 5B9CFBBCB540068933DB1D0B466FA60E /* FIRAuthDispatcher.m */, + 60081811535884BC64B61144AAA55BA0 /* FIRAuthErrors.h */, + 908666ADE4FBDCFE74CF707F697378DA /* FIRAuthErrorUtils.h */, + D339920DDA4CE86D263FD3AC7A8CDEB8 /* FIRAuthErrorUtils.m */, + 70EB793A78384653BFCB7C98051B8665 /* FIRAuthExceptionUtils.h */, + 9E06A1EBDB24838B3CF520C2AE1D1831 /* FIRAuthExceptionUtils.m */, + B8E22EC0F5926794A07E3461D0B55C7E /* FIRAuthGlobalWorkQueue.h */, + 22DF7E43517DD24C74217D9C1DDC73EE /* FIRAuthGlobalWorkQueue.m */, + AF568C2BDFE5DA7F3BB888CBAB54FB50 /* FIRAuthInternalErrors.h */, + 22387CD5355F8179248244662B1E6EAD /* FIRAuthKeychain.h */, + B4D15B837FB823C09A304B128DFF48D9 /* FIRAuthKeychain.m */, + EEAE026D72736A8213FE655A02440501 /* FIRAuthNotificationManager.h */, + D4FFEA6FD881113D9263C10F0E9A4FA8 /* FIRAuthNotificationManager.m */, + 6E2F9203F1A40BC3FABB837D6456E0A8 /* FIRAuthOperationType.h */, + FD258AD86496B2B6B7342C5934F2F1B3 /* FIRAuthProvider.m */, + 6C9454906FABBA27AFC8FB43B50A7D4F /* FIRAuthRequestConfiguration.h */, + 9610649D5B7A1EF3E78027C64CC1F65B /* FIRAuthRequestConfiguration.m */, + B914889E114F0488A3BF44A9787815E2 /* FIRAuthRPCRequest.h */, + 7726B8A5EB71F990F78266CE9A5615DD /* FIRAuthRPCResponse.h */, + AAB4894CF3318CE7EA1A70A22F3A4E36 /* FIRAuthSerialTaskQueue.h */, + DE815E82153434B0700F29ACB65F045C /* FIRAuthSerialTaskQueue.m */, + 5D563D6BB4A5C51856E4CFB54B4AD255 /* FIRAuthSettings.h */, + A27FE471CDCEA372109072F776C8D6BC /* FIRAuthSettings.m */, + B3521801B91A5CF75EC528344B8D2A77 /* FIRAuthStoredUserManager.h */, + BB71CB2A1269390295C83916A638536D /* FIRAuthStoredUserManager.m */, + 02AD731D1132F99C1F91288672B7E1F9 /* FIRAuthTokenResult.h */, + 8E553B569C18DFA1AC66671B2799401C /* FIRAuthTokenResult.m */, + 35E8BA233A68904EAB3436AEDB9989A9 /* FIRAuthTokenResult_Internal.h */, + 4386737EBB0742D7CDA568A7437AEA6D /* FIRAuthUIDelegate.h */, + 664EC5306CF77A245F5C91B7925505E1 /* FIRAuthURLPresenter.h */, + 2E37C16442C566723A2F70A310AB2405 /* FIRAuthURLPresenter.m */, + A2D6E538ED4100E8E69220E9BF510E71 /* FIRAuthUserDefaultsStorage.h */, + C46BD3E9A3B45911099C3E9E86AE1FCF /* FIRAuthUserDefaultsStorage.m */, + 6DB3143C873A0A210FD68090F3166A0D /* FIRAuthWebUtils.h */, + 2B0FF2CEBCFA4F796A1EBD4DAB5CB476 /* FIRAuthWebUtils.m */, + 7F9BF1DE3F2AB72712538847DCC467FB /* FIRAuthWebView.h */, + 7146A95BAD635A6859AA10444471F301 /* FIRAuthWebView.m */, + 2F107E251B75890B91C3B6A59192B2C5 /* FIRAuthWebViewController.h */, + 56F46E70C63C9CBB205FCC9E75F1E3B4 /* FIRAuthWebViewController.m */, + D5FA0F8FFB172F36D623B335B827A630 /* FIRCreateAuthURIRequest.h */, + D2ABAC761081AD01AC92C51C5C9C334F /* FIRCreateAuthURIRequest.m */, + F8DAE815AAC1D460EF6E0B3613DFF6AD /* FIRCreateAuthURIResponse.h */, + AE90504A6FF7DB088266D730CA985014 /* FIRCreateAuthURIResponse.m */, + FFD643D3F704840F34C839384F691EFC /* FIRDeleteAccountRequest.h */, + 46E90D13F1E9D86C7B0C2A9F3C5DF111 /* FIRDeleteAccountRequest.m */, + D26725F1B56351CF328951B73016ACC5 /* FIRDeleteAccountResponse.h */, + 195F74E43FBD60AA31200764EAC912DC /* FIRDeleteAccountResponse.m */, + 6C236FFC4A99909AFB99AF736F33E348 /* FirebaseAuth.h */, + AC34CFC19FACD073DEF0F301269EFFAC /* FirebaseAuthVersion.h */, + 2503917FB14F54ED00FED5021A19A127 /* FirebaseAuthVersion.m */, + 1575BDC8A44D345110381020E5A4D9D4 /* FIREmailAuthProvider.h */, + 1AF8487CBD0C3D0EB12AC4C5178FC94A /* FIREmailAuthProvider.m */, + 5F9A796BDA5E22A8B72A206AA04EF4BF /* FIREmailLinkSignInRequest.h */, + 9D6948FE6F5CCA55283F677AC65538E8 /* FIREmailLinkSignInRequest.m */, + 490392EDD7627268C9FAB7A24624D6D8 /* FIREmailLinkSignInResponse.h */, + C8DC72B67236FE29F3D8728B02665927 /* FIREmailLinkSignInResponse.m */, + CDF533775B27567B4BCE480F3F3B4ED6 /* FIREmailPasswordAuthCredential.h */, + 59A3946729DF8775EAD48A7F5AF4E89D /* FIREmailPasswordAuthCredential.m */, + 6649521C65EC8F74445299C949873B45 /* FIRFacebookAuthCredential.h */, + C3FA7E866B1EC7FA6827C6C60BAF40FB /* FIRFacebookAuthCredential.m */, + 7FFB1CFCB7AE208F8D3D089B15488C60 /* FIRFacebookAuthProvider.h */, + 04CC66527610E0F4792534447F173128 /* FIRFacebookAuthProvider.m */, + E2D15F0B18D5D45392A1F8048F3D846A /* FIRFederatedAuthProvider.h */, + 75B7CC37B985F7F6F55F9778EB00A93C /* FIRGameCenterAuthCredential.h */, + 686AA38529DF6CBAA5527903BB3713C4 /* FIRGameCenterAuthCredential.m */, + 2FC1BAB4346FFC3D7FFD8CC78684A7BA /* FIRGameCenterAuthProvider.h */, + E27450E8F1F772EAB21DF4C39794A794 /* FIRGameCenterAuthProvider.m */, + 6D73C6130D8E71B19C986DBFE56AA389 /* FIRGetAccountInfoRequest.h */, + 8086BDCAF2450AD0C34B61108E12D23E /* FIRGetAccountInfoRequest.m */, + 98CC55D7B263D085C9BBC58494F20747 /* FIRGetAccountInfoResponse.h */, + 71322847B812F2A6A11C8438E0D4E832 /* FIRGetAccountInfoResponse.m */, + 92BCC7C0CEAEC882638A0FE6B84F7795 /* FIRGetOOBConfirmationCodeRequest.h */, + A351360A70B2429BF18A09C253255DCB /* FIRGetOOBConfirmationCodeRequest.m */, + 90533111C976BBF06981B4890E7646AA /* FIRGetOOBConfirmationCodeResponse.h */, + 47E38B24558AFB84F5A3086CB7B260DD /* FIRGetOOBConfirmationCodeResponse.m */, + 24C1163079140A22BC6616E81337DD90 /* FIRGetProjectConfigRequest.h */, + B3BBD37B5E9B1529005D5D42DD140EE4 /* FIRGetProjectConfigRequest.m */, + 6E4A4C75D82451B16C6FDF75CABD9C76 /* FIRGetProjectConfigResponse.h */, + 0EEF51ED1F7DDDCC6F039921EE80ABA0 /* FIRGetProjectConfigResponse.m */, + D38E5B0DBCD3127BFE2F9E6AADAAAC01 /* FIRGitHubAuthCredential.h */, + ABC2F525B1D8FBA1007C328A16898AF6 /* FIRGitHubAuthCredential.m */, + 844C21BAF3D357863CBABB78905C2C0F /* FIRGitHubAuthProvider.h */, + 2D7969C0322A3552E87D408FFD4DA638 /* FIRGitHubAuthProvider.m */, + EEBF1CFF356039410AAD67E17DD212A8 /* FIRGoogleAuthCredential.h */, + 4D0C3BE5FF13129641494D44A5B3A232 /* FIRGoogleAuthCredential.m */, + F1EE2AE40C752B25929EDF168CDCE1B3 /* FIRGoogleAuthProvider.h */, + 01EC900101CCA4D1956B581D912FF8F3 /* FIRGoogleAuthProvider.m */, + 2BC2CC7E0AAAD019C6DF01B2C24A92E5 /* FIRIdentityToolkitRequest.h */, + BC6519253F5B94D10F2249F7B15002CF /* FIRIdentityToolkitRequest.m */, + 8ECDABF9AB0CA8F83D4590424B20E0D7 /* FIROAuthCredential.h */, + F794984E472BE48555F62A6478B247AD /* FIROAuthCredential.m */, + 57D159C5054D0173F0D35B3E8C1BB029 /* FIROAuthCredential_Internal.h */, + A098A33F61A9A31C1F8A8C386C2D0717 /* FIROAuthProvider.h */, + C84980C673C3EEC7200D01D3CB1D6D84 /* FIROAuthProvider.m */, + A4DF10D039847B43CD017433A846BE65 /* FIRPhoneAuthCredential.h */, + 09A324045A31C8ADF8BB77597A9D589D /* FIRPhoneAuthCredential.m */, + 6FF972AF8902F39BEB6F97A7C7CBBEEB /* FIRPhoneAuthCredential_Internal.h */, + 630B3A7577F58B1A9F241E39E3866FDD /* FIRPhoneAuthProvider.h */, + B11DA717C549EA2743BF5B52DCA1451F /* FIRPhoneAuthProvider.m */, + CD256CDB941E2C07A42C3210CCDEBA19 /* FIRResetPasswordRequest.h */, + 1C7788A344601E23B059C945E29BE4BE /* FIRResetPasswordRequest.m */, + B173555413A897913F96AC06E1A920CD /* FIRResetPasswordResponse.h */, + 3566036C291C62F3116EDC651745054E /* FIRResetPasswordResponse.m */, + 9445A295A5DAAF312B3015CA3966FA7E /* FIRSecureTokenRequest.h */, + EF0F1B2565A2FD3D55B18F997286577A /* FIRSecureTokenRequest.m */, + 38E5895CFB3AA2C62927A8566D4688AC /* FIRSecureTokenResponse.h */, + 4DE456E7946A4CFB47B05FFE4B21FF7A /* FIRSecureTokenResponse.m */, + DE5D6EAAAA8E630514B9684970ECC656 /* FIRSecureTokenService.h */, + 39D7D8A8552A0CF9834F3135FA02393C /* FIRSecureTokenService.m */, + 88B865ECBDCF736FA92084EC45816DD3 /* FIRSendVerificationCodeRequest.h */, + D3E6245AA639DD4F79E02234362A5337 /* FIRSendVerificationCodeRequest.m */, + 490560DE597BE490978CE844C20F8A7B /* FIRSendVerificationCodeResponse.h */, + 9C18287BBE1F9EE7CADB21C90C0736BE /* FIRSendVerificationCodeResponse.m */, + A41FF1A78EECBB87CA75CE6ECE23D234 /* FIRSetAccountInfoRequest.h */, + DBFAA6B0C183685BBD97B3344B4DBF10 /* FIRSetAccountInfoRequest.m */, + 628EED77FDF2A3178C9CDCA9EA834116 /* FIRSetAccountInfoResponse.h */, + AA289684F1112D0416DEC76337B8E5F2 /* FIRSetAccountInfoResponse.m */, + 7F92614552A752024142C08FA27BFB18 /* FIRSignInWithGameCenterRequest.h */, + 75851C3EA0A56EB53D95CC2A2960DF4A /* FIRSignInWithGameCenterRequest.m */, + 457309B50CCB34B4EEB16D3EBCD63CD1 /* FIRSignInWithGameCenterResponse.h */, + 90C023251D69063DF88D89CF04B38F98 /* FIRSignInWithGameCenterResponse.m */, + BE2B79861C8A2D3D6086F79F54A1EB77 /* FIRSignUpNewUserRequest.h */, + 38C38B6A2308DBD49EEF3B1904EBAA30 /* FIRSignUpNewUserRequest.m */, + B218C6A133EF5CC9F3B50BCF89EDA9FD /* FIRSignUpNewUserResponse.h */, + BB9E2AED6FBD522A2CE5F863C5F5514A /* FIRSignUpNewUserResponse.m */, + 42D77715F9EDCB8201ECF4D6952952EF /* FIRTwitterAuthCredential.h */, + B9E0EEA77A2125568369F3B4E4EDDBAD /* FIRTwitterAuthCredential.m */, + EF8EEBCF50D02BE154F4537D7561E4A2 /* FIRTwitterAuthProvider.h */, + 1CBF42CF5566A3ADFBB7380739A0B453 /* FIRTwitterAuthProvider.m */, + F931337BE5651F984D5264DDE741E1B0 /* FIRUser.h */, + 0FEF3A5DDD2A1096864DECC4938C56B0 /* FIRUser.m */, + 4C46FD680D471DE9583EB8462F8077E0 /* FIRUser_Internal.h */, + 3363F73C45183AA1BF9BDFFAF760A816 /* FIRUserInfo.h */, + 27711488C990A49FF4BC68D445A6DDB0 /* FIRUserInfoImpl.h */, + 492667D699F038B72A09DC04D580E502 /* FIRUserInfoImpl.m */, + D54414200B3958A4605308DBABB25B0F /* FIRUserMetadata.h */, + B6659701BEDFDF94D55A2E5458223DEC /* FIRUserMetadata.m */, + 759562FE71043082EA077DA28A7CB242 /* FIRUserMetadata_Internal.h */, + 3245CC589AB66688DD8D9A321384622F /* FIRVerifyAssertionRequest.h */, + 1BF22DCBA175A4378C2A97D6F8D36713 /* FIRVerifyAssertionRequest.m */, + 4A4075EE8ADA74E0BFFE03C0A7A5AC19 /* FIRVerifyAssertionResponse.h */, + 98ACC074E83B832BCA32A28F224DE4BE /* FIRVerifyAssertionResponse.m */, + 6904EF655B10B7DDA3AF6646796C4228 /* FIRVerifyClientRequest.h */, + F1C0555D01E4856884BC963BDC4FDE63 /* FIRVerifyClientRequest.m */, + 168A0ECC159152FA1BC6C8BB145C89E7 /* FIRVerifyClientResponse.h */, + 0D9092922C18E590E576855651B47CA0 /* FIRVerifyClientResponse.m */, + A8B5308D9192D7E880BD61D63B04D6B2 /* FIRVerifyCustomTokenRequest.h */, + 2E10B8CBFE9FB895BBF4417165F81CCB /* FIRVerifyCustomTokenRequest.m */, + 3E78C4F1EC10ED9AF2331B2325B87B47 /* FIRVerifyCustomTokenResponse.h */, + 15B25C69C90955FF88947196A3AFDD6C /* FIRVerifyCustomTokenResponse.m */, + 4AE3964A18882BDF14E35D26690C023F /* FIRVerifyPasswordRequest.h */, + AC0CACDC3D144446C0DB8CFDAE09CFF9 /* FIRVerifyPasswordRequest.m */, + 01DFF38291F51A03FC2D066546D96984 /* FIRVerifyPasswordResponse.h */, + EBF2291F70755348E2D5441C87E242AB /* FIRVerifyPasswordResponse.m */, + 5A59EA50E30FBB945002961FC06E4138 /* FIRVerifyPhoneNumberRequest.h */, + A5AEDDD63CE7C0CD93035E3FC6A6E828 /* FIRVerifyPhoneNumberRequest.m */, + B3D72BF360EC0A16FA31CDF18D8453DB /* FIRVerifyPhoneNumberResponse.h */, + 404C184F4A19986FF60DBDE97D252565 /* FIRVerifyPhoneNumberResponse.m */, + 087462F890EA07A514AE5B19CFEACFBC /* NSData+FIRBase64.h */, + F48585DCE51682F2C6A18945895BD823 /* NSData+FIRBase64.m */, + 2BC51778AAAA90826D755E4EE0167F40 /* Support Files */, + ); + name = FirebaseAuth; + path = FirebaseAuth; sourceTree = ""; }; CF1408CF629C7361332E53B88F7BD30C = { @@ -2948,58 +3785,133 @@ children = ( 9D940727FF8FB9C785EB98E56350EF41 /* Podfile */, 81BEE8583CB2BFBE2E9AD63426388EB0 /* Frameworks */, - BC2788E46B4F7C9A57483528828A4E4D /* Pods */, - 26AEDFFA121DA96AAEB1F4990E2EA686 /* Products */, - 1070B38EA164720AC3D65EE8CBD90D7E /* Targets Support Files */, + 74A0A39674441FA08DE2840184AE3935 /* Pods */, + C80BE119C5AFD04375E68775AEF82D1D /* Products */, + EA4205595F80CB5C8F13305CF9B7268D /* Targets Support Files */, ); sourceTree = ""; }; - E6C8A990A4F984756D3B7C08F4FE9DE8 /* Headers */ = { + DE9C2BEBDBA0743DE2A37442D5FC1CB9 /* Support Files */ = { isa = PBXGroup; children = ( - E0EAE40F22B9636DEA4D7400330F2622 /* NSError+RLMSync.h */, - 1A2481DACFF8B25080AC675078AA9854 /* Realm.h */, - 07494D9319896DC230E1E6E753B2057D /* RLMArray.h */, - A499F6893A04608DC60141646FDE36F7 /* RLMCollection.h */, - 9D045672218BD8A4309A41E3B34BF366 /* RLMConstants.h */, - 9BF6AC03DA6DD95107B1920EC6ECCE2F /* RLMMigration.h */, - A4AF2035141DF1584A2FCAFE8F64D88C /* RLMObject.h */, - 7942954AE22002E8BCC798DDAB414DF0 /* RLMObjectBase.h */, - 245AEE12E9DD59A61D7FB118B8520137 /* RLMObjectBase_Dynamic.h */, - 0A7BA7EC41A68FED52F0B766B16850E1 /* RLMObjectSchema.h */, - DAFEA2D6B681E5C02DDB71702A8E1FFE /* RLMPlatform.h */, - F35E730FB06ECB2418569BB95F3A5BD1 /* RLMProperty.h */, - 2D455ECD9391388C7F23E7AEAB1DD490 /* RLMRealm.h */, - 95AB6CD34FBFFF81FD20C63CB991FB3C /* RLMRealm+Sync.h */, - B83BFEAE0F3F683626A7D9A05650D07F /* RLMRealm_Dynamic.h */, - 5FEB8EFE990E3AECCDA179E17742174F /* RLMRealmConfiguration.h */, - 595D941028421AE2555618A08AEE4B69 /* RLMRealmConfiguration+Sync.h */, - 9843BC20AC2ED23810EDF684637C15C5 /* RLMResults.h */, - 829624137DE06741D18AC3911DD3D243 /* RLMSchema.h */, - BC9E409369D99CD85D16327025FCE939 /* RLMSyncConfiguration.h */, - 41E535603585A6792F57470F8FE246D7 /* RLMSyncCredentials.h */, - 2A93CA792659C6696C79342357059587 /* RLMSyncManager.h */, - B97D20AB8D7A1D8E6A813743AE731ECB /* RLMSyncPermission.h */, - E12F0AFFFCDB303E55E84E9398F43435 /* RLMSyncSession.h */, - 0B99E3092D6E6ED88EA4D75706BE1FCE /* RLMSyncSubscription.h */, - 0F0030D3F3857B4FD841715519213499 /* RLMSyncUser.h */, - FCCDBA4C00C13320C4B739A41B8DF480 /* RLMSyncUtil.h */, - A4FF28B17689447E1E0477D1AA932149 /* RLMThreadSafeReference.h */, + F9FBC15B2889C9585713CEDD70ECC742 /* GTMSessionFetcher.modulemap */, + 779941B0AB7179D76E9AC94F155A0F35 /* GTMSessionFetcher.xcconfig */, + 5A891F7EBE4968C13DFF186CA8B491CD /* GTMSessionFetcher-dummy.m */, + C614A4CBBEC838E353127FF4B0840795 /* GTMSessionFetcher-Info.plist */, + DEA2DC39E1EFD567940823DBD9244425 /* GTMSessionFetcher-prefix.pch */, + 7616DE9DE5B4E2CB76343B48A1DAD676 /* GTMSessionFetcher-umbrella.h */, ); - name = Headers; + name = "Support Files"; + path = "../Target Support Files/GTMSessionFetcher"; + sourceTree = ""; + }; + E67A715703783A659A2D90EA7D8598B0 /* SwiftyJSON */ = { + isa = PBXGroup; + children = ( + 00773D5CC228627FAB88FDD59074541D /* SwiftyJSON.swift */, + 4F0E5DC249506089BD1E4890B95FDA94 /* Support Files */, + ); + name = SwiftyJSON; + path = SwiftyJSON; sourceTree = ""; }; - F83AF60039E208E8FD602B2AC5CD94FC /* Support Files */ = { + E97E03AF3FE4BFA9D5F4D36170E898D8 /* Support Files */ = { isa = PBXGroup; children = ( - E387039809B580B0DA4DBE435D03CC50 /* Realm.modulemap */, - 9693A32E3D3AE4A6A64D89F5FE5C6842 /* Realm.xcconfig */, - 6B29E92CB2178FD9BE0EA04127DF77D2 /* Realm-dummy.m */, - C03456C7CEF32940EDB46833E8A638AC /* Realm-Info.plist */, - A519D3E35D7CAE8C0799448FD236C4BC /* Realm-prefix.pch */, + F251286296ED597D07078468E189E282 /* FirebaseDatabase.modulemap */, + 626FDD0CFA426DC8302A661DFCEABD02 /* FirebaseDatabase.xcconfig */, + 080AC7491E280EAB86A811398B37F5C6 /* FirebaseDatabase-dummy.m */, + 42ED19B2BFB9A012FD3D23967FCC50A7 /* FirebaseDatabase-Info.plist */, + 8F186BFBD23EE125311E4AB45F99CF84 /* FirebaseDatabase-umbrella.h */, ); name = "Support Files"; - path = "../Target Support Files/Realm"; + path = "../Target Support Files/FirebaseDatabase"; + sourceTree = ""; + }; + EA4205595F80CB5C8F13305CF9B7268D /* Targets Support Files */ = { + isa = PBXGroup; + children = ( + B4209F4D085B6189A858857BC8F239EA /* Pods-shlack */, + ); + name = "Targets Support Files"; + sourceTree = ""; + }; + ED1F65B6B48044328CCB90375EF4D1FD /* nanopb */ = { + isa = PBXGroup; + children = ( + 0730349534BA7B9D9A5C37F77674AF46 /* pb.h */, + A25400298CE5C60EC7610EFADE099C6C /* pb_common.c */, + B9E600C3F2886823112F339CB91B92F5 /* pb_common.h */, + B86D8C22D13DB5E9A4ED3828066031EB /* pb_decode.c */, + 279CB81B9B2115067EA7B522C967994F /* pb_decode.h */, + 117845BF0C4203B1C750E58B03D1BAC3 /* pb_encode.c */, + 4B97D98041083CD171AFCE0FCC1D19B2 /* pb_encode.h */, + 861BF217A81106E830F8B3D05DDD7FB6 /* decode */, + 9323E62E9A917B36A738F48A03DA5181 /* encode */, + AFAA15ACF1E5E34D4C9437E3C1BFF578 /* Support Files */, + ); + name = nanopb; + path = nanopb; + sourceTree = ""; + }; + EE19AEE2CCF4BA591A535C9905ACDD4C /* GoogleSignIn */ = { + isa = PBXGroup; + children = ( + 3D475F5EB05A9F6EC701E34FF5AD6ED5 /* Frameworks */, + 49B2EBDAB70BAE22697E41212A7313ED /* Resources */, + AA55215952CCA9DCDE6E989339E9E214 /* Support Files */, + ); + name = GoogleSignIn; + path = GoogleSignIn; + sourceTree = ""; + }; + F332052B35FE7B258BE93A7D0B203BF4 /* Reachability */ = { + isa = PBXGroup; + children = ( + 816C47B14540E922562B2F7A0AF25684 /* GULReachabilityChecker.h */, + F8F39F1A7C8B8CE24E3D0CD384E63027 /* GULReachabilityChecker.m */, + F70514697574A528AFF8943BE38EB4AB /* GULReachabilityChecker+Internal.h */, + 0279DEEE679C99CCA995259CC53378C9 /* GULReachabilityMessageCode.h */, + ); + name = Reachability; + sourceTree = ""; + }; + FA3A970AC04F4AA7313D248A79FDAE19 /* DebugUtils */ = { + isa = PBXGroup; + children = ( + 89D494CBC93A35AE9100DDC587C9AB05 /* GTMDebugSelectorValidation.h */, + 838C6552858C245D9560D7948DAFC057 /* GTMDebugThreadValidation.h */, + D39DCF3ED077FEA3B7C06ECEEB763966 /* GTMMethodCheck.h */, + ); + name = DebugUtils; + sourceTree = ""; + }; + FCED79215E1ECBB05161D4559BA9229A /* Support Files */ = { + isa = PBXGroup; + children = ( + 9F1F07FA7481BAC45217E47C31186BB9 /* GoogleToolboxForMac.modulemap */, + A652FE56D57C99A8508C105821FCD649 /* GoogleToolboxForMac.xcconfig */, + 39F36EB7E6D9A494ADEFB648FCC6AF40 /* GoogleToolboxForMac-dummy.m */, + 78A07F0120465584ED28394F01E823E1 /* GoogleToolboxForMac-Info.plist */, + 57BD8B51062386C46B011BCA0E999DB8 /* GoogleToolboxForMac-prefix.pch */, + 733D2C3DCAE532480631343DF2DE5F8C /* GoogleToolboxForMac-umbrella.h */, + ); + name = "Support Files"; + path = "../Target Support Files/GoogleToolboxForMac"; + sourceTree = ""; + }; + FD72498DC1A698F63AE6B73DD2D9049C /* Support Files */ = { + isa = PBXGroup; + children = ( + D34BBBCFB3C8DC90D303A4833D36F87A /* RealmSwift.modulemap */, + EC0CE3B29E2BEF9317F430A14A80F888 /* RealmSwift.xcconfig */, + A51683E4164EB54C25E8A31D5FD9FA8B /* RealmSwift-dummy.m */, + A061C4B2E6C6AA3A233B91A05306DD75 /* RealmSwift-Info.plist */, + 1480955E8FC67E078F64F107FC531AB3 /* RealmSwift-prefix.pch */, + 9F8A2E993F402BE9C680DF4865AFA38E /* RealmSwift-umbrella.h */, + ); + name = "Support Files"; + path = "../Target Support Files/RealmSwift"; sourceTree = ""; }; /* End PBXGroup section */ @@ -3013,200 +3925,142 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 29F4FFB36493F1B77BA2FE58D182BC54 /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - 9726B20B629706FA8007DB0539408BC5 /* GoogleUtilities-umbrella.h in Headers */, - 20D2ACB4361E2A08BB19E5FBA9421922 /* GULAppDelegateSwizzler.h in Headers */, - EB72DC3EC8469C99153A2D356E3AF776 /* GULAppDelegateSwizzler_Private.h in Headers */, - 30FA0E2D46C6E748397A94268874E270 /* GULAppEnvironmentUtil.h in Headers */, - D5C6B1A5953523D0D1061C96362F8820 /* GULApplication.h in Headers */, - B40624BBA51918F5221CE96FCAEDDE54 /* GULLogger.h in Headers */, - 02E5202F634A49C7389469E643BC7C72 /* GULLoggerCodes.h in Headers */, - 8242A72F4B8C8E1C114E482B4541E20F /* GULLoggerLevel.h in Headers */, - 1A0FAB32FF2EA8DD04F21306E3BB24ED /* GULMutableDictionary.h in Headers */, - CCECB1C5AF286721208F891D3C668A2E /* GULNetwork.h in Headers */, - 905B93A515F018DDBDE80FD872DAF0BC /* GULNetworkConstants.h in Headers */, - 30344056A02C99E86A1D59E053E59C11 /* GULNetworkLoggerProtocol.h in Headers */, - D7F0D2452384C396F63E5A78470B1035 /* GULNetworkMessageCode.h in Headers */, - 9C69329A9E4C5A2558679592ECF269DB /* GULNetworkURLSession.h in Headers */, - B99BBE8270A6A7D0BBD5140BFF24F6B3 /* GULNSData+zlib.h in Headers */, - 4080010AB6135A7A1A819611ACC23777 /* GULOriginalIMPConvenienceMacros.h in Headers */, - F95A1B7FAA6EDCFA7E6B59C759A2D137 /* GULReachabilityChecker+Internal.h in Headers */, - 07BF0C352A5E42162EEC15698A50B2DA /* GULReachabilityChecker.h in Headers */, - 0EE42245E106C5A5E105A78B15B801B9 /* GULReachabilityMessageCode.h in Headers */, - 1EE0A2195499958D9E20D04E9D69490E /* GULSwizzler.h in Headers */, - A55ECCCE090A9901C2C18BC8680BC227 /* GULUserDefaults.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 2D6D4C4F606C303B4DC6976367144DBE /* Headers */ = { + 201748E996A196F1B2A5D14B0976DB58 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - BA81227041AB29C9C59B46E2AD30CF5C /* APLevelDB.h in Headers */, - 865223A402543238B142F54E0CC704C1 /* FAckUserWrite.h in Headers */, - 2611134890F39153D53E85E22CC94D76 /* FArraySortedDictionary.h in Headers */, - 42542065ED59364C2DD90417D7157E7F /* FAtomicNumber.h in Headers */, - 0A396C7F83D1C18BCE1E32C9B0200B96 /* FAuthTokenProvider.h in Headers */, - EA3F2D65D8B8D3075E037ED5706AD660 /* fbase64.h in Headers */, - D37E73F03077BA5CFBC58965DDF89E80 /* FCacheNode.h in Headers */, - 4ED2955C86A5C26309952FF8FFC09569 /* FCachePolicy.h in Headers */, - 03F771627DD26DE3A46A3A0AA9238D96 /* FCancelEvent.h in Headers */, - F1CF64AB22A45DD7A4ACCF5B6D5CFAA5 /* FChange.h in Headers */, - A7CB993D569BC43F150B2DD794A57E76 /* FChildChangeAccumulator.h in Headers */, - FBDDD54632922897706042348C5264B0 /* FChildEventRegistration.h in Headers */, - A56FD686C400F83D7827CA2AE781F2F9 /* FChildrenNode.h in Headers */, - 877A82D57495B03675001EDD5F992FDA /* FClock.h in Headers */, - 335794B41F65E19C1872A69C350EA142 /* FCompleteChildSource.h in Headers */, - 04D9EEB121FAFA473B84577842DE28AA /* FCompoundHash.h in Headers */, - 9CD834F1AF935270B890BA341CA08CBB /* FCompoundWrite.h in Headers */, - 6CB0FB8CDEBA44EA97F54C01AC1D5EA3 /* FConnection.h in Headers */, - 1C2516CB0209BB6C75307C0FF8392883 /* FConstants.h in Headers */, - 167D0E24C4EB049C4651FD62969846AE /* FDataEvent.h in Headers */, - 087C55FF14BBD7924D2604E362E05E2B /* FEmptyNode.h in Headers */, - 6B4D5A61549502A1A5A033028F44FB03 /* FEvent.h in Headers */, - AE0E3346877C8D3DDAFE7CE8D0F595F5 /* FEventEmitter.h in Headers */, - BBC0AACCCDBBC8CA76718C2EE0E1E44A /* FEventGenerator.h in Headers */, - 2999DE7CB85A63BA6EAE75A0D6E7E701 /* FEventRaiser.h in Headers */, - BC71D66AA194EABC5188F55A969EDA43 /* FEventRegistration.h in Headers */, - 69D81130D8B7B9D7748BC1A9A8FD268D /* FImmutableSortedDictionary.h in Headers */, - 92FB390E9E6955EC5AA928ACBF8C78BD /* FImmutableSortedSet.h in Headers */, - 3AF47855221B8317A519B7089F5B7962 /* FImmutableTree.h in Headers */, - 8A4F0BDF204FDF791CEBC681038BEDC8 /* FIndex.h in Headers */, - 471980AEC51B1D14E068B57ACD4D5F04 /* FIndexedFilter.h in Headers */, - 3ABA3B497CD34014B40A742D3513F1AD /* FIndexedNode.h in Headers */, - B0A4CD547FC897EAF040F0BA4678CE52 /* FIRDatabase.h in Headers */, - 969AAAE7A07E4BF8FAF311DB24B9CCFA /* FIRDatabase_Private.h in Headers */, - 4C8DC5BA6AEFBABEAC2BA78ABD76C05E /* FIRDatabaseComponent.h in Headers */, - FC64278EBB2D553FA002035E06834E7C /* FIRDatabaseConfig.h in Headers */, - D6FB5EAE6DA7E3D7BA463BC4B50C9EC0 /* FIRDatabaseConfig_Private.h in Headers */, - E1DDF9D8AA9539216D0B192D480B0DF3 /* FIRDatabaseQuery.h in Headers */, - 82E23046F043EDDE41FF879C5E81CB2A /* FIRDatabaseQuery_Private.h in Headers */, - 509F33BADA937F1FA75BE86611E08911 /* FIRDatabaseReference.h in Headers */, - E986ED3BC90614CFA3534C6BA1058EA0 /* FIRDatabaseReference_Private.h in Headers */, - E35D6EFB453EB460D8A523FE4E0B3F38 /* FIRDataEventType.h in Headers */, - 9F0F8AAD6CCBE7182BF318ED1CA88F3F /* FIRDataSnapshot.h in Headers */, - 3714B6A3B2108658EDD63F97A6F25291 /* FIRDataSnapshot_Private.h in Headers */, - 8BFCA8C54D6CCCBA9C872CCFF9B2A6F8 /* FirebaseDatabase-umbrella.h in Headers */, - A3C87A043886D3BF5ACC8414B77771EE /* FirebaseDatabase.h in Headers */, - DF55CC21D55E0C4FCF28F49DA032AC4A /* FIRMutableData.h in Headers */, - 8CC21B72E7F7E7AFAF3E93DD08B5478B /* FIRMutableData_Private.h in Headers */, - 89DBDFDBC60677DB58E108B7E0FB80AA /* FIRNoopAuthTokenProvider.h in Headers */, - CC4509E5F4073C7ADBC9D40396CDA58B /* FIRRetryHelper.h in Headers */, - 9AD6029ED89AA028361A0A4A0DAF7E98 /* FIRServerValue.h in Headers */, - 6CB1633C99EB08C62B0EEBB2FCC37928 /* FIRTransactionResult.h in Headers */, - 2435103B6E32D5B5A5E612755C06DCCE /* FIRTransactionResult_Private.h in Headers */, - 53CECFA59A5B245E70074845D4780B9E /* FKeepSyncedEventRegistration.h in Headers */, - B54AAF339502800C6F39457FE3960E31 /* FKeyIndex.h in Headers */, - 59C1A5BCD90F5014BB332BE28207B49E /* FLeafNode.h in Headers */, - 3E402733BBC6CB51F219ACA5C74ACAFC /* FLevelDBStorageEngine.h in Headers */, - 03F01BC83070ABBD518F5AA17D4DCB40 /* FLimitedFilter.h in Headers */, - 604A6E676D3E9F0B60D498B29087440F /* FListenComplete.h in Headers */, - 5D574DE590E3828C62C092888E7BD04E /* FListenProvider.h in Headers */, - 62BC8EE3772D71C39FB6F17E0C02FDB5 /* FLLRBEmptyNode.h in Headers */, - 3C2CAC2C64AC199613434D9712AB67CD /* FLLRBNode.h in Headers */, - AFEDA85C2ACE6902C5CA86036E2D1B20 /* FLLRBValueNode.h in Headers */, - BE896A5DDFD39DBEEDE89C02C6D2E4FC /* FMaxNode.h in Headers */, - 0BFBD5419A81C51C524FE08FC0E3F3EE /* FMerge.h in Headers */, - 00EDAEC0ECFF39FEC894E3A5CD68E307 /* FNamedNode.h in Headers */, - 845714625E3473FE314FFC542B720ACE /* FNextPushId.h in Headers */, - 6916DB010C26CB84795B779931BCC477 /* FNode.h in Headers */, - 869817FC3DE2BAA4B7A06F2BD17137D6 /* FNodeFilter.h in Headers */, - 0DA6A4EBE519B3DE88E0E007577BDAE8 /* FOperation.h in Headers */, - FC59BACAD99E5424954E9281DCDEB028 /* FOperationSource.h in Headers */, - 6F318885B392F65A5B1ABE15D11E5E54 /* FOverwrite.h in Headers */, - 772DE42A9C5A47247E8D29118F0F1618 /* FParsedUrl.h in Headers */, - 6DC14A98DA70552D1F41941379E1C12F /* FPath.h in Headers */, - 4E2B9CC4DC53413EFD971C628FEBC58B /* FPathIndex.h in Headers */, - E3C9B29A2D69D6BABC0CA201BD468665 /* FPendingPut.h in Headers */, - 04FCBCEA9CCA44E9E2F7122847E00864 /* FPersistenceManager.h in Headers */, - 48279784E05FCDAA6A1AC5FDD4BC5EE4 /* FPersistentConnection.h in Headers */, - ECDE82202A3862051B9B7CB6D5B4E3FC /* FPriorityIndex.h in Headers */, - 7F170BA72C35DCF119134104398EFB11 /* FPruneForest.h in Headers */, - 942656920C39F8D9A85B8BBFE965446D /* FQueryParams.h in Headers */, - DE5F44DAECF248CE9C781B2C1E462F75 /* FQuerySpec.h in Headers */, - EE676F7DB6F01DF5BB726B0B49B09D60 /* FRangedFilter.h in Headers */, - DD0D2B219445705DFFEC30E53B90CE3B /* FRangeMerge.h in Headers */, - 448F087F0DC22F891D5C3815CD4FD089 /* FRepo.h in Headers */, - A6801ADAA631C909DB0EF52A19E3A2D9 /* FRepo_Private.h in Headers */, - 42A4E95D960E07E9141C6ADE411F9B59 /* FRepoInfo.h in Headers */, - FCAD17281B08C0CAEF51C89DFF306766 /* FRepoManager.h in Headers */, - 92016BDC3C9C896AA3455626CA5FF37F /* FServerValues.h in Headers */, - A197A576946A28350D93810CA9590805 /* FSnapshotHolder.h in Headers */, - FBF07D649518FB33E6E57ED937D4138A /* FSnapshotUtilities.h in Headers */, - 79C2937BB9C843004E552AC86CA18351 /* FSparseSnapshotTree.h in Headers */, - D8AB4C4B61FB111307EEC525C7BA7083 /* FSRWebSocket.h in Headers */, - 46DB3B00C18339C9001A96947F8354CD /* FStorageEngine.h in Headers */, - 6573DD72CD06404672E18390A2602965 /* FStringUtilities.h in Headers */, - E9EF5B931F4D833CB15D9211E4AA2D50 /* FSyncPoint.h in Headers */, - 5597DEC5A26E41DDC9AD5B0C63F30822 /* FSyncTree.h in Headers */, - 0BFFFE564365C57BC41A964ECB45931F /* FTrackedQuery.h in Headers */, - E6EF7C214F730588B9E93A2C319AC9E4 /* FTrackedQueryManager.h in Headers */, - 2C3B184BED83E687B4532E6E142BB9F0 /* FTransformedEnumerator.h in Headers */, - EB3720D59974F576ADCF3449D97795D6 /* FTree.h in Headers */, - 8A20C3885DBB6729AB0D563A850B471F /* FTreeNode.h in Headers */, - 40E5F48D173FC8A5A47F91D1BCFC7A6B /* FTreeSortedDictionary.h in Headers */, - 86CFAC06AA8D34293212722D18F00D06 /* FTreeSortedDictionaryEnumerator.h in Headers */, - D9800CEE2FBF66C326E6E78A90A84EDB /* FTupleBoolBlock.h in Headers */, - F171CCA20D1D69E03EB49FFBD519238C /* FTupleCallbackStatus.h in Headers */, - BC94EE9013468F13B1EFC548E5C02FA1 /* FTupleFirebase.h in Headers */, - 599FED6060274B5F71E088500A84E5B5 /* FTupleNodePath.h in Headers */, - CF6AC92992AA1428D74B4A4A98B5F17B /* FTupleObjectNode.h in Headers */, - B19F4223C39993C7275EE555162E2180 /* FTupleObjects.h in Headers */, - DADF5C8F6686404E5C704C8B0B154B70 /* FTupleOnDisconnect.h in Headers */, - A231C3D11FEFF60FB796E0318CBD27E0 /* FTuplePathValue.h in Headers */, - 232462B42CFB86A76B2E3EF883CCBB96 /* FTupleRemovedQueriesEvents.h in Headers */, - 38EDCB6B0C1491BC14B16B4E986DA00E /* FTupleSetIdPath.h in Headers */, - 06F8B2D110E3D85C99D7694C88D4AACC /* FTupleStringNode.h in Headers */, - 32A9C57D813527201AB8236B8151591D /* FTupleTransaction.h in Headers */, - 11D6258E24BA267419F96E4515902AC1 /* FTupleTSN.h in Headers */, - 061AD4AFD8DA76779BFEAF73508E47D7 /* FTupleUserCallback.h in Headers */, - 4EF25A23AD2C3121B8FAC312055528F4 /* FTypedefs.h in Headers */, - 4FC706C02447823974080F724C244754 /* FTypedefs_Private.h in Headers */, - 5393FECDEA4955E523BDAFFD9ED07EBC /* FUtilities.h in Headers */, - 469B9DA599A5FCC6C177A5D471627099 /* FValidation.h in Headers */, - 0A91224F2F6B47A058CB360227247938 /* FValueEventRegistration.h in Headers */, - 4CB86817A316CD4A9F3EAE62FB4ACB96 /* FValueIndex.h in Headers */, - DE2CFDFAE25548213B8540ED406A1120 /* FView.h in Headers */, - 9F88ED341CFE6C501D0524C0BB885C36 /* FViewCache.h in Headers */, - 49FA9CFB7506743456F5027040F01EEA /* FViewProcessor.h in Headers */, - 0A01FF0884FAF5689C189235DFDEE9F3 /* FViewProcessorResult.h in Headers */, - 977A2BDF4E2F55BEE8A7D29E094FD6E0 /* FWebSocketConnection.h in Headers */, - 06186994A01F0DCBC0552F2CF8F875A4 /* FWriteRecord.h in Headers */, - 9EE47330FA51209EC3AB5B386B301E09 /* FWriteTree.h in Headers */, - F099CB27DAFA4893909B6955263235EA /* FWriteTreeRef.h in Headers */, - B51FE96C5980296027D229A6080E3FC2 /* NSData+SRB64Additions.h in Headers */, + 35082E3DD1133379D4A39AB47A7BE551 /* FIRActionCodeSettings.h in Headers */, + 327B62AFE20D89C73AC34CBF1B850841 /* FIRAdditionalUserInfo.h in Headers */, + 3D78EA39BD95295FE188B211E3BF0249 /* FIRAdditionalUserInfo_Internal.h in Headers */, + EC0431D505FDBB4DD8E21BB5BB755852 /* FIRAuth.h in Headers */, + 597F3CD5E420204B151A10745DAFAAD5 /* FIRAuth_Internal.h in Headers */, + 58B6A43E8761C9440A50FF52CED196B1 /* FIRAuthAPNSToken.h in Headers */, + A4FF8210F5BBBCBB3AD49A6F36D0F669 /* FIRAuthAPNSTokenManager.h in Headers */, + 0DDE4BB5F9891DC10958B327B3B705AE /* FIRAuthAPNSTokenType.h in Headers */, + D2802DBA258901DE2C33BF3B3C512CAE /* FIRAuthAppCredential.h in Headers */, + D2DF19B23578727701453EC6FCD896B7 /* FIRAuthAppCredentialManager.h in Headers */, + B757656C6A131F5F902371394E1CCFDC /* FIRAuthBackend.h in Headers */, + 7F31ACB1D440D8C2AF4B6A64AC6361C6 /* FIRAuthCredential.h in Headers */, + 0FAFAF7453DE3A586665182DDFB46903 /* FIRAuthCredential_Internal.h in Headers */, + 5D5A88532A65AC47252F3D2CC353C4E4 /* FIRAuthDataResult.h in Headers */, + C56C2D03B794FA3F2C04BB2035D6C0A0 /* FIRAuthDataResult_Internal.h in Headers */, + 91FFAD4974208EECCCFE7DDEF38BACE2 /* FIRAuthDefaultUIDelegate.h in Headers */, + E045C0358306099E36179D39145196E2 /* FIRAuthDispatcher.h in Headers */, + 9BD8A9E80F37FAD7F46909869B5706AF /* FIRAuthErrors.h in Headers */, + 9EE0C7EF5E7CE1F5EDD54FAEC8F1E00D /* FIRAuthErrorUtils.h in Headers */, + 122D5142771C96F1FF6BF9B21CE0176D /* FIRAuthExceptionUtils.h in Headers */, + D78D6C2C5EDAE2BDDEE2DA6DA302B868 /* FIRAuthGlobalWorkQueue.h in Headers */, + F2DC513495564BB24A97849A2997E0FD /* FIRAuthInternalErrors.h in Headers */, + EA53B96912F6221E393262BC8CD4B74B /* FIRAuthKeychain.h in Headers */, + 4A799959BF54A54F741C852347C2CB23 /* FIRAuthNotificationManager.h in Headers */, + 3736E3133D784C5BB341CE17A7DE4088 /* FIRAuthOperationType.h in Headers */, + CC856815F9B09C7F906AC8CEF25E2545 /* FIRAuthRequestConfiguration.h in Headers */, + B8473CD1F2C3DDF16681C70A82929565 /* FIRAuthRPCRequest.h in Headers */, + 1C955D0A14A74318A5B51332F6FB29B1 /* FIRAuthRPCResponse.h in Headers */, + CEC12C1254139E04F0B8F0D31A75DDCF /* FIRAuthSerialTaskQueue.h in Headers */, + 58D26933FF5553FCB0B254A119699911 /* FIRAuthSettings.h in Headers */, + 67EB26207C724C8108CE50DB9D9A3BB2 /* FIRAuthStoredUserManager.h in Headers */, + 125921D937F09B91F4E61FCA34D51ACB /* FIRAuthTokenResult.h in Headers */, + 37D78FD4405AEA9859FD7944A8510953 /* FIRAuthTokenResult_Internal.h in Headers */, + C0CB291FDCF4A214523C60207BB33F50 /* FIRAuthUIDelegate.h in Headers */, + 1C950109D8A2A60057C2E820192B060D /* FIRAuthURLPresenter.h in Headers */, + A6107BF6822094504598B86E21998BAC /* FIRAuthUserDefaultsStorage.h in Headers */, + EFAF2D26E978BB1EBDB79BA80F2CDCCE /* FIRAuthWebUtils.h in Headers */, + BB73E6B3C9B78FC1A9DB561643CF9AE6 /* FIRAuthWebView.h in Headers */, + CE51F4B43C2441387BDD0867AC183A8D /* FIRAuthWebViewController.h in Headers */, + 36A4962EC022E0487195921115539CC3 /* FIRCreateAuthURIRequest.h in Headers */, + 06490230A5C3A0C774280AD8D1775C8A /* FIRCreateAuthURIResponse.h in Headers */, + 65806E0D869516636232A3ADB9AC0469 /* FIRDeleteAccountRequest.h in Headers */, + 7715F043C1F88C7C4BFCCD460FC2BB92 /* FIRDeleteAccountResponse.h in Headers */, + 77974FD688502F49A2EBBC74D0E28D36 /* FirebaseAuth-umbrella.h in Headers */, + A61006F5465DA69696D160AF8CCA1F18 /* FirebaseAuth.h in Headers */, + FC6D655158C8ED78E7DFB312CD7EB70D /* FirebaseAuthVersion.h in Headers */, + 4E9D83D9D4AB6F5C97947A10C88849AD /* FIREmailAuthProvider.h in Headers */, + 280800A9BE200158C6118D6D9EC63CE8 /* FIREmailLinkSignInRequest.h in Headers */, + DFBC13C73756C9DA695586143A30CED6 /* FIREmailLinkSignInResponse.h in Headers */, + 66E8EA72947CB8F87BD2A98FB43E2806 /* FIREmailPasswordAuthCredential.h in Headers */, + 37D20733893A2A09A3AD70D003A884CE /* FIRFacebookAuthCredential.h in Headers */, + AF33AD983D1B3CD0DF54051E388E4E3A /* FIRFacebookAuthProvider.h in Headers */, + F155526E5E3B96CF1F051F1D748451EF /* FIRFederatedAuthProvider.h in Headers */, + AEAF4234C85DBC10E17843E3B34DC1D4 /* FIRGameCenterAuthCredential.h in Headers */, + 6009E1AE8A2EAFAEF30899C0A47C81A9 /* FIRGameCenterAuthProvider.h in Headers */, + F2311F9EFCA2B440544A4B3CAA37572B /* FIRGetAccountInfoRequest.h in Headers */, + 0470E4BC93E49918ABBD93EB58CF6B47 /* FIRGetAccountInfoResponse.h in Headers */, + 71223F2AED236D6D347D5198E2525C66 /* FIRGetOOBConfirmationCodeRequest.h in Headers */, + E9FBD758FF3C5FC8A6AA0A8994E93CE4 /* FIRGetOOBConfirmationCodeResponse.h in Headers */, + F21024B7004BC7D4763FAB54E4246074 /* FIRGetProjectConfigRequest.h in Headers */, + 809D68B3C0FB184F2793D4E35603D7EC /* FIRGetProjectConfigResponse.h in Headers */, + 41B39C95E4624DD699F12845E953DABC /* FIRGitHubAuthCredential.h in Headers */, + 5F1C38CB1420B197AB2A8C34D5C68D69 /* FIRGitHubAuthProvider.h in Headers */, + B81E616152053D0DD86C17DF07338D82 /* FIRGoogleAuthCredential.h in Headers */, + C750CBB00B71AADA7A3D0FE2D99039E2 /* FIRGoogleAuthProvider.h in Headers */, + DBC16EA5008EAF07E1F0B81FD8236B1D /* FIRIdentityToolkitRequest.h in Headers */, + E4131491A6234D5B64EBD5E568D5F3C0 /* FIROAuthCredential.h in Headers */, + AFAD293416280E07D0594659C1E3B1E9 /* FIROAuthCredential_Internal.h in Headers */, + 86F196BEAB6C2D3F407A8FE9D0F8BDF5 /* FIROAuthProvider.h in Headers */, + F11A83096BD8130FD3FE03F9F7F3B39D /* FIRPhoneAuthCredential.h in Headers */, + 0EEF0BA1DB46CDBB2BC94032D8218708 /* FIRPhoneAuthCredential_Internal.h in Headers */, + CB2CCE8372813BDB7AB00B6A558C4924 /* FIRPhoneAuthProvider.h in Headers */, + 923C1621EB8A6F70D3AF86FA9EEC6E93 /* FIRResetPasswordRequest.h in Headers */, + 0F7C36E5F433299CB48B2DD6AE34370B /* FIRResetPasswordResponse.h in Headers */, + 7E7D497FCD82F21087AA27376D1ED07F /* FIRSecureTokenRequest.h in Headers */, + 50F1E00B4C3A7470121B4FD4993C25B2 /* FIRSecureTokenResponse.h in Headers */, + 7B026C3B2A9E88A7102771949B1F6CCD /* FIRSecureTokenService.h in Headers */, + A456EE65DEF7E7059381E90346FCF556 /* FIRSendVerificationCodeRequest.h in Headers */, + A59D6253618D58176DCFBDFFB94BE0D8 /* FIRSendVerificationCodeResponse.h in Headers */, + 3126ADBC02B6176277A70430FFECAB13 /* FIRSetAccountInfoRequest.h in Headers */, + E211B8D56446812ACEE98B9DEB7144C2 /* FIRSetAccountInfoResponse.h in Headers */, + 5664F796AC7372ED685E2925BBDB574F /* FIRSignInWithGameCenterRequest.h in Headers */, + C6F3CE85A9145741F565E0592698C394 /* FIRSignInWithGameCenterResponse.h in Headers */, + C52D27E28B6A0A6C2345B58F6D24DC54 /* FIRSignUpNewUserRequest.h in Headers */, + 39F982FDB383C344825CF5ED849956CB /* FIRSignUpNewUserResponse.h in Headers */, + 8C30EF10A0ADF3E7CCA447DE364CFAD5 /* FIRTwitterAuthCredential.h in Headers */, + B5ACE2D7E5403DA319AE58661BAF9A64 /* FIRTwitterAuthProvider.h in Headers */, + E76B9D2224A37DCA669D04372476C69C /* FIRUser.h in Headers */, + 4D67AE655A8DE85824566EE03F27E24C /* FIRUser_Internal.h in Headers */, + 4E14E0EFA7E24C8F1358938D2FBD2342 /* FIRUserInfo.h in Headers */, + E7F3794D3D1C35D037D3EC8E85D6E40E /* FIRUserInfoImpl.h in Headers */, + 9DD090EB3A8BF502234E389FFF0D34F1 /* FIRUserMetadata.h in Headers */, + 4363682DB725798957489B019DDEA63F /* FIRUserMetadata_Internal.h in Headers */, + B8E993D90FDB99D29A23CDF1BE5D0DF9 /* FIRVerifyAssertionRequest.h in Headers */, + 977DC479D8E93A84475C5F6003416D2E /* FIRVerifyAssertionResponse.h in Headers */, + 9C2173624CCB659C8328251B735C932A /* FIRVerifyClientRequest.h in Headers */, + AC22B7C6762EE8B66B279D38B1660180 /* FIRVerifyClientResponse.h in Headers */, + EDF39A2A85DEB50F7664C2EA49633C1E /* FIRVerifyCustomTokenRequest.h in Headers */, + 1BADEA0AD16CACCD49FF3179515324AD /* FIRVerifyCustomTokenResponse.h in Headers */, + D811254F213D5687ECE33498284AC0D7 /* FIRVerifyPasswordRequest.h in Headers */, + 0F388AA034B0DEC0B193E495F0FF1AC2 /* FIRVerifyPasswordResponse.h in Headers */, + 68DA5693019760B0AA38F070ED2A9035 /* FIRVerifyPhoneNumberRequest.h in Headers */, + 5ED71719DFBC91245B968C8DA8D33431 /* FIRVerifyPhoneNumberResponse.h in Headers */, + 6BF26EC05FE80604B2099FD290BAE3CA /* NSData+FIRBase64.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - 3168F80E8EB4BF66133CBC01B277C48F /* Headers */ = { + 2E826869D21FE6E614F78648BADC0CCB /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 4449930806D958FF8C7CE7943E67CDC0 /* FIRAnalyticsConfiguration.h in Headers */, - 5A7722B38AD640648077066AE9DD4579 /* FIRApp.h in Headers */, - 66D7DE4033C45513046A77C2D9AF9051 /* FIRAppAssociationRegistration.h in Headers */, - E1A514523535AE743655F85B23CAC241 /* FIRAppInternal.h in Headers */, - 511934046C224E6019ED3221480F341C /* FIRBundleUtil.h in Headers */, - 0220B1FD81A1C0ED5E672D34FC201542 /* FIRComponent.h in Headers */, - C48C45A2A6C09A8E951F605C024F58B7 /* FIRComponentContainer.h in Headers */, - A47CE0F8D003D149C0F5223D096BE8CE /* FIRComponentContainerInternal.h in Headers */, - DE232E95498CAB337E5778912EEFAC32 /* FIRComponentType.h in Headers */, - A293E894A00AF8FBE186A0204D26D411 /* FIRConfiguration.h in Headers */, - 8C448BE9AD19EAA56EA6F6800ECCBAB4 /* FIRConfigurationInternal.h in Headers */, - F18FA6BF259ABD06BC9CE73052B07135 /* FIRDependency.h in Headers */, - DAFCEA2F6D69F84E2FE74911D728396B /* FirebaseCore-umbrella.h in Headers */, - 33F23BBE37EA1AA2EA34CA1F9C48B952 /* FirebaseCore.h in Headers */, - 829814BE01FA7E3C0799BB792436F57B /* FIRErrorCode.h in Headers */, - CFF399A7BB76F4667CFC2A61A268A187 /* FIRErrors.h in Headers */, - 2C5DC5323A6960F5A46F85C302FDC813 /* FIRLibrary.h in Headers */, - 82652DD5B9BEB56F0207113EBA8CC371 /* FIRLogger.h in Headers */, - DC9CB871FF56570F53C74AEB990B1C18 /* FIRLoggerLevel.h in Headers */, - 63B0EC6CAC90CEFAC78E8A5D3B9E6E98 /* FIROptions.h in Headers */, - 5B6D92BC9A212E010B1DD36E6EAF5816 /* FIROptionsInternal.h in Headers */, - FE5CF5831EA3AD3AC3C8FC20A4E7274E /* FIRVersion.h in Headers */, + 681E5B5AACB2E3A21F754E3A2B8D94CD /* GoogleUtilities-umbrella.h in Headers */, + 603D2790EEE677DF7B30D3A0C4712A04 /* GULAppDelegateSwizzler.h in Headers */, + 4848ED06C6BF504B285FCDFE7F52680B /* GULAppDelegateSwizzler_Private.h in Headers */, + 6A393EFE7D951D00F57C90A9DED07931 /* GULAppEnvironmentUtil.h in Headers */, + 6C1D7DEE287DDB9692F009669E4C438B /* GULApplication.h in Headers */, + 6B273364FCA44FF4EF215791C4CE037B /* GULLogger.h in Headers */, + FF2700AA4D0FE300744F609D8140A17D /* GULLoggerCodes.h in Headers */, + E739923B494058A7EE8F19916B23D2D6 /* GULLoggerLevel.h in Headers */, + A7C2DE98B881FB25853CF11F9E20B750 /* GULMutableDictionary.h in Headers */, + AF539E21E25523D98BFA4BF766E7AE21 /* GULNetwork.h in Headers */, + 3D7FC56600B291E9A3546871297D3B02 /* GULNetworkConstants.h in Headers */, + 5A8DB86D028E43409D81AC26B676F8BB /* GULNetworkLoggerProtocol.h in Headers */, + A58EDC3DDDA75A797C20E3B21BA09796 /* GULNetworkMessageCode.h in Headers */, + E6FDB41E1123D3ABD67698050155B8D9 /* GULNetworkURLSession.h in Headers */, + EBF25DF1F60AE200F0BD4B4D00AD6324 /* GULNSData+zlib.h in Headers */, + 13D75CF671B887E10680CDE4BD01BF25 /* GULOriginalIMPConvenienceMacros.h in Headers */, + 19409942A61AE6DAE5FC6C8F69ACC238 /* GULReachabilityChecker+Internal.h in Headers */, + 92637CDC3A012664169F878042FD3615 /* GULReachabilityChecker.h in Headers */, + CF1E0CE309B7142092B706601304B322 /* GULReachabilityMessageCode.h in Headers */, + A566143D390FA8DFFB44D97ED9E34258 /* GULSwizzler.h in Headers */, + 1A13C08F196CDE0A1FD912E95CC54236 /* GULUserDefaults.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -3218,64 +4072,64 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 49D249D4431D6639F3BF2ACBE57743A1 /* Headers */ = { + 43D721F19C8881874F86230D691ED306 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 708B6BACBCA8822078071F2D56875615 /* arena.h in Headers */, - FDC598EB46E19A47977036B313D4B26F /* atomic_pointer.h in Headers */, - CD79A4AF97B681E8C6408B40E5375BC9 /* block.h in Headers */, - 275FE0EF169BC7756624669320596386 /* block_builder.h in Headers */, - CA58C43E6D06ABCEE28B6AFEF1DE7CA0 /* builder.h in Headers */, - 9113541F7F594820653CE84625B3A61B /* c.h in Headers */, - 735501937719350BBE1C05E37ED35245 /* cache.h in Headers */, - 35DABF601CDF7507C69B8691A0596AAD /* coding.h in Headers */, - 8F9C5641E2A47A41F0658A7DD4762A65 /* comparator.h in Headers */, - B9F84FB3ECF060E6B6A5E4E0EA6D0563 /* crc32c.h in Headers */, - F293F1D6F35DD8DB3E57F09BC8BB622D /* db.h in Headers */, - 5A1F765155A4BD2A3A7A12DE2ED89727 /* db_impl.h in Headers */, - F687F73F2E8BFB0C066A8785149DAA83 /* db_iter.h in Headers */, - 683F3AB4D4B5562CB7B72B6D7EA4BF3D /* dbformat.h in Headers */, - 2F616AF3528642CE8B719BB89679E8FE /* dumpfile.h in Headers */, - 33D2B90C853A02E13E500B832FD0913A /* env.h in Headers */, - AA97BF603882529CA51734A93C8BA78F /* env_posix_test_helper.h in Headers */, - 9F59BD1FA773AD43923DD3843559E424 /* filename.h in Headers */, - E977F2DD6E12BFAA74B9A72A920E4D32 /* filter_block.h in Headers */, - 79D93E5E4C97043AE3FED866FC73A6AE /* filter_policy.h in Headers */, - F3DCE7D6267E7F7FB5BB9015D573028F /* format.h in Headers */, - F5FE5370B71264E30D35AA342DB4168F /* hash.h in Headers */, - 79C9EC9876F6E009EA8231E31C1766C8 /* histogram.h in Headers */, - AD76EB21E4D3193E4512D034AA5B5FA8 /* iterator.h in Headers */, - 8B47FDADF381146F6C99BA8D56ECCF69 /* iterator_wrapper.h in Headers */, - 6E825F74A8483ED71BC56E49623D82AF /* leveldb-library-umbrella.h in Headers */, - 8E8B6D09C3A12776629ECD08EF76AEB3 /* log_format.h in Headers */, - 8BB88D3A188ACF6502A7FA274613A975 /* log_reader.h in Headers */, - 809950B1A7F2690C9BCE49DBE9DE541F /* log_writer.h in Headers */, - 179A70B241D879BE5A6DBB825270FABF /* logging.h in Headers */, - FB9B3D3DE0CD88C5CD89C9F84768F363 /* memtable.h in Headers */, - B58BB472D77042F89A149471B61C7F2B /* merger.h in Headers */, - 55E8E81546A77ECC6ED61BB0975EDE1A /* mutexlock.h in Headers */, - 641CAB751A57A733817D57461845D6AA /* options.h in Headers */, - 1B00F4426C97B3BAC9C22FDD4B08D771 /* port.h in Headers */, - 7C86A204BA12336790C942D4BB33B6AC /* port_example.h in Headers */, - 85153BBBFAE458AEE15494A9B301664A /* port_posix.h in Headers */, - DB749C63249742AA82C48FA99DE8D513 /* posix_logger.h in Headers */, - BC73EB6C746497C92822CAB9FE3F0557 /* random.h in Headers */, - 2DB8081F77DBD9C75B000158631A8F5B /* skiplist.h in Headers */, - 0CDE6ED0EDB91F20D5C15DB8E860D111 /* slice.h in Headers */, - A4D428D1BCF8D9F2DC07EC10CEBC3C2F /* snapshot.h in Headers */, - 8C8F875BD56873932764EA80292BBFF9 /* status.h in Headers */, - 02D6F597ECCA47D2748065788FA22ECD /* table.h in Headers */, - 433112B086BBEA5702FC83E692DF3373 /* table_builder.h in Headers */, - B8EC8C5EEF9F51AF13726DCAEFC121BF /* table_cache.h in Headers */, - 2567E0E7C84D8E93CFBD4407ADD380BA /* testharness.h in Headers */, - 37EA53AE98E2B10E69313ACE6EADF123 /* testutil.h in Headers */, - 58624A6EE6756DEB49C91296E485EABD /* thread_annotations.h in Headers */, - 6B32D1AA07C83B4EC4583C10F922DBB2 /* two_level_iterator.h in Headers */, - F12A5A54316DAF397427C67EB38F14CA /* version_edit.h in Headers */, - 8E439E993FF2AB5312271CB55823AF3A /* version_set.h in Headers */, - 308D09E5F185626963A90B153383962E /* write_batch.h in Headers */, - 1AB625F98492E763FD0FC55BCE42AC61 /* write_batch_internal.h in Headers */, + 792155A425E7B5D1340C0C2AE3410AED /* arena.h in Headers */, + 674AA4DF0CE69E0D3BE917637DED0FAC /* atomic_pointer.h in Headers */, + 1A2E729731F6C24524077FBED140C6BF /* block.h in Headers */, + 78EF5998C5051F95EF3ABE6EFBD1016D /* block_builder.h in Headers */, + 167E578E3091F367391C1B6A80FA1134 /* builder.h in Headers */, + 020E93115850E53221B24270F4A7EA9A /* c.h in Headers */, + C0A364828C495303A6A27507349D15DD /* cache.h in Headers */, + 32F94671CE8ECAC353C729F2415EB4E9 /* coding.h in Headers */, + E6B0ABE603607D12BE26ABCE1C6D1159 /* comparator.h in Headers */, + 64280DA828E43299299776EBF456AD80 /* crc32c.h in Headers */, + 8770943407DD1BB0FFEA18069553E7C5 /* db.h in Headers */, + 6080449E5CF300F956B4C1938D1CF00E /* db_impl.h in Headers */, + BAFF64F621EA37F2AF88EB06EF3A3751 /* db_iter.h in Headers */, + 97C11588D1BBC4899C47E5808D24882D /* dbformat.h in Headers */, + 3DC329DCFCCB792A37BC7C149DCAC0E4 /* dumpfile.h in Headers */, + 2FC0DFD3EC36A4DFA2E3146FD25E01E9 /* env.h in Headers */, + 6765D45D5EF7CC59534B5A279C750F6D /* env_posix_test_helper.h in Headers */, + 24005D187C20279BBC05C8819E3F19AB /* filename.h in Headers */, + 2D336BF7AC4BDF1592764F2E20FB6C7C /* filter_block.h in Headers */, + B77FF9066B6C7CAB0F93DBA2A8A8E6ED /* filter_policy.h in Headers */, + 3B31D61A8651CB1181380896EF4B4A26 /* format.h in Headers */, + CFF39B0F82ADF5C7F389CF0AB7D7261C /* hash.h in Headers */, + 491C250B52A1F76C7DDBB46C8E3EF681 /* histogram.h in Headers */, + 5AD3FAEDD8C8D7E90BEF268182889E6D /* iterator.h in Headers */, + 8A9984E86E12AFD67C551C300FCBD2C1 /* iterator_wrapper.h in Headers */, + 4DE112CADBE67AF755A329A37E015B19 /* leveldb-library-umbrella.h in Headers */, + AB2F6B5A735C7B0D1CB875EC44424031 /* log_format.h in Headers */, + A7412308E2934398561690716665EE9E /* log_reader.h in Headers */, + 63C09B4124ED3FA3A46941C02A7AAE08 /* log_writer.h in Headers */, + 80C1C249255E5E7C192F1AA39F87E526 /* logging.h in Headers */, + A74E276A9ABED3AAD668CE17DDAC8D76 /* memtable.h in Headers */, + 10E318179F4D8BE9FE6334BCBEACE333 /* merger.h in Headers */, + E1E2D6960BD6A1128103A2C6341461DB /* mutexlock.h in Headers */, + 5CD54968E47119C35DC1C8C9C837ECE1 /* options.h in Headers */, + 3222CA30C5E565B8F7E168A6C5A0A635 /* port.h in Headers */, + AA76F13313FE5CC42F3B4B6F74DA2085 /* port_example.h in Headers */, + 655AD5B978F8E7CF3AD8287FE0908959 /* port_posix.h in Headers */, + 03803129ED3022E0067FA0280786B0BA /* posix_logger.h in Headers */, + 8A4E6CAFE3D2F31CAB8775A034922A22 /* random.h in Headers */, + C375BB726470535EA82EF640DFD3FCA4 /* skiplist.h in Headers */, + 5D00701E18302D422898CAB3EEB3F8E5 /* slice.h in Headers */, + 26BDAB0A2157C490DF27928E3EA69B25 /* snapshot.h in Headers */, + 82BBB705967B07606B248C9AFB44A1BF /* status.h in Headers */, + 5373800535FE8D5CDE1968DF449C2626 /* table.h in Headers */, + 3A7D5C8C1916B5916221962A14B38252 /* table_builder.h in Headers */, + 831DF9A38AE5799AC6C182078691841D /* table_cache.h in Headers */, + 07CE324E99D6720B4F73C864A80199E8 /* testharness.h in Headers */, + E18CE5C222B283309ED23C54A6625FFF /* testutil.h in Headers */, + 7A80D456CFA3F2231087CF987C0E5214 /* thread_annotations.h in Headers */, + AC30DC2C634FE16504A1606CF742E5C6 /* two_level_iterator.h in Headers */, + F419B81DB3FB6B309313BF04C6AD79B2 /* version_edit.h in Headers */, + E0D9D3432D498AAAC1C30074DAE38C33 /* version_set.h in Headers */, + 4D12EA0AE433BB38FBF7E280812E4C0A /* write_batch.h in Headers */, + ECEE48AB9C9CFB409727FF973EE3912C /* write_batch_internal.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -3330,6 +4184,172 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 5D9F528A7C30B5DDA9031031CD483F8A /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + EF057CBC5C12FA63B0DD82A70BEC7DC2 /* APLevelDB.h in Headers */, + 60907B0B3A580B5D6AE3A3C05678BB07 /* FAckUserWrite.h in Headers */, + 605DDAD86929F28D184F96E12355C8F7 /* FArraySortedDictionary.h in Headers */, + 420DE024D7EBE55CBE5150941996B3B6 /* FAtomicNumber.h in Headers */, + A7269BCF1465F3888FA3B95F5EA18040 /* FAuthTokenProvider.h in Headers */, + F0095B785FB7A1CB84946D343ADBCF73 /* fbase64.h in Headers */, + 71E5AE6DC74836D098A4052F9AB3ADBD /* FCacheNode.h in Headers */, + 4BE11D31255CC71007320EF18BB12E32 /* FCachePolicy.h in Headers */, + C45E36BF603C7CA320009C87EF69F610 /* FCancelEvent.h in Headers */, + E57C9C16F526A6D0EF9254F19D3710F3 /* FChange.h in Headers */, + A2C1C48D5EDFAF949E0EA049D00E9338 /* FChildChangeAccumulator.h in Headers */, + 27E1EB61D2A697FED504CBCD6A2F29E7 /* FChildEventRegistration.h in Headers */, + 2185D4A86DC350B9047D22B435D38700 /* FChildrenNode.h in Headers */, + 672A73CA218B37497C5FFF3568311A5A /* FClock.h in Headers */, + A970662CB983D9A41A1906A6024FC791 /* FCompleteChildSource.h in Headers */, + 862E9F231CFAF5AD0C834CC4790B07D7 /* FCompoundHash.h in Headers */, + B05039665A49EE9C8904D50FE68EBEB4 /* FCompoundWrite.h in Headers */, + 927B1AE742FFFC188CCED8497F6320EF /* FConnection.h in Headers */, + B82AE40E9747E8275EBF11E8E263987C /* FConstants.h in Headers */, + 64429624ADE77105DDF7981DCB64CB0C /* FDataEvent.h in Headers */, + 89DC17C0BD7E86FD90B1F2BF232AC8B7 /* FEmptyNode.h in Headers */, + 4F9BAC895831F59C1C87BF85FE83417F /* FEvent.h in Headers */, + E99E65E789D7F1A377603A000E92AB05 /* FEventEmitter.h in Headers */, + 7E92602801F9A5416EA5BFEEC4AE5D05 /* FEventGenerator.h in Headers */, + 7088A19A43D14879BBF9D0C8F0E5DB2D /* FEventRaiser.h in Headers */, + B0FFF62DA4F53D362FF1415081DF9765 /* FEventRegistration.h in Headers */, + 01731BF5EA2079465121277427E40F42 /* FImmutableSortedDictionary.h in Headers */, + BC26696EC533DEE466ADEA133D7E4D2E /* FImmutableSortedSet.h in Headers */, + 62AFDF3E524A8FA0CF6059E916B28C96 /* FImmutableTree.h in Headers */, + F09DE3F14B1BDA94BC006527F48AF38E /* FIndex.h in Headers */, + 79D5405BDDA1F8D249E52F14A8F8BB00 /* FIndexedFilter.h in Headers */, + 0699E61717F65850BA5D78B7278A043C /* FIndexedNode.h in Headers */, + 00AB43685CBED3B7AD00182B53F86840 /* FIRDatabase.h in Headers */, + EF7F2F6F201BB27CE261989A551D997C /* FIRDatabase_Private.h in Headers */, + 673A9D46815F44D5F2BF307A1DE97D63 /* FIRDatabaseComponent.h in Headers */, + B6B75B9BD58FB20EC87BB9441B6DE370 /* FIRDatabaseConfig.h in Headers */, + C52552F100DF05F156D991F08DD22B08 /* FIRDatabaseConfig_Private.h in Headers */, + 85BE5BCC64B3DBCAE5827C2797500479 /* FIRDatabaseQuery.h in Headers */, + 6ADBD95839028C929EE646F0B781C88F /* FIRDatabaseQuery_Private.h in Headers */, + 0F431EE0EC5C388B540A17F26E79F6F2 /* FIRDatabaseReference.h in Headers */, + B415EBB88B0E9533B9E10FCF2306A966 /* FIRDatabaseReference_Private.h in Headers */, + A628B0ADE39B4220CDFAD934EC88116B /* FIRDataEventType.h in Headers */, + 739FF94C77F3E9759B090C53105AF265 /* FIRDataSnapshot.h in Headers */, + 5EB426DE181C6802B0CF094BFC2A3691 /* FIRDataSnapshot_Private.h in Headers */, + 3C73939A542282AB7144788D05FFD4A1 /* FirebaseDatabase-umbrella.h in Headers */, + DA1745D7A7C37C4D67CEBB6F27386D70 /* FirebaseDatabase.h in Headers */, + F8958C3F850328C122BF573573DFAF0B /* FIRMutableData.h in Headers */, + 7EF00976B7B59FE823B37F4CC64578B7 /* FIRMutableData_Private.h in Headers */, + B25B4030D50DF8E3E4B182AED626DA50 /* FIRNoopAuthTokenProvider.h in Headers */, + 9DBD84D0D18870D0AF958EDF6D83B981 /* FIRRetryHelper.h in Headers */, + 556867899DA891E89B8D04266121447D /* FIRServerValue.h in Headers */, + 5E83F44C36AB0281D550701F0C7EAFC7 /* FIRTransactionResult.h in Headers */, + 130571E8CBBFE1AE9FBA4EA913415889 /* FIRTransactionResult_Private.h in Headers */, + B884C4297770EF48B769ACCB74245CBA /* FKeepSyncedEventRegistration.h in Headers */, + 6737ABDAB0235C7B36B7C74D2C429F03 /* FKeyIndex.h in Headers */, + FFE5ACCD06B7871F3A22BDA9F914A6D8 /* FLeafNode.h in Headers */, + 9CD95E6AA89BDF0786D7C12CAC660D3C /* FLevelDBStorageEngine.h in Headers */, + E108FE6471EB92E54A5F6F0388B4FFCB /* FLimitedFilter.h in Headers */, + 7BADBF440C414D424DE79E1BD9E528F1 /* FListenComplete.h in Headers */, + 8275972F0A3DF38F593B6B398E299751 /* FListenProvider.h in Headers */, + 293DA1DCB533474769C2C695705B6EB6 /* FLLRBEmptyNode.h in Headers */, + 654A7B834504DCF57A3542F482C76F37 /* FLLRBNode.h in Headers */, + DE9EEA6368F3902D03F54520DFB78432 /* FLLRBValueNode.h in Headers */, + DA544A533A4C67BC18021518244D69DA /* FMaxNode.h in Headers */, + 8D49410DCE04310E5383C20760DFD43F /* FMerge.h in Headers */, + 539EF0D9521DFE4E633F5733379D0E93 /* FNamedNode.h in Headers */, + EDD63914EEB71105D7841AE4B92A84FE /* FNextPushId.h in Headers */, + E27F741359A9BE377AF38A72051A69EE /* FNode.h in Headers */, + 10179F085E5671DE26730947F60800E8 /* FNodeFilter.h in Headers */, + BB24E6D8DB7DC40EECE120E63C08DAAC /* FOperation.h in Headers */, + 915B2F7EF04B79E47ABB2D1FABBCEC5B /* FOperationSource.h in Headers */, + B7905C416D77AE0D73F2C99473D38CBA /* FOverwrite.h in Headers */, + 34ED3BC9F91DF90025A4C303A883FD84 /* FParsedUrl.h in Headers */, + B97A96AE75E6EA48CAA103CAB903EB42 /* FPath.h in Headers */, + 1A745B98502E6667822FAE54499C82B7 /* FPathIndex.h in Headers */, + CA86D35AD370FE72F1FB0B5D64E00929 /* FPendingPut.h in Headers */, + EE2DB9922E996AF36414118C7F6B4C27 /* FPersistenceManager.h in Headers */, + 6FE629176E6180DC8F3581CE510C1F9C /* FPersistentConnection.h in Headers */, + 59D156BE7019D6F3263338749F6DF493 /* FPriorityIndex.h in Headers */, + 04992F5E5C8016DB87252CC306AF6053 /* FPruneForest.h in Headers */, + D7A1A56AB8C824A7677DA9AB2D0680C5 /* FQueryParams.h in Headers */, + CDD262C8EFF7DA7EFEB7EB4DF4E59DCF /* FQuerySpec.h in Headers */, + 7E5F4275405E2A0BACD791613DC60A70 /* FRangedFilter.h in Headers */, + B2BC89058A4A0C5FB0F5A7AC3288C08E /* FRangeMerge.h in Headers */, + EE9E0B6D3AEEAE23487041FA6C4E64E5 /* FRepo.h in Headers */, + 8F33DB125607781B51065F1592F975B2 /* FRepo_Private.h in Headers */, + F19450B52AA15092CB34311CA01C5E20 /* FRepoInfo.h in Headers */, + 2CD9B100D3B312ACE54BD8B02587D909 /* FRepoManager.h in Headers */, + 2B34452C6CC518DA2E9C9B45EDEE3E31 /* FServerValues.h in Headers */, + D96F993991D8A8E4CE1AC147AC3C32C0 /* FSnapshotHolder.h in Headers */, + 8B99938014A32AD4796FA4EC405C5B7F /* FSnapshotUtilities.h in Headers */, + 31F7613353D040F005DAF772F0CE39D3 /* FSparseSnapshotTree.h in Headers */, + 9E61D975D2EC876A1900DA4AF6207302 /* FSRWebSocket.h in Headers */, + 7D14948C94E3AF99617DB15903D749E7 /* FStorageEngine.h in Headers */, + D9DB20048FECCE4DB768DFC8380F017F /* FStringUtilities.h in Headers */, + 719DD7D72FE51332812234481251428E /* FSyncPoint.h in Headers */, + 8B5A0741A9A92581BD6271126264B32C /* FSyncTree.h in Headers */, + 086F25F7ED9C1C0C6D04FF6568F2C1E0 /* FTrackedQuery.h in Headers */, + 48C7C90B51E7C8E2CA7AED4E7A99DC0C /* FTrackedQueryManager.h in Headers */, + E4A199E29267F3BD667CEAB36CD5B52E /* FTransformedEnumerator.h in Headers */, + E08810D7510D9E6E7CBCC1DF6FAD4898 /* FTree.h in Headers */, + 939BD2D70062F171676703CA955289D1 /* FTreeNode.h in Headers */, + D55C1897DFF41C1CDC0324802AD05F58 /* FTreeSortedDictionary.h in Headers */, + 43D42F1B5A3E32CD764347F5D43D5E17 /* FTreeSortedDictionaryEnumerator.h in Headers */, + 51AE623FACAC8C0C7207D1EF9ECBCEA0 /* FTupleBoolBlock.h in Headers */, + 85CB1C1E39CE2B8D1CEB5FC4F57F4748 /* FTupleCallbackStatus.h in Headers */, + A9A932C62F76537916377725EE1BDB54 /* FTupleFirebase.h in Headers */, + 49F654E38AF63DE139C6EB4045995C3A /* FTupleNodePath.h in Headers */, + 28E37800CBA0BC54A76CCCF3F8E3069C /* FTupleObjectNode.h in Headers */, + 41867C5907F48811037991EDFBB594B2 /* FTupleObjects.h in Headers */, + 5F74B44FABE3677CFE8536DEC126918E /* FTupleOnDisconnect.h in Headers */, + 1B56AAD268CC1F5F4767D2968FEC6468 /* FTuplePathValue.h in Headers */, + 3D0AD687EE72E2FA6F5197F386D2AA86 /* FTupleRemovedQueriesEvents.h in Headers */, + 51C11E9AAC8A4286D01BC577C6171030 /* FTupleSetIdPath.h in Headers */, + 085A1518150E2D34133216FCDFB65780 /* FTupleStringNode.h in Headers */, + DBE0480B2FC284EC187011D3A32B4365 /* FTupleTransaction.h in Headers */, + 0FED20A1F90329C691140CC2E3A0625F /* FTupleTSN.h in Headers */, + 23CEC63836483B991D27B31C9A631A22 /* FTupleUserCallback.h in Headers */, + B755317E9810BD663593461D2752BA0D /* FTypedefs.h in Headers */, + 43DA7760CC5AEF486E6154912A9939BB /* FTypedefs_Private.h in Headers */, + B44B3659A291A6F5C855CA7162E4A141 /* FUtilities.h in Headers */, + D00E54D10331DB01EF2BDF047BA9C26A /* FValidation.h in Headers */, + 62A7C03C0C74A5003845042FB17181BB /* FValueEventRegistration.h in Headers */, + D0B08F366C81DCF1C209E33E7F89DEBB /* FValueIndex.h in Headers */, + C1EF417DD9838081C8D4DD3FA29AE556 /* FView.h in Headers */, + 6AE65604FF7468EEA4AC2B0D82D7A240 /* FViewCache.h in Headers */, + 6D67724DF6EF00F1256022A115F1A9D2 /* FViewProcessor.h in Headers */, + A7670F162C0C9A4E11EFB681BBCFD842 /* FViewProcessorResult.h in Headers */, + A317DB1ECE90C1B9D5EA26B5CCDABD93 /* FWebSocketConnection.h in Headers */, + 36F3FA1EAACA0805646A70DC3107426D /* FWriteRecord.h in Headers */, + 2DE6DB21FDC5FD28D689A3879727CE44 /* FWriteTree.h in Headers */, + E6EFD1891BCC15D104CE68A99FB3740E /* FWriteTreeRef.h in Headers */, + CACBB880082F9F0AA1B0650E475A99B7 /* NSData+SRB64Additions.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 68727D18D44DF2AF767D4FB101AF54F9 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 70913F9EFC3E1202E2E94F0B08C9E609 /* nanopb-umbrella.h in Headers */, + BDE3D3F5D5BD260043085204727850A5 /* pb.h in Headers */, + E5DFBA84F2AB3694BA34795814D662FF /* pb_common.h in Headers */, + 9455F85D17E4946B6DD1ABABAF01306C /* pb_decode.h in Headers */, + D3EC5569C60204A81B4C5BEA1884E7E1 /* pb_encode.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 72AAD4A115E9E4D0F1A20685B4A2C0A2 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 214F8FCFF62365EA0C90079088F84A49 /* GoogleToolboxForMac-umbrella.h in Headers */, + 7F5A038929C801CAA0A584D9B5223247 /* GTMDebugSelectorValidation.h in Headers */, + B81EC7DFFFA7960BA68D0E2F4E248E5D /* GTMDebugThreadValidation.h in Headers */, + D2567A599F5FFD11CF247A1F9F16FE05 /* GTMDefines.h in Headers */, + 30A6435367C0B7A1DEA0AA67DFB8B537 /* GTMMethodCheck.h in Headers */, + 19C343E9A3D7850872AAC50AED66BACF /* GTMNSDictionary+URLArguments.h in Headers */, + 17558369C8A161DF2C7AF1FB3C304A16 /* GTMNSString+URLArguments.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 95122E2D5388C9747C427CB18DD12E92 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; @@ -3338,66 +4358,95 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - A24C7B861D88C6B41D0F6DC5E61613E0 /* Headers */ = { + BBEF124231A8D92FE32BA0050BF334F5 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + EECA36B74A64664E163A9305E8E83721 /* GTMSessionFetcher-umbrella.h in Headers */, + 2194C60EB8DD1C17989A6367D2F2BC2C /* GTMSessionFetcher.h in Headers */, + 552E582321E724826A6D944C241166C2 /* GTMSessionFetcherLogging.h in Headers */, + 4291BC4A1556236445318BFE61306E48 /* GTMSessionFetcherService.h in Headers */, + B599C2A4DD74B60FB8608E8D6454F7A1 /* GTMSessionUploadFetcher.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + DD4C8C7A3154B55843D837F81BF3AF50 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 0680DAF3198E2B474E47AB4714D3A7A9 /* FirebaseInstanceID-umbrella.h in Headers */, - 9A92B8F70A3DFB182F8BEB0367F4E895 /* FirebaseInstanceID.h in Headers */, - DF8E3E5D19D2F82806C45B65F4CF06EB /* FIRIMessageCode.h in Headers */, - 8C1D4C15D505334F273F10641C406A7D /* FIRInstanceID+Private.h in Headers */, - 33CA2DC63C9A1AED41C6B0CDCE17D3B3 /* FIRInstanceID.h in Headers */, - 03DE41BCA9860E1FAA136DA0AEEEB621 /* FIRInstanceID_Private.h in Headers */, - 89013B85D124A19EFD955DB1CBC4D8EB /* FIRInstanceIDAPNSInfo.h in Headers */, - 4C07D5EE73434560F219A6938903F12E /* FIRInstanceIDAuthKeyChain.h in Headers */, - 8345E22232C0ECDDDE2AFBF1206D3377 /* FIRInstanceIDAuthService.h in Headers */, - 098D63085B26AE578DD4BF02C3789A57 /* FIRInstanceIDBackupExcludedPlist.h in Headers */, - 1154DFE44161CD06436BDAC92EB001EB /* FIRInstanceIDCheckinPreferences+Internal.h in Headers */, - 204095FD545C40968CFF9BF74857D17C /* FIRInstanceIDCheckinPreferences.h in Headers */, - 9605ED51000B604F5D892223E0228F8A /* FIRInstanceIDCheckinPreferences_Private.h in Headers */, - 84918A8266FE7D4C57625AE0E03CC287 /* FIRInstanceIDCheckinService.h in Headers */, - 3BB390F64E1BBF9A33A4CCA0158DC689 /* FIRInstanceIDCheckinStore.h in Headers */, - 4FC6CD8B0027503FCC30CE8D0CCFB903 /* FIRInstanceIDCombinedHandler.h in Headers */, - B2E74D5EE377D5C8E273817F1AAF607F /* FIRInstanceIDConstants.h in Headers */, - B8F5EA1FDA4E2B5CF2F79ABB08C53919 /* FIRInstanceIDDefines.h in Headers */, - 7286264FC0A5E019FEABDCEAEAB8B3D2 /* FIRInstanceIDKeychain.h in Headers */, - 44A3CC1F4A0184EA4308346F3B72348A /* FIRInstanceIDKeyPair.h in Headers */, - 2AFF3281F38F0F6BD2AEFC55BD8447D2 /* FIRInstanceIDKeyPairStore.h in Headers */, - 0D32143B4F328D455DE47992A49EA6E1 /* FIRInstanceIDKeyPairUtilities.h in Headers */, - B53128E362D7880F828B1A8DD788A3DD /* FIRInstanceIDLogger.h in Headers */, - 321059373448941AC98D26C0DCD041CD /* FIRInstanceIDStore.h in Headers */, - 50B053C7B8DD54FF911DCD2CFC222DBA /* FIRInstanceIDStringEncoding.h in Headers */, - E06FA098669B3C365CE84F84EBD79846 /* FIRInstanceIDTokenDeleteOperation.h in Headers */, - 33CEDE6B29DAEDEBBF8364EE925BCAFC /* FIRInstanceIDTokenFetchOperation.h in Headers */, - 7D821C302B7F3FD0322BA2B1F625C9C3 /* FIRInstanceIDTokenInfo.h in Headers */, - 2B86786011DFC3D4A82AF526C89E73D1 /* FIRInstanceIDTokenManager.h in Headers */, - 93B066FDA71715358F0FF01E27E14B03 /* FIRInstanceIDTokenOperation+Private.h in Headers */, - A065F359A071BDAEFF8799FC6E4959B4 /* FIRInstanceIDTokenOperation.h in Headers */, - 2E7F48A4584678C868BC9000F1C3D3E5 /* FIRInstanceIDTokenStore.h in Headers */, - 2CE719CB910279F3B5F1F3061AA29C3D /* FIRInstanceIDURLQueryItem.h in Headers */, - BC3C3926EC7482725AD7F0F2CB54A9B2 /* FIRInstanceIDUtilities.h in Headers */, - 13E9047C864F32E679D81C9C2A300B53 /* FIRInstanceIDVersionUtilities.h in Headers */, - 7BF5C0177D0DBD22916AAA3A64A4D360 /* NSError+FIRInstanceID.h in Headers */, + F4E1626B8047F70C9F57298B7A4E3826 /* FIRAnalyticsConfiguration.h in Headers */, + D083B45DD323DCDFE86B4EC3075D7D3E /* FIRApp.h in Headers */, + 998396AFF1B141198A16943110D6C89F /* FIRAppAssociationRegistration.h in Headers */, + A17712FBDAE6070CF590F6976D64B158 /* FIRAppInternal.h in Headers */, + 1927674FA0FA18E281C910900238E231 /* FIRBundleUtil.h in Headers */, + E595041742D752F397D4945658175FA7 /* FIRComponent.h in Headers */, + 11D407EC984DEEDC806806352D5F46B5 /* FIRComponentContainer.h in Headers */, + C82A2EBBEE481E116E7D370628689290 /* FIRComponentContainerInternal.h in Headers */, + 31987CBFCBE3DD4ED0D4B9E40133CAB7 /* FIRComponentType.h in Headers */, + A7619A266B20B4E3DAD75FC0DE4FD970 /* FIRConfiguration.h in Headers */, + 67468DD2D2ED5F3BF785F1AC99911B8C /* FIRConfigurationInternal.h in Headers */, + 21F5A7FF246F95E5EB43B3F835CA4C64 /* FIRDependency.h in Headers */, + 3D9CA39B8D56123C499EC201073B1DBE /* FirebaseCore-umbrella.h in Headers */, + 231CA44E528D5D6FFD77BAD97792B17E /* FirebaseCore.h in Headers */, + 6ADA23709C4F6AB3A2881BA8ABC6187A /* FIRErrorCode.h in Headers */, + 39CE983566E102863D23A7EBE686DCF5 /* FIRErrors.h in Headers */, + E42EF15D08F24B1584BC6D493849D131 /* FIRLibrary.h in Headers */, + 2D409195D7D6E5367FB375989DB87B43 /* FIRLogger.h in Headers */, + E7008BC268DB2BBE3E8ED89C7D4445E6 /* FIRLoggerLevel.h in Headers */, + C2506328B367CE2C21185CCD54E0CFC4 /* FIROptions.h in Headers */, + A3B0FD48AE71F530A85F170FFF9E4C0B /* FIROptionsInternal.h in Headers */, + 4B6B7556ED79BC459A815A5710E79B96 /* FIRVersion.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - CA5A2990E5FD14606FE6F9E08BCF3958 /* Headers */ = { + E67278AB98313BC4182CEB0AD9078052 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - C3B2B458CE319D735C5C92CE6E992EB3 /* Pods-shlack-umbrella.h in Headers */, + C11544E5C3F5B716E82A54FC7DAD7F88 /* FirebaseInstanceID-umbrella.h in Headers */, + DD9C358759ABD9AB33A5849055F1D217 /* FirebaseInstanceID.h in Headers */, + F3C34E3C6A04278FC089DCBE460AA958 /* FIRIMessageCode.h in Headers */, + 87487DA8EB0FE1536CD8240B0F8C6AA1 /* FIRInstanceID+Private.h in Headers */, + DA3F5AA7BC91CF1C5A022EB6E521CDAE /* FIRInstanceID.h in Headers */, + ADD212F6B932D986B29970843A9BA63E /* FIRInstanceID_Private.h in Headers */, + 2FC1AA8E7C1CF5D3E6138444BE9B0721 /* FIRInstanceIDAPNSInfo.h in Headers */, + 12589C053B0F8DF0B2686922B17D9B77 /* FIRInstanceIDAuthKeyChain.h in Headers */, + 6637551548E1A8E0D13DCBBD671ADFF8 /* FIRInstanceIDAuthService.h in Headers */, + 650F02396D963DEDAABA8C7AF5663779 /* FIRInstanceIDBackupExcludedPlist.h in Headers */, + 18CD94DE0398CC105A1CCEFAA96B5448 /* FIRInstanceIDCheckinPreferences+Internal.h in Headers */, + 5F559CAA70A5B8BEC78388642DE85B8B /* FIRInstanceIDCheckinPreferences.h in Headers */, + 9E6DFB3060F996BF9C940057841E3566 /* FIRInstanceIDCheckinPreferences_Private.h in Headers */, + 3EA1F32FD446FE4B668EBD02252EBA76 /* FIRInstanceIDCheckinService.h in Headers */, + 3D75C9B105EB39A9CC7CB49F1997BC87 /* FIRInstanceIDCheckinStore.h in Headers */, + 0D9B121ABC27DB66F6CA266419042FB5 /* FIRInstanceIDCombinedHandler.h in Headers */, + 6897B81387276A6E850D95D4B7B28A8F /* FIRInstanceIDConstants.h in Headers */, + D9FB839E75F73F8C3178AB5CDEF5CC32 /* FIRInstanceIDDefines.h in Headers */, + 2EABB349C601E16ACEFDC5D3C6B8A7C4 /* FIRInstanceIDKeychain.h in Headers */, + 10DB5625E4E4234E614C9F215504A572 /* FIRInstanceIDKeyPair.h in Headers */, + 71C8C1176D6DC101ED06B098878B4CCA /* FIRInstanceIDKeyPairStore.h in Headers */, + E4DC9012759C5EB6245DB1E16AC90E15 /* FIRInstanceIDKeyPairUtilities.h in Headers */, + F80AD920CC6602CEDF08A02A340C3E50 /* FIRInstanceIDLogger.h in Headers */, + 533C4A91650B5459EF9468F42B05C413 /* FIRInstanceIDStore.h in Headers */, + 2A9DA4E41CB45BA7A28FB56B1D11A15C /* FIRInstanceIDStringEncoding.h in Headers */, + 03114700A669F1A044C4269DDB1220C0 /* FIRInstanceIDTokenDeleteOperation.h in Headers */, + CEF0878B829009D8D767FB52C3B62092 /* FIRInstanceIDTokenFetchOperation.h in Headers */, + B1579E89F59DC8F849C634EF5178DCC3 /* FIRInstanceIDTokenInfo.h in Headers */, + 9292404775C61C8C4B285A3D79589595 /* FIRInstanceIDTokenManager.h in Headers */, + C581FAB423551C1A3F6F81CBEBF91D36 /* FIRInstanceIDTokenOperation+Private.h in Headers */, + 0525F352F88A98A548A5E4E99042065E /* FIRInstanceIDTokenOperation.h in Headers */, + 729832B522AF32A631C184A1575D714D /* FIRInstanceIDTokenStore.h in Headers */, + 892C46FAA56FE0BDCE8BA64A52893765 /* FIRInstanceIDURLQueryItem.h in Headers */, + A01241786ED54385B529C9B96C5B1414 /* FIRInstanceIDUtilities.h in Headers */, + AC7D31515E86381A8B870C543C737E1B /* FIRInstanceIDVersionUtilities.h in Headers */, + C255D699321E797768A3DE04748F742F /* NSError+FIRInstanceID.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - E3149586C30C7F8068BE3E685B0D0898 /* Headers */ = { + EC4806661FA4A327CC7638E646455E53 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 96859F009FC97262232CCA2959A04F0D /* nanopb-umbrella.h in Headers */, - F6A01C3A41FCEC04E2830781FCDA7CE5 /* pb.h in Headers */, - 34C8D69599A44DD0AE50458B98790DEB /* pb_common.h in Headers */, - 9E84C7CDA8318216B67CEED872E2DEFB /* pb_decode.h in Headers */, - 088158F117D45FEEFC61B017634766D5 /* pb_encode.h in Headers */, + 349DC3C4B32CE2E5205B39C2E2FDE90E /* Pods-shlack-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -3424,17 +4473,17 @@ }; 4402AFF83DBDC4DD07E198685FDC2DF2 /* FirebaseCore */ = { isa = PBXNativeTarget; - buildConfigurationList = B689081FB906519ACAD19D7FC6F23A92 /* Build configuration list for PBXNativeTarget "FirebaseCore" */; + buildConfigurationList = FB1DB574AD61EEB4887DAADBDD6AE859 /* Build configuration list for PBXNativeTarget "FirebaseCore" */; buildPhases = ( - 3168F80E8EB4BF66133CBC01B277C48F /* Headers */, - 0418602B07A48AA9B85B6674B3922664 /* Sources */, - F46A0EDAAA4E82EDBC0DB972F383AB30 /* Frameworks */, - 16B602477B60700805DD009DE8994B35 /* Resources */, + DD4C8C7A3154B55843D837F81BF3AF50 /* Headers */, + 23D30FF20C0C8350B9A2D2F0661995D0 /* Sources */, + 886454233DDB01469048D216A81D4433 /* Frameworks */, + 1E77022A44FCE6EF9E9CB5723F995B42 /* Resources */, ); buildRules = ( ); dependencies = ( - 80502E36CF51F684EE9239228201D901 /* PBXTargetDependency */, + A7775BB4E2CCE9B0C8F1FE9DD7D9C0E4 /* PBXTargetDependency */, ); name = FirebaseCore; productName = FirebaseCore; @@ -3463,51 +4512,77 @@ }; 6A4668B03078B8E5CF7C43B1F8B7A26A /* Pods-shlack */ = { isa = PBXNativeTarget; - buildConfigurationList = 0B27D0ECC15F7FCC4D5ABE012A695B74 /* Build configuration list for PBXNativeTarget "Pods-shlack" */; + buildConfigurationList = 1C65B459EE4502555433D070880563A6 /* Build configuration list for PBXNativeTarget "Pods-shlack" */; buildPhases = ( - CA5A2990E5FD14606FE6F9E08BCF3958 /* Headers */, - A2D6CAB40581CC08DAB11F890A8ACEAD /* Sources */, - A79A23EE5ED77D57026428441ACD6557 /* Frameworks */, - 4B4EE0296FAB542B8DB1970361DAC18A /* Resources */, + EC4806661FA4A327CC7638E646455E53 /* Headers */, + 9F4A1618FA1C5469EC735DD60F1A0886 /* Sources */, + 7ABE6983AF6B046095FE488DCBABFB97 /* Frameworks */, + 8DB08285A25B6B4D0CE2EDE2319392D1 /* Resources */, ); buildRules = ( ); dependencies = ( - F0EDB7AD0BA0A58BE1AC74B22F27848C /* PBXTargetDependency */, - 9A61BA0F87FA50A60E77974B16D71507 /* PBXTargetDependency */, - 2BC44A42F39F0E293D77B7F1781E67AE /* PBXTargetDependency */, - F3B0AD71BFBF1ED0D4BEADE072C307F8 /* PBXTargetDependency */, - 74971E7E80CBB07E48E53F2FDEFF1AB8 /* PBXTargetDependency */, - 2916D7D01E692573B8924B1E22B249F5 /* PBXTargetDependency */, - 09098563DA0EE69C6F701CECB543295B /* PBXTargetDependency */, - 01059B5B26710E2E545D84237596F9E0 /* PBXTargetDependency */, - 2DD34E84FDCCB904EF4E2C6EA1B7B749 /* PBXTargetDependency */, - 356CEE18323616DEADBFB1761D808ECD /* PBXTargetDependency */, - C6A0A40C554D8618D75AD9BED3046A67 /* PBXTargetDependency */, - A6C24BAFE2C32C8130BFF500FF3ADD84 /* PBXTargetDependency */, - F7C1B63012AFBCE1E657F2CBF4558B85 /* PBXTargetDependency */, - 43E2DF941A0D16D7C47B6DF79C4E5507 /* PBXTargetDependency */, + BA3F3C3E3BFF667A724D99C93C238104 /* PBXTargetDependency */, + 1E135D20973E482DB50B66EC4A69C20C /* PBXTargetDependency */, + D3EF20AA50E51B98619385726930C242 /* PBXTargetDependency */, + 4BAB0FE54438177D17C9F5B47FDC79ED /* PBXTargetDependency */, + F7E114D040CED889A63AC6325D8E84A9 /* PBXTargetDependency */, + 73F7DC8C7529C7C112222A12C53A283E /* PBXTargetDependency */, + 3F212077B0537628F081B60532F42C50 /* PBXTargetDependency */, + 6D9B3EF84FAE063FF6AAE95F0081F850 /* PBXTargetDependency */, + 59ED3CD05ABC41F3BE12FFB374A553F6 /* PBXTargetDependency */, + AD520AC3B53B1EAE9A470A0CF1BD97FD /* PBXTargetDependency */, + C6979B5ADED361F6AF6A41A47EFB5857 /* PBXTargetDependency */, + EEEBB7C1EE320CCBEB48EA654B1CE1F1 /* PBXTargetDependency */, + 9AD23CD8ED43FC810FB08F581B60E0F7 /* PBXTargetDependency */, + 4927ECBEB56B278F81862E20FFF6E3B3 /* PBXTargetDependency */, + 40CAB2BB1CE3C8F8B7A194A25F9AF7B7 /* PBXTargetDependency */, + A0EDEC4879024011AC9BCBBF016D0116 /* PBXTargetDependency */, + 00979718DF9DADBE35C8BB90E54E9DD5 /* PBXTargetDependency */, + 2BF19F93D37B67721B2094479DC72E05 /* PBXTargetDependency */, ); name = "Pods-shlack"; productName = "Pods-shlack"; productReference = 554465FEB9CBF982D86FB8B8587FB36C /* Pods_shlack.framework */; productType = "com.apple.product-type.framework"; }; + 6AE4A3D573DED275B034E20506596C62 /* FirebaseAuth */ = { + isa = PBXNativeTarget; + buildConfigurationList = 9A0D92C6EC324885D2D9195A767B55CA /* Build configuration list for PBXNativeTarget "FirebaseAuth" */; + buildPhases = ( + 201748E996A196F1B2A5D14B0976DB58 /* Headers */, + 54DBFFEA25F19DB780DCCF1FEE78E150 /* Sources */, + 409F4D834D5C9080DCA4EC5A6B57CA36 /* Frameworks */, + FB4D4B244F0CC1912B1658AA69E193D9 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 94D74F477B5179072E5C92AD44C7219C /* PBXTargetDependency */, + 749EDE2E495AE6F03A0CF3027BD29CAB /* PBXTargetDependency */, + C44E844706FE789BF6412D4B86ED114B /* PBXTargetDependency */, + 10E505E3F66A62F9271D6BD2235B2965 /* PBXTargetDependency */, + ); + name = FirebaseAuth; + productName = FirebaseAuth; + productReference = 43B1E4CD7B30B9FD278100133C2AC788 /* FirebaseAuth.framework */; + productType = "com.apple.product-type.framework"; + }; 736AF68F6527ACF6B4A4C54728824A1C /* FirebaseDatabase */ = { isa = PBXNativeTarget; - buildConfigurationList = CE7EDF042F1D503B96A8DFFD05267C70 /* Build configuration list for PBXNativeTarget "FirebaseDatabase" */; + buildConfigurationList = 5CD6889BADA94E2A6626EC77AF29E630 /* Build configuration list for PBXNativeTarget "FirebaseDatabase" */; buildPhases = ( - 2D6D4C4F606C303B4DC6976367144DBE /* Headers */, - 092903E837A60E3B1B40C22FBA50FE0B /* Sources */, - B7D024CD4C070FA492DF42423B9C36C6 /* Frameworks */, - 15D8850E6779AB4584AB8DC01D323E4E /* Resources */, + 5D9F528A7C30B5DDA9031031CD483F8A /* Headers */, + 82FDCC6059A982B43E6D278F6BD78F49 /* Sources */, + 241FBE170EB6B942C36A53A423CA5EF9 /* Frameworks */, + E12DA939FF897057705F6995B46E06BB /* Resources */, ); buildRules = ( ); dependencies = ( - 0D2C6E7B9AB0ACA41D4DC7E4D79F0CF9 /* PBXTargetDependency */, - 4BDD54DE84523FD142113987337A776F /* PBXTargetDependency */, - 7F7F948B21FE240EDC29385EBEF9183A /* PBXTargetDependency */, + F73E7B983F26BAC44469A432B91417EA /* PBXTargetDependency */, + 2A88023193421A560E6230F002B02CBB /* PBXTargetDependency */, + 9C6A0C13BC09B8C76CFDBD9D10D1DB97 /* PBXTargetDependency */, ); name = FirebaseDatabase; productName = FirebaseDatabase; @@ -3535,12 +4610,12 @@ }; 8D7F5D5DD528D21A72DC87ADA5B12E2D /* GoogleUtilities */ = { isa = PBXNativeTarget; - buildConfigurationList = 5889EFDAC639033660B767DFB79C0B17 /* Build configuration list for PBXNativeTarget "GoogleUtilities" */; + buildConfigurationList = D02EC6E10386AC104A2DE88D8663D646 /* Build configuration list for PBXNativeTarget "GoogleUtilities" */; buildPhases = ( - 29F4FFB36493F1B77BA2FE58D182BC54 /* Headers */, - 7481A70A2E49FC858753E62BD5143436 /* Sources */, - DB0EC5A1ADE5082A47339C126D970A82 /* Frameworks */, - 59B8C42A6615BE2B1271BF7FBCDF5DF9 /* Resources */, + 2E826869D21FE6E614F78648BADC0CCB /* Headers */, + A4A7BD724C7BE0C5B56C2ADF14E6E6A7 /* Sources */, + 08D638204D426905C3BCB3C4408B4AAE /* Frameworks */, + 044C6A0441F934EAFE6973CA681716F9 /* Resources */, ); buildRules = ( ); @@ -3553,12 +4628,12 @@ }; 9307B7A119490930CF70393AB529AAC1 /* leveldb-library */ = { isa = PBXNativeTarget; - buildConfigurationList = 2ED8A72DB7F84BD892A32A461B4808A5 /* Build configuration list for PBXNativeTarget "leveldb-library" */; + buildConfigurationList = C483BDB3B075D62F1ABCE9A898A030B8 /* Build configuration list for PBXNativeTarget "leveldb-library" */; buildPhases = ( - 49D249D4431D6639F3BF2ACBE57743A1 /* Headers */, - 4DED6CD4A61F99B31DCCEED30F53023F /* Sources */, - 7BA7500DBB489DEFDD7CC1FAE6073065 /* Frameworks */, - 25ADC29A7A650A29DEF02D589631C248 /* Resources */, + 43D721F19C8881874F86230D691ED306 /* Headers */, + BB1AE47372147539FD61EA24126B2B0A /* Sources */, + 3DEC4458D88E0CF64837B0E9DBF1CD5F /* Frameworks */, + 2B6E1F7B65C7067ED5E02E6A14F0BEBD /* Resources */, ); buildRules = ( ); @@ -3571,18 +4646,18 @@ }; 9E25537BF40D1A3B30CF43FD3E6ACD94 /* FirebaseInstanceID */ = { isa = PBXNativeTarget; - buildConfigurationList = F362EAC4ECF0734220A524D18E1E841C /* Build configuration list for PBXNativeTarget "FirebaseInstanceID" */; + buildConfigurationList = 5890834FE0D23035FD3B7B69B98BAEEA /* Build configuration list for PBXNativeTarget "FirebaseInstanceID" */; buildPhases = ( - A24C7B861D88C6B41D0F6DC5E61613E0 /* Headers */, - 6D9EDE267FF08AF69AAB8A5E373207CB /* Sources */, - 976E51A906BC5FF2EF5F3F9150364146 /* Frameworks */, - EA9676208E4AA61F34AE72955A52849B /* Resources */, + E67278AB98313BC4182CEB0AD9078052 /* Headers */, + D617048186FCE21F9943224E7F31F60A /* Sources */, + 01B426F209EDE04752FBC8551822AF2A /* Frameworks */, + AF0C094252542DA511C34391D844F94A /* Resources */, ); buildRules = ( ); dependencies = ( - 4D89E1C759D45D05758FB69B690BA072 /* PBXTargetDependency */, - FDF91132B921A52CB4F146E1625A615A /* PBXTargetDependency */, + 2DA75C751BD295961B57D80424FE1C3C /* PBXTargetDependency */, + F5AC023931AA14CF4A905D52BB91C275 /* PBXTargetDependency */, ); name = FirebaseInstanceID; productName = FirebaseInstanceID; @@ -3609,12 +4684,12 @@ }; D2B5E7DCCBBFB32341D857D01211A1A3 /* nanopb */ = { isa = PBXNativeTarget; - buildConfigurationList = 9DF370E92DFA4CEB8080C6483DF947BD /* Build configuration list for PBXNativeTarget "nanopb" */; + buildConfigurationList = F0092F7C27BFDBB1B7C35751888B0695 /* Build configuration list for PBXNativeTarget "nanopb" */; buildPhases = ( - E3149586C30C7F8068BE3E685B0D0898 /* Headers */, - 08F7C99B2D78055CCB3899F0998EB29A /* Sources */, - 2D632BC91937375E86AC42ED026093A4 /* Frameworks */, - 61015189D1642EE52602EDD08707579C /* Resources */, + 68727D18D44DF2AF767D4FB101AF54F9 /* Headers */, + 24C381FFC3FF68C4C4BA7D813476A6B1 /* Sources */, + 7891C922237B87F7A34CC4BB0A54279A /* Frameworks */, + 34C260B0455A86965E812226B56D6083 /* Resources */, ); buildRules = ( ); @@ -3625,6 +4700,42 @@ productReference = 06FC5C9CF96D60C50FCD47D339C91951 /* nanopb.framework */; productType = "com.apple.product-type.framework"; }; + D47C581D39D227080F83B16A22A56664 /* GoogleToolboxForMac */ = { + isa = PBXNativeTarget; + buildConfigurationList = C2E255D649731CD4DCFF2E658C062078 /* Build configuration list for PBXNativeTarget "GoogleToolboxForMac" */; + buildPhases = ( + 72AAD4A115E9E4D0F1A20685B4A2C0A2 /* Headers */, + 5F6AB0E7B7269E470D60E4A3442369B3 /* Sources */, + 20407601DE0907D5B622FA41E12430EB /* Frameworks */, + 3EFAB9ECD54BB8B6EE85E412B4242325 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = GoogleToolboxForMac; + productName = GoogleToolboxForMac; + productReference = 251C6319AD50CB50F18D50CBF727F8B2 /* GoogleToolboxForMac.framework */; + productType = "com.apple.product-type.framework"; + }; + D676E21115185671D7258A56944ABE98 /* GTMSessionFetcher */ = { + isa = PBXNativeTarget; + buildConfigurationList = 36021E283006ABCD25E0624822FD55FB /* Build configuration list for PBXNativeTarget "GTMSessionFetcher" */; + buildPhases = ( + BBEF124231A8D92FE32BA0050BF334F5 /* Headers */, + 8C059D5018EE9FE495F7F060ED6C0336 /* Sources */, + BE5B1AC1F143680DA6864E968D9479CB /* Frameworks */, + A00DEA20F583D2788F4763A43784D481 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = GTMSessionFetcher; + productName = GTMSessionFetcher; + productReference = C1998E0D8085221AD87F89B614C10E52 /* GTMSessionFetcher.framework */; + productType = "com.apple.product-type.framework"; + }; /* End PBXNativeTarget section */ /* Begin PBXProject section */ @@ -3642,18 +4753,22 @@ en, ); mainGroup = CF1408CF629C7361332E53B88F7BD30C; - productRefGroup = 26AEDFFA121DA96AAEB1F4990E2EA686 /* Products */; + productRefGroup = C80BE119C5AFD04375E68775AEF82D1D /* Products */; projectDirPath = ""; projectRoot = ""; targets = ( 072CEA044D2EF26F03496D5996BBF59F /* Firebase */, C49E7A4D59E5C8BE8DE9FB1EFB150185 /* FirebaseAnalytics */, + 6AE4A3D573DED275B034E20506596C62 /* FirebaseAuth */, 8EC0F2618965C875A96BFDBEE5D9734C /* FirebaseAuthInterop */, 4402AFF83DBDC4DD07E198685FDC2DF2 /* FirebaseCore */, 736AF68F6527ACF6B4A4C54728824A1C /* FirebaseDatabase */, 9E25537BF40D1A3B30CF43FD3E6ACD94 /* FirebaseInstanceID */, B53D977A951AFC38B21751B706C1DF83 /* GoogleAppMeasurement */, + CAD3534FC55B0333104E5117C0A9A324 /* GoogleSignIn */, + D47C581D39D227080F83B16A22A56664 /* GoogleToolboxForMac */, 8D7F5D5DD528D21A72DC87ADA5B12E2D /* GoogleUtilities */, + D676E21115185671D7258A56944ABE98 /* GTMSessionFetcher */, 9307B7A119490930CF70393AB529AAC1 /* leveldb-library */, D2B5E7DCCBBFB32341D857D01211A1A3 /* nanopb */, 6A4668B03078B8E5CF7C43B1F8B7A26A /* Pods-shlack */, @@ -3666,6 +4781,13 @@ /* End PBXProject section */ /* Begin PBXResourcesBuildPhase section */ + 044C6A0441F934EAFE6973CA681716F9 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; 13B653C20CC1D0B28162EEB3B2D27AE7 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; @@ -3673,49 +4795,49 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 15D8850E6779AB4584AB8DC01D323E4E /* Resources */ = { + 1E77022A44FCE6EF9E9CB5723F995B42 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - 16B602477B60700805DD009DE8994B35 /* Resources */ = { + 2B6E1F7B65C7067ED5E02E6A14F0BEBD /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - 25ADC29A7A650A29DEF02D589631C248 /* Resources */ = { + 34C260B0455A86965E812226B56D6083 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - 4B4EE0296FAB542B8DB1970361DAC18A /* Resources */ = { + 3EFAB9ECD54BB8B6EE85E412B4242325 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - 59B8C42A6615BE2B1271BF7FBCDF5DF9 /* Resources */ = { + 6437D0E651C3CA599EBB7E51ADC3FB8A /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - 61015189D1642EE52602EDD08707579C /* Resources */ = { + 8DB08285A25B6B4D0CE2EDE2319392D1 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - 6437D0E651C3CA599EBB7E51ADC3FB8A /* Resources */ = { + A00DEA20F583D2788F4763A43784D481 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( @@ -3729,6 +4851,13 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + AF0C094252542DA511C34391D844F94A /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; D098F7F0080A87A1F472C81FC2F85528 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; @@ -3736,7 +4865,14 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - EA9676208E4AA61F34AE72955A52849B /* Resources */ = { + E12DA939FF897057705F6995B46E06BB /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + FB4D4B244F0CC1912B1658AA69E193D9 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( @@ -3775,260 +4911,156 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 0418602B07A48AA9B85B6674B3922664 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - D2F8EB8BD209D09155A7EF9BE85BA0DE /* FIRAnalyticsConfiguration.m in Sources */, - D096596B10F423D23963CE2311179311 /* FIRApp.m in Sources */, - 3AA01C9CFF435DAC5A612ACDFD7794B5 /* FIRAppAssociationRegistration.m in Sources */, - 74DDFA35D83DAE10FE63680F4CFAEE64 /* FIRBundleUtil.m in Sources */, - 3DF4429300F96713350379258EA8AB1A /* FIRComponent.m in Sources */, - 67678431D3A6F33137299F4DFF8C163B /* FIRComponentContainer.m in Sources */, - B2380BE5EFB6B69AD2189FB9D952FD02 /* FIRComponentType.m in Sources */, - A935F47364062B1671C233D9E52E0C33 /* FIRConfiguration.m in Sources */, - 151EC36B66D131E8707B82708A926590 /* FIRDependency.m in Sources */, - 475C32DE27B421CEC1D91F06B8E56C80 /* FirebaseCore-dummy.m in Sources */, - 61AACF7D778FB8C863D23AF6BE47428C /* FIRErrors.m in Sources */, - AFBB3F042D0A5AA5178777F33A8EB738 /* FIRLogger.m in Sources */, - 7D73FA27D8DB6464DD055F7FF0AFF9F0 /* FIROptions.m in Sources */, - F1E84D374A65EB14176C2A48EACCFD2B /* FIRVersion.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 08F7C99B2D78055CCB3899F0998EB29A /* Sources */ = { + 0D2A4427CEDD614A52683213B199A372 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 6FEF41DE89B6CEFB2DBEF80A9AC7156A /* nanopb-dummy.m in Sources */, - F7ACC754DFC9397FF95728CD9083EB53 /* pb_common.c in Sources */, - 7C987D1A3273BE0263F4A042E6FA4C9D /* pb_decode.c in Sources */, - 758E76A0B104032E0845A1BE67313B63 /* pb_encode.c in Sources */, + E9A0660B057A3B88B0991B85C4B8F248 /* YMTGetDeviceName-dummy.m in Sources */, + 4EDD0741723B7698A49018C0F58BF057 /* YMTGetDeviceName.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - 092903E837A60E3B1B40C22FBA50FE0B /* Sources */ = { + 1700C451C98D9DCECBEDFC5E351C5A9E /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 47F57B37033CB9AE138264B78F352789 /* APLevelDB.mm in Sources */, - 7317B7F1DFE34E13DD05E12C850C8E07 /* FAckUserWrite.m in Sources */, - 3A8E7FC71B4E275869756EBC863BAE05 /* FArraySortedDictionary.m in Sources */, - 965459A010FB7FD56029C223E54F3AF5 /* FAtomicNumber.m in Sources */, - 72E7BB1C714620C56A727A1A738E407E /* FAuthTokenProvider.m in Sources */, - 453D09C210A62983622D9B3033351E47 /* fbase64.c in Sources */, - 7284B96124EB53659E5A38AB5BFD20F7 /* FCacheNode.m in Sources */, - 23CD4E9048AE540E63359773CD360CA2 /* FCachePolicy.m in Sources */, - 1E7F350E9A6AA211C53A28F58D22A9F7 /* FCancelEvent.m in Sources */, - A21B19FCB0DFABCE9E33BC8C108708F5 /* FChange.m in Sources */, - ACEE8B9AF12952DFE6883AD1524E1B95 /* FChildChangeAccumulator.m in Sources */, - 50ECA21E528DB9D880C7ACABDED9A9F0 /* FChildEventRegistration.m in Sources */, - 6EC0A404C503642B9540E4D86DE133DC /* FChildrenNode.m in Sources */, - 9AEF54170F7BD7F27A35B8E230877EAF /* FClock.m in Sources */, - 08F09B2728494409BD2DC9C7FD33C7E7 /* FCompoundHash.m in Sources */, - 73F18C354CA89D79D302A0817D8D62E7 /* FCompoundWrite.m in Sources */, - C22660680F678BC5FE5331F25B2E86D6 /* FConnection.m in Sources */, - 41A81452441B42D5FA63B6F7DF2B8E34 /* FConstants.m in Sources */, - EAB7C94331469362F19A16C3D03A2B19 /* FDataEvent.m in Sources */, - F14E4F88AC46BE87F1AA30D7DAACD352 /* FEmptyNode.m in Sources */, - 87E5203F27F981D453D08EDD52531A39 /* FEventEmitter.m in Sources */, - B175CAD91120F2AE08446C985E44ECD0 /* FEventGenerator.m in Sources */, - 6F53DEEC73A0B0613D86DF003E28CF6D /* FEventRaiser.m in Sources */, - 32D4873D9CE7533E2B8FB5A5A780AFC4 /* FImmutableSortedDictionary.m in Sources */, - 1E895BA1D1C67BA6B467D4FE91D5DBCB /* FImmutableSortedSet.m in Sources */, - 5EBE509B62EC6ED972B747240326E420 /* FImmutableTree.m in Sources */, - 572D63DEB6D5CE940424A804F3BACEDF /* FIndex.m in Sources */, - 9DA25B2EF34CDA3DEEA777AC54AF9B6E /* FIndexedFilter.m in Sources */, - BD826E7437E5D46F55E6B115FF4C22B1 /* FIndexedNode.m in Sources */, - 9CB2F238AB2FB6E3D5B0BD71B0DD9AA1 /* FIRDatabase.m in Sources */, - AAF40409B6582A25EBF6DDAF248528B1 /* FIRDatabaseComponent.m in Sources */, - FF0129B4B2CC30780B422D399C2D351B /* FIRDatabaseConfig.m in Sources */, - A17698BC6EEF1C8B99D51B8A9F260E44 /* FIRDatabaseQuery.m in Sources */, - FF2B2C133B5DD5F5AB0A75483F35B5EE /* FIRDatabaseReference.m in Sources */, - 4693044AAE649819BFFAFAF181E5F194 /* FIRDataSnapshot.m in Sources */, - 63A6EF89158BA0342A88A70BCDB53F0C /* FirebaseDatabase-dummy.m in Sources */, - 9DD235CBC46DA99444A765A1E299C212 /* FIRMutableData.m in Sources */, - 6595BA905B0AABEB781AEC9D767E3E7B /* FIRNoopAuthTokenProvider.m in Sources */, - F1D455C68A9B476EFF47977B6ECC54ED /* FIRRetryHelper.m in Sources */, - 86E1163A90BC6A5E152C9C107A904085 /* FIRServerValue.m in Sources */, - 9023EDC814EAC5D91060D88BBA0B2D97 /* FIRTransactionResult.m in Sources */, - 1A2F7B017E1D536C49FE43D267EB5019 /* FKeepSyncedEventRegistration.m in Sources */, - 0FC683562FA07E8AF2EF55D8B2167960 /* FKeyIndex.m in Sources */, - A52B25BEF516CA038540C86CD68B4602 /* FLeafNode.m in Sources */, - 96A0C993563F84620746904C97A55DE6 /* FLevelDBStorageEngine.m in Sources */, - A4F1F77F509D1EB47AAE79A666BABBBF /* FLimitedFilter.m in Sources */, - 0021862FD43EABE9787FA2D7FC7CD7D5 /* FListenComplete.m in Sources */, - 12F011A1AC64F875E04D2EFF3DC2CB42 /* FListenProvider.m in Sources */, - D1FEDD3F09D5720913C1A26ABDC691EF /* FLLRBEmptyNode.m in Sources */, - 9B79B99B4B3CEEB12792BBCD929A10B3 /* FLLRBValueNode.m in Sources */, - FB39F2E1BD5DF5585E3CED648A1A7022 /* FMaxNode.m in Sources */, - D877459D45EEBDAB1E2D149E52DC34F0 /* FMerge.m in Sources */, - FD0E361D9C432483D23BD8FE51271A1F /* FNamedNode.m in Sources */, - 733AAF70FA2B5DDC0CD79A50F9C3F6A7 /* FNextPushId.m in Sources */, - 46CD75B822E8AD2C51BE1039C2BB80F3 /* FOperationSource.m in Sources */, - C663FCE8963BFA8E0CBE7503FD659760 /* FOverwrite.m in Sources */, - E0AD22194E0117CE517A6DDFC7EA3649 /* FParsedUrl.m in Sources */, - A4D9734ACE1883DB16AEF9776C8197F6 /* FPath.m in Sources */, - ABBE590B50F0AC97EEA56EA2881486C6 /* FPathIndex.m in Sources */, - 10C1738591FDCE0FF984AAC9EEE47CD3 /* FPendingPut.m in Sources */, - 9B599B5EB8D6C2E97B0A4B7E6B9E2418 /* FPersistenceManager.m in Sources */, - A580D8D31AB1CE2135E12415F6DF4EE3 /* FPersistentConnection.m in Sources */, - 55EB4BD5AA489C1B932393E9CD151E6F /* FPriorityIndex.m in Sources */, - EE066EED402B361F7BB6FEA5EA25FA91 /* FPruneForest.m in Sources */, - 4EF14159271332EE075771C3585198CB /* FQueryParams.m in Sources */, - FD9ACE888DA2168238688C213668BB05 /* FQuerySpec.m in Sources */, - BE4DB0ECDCB7C539FA09D6ADD1D14D2E /* FRangedFilter.m in Sources */, - FECEF5ADD8A45941A91DCCE5BD0E5087 /* FRangeMerge.m in Sources */, - D1D4A221AF823CB0B3200E50B460462C /* FRepo.m in Sources */, - D5AEF294389709ECF3AC35A4EB868F74 /* FRepoInfo.m in Sources */, - 49F5B82C29710453011ED5F892B91B96 /* FRepoManager.m in Sources */, - 640B42CA70E9ABF7F582CB9E0CFDAED1 /* FServerValues.m in Sources */, - 5A47B09C86EE1E3AC3ABE08A52C6A280 /* FSnapshotHolder.m in Sources */, - 54F084CA1A6FCA5878B5B017B585A1B7 /* FSnapshotUtilities.m in Sources */, - 490A2A7CEE593B12A2591ECC7AD538A8 /* FSparseSnapshotTree.m in Sources */, - E6330EB50A0B5F249B737153EB619465 /* FSRWebSocket.m in Sources */, - 23BCA5D9E3074CAC2793EF3705AD4B8F /* FStringUtilities.m in Sources */, - 9A6631F9BE2D1C8642A54921EB210A4B /* FSyncPoint.m in Sources */, - 853279E9E5069291C7441613E6FFD021 /* FSyncTree.m in Sources */, - C04BC8EBF1E3A0C816AB8BFB7694AB82 /* FTrackedQuery.m in Sources */, - 52B36E9BD0987C1C076179244C715689 /* FTrackedQueryManager.m in Sources */, - 40BBCE59B55AF4DACDD206A0A4D9F68D /* FTransformedEnumerator.m in Sources */, - DD16D5A7EB3F4B888F5D6863A3CBC520 /* FTree.m in Sources */, - AFD04677C3352C023D0258FF28F550B7 /* FTreeNode.m in Sources */, - DF51C380D05B32F3FC8B69D3096A0D98 /* FTreeSortedDictionary.m in Sources */, - 9CB63266275054887263D021A95BD648 /* FTreeSortedDictionaryEnumerator.m in Sources */, - 1EB9E61D79FD9E9A446FA26A9F1F6E0F /* FTupleBoolBlock.m in Sources */, - AA80ECEF61E729BEB073D1DAB31C395F /* FTupleCallbackStatus.m in Sources */, - A86820C5CD61665C39E4D5D43C65CA8D /* FTupleFirebase.m in Sources */, - F6A82FE7D50B0D1B89714BE51CA9C0DF /* FTupleNodePath.m in Sources */, - 1BE1B577C737CD0E8EE51B11CD199F8F /* FTupleObjectNode.m in Sources */, - 5FC48233A9A091A5AD41F48C246425B6 /* FTupleObjects.m in Sources */, - 3E725E644BD03962B59F11CD52FEB12E /* FTupleOnDisconnect.m in Sources */, - 2C48C1B2EF74AD4B05566974D8F98ACB /* FTuplePathValue.m in Sources */, - 657237B8B4F32B13EDF3F4C2DC948AB2 /* FTupleRemovedQueriesEvents.m in Sources */, - D8BE368CE172CD2E06EEB5C1A98AD707 /* FTupleSetIdPath.m in Sources */, - CCB8E583CA5F3953D0E5BFEE2E350A8D /* FTupleStringNode.m in Sources */, - 939DD4BD42800E7A5CEB47528F0F7635 /* FTupleTransaction.m in Sources */, - 7E5BE70443E370E84BECD288D939F429 /* FTupleTSN.m in Sources */, - F261DF6379AD624C530E8AFE2326CDE9 /* FTupleUserCallback.m in Sources */, - 1F8CA46274574BF041AD357C27838B08 /* FUtilities.m in Sources */, - 14A82A4E92B4D8451F67924EFB51B52F /* FValidation.m in Sources */, - DFEC09AD2041549CB68FD873BA3BD35D /* FValueEventRegistration.m in Sources */, - 24E938D0969282690C6E5BE66BC8DB9A /* FValueIndex.m in Sources */, - C751BB8850702F0799370D6437A38A5D /* FView.m in Sources */, - 4346A89B7AF2440D62CB3A1323E9F399 /* FViewCache.m in Sources */, - 301955A8C9DDB9D6E910AAA2068F674F /* FViewProcessor.m in Sources */, - DFC90DAF4138CC9B0FDBA54D1E4BA4EC /* FViewProcessorResult.m in Sources */, - F2FE0C3C57205C18F4A06AC4291717B3 /* FWebSocketConnection.m in Sources */, - ABD104FE4926258ACBCA8AF01C763714 /* FWriteRecord.m in Sources */, - F195966D55C322389496205A7E7C10ED /* FWriteTree.m in Sources */, - 962E953C11BC8DFEF369AE6E249BB805 /* FWriteTreeRef.m in Sources */, - BB7267913ABFB33F15AAC006C881A596 /* NSData+SRB64Additions.m in Sources */, + 2BF6FBC0A64BF107C5D64C61F1397770 /* SwiftyJSON-dummy.m in Sources */, + 7B4CE5C84161E2BFE477F42DFD634382 /* SwiftyJSON.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - 0D2A4427CEDD614A52683213B199A372 /* Sources */ = { + 23D30FF20C0C8350B9A2D2F0661995D0 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - E9A0660B057A3B88B0991B85C4B8F248 /* YMTGetDeviceName-dummy.m in Sources */, - 4EDD0741723B7698A49018C0F58BF057 /* YMTGetDeviceName.swift in Sources */, + 93F55C507533B66C6D863A49038C46A9 /* FIRAnalyticsConfiguration.m in Sources */, + ABA93DBF83B9F5F41D1651E691E9E49D /* FIRApp.m in Sources */, + 137E0310D045404D5219A1A7A1FA3627 /* FIRAppAssociationRegistration.m in Sources */, + 54FEAB0348B08D2F4282EB2FC0DE92E4 /* FIRBundleUtil.m in Sources */, + 8009AEA79C162CB61C9618286609254E /* FIRComponent.m in Sources */, + 89E4D797B30B7D78275CCD0D6A0DE690 /* FIRComponentContainer.m in Sources */, + 6890B762A8E619481C49B99D1C13EA66 /* FIRComponentType.m in Sources */, + 5076ACB270A7DE2A04F8091917E9BFC9 /* FIRConfiguration.m in Sources */, + 6FC3497AFE2C7FB13C01A0A5FA291683 /* FIRDependency.m in Sources */, + 04F4A675FDF2BD14770B394DB487181A /* FirebaseCore-dummy.m in Sources */, + 7017FC8CA015626F62BCD121C35CDA5A /* FIRErrors.m in Sources */, + F450B7AA26FE5D17CE52D087E8BCCE91 /* FIRLogger.m in Sources */, + 4ABC1B7C3ED25D6B7FEFD3B48FEC5F6E /* FIROptions.m in Sources */, + 7147CEAA6104E46E61A126423ACC59B8 /* FIRVersion.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - 1700C451C98D9DCECBEDFC5E351C5A9E /* Sources */ = { + 24C381FFC3FF68C4C4BA7D813476A6B1 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 2BF6FBC0A64BF107C5D64C61F1397770 /* SwiftyJSON-dummy.m in Sources */, - 7B4CE5C84161E2BFE477F42DFD634382 /* SwiftyJSON.swift in Sources */, + BA0A0E6BFAB55F84AFAA454CA7869746 /* nanopb-dummy.m in Sources */, + 7D760869D7B2CEBF58EF1F2CF066A00A /* pb_common.c in Sources */, + 5D31045FF331C59A54CE8A2382FC0132 /* pb_decode.c in Sources */, + D8F755CD7DE6FA8DB2C1B8F9D6CEBB5D /* pb_encode.c in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - 4DED6CD4A61F99B31DCCEED30F53023F /* Sources */ = { + 54DBFFEA25F19DB780DCCF1FEE78E150 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 648F04177C4BC891109B92714CE3463D /* arena.cc in Sources */, - B13106596567A0A94DDCB09B6EEA0F5F /* block.cc in Sources */, - D6286B8F53C25CA4992CD79677186DFD /* block_builder.cc in Sources */, - 4BD25F2503F89F3C6142F669AA60181F /* bloom.cc in Sources */, - E974F97E974332A3224C8820C672190F /* builder.cc in Sources */, - AEBB1D778622D1171DB90A17BD7DBFA5 /* c.cc in Sources */, - 3FD731C6E78A2654DB5A945B4A162A1D /* cache.cc in Sources */, - 0469818BF61408BA96170D6BFDDF8D8B /* coding.cc in Sources */, - 1614C1F4BAA773D84CFFCD82E126FD55 /* comparator.cc in Sources */, - 4826892C57326EA27CF9DA1C3E5E1209 /* crc32c.cc in Sources */, - 7950EEDA3F8DB3450295A15830219E5B /* db_impl.cc in Sources */, - EE8E715C9FD89E5E34DFCAAB9333FADE /* db_iter.cc in Sources */, - 711F328A420EA8F145A6DD9892583604 /* dbformat.cc in Sources */, - 6CDAFF065BD8A6ADE3ADC77B2D55910B /* dumpfile.cc in Sources */, - B62397EFAD2B6F81AFA2E9B7E0B4BF2A /* env.cc in Sources */, - 05D77495455E78F807247A8BB036B847 /* env_posix.cc in Sources */, - B50ADE2EDFF5F69CD03D7E21CDE92483 /* filename.cc in Sources */, - 74B26298C53292901BDABE21139B96F7 /* filter_block.cc in Sources */, - 8F1B4ED7DE1A5416F52004C5ABD2B2BC /* filter_policy.cc in Sources */, - 6AEB7CAD2CD0A97198B8985167A78184 /* format.cc in Sources */, - 6C4A33C73EC1DF7E5DD4B0D0194985FC /* hash.cc in Sources */, - 69ADB70566C8C4702F74025C890DE9F9 /* histogram.cc in Sources */, - C834E9D4D8E2975A91B2F48224EABD9F /* iterator.cc in Sources */, - 306C6ABF32BC5765035C44DD9F3193E6 /* leveldb-library-dummy.m in Sources */, - 0489A2C8FD18EF7D94A18E4BF96DD95B /* log_reader.cc in Sources */, - 6D01C98859956F431A1A5A8F4935618D /* log_writer.cc in Sources */, - A3DAB88B708EEF73F0A36FF4CB87E9D4 /* logging.cc in Sources */, - CC6FD991547515E7182FCD64BF0693FA /* memtable.cc in Sources */, - 92E03C8D5DAA71B0B85CBBFDE9C6ECD1 /* merger.cc in Sources */, - B77D09D7C1EE7B51E6BF67F2D5E8685B /* options.cc in Sources */, - 2302C8229E8F0EFE0EA40A08B426F3FD /* port_posix.cc in Sources */, - 15FAD81F40C375C5E394EEA904697379 /* port_posix_sse.cc in Sources */, - 1840FC1F2A9DFBF3032E00BD359C0272 /* repair.cc in Sources */, - AA78B62C35A0525EC0E881F918232EF1 /* status.cc in Sources */, - F8BBE377AD917DA24FD71FA68FB29D40 /* table.cc in Sources */, - 39CE000BD61CD17BDA98F791C07EAE63 /* table_builder.cc in Sources */, - C0B215FE71A70E5C23B1765F12B08A7A /* table_cache.cc in Sources */, - 9DE2BA9567CE697B595C38AD45F4403E /* testharness.cc in Sources */, - 1E2ED89F2E2217F77412251EADE23BCC /* testutil.cc in Sources */, - A910E7B904893F3E6D5D9A7D9D1CC9C2 /* two_level_iterator.cc in Sources */, - 665633ABBD58BB3047C3CAEBBDA8BD87 /* version_edit.cc in Sources */, - F80892584B889EA9F730214F7844C8B8 /* version_set.cc in Sources */, - 68891E63B5F1AD4EE23A3AD4C789DE4E /* write_batch.cc in Sources */, + 3DA335784177B91FCE1E8D5B290E027C /* FIRActionCodeSettings.m in Sources */, + 53780852A4A34C511566DC4441AB6BE5 /* FIRAdditionalUserInfo.m in Sources */, + FD7AE7E65F4761EDEF1FDE3605B96C64 /* FIRAuth.m in Sources */, + B8FCD4401359DE2DBF39CAF175EAEC62 /* FIRAuthAPNSToken.m in Sources */, + CEDF61FCA5688A6D5F553C556793722A /* FIRAuthAPNSTokenManager.m in Sources */, + 85611C079FA6CF27A4405372E78651CD /* FIRAuthAppCredential.m in Sources */, + B6631CC5836AA60AB8EA71B41B3B7EAB /* FIRAuthAppCredentialManager.m in Sources */, + BAE60B29A325C0D40D4DF220CE2789E4 /* FIRAuthBackend.m in Sources */, + B3900D0CF68499C405C18FBD10A14D7F /* FIRAuthCredential.m in Sources */, + D297257D4B3594D384D116552D0A4153 /* FIRAuthDataResult.m in Sources */, + 70A41BAB6DD37491292B8D9E04186843 /* FIRAuthDefaultUIDelegate.m in Sources */, + FD95DE8164CD2AA33C6BC8B0358FFA2C /* FIRAuthDispatcher.m in Sources */, + 019DFBE6A878A1E018B219750FBB7E7C /* FIRAuthErrorUtils.m in Sources */, + 61B93C9BB819157C1C2945B9417987C4 /* FIRAuthExceptionUtils.m in Sources */, + 755CD5DD97560E5E58AA0E61B808E7C8 /* FIRAuthGlobalWorkQueue.m in Sources */, + B05C4A2C1AFA963738C2DFBE099FFE57 /* FIRAuthKeychain.m in Sources */, + 0006E43012C6143FEB8F1C3E6620EBEC /* FIRAuthNotificationManager.m in Sources */, + 0AD1615904922D45A3D282CF3DD12D13 /* FIRAuthProvider.m in Sources */, + 4CF0D4572C296534488C3783C273AB51 /* FIRAuthRequestConfiguration.m in Sources */, + 5AA2E10387BDCE3981D7329C757B28BF /* FIRAuthSerialTaskQueue.m in Sources */, + CED228E0C263554B5432B93F148414E5 /* FIRAuthSettings.m in Sources */, + 819115413894135969ED6C69A01E3B1E /* FIRAuthStoredUserManager.m in Sources */, + A9BFD8486DA770CAC136032B69CE7899 /* FIRAuthTokenResult.m in Sources */, + CB121252E8B041A99050F03551F63039 /* FIRAuthURLPresenter.m in Sources */, + ECECBE14970FAE23225C7BCE2FEBAD80 /* FIRAuthUserDefaultsStorage.m in Sources */, + AAE3950A1F0792DC5213108E5310784B /* FIRAuthWebUtils.m in Sources */, + D75396CA2A46449BCFD227B43B41EE54 /* FIRAuthWebView.m in Sources */, + 1C92988FEEFFB8E199D4842BE8FE34B7 /* FIRAuthWebViewController.m in Sources */, + 02A7F0FA9D1EC3138DC8BE7005182186 /* FIRCreateAuthURIRequest.m in Sources */, + F73BAEDC9E6B92737917054C9073D652 /* FIRCreateAuthURIResponse.m in Sources */, + 5EBE05C44319E23D5DCE8B6A1F0619E4 /* FIRDeleteAccountRequest.m in Sources */, + 5599937439BC55249E9D44283A20D696 /* FIRDeleteAccountResponse.m in Sources */, + 25C5B4797E3466DB43189562A98E15A1 /* FirebaseAuth-dummy.m in Sources */, + D71AE323BB5E323CF858E1CA43266DC6 /* FirebaseAuthVersion.m in Sources */, + 38BD4326B57F0B24FA226252CB0A9F8B /* FIREmailAuthProvider.m in Sources */, + 61E0AEF259C0F2B0B23F85740F45E601 /* FIREmailLinkSignInRequest.m in Sources */, + 4DB74BA67133DABDBBEA06D6CAA84400 /* FIREmailLinkSignInResponse.m in Sources */, + 7E9A6076710D4A12194D021E60770445 /* FIREmailPasswordAuthCredential.m in Sources */, + B95540C3F40E4F7C6EFE765213EF1ADB /* FIRFacebookAuthCredential.m in Sources */, + 9B14B1527E10AEE78F8A395ADAA4650D /* FIRFacebookAuthProvider.m in Sources */, + 040BF6B6B918ADDA5656691F5C0A4114 /* FIRGameCenterAuthCredential.m in Sources */, + FCA097067DBC99DFFCE082EBB58807FC /* FIRGameCenterAuthProvider.m in Sources */, + 246D7D62B14D75AD2A1235AD0FB976B2 /* FIRGetAccountInfoRequest.m in Sources */, + A41425FF774FF7D689DB225E185D5AEF /* FIRGetAccountInfoResponse.m in Sources */, + DE8200FB27D2BFB9E9AAA94AE61637C0 /* FIRGetOOBConfirmationCodeRequest.m in Sources */, + 6D8089142D11A0867C6830631FDB7561 /* FIRGetOOBConfirmationCodeResponse.m in Sources */, + E63A511A46D236C3311A6B6EC94792EC /* FIRGetProjectConfigRequest.m in Sources */, + E68E12409D8D153E23B40B4D249A9CA6 /* FIRGetProjectConfigResponse.m in Sources */, + F616D4136EF973F9FF0476CA9D8C557E /* FIRGitHubAuthCredential.m in Sources */, + 4C0DF21417D4ECF5A3BEC50D4E714596 /* FIRGitHubAuthProvider.m in Sources */, + 19D49CC9A97AA4978481E8C4E213B5B2 /* FIRGoogleAuthCredential.m in Sources */, + 1848BA42E00418DEAC9D14B153D80DED /* FIRGoogleAuthProvider.m in Sources */, + 10D6A2324EE0FC942221156CE82E7964 /* FIRIdentityToolkitRequest.m in Sources */, + F19BF198595EAE87C08AB2E90D906641 /* FIROAuthCredential.m in Sources */, + A9EBD6E55053AF4E650C0277CADDE168 /* FIROAuthProvider.m in Sources */, + 543E1B896FD5E66850D9D7976B11A562 /* FIRPhoneAuthCredential.m in Sources */, + 966309DE276041FD2CD49046B3295568 /* FIRPhoneAuthProvider.m in Sources */, + DC9400384E7AD42511737AD505E55704 /* FIRResetPasswordRequest.m in Sources */, + 62293494A425F0D2F68AA040F51BFFE4 /* FIRResetPasswordResponse.m in Sources */, + 51F77471D615A71E990A40083999E363 /* FIRSecureTokenRequest.m in Sources */, + 932DC920D7068470D445AB6A98E8FBC8 /* FIRSecureTokenResponse.m in Sources */, + E728F18A12B99B79B14095FA82130B25 /* FIRSecureTokenService.m in Sources */, + 88F12FAE76B67B69B27064468B55C996 /* FIRSendVerificationCodeRequest.m in Sources */, + 3DE16030D99B9D95BEB8D0C657BA7C0F /* FIRSendVerificationCodeResponse.m in Sources */, + B1E8B032DA1BDD4F774F3098345A86B3 /* FIRSetAccountInfoRequest.m in Sources */, + 31D189A821E4E9D5CE0945E6CCE4ED96 /* FIRSetAccountInfoResponse.m in Sources */, + 21E7ED9CD03BD98825E9FFBD8AA42764 /* FIRSignInWithGameCenterRequest.m in Sources */, + 7D862ECB4EEF00A4344148BFBC7B5363 /* FIRSignInWithGameCenterResponse.m in Sources */, + C7111F3C8F15B8716EADE17115B3F1A5 /* FIRSignUpNewUserRequest.m in Sources */, + 55F97A811880E92E60ACDA33166F0669 /* FIRSignUpNewUserResponse.m in Sources */, + 9792856BCB7D540AF97C35452AAEC87E /* FIRTwitterAuthCredential.m in Sources */, + 5AC7366BA8AC66B193365397D4C3E2E9 /* FIRTwitterAuthProvider.m in Sources */, + 289EF8A44392DC9E5733D342F8544E47 /* FIRUser.m in Sources */, + 6C225EF695EF86B622BE2F945986E23A /* FIRUserInfoImpl.m in Sources */, + A1543FF1A76D222F0ABC0CE11ACC35E0 /* FIRUserMetadata.m in Sources */, + DD61581019FDD7626A624303E28F2655 /* FIRVerifyAssertionRequest.m in Sources */, + 8B83E2A9CC5F90A96D4924091D47A639 /* FIRVerifyAssertionResponse.m in Sources */, + CC7D3A7FBD428C720F22976F592317FF /* FIRVerifyClientRequest.m in Sources */, + D027D2833127B8143BE470C45724F1B4 /* FIRVerifyClientResponse.m in Sources */, + 9D99EF18B9327FC95A3055F558EA6F39 /* FIRVerifyCustomTokenRequest.m in Sources */, + 62772729B512EEFB8E0397894ADC9335 /* FIRVerifyCustomTokenResponse.m in Sources */, + 3386BD6CFF00C88438C85565575597DA /* FIRVerifyPasswordRequest.m in Sources */, + 587594098D2FF80187EFFC456A5FB306 /* FIRVerifyPasswordResponse.m in Sources */, + A784AAC5080A69D8488D3FD19DD8627E /* FIRVerifyPhoneNumberRequest.m in Sources */, + C320F94C07015D2A5FD423F22BD25C0A /* FIRVerifyPhoneNumberResponse.m in Sources */, + 7EE2631755396E5E09244010D2D4395F /* NSData+FIRBase64.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - 6D9EDE267FF08AF69AAB8A5E373207CB /* Sources */ = { + 5F6AB0E7B7269E470D60E4A3442369B3 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 5CE63A0A83E8178DD30757AF9FDB4A21 /* FirebaseInstanceID-dummy.m in Sources */, - EC6C997AA3156E951665ED05EACB86A0 /* FIRInstanceID+Private.m in Sources */, - CF5ACAA3B3CC9816C59491E891ADD9E7 /* FIRInstanceID.m in Sources */, - C69E3EE3D2D5557204F51550B4E1F153 /* FIRInstanceIDAPNSInfo.m in Sources */, - AA6D15DC80DBE534012D137FC4005A09 /* FIRInstanceIDAuthKeyChain.m in Sources */, - 118E2DBA6435361849EBB6209B0EE10C /* FIRInstanceIDAuthService.m in Sources */, - 55F467EEDA0C8D8A3E5F857A534D0116 /* FIRInstanceIDBackupExcludedPlist.m in Sources */, - AEEE5B25CD3D160CE4BC1AD60ACCD794 /* FIRInstanceIDCheckinPreferences+Internal.m in Sources */, - 4AEF8B4ADA6D10819FCE00ABF8F4CE48 /* FIRInstanceIDCheckinPreferences.m in Sources */, - F03BE110472759383D8F19271CB781A8 /* FIRInstanceIDCheckinService.m in Sources */, - 01FDD5E33AA5967E02D28A7238099273 /* FIRInstanceIDCheckinStore.m in Sources */, - CD5C8988170EEA3B2A93A272C683DA78 /* FIRInstanceIDCombinedHandler.m in Sources */, - 11843DA835CFC2BEA127A90B33B37DB2 /* FIRInstanceIDConstants.m in Sources */, - 4C69954412F49183F7CCE778A5AB56F4 /* FIRInstanceIDKeychain.m in Sources */, - F72A753895DC7353D659E172420F7205 /* FIRInstanceIDKeyPair.m in Sources */, - 7CC7F71286CFFEB9CBF248533FD85AA5 /* FIRInstanceIDKeyPairStore.m in Sources */, - 31AF8276B4D68924E1E7A72978A48A57 /* FIRInstanceIDKeyPairUtilities.m in Sources */, - 741C03033F309FB2142079B2717CFF3D /* FIRInstanceIDLogger.m in Sources */, - 0307BF33822D34F62F45331BEF503F1C /* FIRInstanceIDStore.m in Sources */, - 83DB6D64D2B864D383494E030E9302D7 /* FIRInstanceIDStringEncoding.m in Sources */, - A6BC1E75A847F7FA386F7516FB46034E /* FIRInstanceIDTokenDeleteOperation.m in Sources */, - E80785B97629BB80F1C0307E7BFC5D9D /* FIRInstanceIDTokenFetchOperation.m in Sources */, - F8D119F6517C4E26B31F7A1495FEB819 /* FIRInstanceIDTokenInfo.m in Sources */, - 9CA972B199B03D98E544E761CB6F514F /* FIRInstanceIDTokenManager.m in Sources */, - A2B827F64CAB3A3860CE5BEADA05EDAD /* FIRInstanceIDTokenOperation.m in Sources */, - B847516221478504E69DB7190AAB0C0B /* FIRInstanceIDTokenStore.m in Sources */, - 57111B91E454A1307A836BE4A468F962 /* FIRInstanceIDURLQueryItem.m in Sources */, - 9E9838E360C3204800015DAD2459EF7A /* FIRInstanceIDUtilities.m in Sources */, - EEDD9E5AA45D35E48DF937D885EE8E02 /* FIRInstanceIDVersionUtilities.m in Sources */, - 937C3A5481D3748CCD6858DAA8F2A7A9 /* NSError+FIRInstanceID.m in Sources */, + 377B3E36A8E0809E3B61BED76F307E79 /* GoogleToolboxForMac-dummy.m in Sources */, + FF96F6DEAB773F8AE5B85CE0D496AB2E /* GTMNSDictionary+URLArguments.m in Sources */, + 577CBD0FD3FC3A9EBD5D31BF7FA765B0 /* GTMNSString+URLArguments.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -4119,179 +5151,434 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 7481A70A2E49FC858753E62BD5143436 /* Sources */ = { + 82FDCC6059A982B43E6D278F6BD78F49 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - F9A0DB786B5CC5A3E4911979C6E9008C /* GoogleUtilities-dummy.m in Sources */, - 805B6A4102FE11758BCB2EEE030879C5 /* GULAppDelegateSwizzler.m in Sources */, - 88AAB6B6877BEE6572920FD869CF0B88 /* GULAppEnvironmentUtil.m in Sources */, - 42963C0329E015530ABD258B78D24881 /* GULLogger.m in Sources */, - E771D4A8652D0D8977C6D46F4E1B62A5 /* GULMutableDictionary.m in Sources */, - 3F8B41D3A1A16AC9BAB206EDE011D08B /* GULNetwork.m in Sources */, - 05164415A2A7E8612561C489427157E9 /* GULNetworkConstants.m in Sources */, - 2EB524669ADE8B03DE422CFE82A6EC8D /* GULNetworkURLSession.m in Sources */, - 6465A5A987FAE40B74C9CF3B550801B3 /* GULNSData+zlib.m in Sources */, - 3C43060D0C4248193D0C4288CB1207AB /* GULReachabilityChecker.m in Sources */, - 80261D5A40ADEB130CC0BE4956D72117 /* GULSwizzler.m in Sources */, - FBF2283A35D79FFB19AC722665E30110 /* GULUserDefaults.m in Sources */, + 15A16A93D14131A3F84FCE5C68A2744C /* APLevelDB.mm in Sources */, + 20E2686C8543B1987D416214D53646E5 /* FAckUserWrite.m in Sources */, + FE6A9150B44D0E1E736038835C6C31AE /* FArraySortedDictionary.m in Sources */, + D0146F689F9FC2BD204DB343B442359F /* FAtomicNumber.m in Sources */, + CBC0C5BE0B91962A529E666EBA637BD9 /* FAuthTokenProvider.m in Sources */, + 191B249AD50B6F097EBC94368F717AAE /* fbase64.c in Sources */, + E348E86A4734561F032D2F12065E6561 /* FCacheNode.m in Sources */, + D1FAD790A3BCB820BC7854BCC51F1B3C /* FCachePolicy.m in Sources */, + DD5D7C0167DF8AF8A9981BCCBB7CD59E /* FCancelEvent.m in Sources */, + 7845CC98BD955B15246FD1461B3FDC1E /* FChange.m in Sources */, + DC9B31C5ABD76ADF2A222B7F1FA052FE /* FChildChangeAccumulator.m in Sources */, + 321EE48B153BDFE55127BCC86BC0EB77 /* FChildEventRegistration.m in Sources */, + DB8B915BD562879FB86413359ED9F095 /* FChildrenNode.m in Sources */, + 6472F855E7A3C885B0C74456B339D238 /* FClock.m in Sources */, + 6B4925C31723B18E321A263497C5EC2C /* FCompoundHash.m in Sources */, + 6B96F5E4BA938AC937FA5EC4AAAEEF01 /* FCompoundWrite.m in Sources */, + 03AA0FE4C64D07830E5E6F0A1D715A43 /* FConnection.m in Sources */, + 75E77537DCBDAC6D15ECE7625F7985E6 /* FConstants.m in Sources */, + 48654D73AD7E617BE4453F47E4A9F16A /* FDataEvent.m in Sources */, + 756915BF467EC561A7F5BFA99F05A4DF /* FEmptyNode.m in Sources */, + A34E42658F7E1D64D4BDBE900A32533B /* FEventEmitter.m in Sources */, + D39B23415ECE63CFAE778DF163123D7B /* FEventGenerator.m in Sources */, + FEF80CB9509C11F92E15A2655C93068C /* FEventRaiser.m in Sources */, + 69D059E09BF6657E7D417A40FEE60265 /* FImmutableSortedDictionary.m in Sources */, + E3A77BCB5FDCC6EF2B274703D8DF170A /* FImmutableSortedSet.m in Sources */, + FBDC992BFC8CED6017B91F5A2A3FD84D /* FImmutableTree.m in Sources */, + DE0888B25AAC31DF32E539AD13986549 /* FIndex.m in Sources */, + 17C22A2777401B54BBD5CDF7A35141B1 /* FIndexedFilter.m in Sources */, + CC4AE361317AD90AD38F5D9A51323F3E /* FIndexedNode.m in Sources */, + 1B79AF24128183E3CD09BCE52E53298C /* FIRDatabase.m in Sources */, + 2CBF90AAAA202FF2CEDA725FC71D2E7A /* FIRDatabaseComponent.m in Sources */, + CF8DA483F177D174313860DF05ADA69E /* FIRDatabaseConfig.m in Sources */, + 67477EE10EFF7D25A80BD4BD0859B22C /* FIRDatabaseQuery.m in Sources */, + 1D492B1A7C1BA280D900348D23F66BEC /* FIRDatabaseReference.m in Sources */, + 70BF12A39CACB86B5B5DA58B4070AC7E /* FIRDataSnapshot.m in Sources */, + 73D1EFAB9DC8CDFD033AD30DCC9009AB /* FirebaseDatabase-dummy.m in Sources */, + D2B20EE2CB88BD922E88F7B0F71B6B4A /* FIRMutableData.m in Sources */, + 1771DB80A60CA8E03A9C247B064907F3 /* FIRNoopAuthTokenProvider.m in Sources */, + 52B80DEDCD7B545AB78AA1146BA4CE2A /* FIRRetryHelper.m in Sources */, + A3576CFEABAE4266350F611E5FA89848 /* FIRServerValue.m in Sources */, + DFB215BB22778A5F073DFA84A088AF86 /* FIRTransactionResult.m in Sources */, + 0D4AE01A4FE5367AD9CD8DB473B837EA /* FKeepSyncedEventRegistration.m in Sources */, + 31402E305267AAE1862905939AE0828A /* FKeyIndex.m in Sources */, + 431E843432456C45315F39D21F5ABE9E /* FLeafNode.m in Sources */, + 1372E891D85024999394DD5FE6AA1F39 /* FLevelDBStorageEngine.m in Sources */, + A14BE675DABB599CA7399A2006FC7FD3 /* FLimitedFilter.m in Sources */, + 99FD56520DAF93DD68EA0CFB96C7FC0F /* FListenComplete.m in Sources */, + B0BBA89E02BABCBF0D13A44C9A0907A1 /* FListenProvider.m in Sources */, + 8CCCF2E241B3684C57EF769C6606946A /* FLLRBEmptyNode.m in Sources */, + A15FDEA6A78B2639751FE59B558CFD89 /* FLLRBValueNode.m in Sources */, + AD6D8C01F8592EC5BDA98579A8DC3332 /* FMaxNode.m in Sources */, + E880CEE7050BF5F4775322F704DDD80B /* FMerge.m in Sources */, + 35A1DE67C9D2B9817159EEB35DAAAACF /* FNamedNode.m in Sources */, + E7A2EEFD2EF96EB1058107FE5E495FD7 /* FNextPushId.m in Sources */, + BF021EFB17B3342D120E5572A4A75A30 /* FOperationSource.m in Sources */, + 458C5A6340B9F46E24BCA01B1ECBD678 /* FOverwrite.m in Sources */, + 2D170EDC134E39AB9C54FD38597AF22E /* FParsedUrl.m in Sources */, + CCE3D2CC9070FE5E6BF71431AA9A264D /* FPath.m in Sources */, + 570188467191984AAFED1D7265ADAB70 /* FPathIndex.m in Sources */, + 6B92916224327E3A01E2DBDA591331BD /* FPendingPut.m in Sources */, + 7151194003158CD528B545C78F779406 /* FPersistenceManager.m in Sources */, + 0CD30512A31005689D7855FD2E2E7BD2 /* FPersistentConnection.m in Sources */, + 5D67CD7251278632B32E973F1463D98B /* FPriorityIndex.m in Sources */, + 01C1B2B02BAAE2DE1C66EBA7E5C9250B /* FPruneForest.m in Sources */, + 45486731D3ADAF8F3DD33EA425739683 /* FQueryParams.m in Sources */, + B8A7BC9B5FAAAAD9584B26CE3DE7FE54 /* FQuerySpec.m in Sources */, + A2A5C0376AC10C1E6139C29A1E5BB6D8 /* FRangedFilter.m in Sources */, + EEF0F1C184ACDA13F9B1ABA9228F880E /* FRangeMerge.m in Sources */, + 00D43E265045F7F9FC9F3B2A72BC6961 /* FRepo.m in Sources */, + 68D5E87D090BB54935B19060C8C28DE5 /* FRepoInfo.m in Sources */, + 0B8306395F299B4E0425E213C3129E41 /* FRepoManager.m in Sources */, + BC2C9C5098977922D63923E9E242F255 /* FServerValues.m in Sources */, + 94DB172EFBED0A21E8B7B2E317F1480C /* FSnapshotHolder.m in Sources */, + F323DD1D86700472ED6A819472A03A8D /* FSnapshotUtilities.m in Sources */, + 87B77B996218FB7867D6B8FF0AC6DCEA /* FSparseSnapshotTree.m in Sources */, + 38A8D1231D1E80FDACBDDBBA90F5F15E /* FSRWebSocket.m in Sources */, + 1621578D24B3E62A697D883927C04CCE /* FStringUtilities.m in Sources */, + D193F3E9C19700BF3B5F9C290E3BA0B8 /* FSyncPoint.m in Sources */, + 31FCDC89E276020D3EC6F710F841D4D3 /* FSyncTree.m in Sources */, + C3F3888699D5DCBBED531F40DDC98CCB /* FTrackedQuery.m in Sources */, + 39742CCADC8C2DC0D6F5E3F2131C7824 /* FTrackedQueryManager.m in Sources */, + D8B1397CB69EBDE6E001B5C6357FCB59 /* FTransformedEnumerator.m in Sources */, + 180845F393836A02543A388CB23F0574 /* FTree.m in Sources */, + 5A07754D03DCD8C5B5DA959012854418 /* FTreeNode.m in Sources */, + 9EF1C45E1DA1FB64F8027B9BD3B4284A /* FTreeSortedDictionary.m in Sources */, + 97DEA7418A51910ECD8BA79739AB7B15 /* FTreeSortedDictionaryEnumerator.m in Sources */, + CACCB9265D7871168CC4A80CB1657A28 /* FTupleBoolBlock.m in Sources */, + E8A908158399DED64F1398D1A44DBCD3 /* FTupleCallbackStatus.m in Sources */, + E052DF42BAFC355DA6797E57B20FB8A9 /* FTupleFirebase.m in Sources */, + B8AC191F85E5AC106FAC02A6DFF87261 /* FTupleNodePath.m in Sources */, + FF805C61944003589B8BEE2F9D76E81A /* FTupleObjectNode.m in Sources */, + 16C03AEAAA207D4E4EB43940792D0A80 /* FTupleObjects.m in Sources */, + A735C1A1F243568B041B8E37D0B70E72 /* FTupleOnDisconnect.m in Sources */, + 4ED8EAFC50973087BF2FD82F42F51927 /* FTuplePathValue.m in Sources */, + 41FB2D5EC9A22F150D50AC0F1EF8E30A /* FTupleRemovedQueriesEvents.m in Sources */, + EA9CE22B41194B7A6BF5748FBFED7AB0 /* FTupleSetIdPath.m in Sources */, + 99147C7B8C2280731BD3DFD49C82A6E1 /* FTupleStringNode.m in Sources */, + 55CB060CA3C5D3F753714F71D2732C05 /* FTupleTransaction.m in Sources */, + 38EF7B980BA448034510F7A25727F216 /* FTupleTSN.m in Sources */, + CAB3A31145BBBB08191E4D3AECAF1153 /* FTupleUserCallback.m in Sources */, + 4493C04BA24226C21AD9BECDF6E388EE /* FUtilities.m in Sources */, + F4BC59EE8481C303784509BACD704E3A /* FValidation.m in Sources */, + 3EC9D2BF2C4A3254E868211F213F261A /* FValueEventRegistration.m in Sources */, + 2628F4188441BB778F7811A7A0B7BC92 /* FValueIndex.m in Sources */, + D366D8DCA0780F0D62ED0147C2E7B0D6 /* FView.m in Sources */, + 7ABCCE81C1D4D8F46ACDFDD52583D3D6 /* FViewCache.m in Sources */, + B9AF8F5314550CCFB04E1A0713F99519 /* FViewProcessor.m in Sources */, + ABA021FA655711BD76D48B64953FABB0 /* FViewProcessorResult.m in Sources */, + C4A7473D96303AFE724DF085E5D4AE02 /* FWebSocketConnection.m in Sources */, + FA41570EF1203AA53DFC369B16E73DBF /* FWriteRecord.m in Sources */, + 713FDE9F8F750675BB3439EC739F002A /* FWriteTree.m in Sources */, + 174A0B6249A2E9D2F32293B107DC48C5 /* FWriteTreeRef.m in Sources */, + 71623F7E7B62E19B4929D3068660E480 /* NSData+SRB64Additions.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - A2D6CAB40581CC08DAB11F890A8ACEAD /* Sources */ = { + 8C059D5018EE9FE495F7F060ED6C0336 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - FF1E2C778180D17F1A62023591E115E2 /* Pods-shlack-dummy.m in Sources */, + E5603B9182DE94600980C0427D9BB878 /* GTMSessionFetcher-dummy.m in Sources */, + 33740283CA6E3E4A8AC9615FF73F0916 /* GTMSessionFetcher.m in Sources */, + C6032F01CBBD89429360EFA40E0AB2A5 /* GTMSessionFetcherLogging.m in Sources */, + 68B9CEC2CE2C0390717B90EBBE57082E /* GTMSessionFetcherService.m in Sources */, + 24CE08D6F574523975143D0D2A1D500C /* GTMSessionUploadFetcher.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; -/* End PBXSourcesBuildPhase section */ - -/* Begin PBXTargetDependency section */ - 01059B5B26710E2E545D84237596F9E0 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = GoogleUtilities; - target = 8D7F5D5DD528D21A72DC87ADA5B12E2D /* GoogleUtilities */; - targetProxy = B1DE991A196C7906F7E1822AA4982144 /* PBXContainerItemProxy */; + 9F4A1618FA1C5469EC735DD60F1A0886 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 49DF631CA0BB2A0E452DEFB7190C5563 /* Pods-shlack-dummy.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; }; - 09098563DA0EE69C6F701CECB543295B /* PBXTargetDependency */ = { + A4A7BD724C7BE0C5B56C2ADF14E6E6A7 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 6FF2667B220A587085E399F8C2832154 /* GoogleUtilities-dummy.m in Sources */, + 6375F47F2ACED9C44465EBF4693D2369 /* GULAppDelegateSwizzler.m in Sources */, + 23249587DCA3528E4FE0795B1EE6F143 /* GULAppEnvironmentUtil.m in Sources */, + 0E935E9439DF4266867D4A1105881127 /* GULLogger.m in Sources */, + D3947236901D20F68EB83807955241E4 /* GULMutableDictionary.m in Sources */, + 19BE6E4716313383ABF54E139C45073A /* GULNetwork.m in Sources */, + 5813C76B4F9F9F596F945C6ECE37F79B /* GULNetworkConstants.m in Sources */, + A4D71737CDD8189E0DB9BDB10F14F133 /* GULNetworkURLSession.m in Sources */, + 55587186083287C9DA985EB3676DA098 /* GULNSData+zlib.m in Sources */, + A837A94918CC3FFBA99ADABED0115EFA /* GULReachabilityChecker.m in Sources */, + 53ACE58E2DA0301258CD8148356594E3 /* GULSwizzler.m in Sources */, + 294E2E5CC27122135E01C1BB516FB24E /* GULUserDefaults.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + BB1AE47372147539FD61EA24126B2B0A /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + EE15E7F1ECF50073C4911E2743797F62 /* arena.cc in Sources */, + DBA908C1419648B0C6816A2ABF8B6A93 /* block.cc in Sources */, + A5AC380DA6DC4395CF18DE928BE552E9 /* block_builder.cc in Sources */, + BB89AAB5CAC920612B313DBCFAB19F54 /* bloom.cc in Sources */, + 19FFE9AD521F97F3960D81E5A212FF32 /* builder.cc in Sources */, + 13199761E00A69389D85D3126FF8896D /* c.cc in Sources */, + E5A9644B04360775757BD4EB8DC1BF9A /* cache.cc in Sources */, + 5809D2684FD006C0C6FFBE1AC94A2F68 /* coding.cc in Sources */, + DA59570745838CA0347EC13453C298C3 /* comparator.cc in Sources */, + F24894CD24FA7C3B116B342C6746FB48 /* crc32c.cc in Sources */, + BBABD549A7638BC4A916C18CB25030E7 /* db_impl.cc in Sources */, + 180AFB754C60D7F7534626802A6B169E /* db_iter.cc in Sources */, + 80D41A3F88EACB7D30C7069AC798C949 /* dbformat.cc in Sources */, + 36BBA1AA975253D63AE25B25D9C3E6EA /* dumpfile.cc in Sources */, + 60B7179FB6E52B0A2D310E540639A5CD /* env.cc in Sources */, + 0448EFE289989909BD4502E2F074930B /* env_posix.cc in Sources */, + FE63D6A61EF05C9269048082A66E761B /* filename.cc in Sources */, + 1EDB11576E2B810A33918B1CCAFB4BBD /* filter_block.cc in Sources */, + 6A0A55C709D3E435941EEB8ECC5AB703 /* filter_policy.cc in Sources */, + 0A55887ED8E9E723A3849B31F8924F6F /* format.cc in Sources */, + BA0B27D430133E096FEC858E05AC4FC3 /* hash.cc in Sources */, + FF0C8F4A32B56C67D3B6FB8095CEB0FF /* histogram.cc in Sources */, + 215D1BF26B0115EAF8D2ED30B2F57FA9 /* iterator.cc in Sources */, + 8F2BE3BD6B2081007C3183A865F41D8B /* leveldb-library-dummy.m in Sources */, + 9C95E082122333EE37646D2C3FFA6531 /* log_reader.cc in Sources */, + 5A6DAEC1A0441CCBD981F4B19B0B73A0 /* log_writer.cc in Sources */, + 08242B919268F8683EB23AAD2165B37A /* logging.cc in Sources */, + 05A5A996673E3D24FD8C5032D2D09ABA /* memtable.cc in Sources */, + 479CF759F2C24E22ADBBC4761A6465BD /* merger.cc in Sources */, + 4C14EF2A6659CB6F5A1FC32EDCDCC980 /* options.cc in Sources */, + F4649C3F759B1030B4353F205C3D15FB /* port_posix.cc in Sources */, + C4CBA7A3C76D84A5BBF3249A6D16FDB7 /* port_posix_sse.cc in Sources */, + 088EC5A32ADD5E754C1A9917F979C6E8 /* repair.cc in Sources */, + F47CB433090415E1C4B2403196DF06AF /* status.cc in Sources */, + C5F83D69B4574FA251687510E940881E /* table.cc in Sources */, + A624A704D89D13B67538456ABC718AD6 /* table_builder.cc in Sources */, + 542837C8418FF262A9A75445CA5548CC /* table_cache.cc in Sources */, + 47411C86EF79DD30157B5188E8247267 /* testharness.cc in Sources */, + 1D5E83658FF14F64E7791B2FF3896E44 /* testutil.cc in Sources */, + 0CDC36B37BEED3C839D93A2225042E71 /* two_level_iterator.cc in Sources */, + 94089EDE1CB139D617675E38AB22277D /* version_edit.cc in Sources */, + 40625BEAC014CED883DB85E63CAD155F /* version_set.cc in Sources */, + B408DB4B7C0BADD73CF362DEA8249AAE /* write_batch.cc in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + D617048186FCE21F9943224E7F31F60A /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 365C633859A9E911AECBA30BF7B211D5 /* FirebaseInstanceID-dummy.m in Sources */, + B6B5262B2E2124BA15E6A7CC98C3D591 /* FIRInstanceID+Private.m in Sources */, + B71E32D1277DC8BDA918F52F211F5823 /* FIRInstanceID.m in Sources */, + D8230BE242FCE98106919EA7D10ACFA7 /* FIRInstanceIDAPNSInfo.m in Sources */, + F4345D8FEB722BF50B2DAEE62F0C5F62 /* FIRInstanceIDAuthKeyChain.m in Sources */, + DA93FE500853B7A66FEB655C8BCA763F /* FIRInstanceIDAuthService.m in Sources */, + EB18F5FA13EBFFF16C3313CFC88620A6 /* FIRInstanceIDBackupExcludedPlist.m in Sources */, + 3B6129338EF70774C743AA339A7C5E8D /* FIRInstanceIDCheckinPreferences+Internal.m in Sources */, + CAB6D471ABB3B6217A2844DA99EC41E7 /* FIRInstanceIDCheckinPreferences.m in Sources */, + 16494F2DD6581F04DA5EAF6AF07426B6 /* FIRInstanceIDCheckinService.m in Sources */, + FE61D50119F8D74FA9C4677382EC50C5 /* FIRInstanceIDCheckinStore.m in Sources */, + E9DF3C99A0599606295B2579363CAA5C /* FIRInstanceIDCombinedHandler.m in Sources */, + 58B258D2EBB75185565E532507EF33BC /* FIRInstanceIDConstants.m in Sources */, + 38448CC00A05D22B07069211A986F0E1 /* FIRInstanceIDKeychain.m in Sources */, + 8D48D266CD27D26DD9A4BB6A3D742F1E /* FIRInstanceIDKeyPair.m in Sources */, + B706213AC4280BCB839EAA9E831669FF /* FIRInstanceIDKeyPairStore.m in Sources */, + AFEA63536CDE56B7015648BBD06D6D17 /* FIRInstanceIDKeyPairUtilities.m in Sources */, + 9E623087AF11AD18B1CEF3412B4F8F81 /* FIRInstanceIDLogger.m in Sources */, + 3B6D109494E2D492807D67F1B8C647A3 /* FIRInstanceIDStore.m in Sources */, + CD63DBC059FC4E0172ABFF4316619203 /* FIRInstanceIDStringEncoding.m in Sources */, + C5ACCFBCA99FEC7DBCF12BBA7616C890 /* FIRInstanceIDTokenDeleteOperation.m in Sources */, + 822E2B5D41C1606651D505C568071BE0 /* FIRInstanceIDTokenFetchOperation.m in Sources */, + 9DEB1E95E377C70D4260CFD2991D7EC8 /* FIRInstanceIDTokenInfo.m in Sources */, + CC2B4CBEED633DF567DB291B995D7299 /* FIRInstanceIDTokenManager.m in Sources */, + F6187D17641D75722FD6876FB4751AC2 /* FIRInstanceIDTokenOperation.m in Sources */, + 643024F91FEB3EBD849BB80854000FC7 /* FIRInstanceIDTokenStore.m in Sources */, + 4C32BEB8014C9FAB5758395D795AC26A /* FIRInstanceIDURLQueryItem.m in Sources */, + BFD81E8FBFC10AA508E01ACB4FE54205 /* FIRInstanceIDUtilities.m in Sources */, + 8DAD48CA74E4537AAD036D3FBB66307D /* FIRInstanceIDVersionUtilities.m in Sources */, + F353E5C273E3997056B2951373A9412E /* NSError+FIRInstanceID.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + 00979718DF9DADBE35C8BB90E54E9DD5 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = GoogleAppMeasurement; - target = B53D977A951AFC38B21751B706C1DF83 /* GoogleAppMeasurement */; - targetProxy = 81E1E3C2CB4A26EA0F1CB4CC97B77F61 /* PBXContainerItemProxy */; + name = "leveldb-library"; + target = 9307B7A119490930CF70393AB529AAC1 /* leveldb-library */; + targetProxy = 8C043B1A797BF350B6A18D1672D52780 /* PBXContainerItemProxy */; }; - 0C6BD3144A335F632CCF4C99D070816B /* PBXTargetDependency */ = { + 031600888D8317EE88A86AA33676CAE0 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = nanopb; target = D2B5E7DCCBBFB32341D857D01211A1A3 /* nanopb */; - targetProxy = F572B46CD233D12F42888F1D2FD23CA4 /* PBXContainerItemProxy */; - }; - 0D2C6E7B9AB0ACA41D4DC7E4D79F0CF9 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = FirebaseAuthInterop; - target = 8EC0F2618965C875A96BFDBEE5D9734C /* FirebaseAuthInterop */; - targetProxy = DC5319A4FA6ED9BF675397886D49C86D /* PBXContainerItemProxy */; + targetProxy = 42DE3BFA410813651C7F0EAFB8041849 /* PBXContainerItemProxy */; }; - 1405C190ED9E1E16D2CF759D59C68D1A /* PBXTargetDependency */ = { + 10E505E3F66A62F9271D6BD2235B2965 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = GoogleUtilities; target = 8D7F5D5DD528D21A72DC87ADA5B12E2D /* GoogleUtilities */; - targetProxy = 613F80DEF8505BEE8F168AE00B0A344A /* PBXContainerItemProxy */; + targetProxy = 1FC8A8A33BF02B3ECBE1804D7025E991 /* PBXContainerItemProxy */; }; - 19635AAE0A3094A8088E910E1AD3B6CD /* PBXTargetDependency */ = { + 1A81A71036F74D704E72A537186AF1DB /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = GoogleAppMeasurement; - target = B53D977A951AFC38B21751B706C1DF83 /* GoogleAppMeasurement */; - targetProxy = FDBD5C32BF0821031B12D52C27BB6437 /* PBXContainerItemProxy */; - }; - 2697D23F9C78EE842EE420E263473F39 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = FirebaseDatabase; - target = 736AF68F6527ACF6B4A4C54728824A1C /* FirebaseDatabase */; - targetProxy = 0E1817B5AF7C26EDA3F32C76520A5117 /* PBXContainerItemProxy */; - }; - 2916D7D01E692573B8924B1E22B249F5 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = FirebaseInstanceID; - target = 9E25537BF40D1A3B30CF43FD3E6ACD94 /* FirebaseInstanceID */; - targetProxy = 4B30BEBD62D207CA9A8DEFA40C960BB8 /* PBXContainerItemProxy */; + name = FirebaseAuth; + target = 6AE4A3D573DED275B034E20506596C62 /* FirebaseAuth */; + targetProxy = FF06650B88EB7E8AD9DF77ED633EE5CC /* PBXContainerItemProxy */; }; - 2BC44A42F39F0E293D77B7F1781E67AE /* PBXTargetDependency */ = { + 1E135D20973E482DB50B66EC4A69C20C /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = FirebaseAuthInterop; - target = 8EC0F2618965C875A96BFDBEE5D9734C /* FirebaseAuthInterop */; - targetProxy = 0D6357B67F8E766A36F624BCC22F80C0 /* PBXContainerItemProxy */; + name = FirebaseAnalytics; + target = C49E7A4D59E5C8BE8DE9FB1EFB150185 /* FirebaseAnalytics */; + targetProxy = 97C8B7BB2E727CD28D0B09549B8EB40A /* PBXContainerItemProxy */; }; - 2DD34E84FDCCB904EF4E2C6EA1B7B749 /* PBXTargetDependency */ = { + 23DD9AA6A0491AD5A0B3DFFE7F705A89 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = Realm; - target = 68494F30B4A13F8E5E88BCCAEC25B0A4 /* Realm */; - targetProxy = FBADF89121945E039789572F8E7ED053 /* PBXContainerItemProxy */; + name = nanopb; + target = D2B5E7DCCBBFB32341D857D01211A1A3 /* nanopb */; + targetProxy = 996ADD7F7A24F23E236A9FB980857D6C /* PBXContainerItemProxy */; }; - 356CEE18323616DEADBFB1761D808ECD /* PBXTargetDependency */ = { + 2A88023193421A560E6230F002B02CBB /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = RealmSwift; - target = 782725687624F8665247B84AB581BEB1 /* RealmSwift */; - targetProxy = 738D63AF2156642401D264E5D6939CF9 /* PBXContainerItemProxy */; + name = FirebaseCore; + target = 4402AFF83DBDC4DD07E198685FDC2DF2 /* FirebaseCore */; + targetProxy = 3C7EAA419241047BAC2F668D1CF8331E /* PBXContainerItemProxy */; }; - 43E2DF941A0D16D7C47B6DF79C4E5507 /* PBXTargetDependency */ = { + 2BF19F93D37B67721B2094479DC72E05 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = nanopb; target = D2B5E7DCCBBFB32341D857D01211A1A3 /* nanopb */; - targetProxy = 2BE9FC47E651654BB45B136793B1695F /* PBXContainerItemProxy */; + targetProxy = A118835ECADAA6E9215E0E35F161E487 /* PBXContainerItemProxy */; }; - 4BDD54DE84523FD142113987337A776F /* PBXTargetDependency */ = { + 2DA75C751BD295961B57D80424FE1C3C /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = FirebaseCore; target = 4402AFF83DBDC4DD07E198685FDC2DF2 /* FirebaseCore */; - targetProxy = 618456ACDB574AF051E97F34159722B1 /* PBXContainerItemProxy */; + targetProxy = 015FDF4341C23AECEDA3028F9505E99B /* PBXContainerItemProxy */; }; - 4D89E1C759D45D05758FB69B690BA072 /* PBXTargetDependency */ = { + 3F212077B0537628F081B60532F42C50 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = FirebaseCore; - target = 4402AFF83DBDC4DD07E198685FDC2DF2 /* FirebaseCore */; - targetProxy = 01DD8A646592BAA427E2EFF7F4F38B96 /* PBXContainerItemProxy */; + name = FirebaseInstanceID; + target = 9E25537BF40D1A3B30CF43FD3E6ACD94 /* FirebaseInstanceID */; + targetProxy = F4F34B38BAA313F56F6236C52E5E27F1 /* PBXContainerItemProxy */; }; - 50896A4EAEB7FA22D435704BA89EE5CB /* PBXTargetDependency */ = { + 40CAB2BB1CE3C8F8B7A194A25F9AF7B7 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = GoogleUtilities; - target = 8D7F5D5DD528D21A72DC87ADA5B12E2D /* GoogleUtilities */; - targetProxy = 5197DC46CE5C1E0A2A35C9E3C05BA05F /* PBXContainerItemProxy */; + name = SwiftyJSON; + target = D118A6A04828FD3CDA8640CD2B6796D2 /* SwiftyJSON */; + targetProxy = 1187E758B651C94D748CC6DD08FE5F13 /* PBXContainerItemProxy */; }; - 51BDCE72D635910F59F8BE2D085ECF27 /* PBXTargetDependency */ = { + 489AC7D88558C3D0F0CD1DBB843A6101 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = FirebaseAnalytics; - target = C49E7A4D59E5C8BE8DE9FB1EFB150185 /* FirebaseAnalytics */; - targetProxy = C2E208823F026C7D492A8D5AACE76E18 /* PBXContainerItemProxy */; + name = GoogleAppMeasurement; + target = B53D977A951AFC38B21751B706C1DF83 /* GoogleAppMeasurement */; + targetProxy = FC1A7BEF047494B1429F4D8020ED17C7 /* PBXContainerItemProxy */; }; - 5EA7EE3FB0C96B611E8BD457D7FE7BA2 /* PBXTargetDependency */ = { + 4927ECBEB56B278F81862E20FFF6E3B3 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = RealmSwift; + target = 782725687624F8665247B84AB581BEB1 /* RealmSwift */; + targetProxy = B5511446CFE5E7D2B805AD95B470747B /* PBXContainerItemProxy */; + }; + 4BAB0FE54438177D17C9F5B47FDC79ED /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = FirebaseAuthInterop; + target = 8EC0F2618965C875A96BFDBEE5D9734C /* FirebaseAuthInterop */; + targetProxy = AD53022F6F21F7D39B14F16255D855B5 /* PBXContainerItemProxy */; + }; + 52E0CFE2971431B143862FC64835B5AA /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = FirebaseInstanceID; target = 9E25537BF40D1A3B30CF43FD3E6ACD94 /* FirebaseInstanceID */; - targetProxy = 65D7363EBCE24720C7A576693856A663 /* PBXContainerItemProxy */; + targetProxy = CC1A1D472AF6446B2816331AEC78C848 /* PBXContainerItemProxy */; }; - 68F495FD6399571335232AD5B7DEB78E /* PBXTargetDependency */ = { + 59ED3CD05ABC41F3BE12FFB374A553F6 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = nanopb; - target = D2B5E7DCCBBFB32341D857D01211A1A3 /* nanopb */; - targetProxy = 67DDAB29B20A0AC750DC1D391A2564D9 /* PBXContainerItemProxy */; + name = GoogleAppMeasurement; + target = B53D977A951AFC38B21751B706C1DF83 /* GoogleAppMeasurement */; + targetProxy = DA49B33617E2AA84CED9506596F923CA /* PBXContainerItemProxy */; + }; + 6D9B3EF84FAE063FF6AAE95F0081F850 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = GTMSessionFetcher; + target = D676E21115185671D7258A56944ABE98 /* GTMSessionFetcher */; + targetProxy = D03B173E9230350ABAE510A4BC49D472 /* PBXContainerItemProxy */; + }; + 713DB8BB5EA4F35FAD748C04E063024D /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = FirebaseCore; + target = 4402AFF83DBDC4DD07E198685FDC2DF2 /* FirebaseCore */; + targetProxy = A59D1859D0397074F073C70FDEEBF960 /* PBXContainerItemProxy */; }; - 74971E7E80CBB07E48E53F2FDEFF1AB8 /* PBXTargetDependency */ = { + 715E30E430A15E30A701625AE6FD0077 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = FirebaseDatabase; target = 736AF68F6527ACF6B4A4C54728824A1C /* FirebaseDatabase */; - targetProxy = 39F0088ED91A9405A724C81D23F01095 /* PBXContainerItemProxy */; + targetProxy = 5B83E7A1F5DF9B1E75431CFB8D8CB422 /* PBXContainerItemProxy */; }; - 7F7F948B21FE240EDC29385EBEF9183A /* PBXTargetDependency */ = { + 73F7DC8C7529C7C112222A12C53A283E /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = "leveldb-library"; - target = 9307B7A119490930CF70393AB529AAC1 /* leveldb-library */; - targetProxy = 7190AB6B712F20360B7FC488CF4516DA /* PBXContainerItemProxy */; + name = FirebaseDatabase; + target = 736AF68F6527ACF6B4A4C54728824A1C /* FirebaseDatabase */; + targetProxy = FA8604C6B0875A3C9EE21B54A2F5942D /* PBXContainerItemProxy */; }; - 80502E36CF51F684EE9239228201D901 /* PBXTargetDependency */ = { + 749EDE2E495AE6F03A0CF3027BD29CAB /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = FirebaseCore; + target = 4402AFF83DBDC4DD07E198685FDC2DF2 /* FirebaseCore */; + targetProxy = EEAEE4E220B73B9C6040560A8850424E /* PBXContainerItemProxy */; + }; + 8110A5D55565149BF3493020F8B9C053 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = GoogleUtilities; target = 8D7F5D5DD528D21A72DC87ADA5B12E2D /* GoogleUtilities */; - targetProxy = 542F1DE0BF918C2EFC3B5EF9FEC93711 /* PBXContainerItemProxy */; + targetProxy = 4B922A1CA351D7865F64F97C8488079D /* PBXContainerItemProxy */; }; - 926485F7A1D02636A6267356E7EA2FF1 /* PBXTargetDependency */ = { + 92E0BEA355A534A61317E0F51033F37A /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = FirebaseCore; target = 4402AFF83DBDC4DD07E198685FDC2DF2 /* FirebaseCore */; - targetProxy = A0F0437B6668EAAFC28E758C26E756D3 /* PBXContainerItemProxy */; + targetProxy = B8FB921B03FE517D08D8897F8B02EDFF /* PBXContainerItemProxy */; }; - 9A61BA0F87FA50A60E77974B16D71507 /* PBXTargetDependency */ = { + 94D74F477B5179072E5C92AD44C7219C /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = FirebaseAnalytics; - target = C49E7A4D59E5C8BE8DE9FB1EFB150185 /* FirebaseAnalytics */; - targetProxy = E18919A303F58B47C928F3AD1CD6CA3F /* PBXContainerItemProxy */; + name = FirebaseAuthInterop; + target = 8EC0F2618965C875A96BFDBEE5D9734C /* FirebaseAuthInterop */; + targetProxy = CF7705BC91E36A101F2D69696588FB49 /* PBXContainerItemProxy */; + }; + 9AD23CD8ED43FC810FB08F581B60E0F7 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = Realm; + target = 68494F30B4A13F8E5E88BCCAEC25B0A4 /* Realm */; + targetProxy = 615F93B977994FCE0BF2357FC5215C60 /* PBXContainerItemProxy */; + }; + 9C6A0C13BC09B8C76CFDBD9D10D1DB97 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "leveldb-library"; + target = 9307B7A119490930CF70393AB529AAC1 /* leveldb-library */; + targetProxy = A16440C89F343DA805567F8A52872CFF /* PBXContainerItemProxy */; }; - A6C24BAFE2C32C8130BFF500FF3ADD84 /* PBXTargetDependency */ = { + A0EDEC4879024011AC9BCBBF016D0116 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = YMTGetDeviceName; target = 2AC46D4577B336F2EB99C348FA35FB25 /* YMTGetDeviceName */; - targetProxy = 3717CE45CE5D49229FDB2E155AE4FE8D /* PBXContainerItemProxy */; + targetProxy = D9B358D912F0D2B55E0AF28A3F15FBF5 /* PBXContainerItemProxy */; + }; + A7775BB4E2CCE9B0C8F1FE9DD7D9C0E4 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = GoogleUtilities; + target = 8D7F5D5DD528D21A72DC87ADA5B12E2D /* GoogleUtilities */; + targetProxy = 0158F214D45594780DA5043641C36E1E /* PBXContainerItemProxy */; + }; + AA57705443CF5E71F105FC141862A122 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = GoogleToolboxForMac; + target = D47C581D39D227080F83B16A22A56664 /* GoogleToolboxForMac */; + targetProxy = 66BE2C6B403019BF36ABAD1493446E37 /* PBXContainerItemProxy */; + }; + AD520AC3B53B1EAE9A470A0CF1BD97FD /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = GoogleSignIn; + target = CAD3534FC55B0333104E5117C0A9A324 /* GoogleSignIn */; + targetProxy = 1738D2FD5AC1D917D3D2D015DA72C20D /* PBXContainerItemProxy */; }; B0F2CB59E7E3549DFC145C2E0973B40E /* PBXTargetDependency */ = { isa = PBXTargetDependency; @@ -4299,48 +5586,95 @@ target = 68494F30B4A13F8E5E88BCCAEC25B0A4 /* Realm */; targetProxy = 2241096BF52D154C2390A33A7C459082 /* PBXContainerItemProxy */; }; - C472727A0907C53BCDFF109E5F28DAAB /* PBXTargetDependency */ = { + B81F0562685656F8E1941792D098F667 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = FirebaseCore; - target = 4402AFF83DBDC4DD07E198685FDC2DF2 /* FirebaseCore */; - targetProxy = B31E14489793CB24F96924F288B4B307 /* PBXContainerItemProxy */; - }; - C6A0A40C554D8618D75AD9BED3046A67 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = SwiftyJSON; - target = D118A6A04828FD3CDA8640CD2B6796D2 /* SwiftyJSON */; - targetProxy = 2E97623D456C388FB06920CC973745B9 /* PBXContainerItemProxy */; + name = GoogleUtilities; + target = 8D7F5D5DD528D21A72DC87ADA5B12E2D /* GoogleUtilities */; + targetProxy = 0CB4AB32F08BA563C96A429EC78BA91B /* PBXContainerItemProxy */; }; - F0EDB7AD0BA0A58BE1AC74B22F27848C /* PBXTargetDependency */ = { + BA3F3C3E3BFF667A724D99C93C238104 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = Firebase; target = 072CEA044D2EF26F03496D5996BBF59F /* Firebase */; - targetProxy = 485C570D3CF8F0A94EFD811CB93F0F21 /* PBXContainerItemProxy */; + targetProxy = C70949F162C5F5C3450B736BCE528BF2 /* PBXContainerItemProxy */; }; - F3B0AD71BFBF1ED0D4BEADE072C307F8 /* PBXTargetDependency */ = { + C44E844706FE789BF6412D4B86ED114B /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = FirebaseCore; - target = 4402AFF83DBDC4DD07E198685FDC2DF2 /* FirebaseCore */; - targetProxy = 1FE9F6679B1482CDBB807E189A9069F6 /* PBXContainerItemProxy */; + name = GTMSessionFetcher; + target = D676E21115185671D7258A56944ABE98 /* GTMSessionFetcher */; + targetProxy = 6DB6AE195A15C54763D592A918CCDB13 /* PBXContainerItemProxy */; }; - F7C1B63012AFBCE1E657F2CBF4558B85 /* PBXTargetDependency */ = { + C6979B5ADED361F6AF6A41A47EFB5857 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = "leveldb-library"; - target = 9307B7A119490930CF70393AB529AAC1 /* leveldb-library */; - targetProxy = 1BE4C7C16545DA02C913373268F42F52 /* PBXContainerItemProxy */; + name = GoogleToolboxForMac; + target = D47C581D39D227080F83B16A22A56664 /* GoogleToolboxForMac */; + targetProxy = 835365C343A2C36069B41D2E9B70B63F /* PBXContainerItemProxy */; }; - FDF91132B921A52CB4F146E1625A615A /* PBXTargetDependency */ = { + D3EF20AA50E51B98619385726930C242 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = FirebaseAuth; + target = 6AE4A3D573DED275B034E20506596C62 /* FirebaseAuth */; + targetProxy = 1CD653DBC1F90F4870D3D065B75BC2A6 /* PBXContainerItemProxy */; + }; + EEEBB7C1EE320CCBEB48EA654B1CE1F1 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = GoogleUtilities; target = 8D7F5D5DD528D21A72DC87ADA5B12E2D /* GoogleUtilities */; - targetProxy = 25D8491B094007D1503A22D44A6AF8DF /* PBXContainerItemProxy */; + targetProxy = A8C4609A9569EAC55B9472D7E1116624 /* PBXContainerItemProxy */; + }; + F1E3ED1B3D1AE0224160D3C592A3F25C /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = FirebaseAnalytics; + target = C49E7A4D59E5C8BE8DE9FB1EFB150185 /* FirebaseAnalytics */; + targetProxy = 713DAC6BFB09EE039489044873AF36BC /* PBXContainerItemProxy */; + }; + F5AC023931AA14CF4A905D52BB91C275 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = GoogleUtilities; + target = 8D7F5D5DD528D21A72DC87ADA5B12E2D /* GoogleUtilities */; + targetProxy = 430A63480468A95BCAB18881FBA0504A /* PBXContainerItemProxy */; + }; + F73E7B983F26BAC44469A432B91417EA /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = FirebaseAuthInterop; + target = 8EC0F2618965C875A96BFDBEE5D9734C /* FirebaseAuthInterop */; + targetProxy = 65AEB41C2C34B03A0CFF734F93EC7966 /* PBXContainerItemProxy */; + }; + F7E114D040CED889A63AC6325D8E84A9 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = FirebaseCore; + target = 4402AFF83DBDC4DD07E198685FDC2DF2 /* FirebaseCore */; + targetProxy = CA4843B55B5463F827106D670E3AFE6F /* PBXContainerItemProxy */; + }; + FF631AD5C73AE7F8166EE7B8C7418A62 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = GTMSessionFetcher; + target = D676E21115185671D7258A56944ABE98 /* GTMSessionFetcher */; + targetProxy = F67700E89740C8E29D211A0AB1F167FB /* PBXContainerItemProxy */; }; /* End PBXTargetDependency section */ /* Begin XCBuildConfiguration section */ - 086A515AB7DA86D8D18D84CF470CA90C /* Debug */ = { + 06A453059D87A97067DBFBBD2D2CCBCA /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 8C15328F8A27109C2BCBE6B708E07E97 /* FirebaseInstanceID.xcconfig */; + baseConfigurationReference = 8C7A0B5816E439A5C3F0DE7104B4825D /* GoogleSignIn.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_IDENTITY = "iPhone Developer"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 0A3DF896E83898F975FBE8D18F1A1336 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 01B4F88D28D6A32495ABD50958F8CDF7 /* FirebaseCore.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -4351,7 +5685,7 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = "Target Support Files/FirebaseInstanceID/FirebaseInstanceID-Info.plist"; + INFOPLIST_FILE = "Target Support Files/FirebaseCore/FirebaseCore-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = ( @@ -4360,9 +5694,9 @@ "@loader_path/Frameworks", ); MACH_O_TYPE = staticlib; - MODULEMAP_FILE = "Target Support Files/FirebaseInstanceID/FirebaseInstanceID.modulemap"; - PRODUCT_MODULE_NAME = FirebaseInstanceID; - PRODUCT_NAME = FirebaseInstanceID; + MODULEMAP_FILE = "Target Support Files/FirebaseCore/FirebaseCore.modulemap"; + PRODUCT_MODULE_NAME = FirebaseCore; + PRODUCT_NAME = FirebaseCore; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; @@ -4373,9 +5707,9 @@ }; name = Debug; }; - 10450A40658F186A9F449D9D863782D3 /* Debug */ = { + 0B8C584488B9C2E2BD94625B6CD93C36 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 8A9ACB8A2501EDF7917DE909BA41091A /* nanopb.xcconfig */; + baseConfigurationReference = E665438643EAB4A514B6BB0B628139A4 /* GoogleUtilities.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -4386,8 +5720,8 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_PREFIX_HEADER = "Target Support Files/nanopb/nanopb-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/nanopb/nanopb-Info.plist"; + GCC_PREFIX_HEADER = "Target Support Files/GoogleUtilities/GoogleUtilities-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/GoogleUtilities/GoogleUtilities-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = ( @@ -4395,22 +5729,23 @@ "@executable_path/Frameworks", "@loader_path/Frameworks", ); - MODULEMAP_FILE = "Target Support Files/nanopb/nanopb.modulemap"; - PRODUCT_MODULE_NAME = nanopb; - PRODUCT_NAME = nanopb; + MODULEMAP_FILE = "Target Support Files/GoogleUtilities/GoogleUtilities.modulemap"; + PRODUCT_MODULE_NAME = GoogleUtilities; + PRODUCT_NAME = GoogleUtilities; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; - name = Debug; + name = Release; }; - 10B3FD5626378E271C2FB65878471619 /* Release */ = { + 13BF50E5DDF2F4531FDECF59665BC9C5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 0E48A978F489122979C445FA01A8BBA9 /* GoogleUtilities.xcconfig */; + baseConfigurationReference = 5B136302758017FF309B3F5F8496601F /* leveldb-library.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -4421,8 +5756,8 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_PREFIX_HEADER = "Target Support Files/GoogleUtilities/GoogleUtilities-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/GoogleUtilities/GoogleUtilities-Info.plist"; + GCC_PREFIX_HEADER = "Target Support Files/leveldb-library/leveldb-library-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/leveldb-library/leveldb-library-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = ( @@ -4430,9 +5765,9 @@ "@executable_path/Frameworks", "@loader_path/Frameworks", ); - MODULEMAP_FILE = "Target Support Files/GoogleUtilities/GoogleUtilities.modulemap"; - PRODUCT_MODULE_NAME = GoogleUtilities; - PRODUCT_NAME = GoogleUtilities; + MODULEMAP_FILE = "Target Support Files/leveldb-library/leveldb-library.modulemap"; + PRODUCT_MODULE_NAME = leveldb; + PRODUCT_NAME = leveldb; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; @@ -4444,9 +5779,9 @@ }; name = Release; }; - 1E219F8B0A24B328E91F1C695E51B0E7 /* Debug */ = { + 1485DF4FC0CDC6A6410CFA6FC1E273A8 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = D00BDC1E165DD6DA4625F59638268FDF /* leveldb-library.xcconfig */; + baseConfigurationReference = 779941B0AB7179D76E9AC94F155A0F35 /* GTMSessionFetcher.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -4457,8 +5792,8 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_PREFIX_HEADER = "Target Support Files/leveldb-library/leveldb-library-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/leveldb-library/leveldb-library-Info.plist"; + GCC_PREFIX_HEADER = "Target Support Files/GTMSessionFetcher/GTMSessionFetcher-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/GTMSessionFetcher/GTMSessionFetcher-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = ( @@ -4466,9 +5801,9 @@ "@executable_path/Frameworks", "@loader_path/Frameworks", ); - MODULEMAP_FILE = "Target Support Files/leveldb-library/leveldb-library.modulemap"; - PRODUCT_MODULE_NAME = leveldb; - PRODUCT_NAME = leveldb; + MODULEMAP_FILE = "Target Support Files/GTMSessionFetcher/GTMSessionFetcher.modulemap"; + PRODUCT_MODULE_NAME = GTMSessionFetcher; + PRODUCT_NAME = GTMSessionFetcher; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; @@ -4479,12 +5814,27 @@ }; name = Debug; }; - 39C24D79A45E4D9F9CAE03404985CC1F /* Debug */ = { + 1D893CDA7C5AFFD0C693DAADF278E0CF /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = FA2B832E8F3FE80F751DB1819DA58D36 /* Pods-shlack.debug.xcconfig */; + baseConfigurationReference = E2132231C42D65DA3DA076C893171EFE /* FirebaseAuthInterop.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_IDENTITY = "iPhone Developer"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 1FB251B553AABB33EDC2C8470C544170 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = A652FE56D57C99A8508C105821FCD649 /* GoogleToolboxForMac.xcconfig */; buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; - CLANG_ENABLE_OBJC_WEAK = NO; CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -4494,23 +5844,22 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = "Target Support Files/Pods-shlack/Pods-shlack-Info.plist"; + GCC_PREFIX_HEADER = "Target Support Files/GoogleToolboxForMac/GoogleToolboxForMac-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/GoogleToolboxForMac/GoogleToolboxForMac-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 12.4; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", "@loader_path/Frameworks", ); - MACH_O_TYPE = staticlib; - MODULEMAP_FILE = "Target Support Files/Pods-shlack/Pods-shlack.modulemap"; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PODS_ROOT = "$(SRCROOT)"; - PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; - PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + MODULEMAP_FILE = "Target Support Files/GoogleToolboxForMac/GoogleToolboxForMac.modulemap"; + PRODUCT_MODULE_NAME = GoogleToolboxForMac; + PRODUCT_NAME = GoogleToolboxForMac; SDKROOT = iphoneos; SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; @@ -4519,7 +5868,7 @@ }; 3DE2C4A3A68C76D798374D77D7644459 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 5098DADAF593781C93B2902E1AD76B83 /* RealmSwift.xcconfig */; + baseConfigurationReference = EC0CE3B29E2BEF9317F430A14A80F888 /* RealmSwift.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -4552,42 +5901,80 @@ }; name = Debug; }; - 45D3BFA350CC6C5259D91E47D268D5DD /* Debug */ = { + 4440A751DFB6DC753533EAEE4D3D1762 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = D59FC9D41442DBFF5B0271E5E2F1FB99 /* FirebaseAnalytics.xcconfig */; + baseConfigurationReference = A652FE56D57C99A8508C105821FCD649 /* GoogleToolboxForMac.xcconfig */; buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CODE_SIGN_IDENTITY = "iPhone Developer"; + CODE_SIGN_IDENTITY = ""; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GCC_PREFIX_HEADER = "Target Support Files/GoogleToolboxForMac/GoogleToolboxForMac-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/GoogleToolboxForMac/GoogleToolboxForMac-Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", + "@loader_path/Frameworks", ); + MODULEMAP_FILE = "Target Support Files/GoogleToolboxForMac/GoogleToolboxForMac.modulemap"; + PRODUCT_MODULE_NAME = GoogleToolboxForMac; + PRODUCT_NAME = GoogleToolboxForMac; SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; }; - name = Debug; + name = Release; }; - 4FF79D735D1CCBBFFF760BA02EFCFCCE /* Release */ = { + 4F51D85BA5984D8FF69892AD40391858 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = D59FC9D41442DBFF5B0271E5E2F1FB99 /* FirebaseAnalytics.xcconfig */; + baseConfigurationReference = D1264144B8D342837CF9AAF58389E6E7 /* FirebaseInstanceID.xcconfig */; buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CODE_SIGN_IDENTITY = "iPhone Developer"; + CODE_SIGN_IDENTITY = ""; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + INFOPLIST_FILE = "Target Support Files/FirebaseInstanceID/FirebaseInstanceID-Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", + "@loader_path/Frameworks", ); + MACH_O_TYPE = staticlib; + MODULEMAP_FILE = "Target Support Files/FirebaseInstanceID/FirebaseInstanceID.modulemap"; + PRODUCT_MODULE_NAME = FirebaseInstanceID; + PRODUCT_NAME = FirebaseInstanceID; SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; }; - name = Release; + name = Debug; }; - 60EF1CD822449BAA9A4EA3F23BB9D0E9 /* Release */ = { + 558C18FAE0940138B0F4A6A7FE028E84 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 67136CB4DA6EC030CF85638850AFC7F9 /* FirebaseDatabase.xcconfig */; + baseConfigurationReference = 626FDD0CFA426DC8302A661DFCEABD02 /* FirebaseDatabase.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -4621,9 +6008,9 @@ }; name = Release; }; - 61C86660A5B8F714D0A811F4569D4333 /* Release */ = { + 5F6C8C2BEA58FABE9E7502CCB850CFDA /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 74691497CC18DB9AEE8E0E4D92A442AC /* FirebaseAuthInterop.xcconfig */; + baseConfigurationReference = 8C7A0B5816E439A5C3F0DE7104B4825D /* GoogleSignIn.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CODE_SIGN_IDENTITY = "iPhone Developer"; @@ -4634,9 +6021,78 @@ ); SDKROOT = iphoneos; TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; }; - name = Release; + name = Debug; + }; + 63607285BB10AAF29C1DE9C4E09E2573 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 5B136302758017FF309B3F5F8496601F /* leveldb-library.xcconfig */; + buildSettings = { + CODE_SIGN_IDENTITY = ""; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GCC_PREFIX_HEADER = "Target Support Files/leveldb-library/leveldb-library-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/leveldb-library/leveldb-library-Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MODULEMAP_FILE = "Target Support Files/leveldb-library/leveldb-library.modulemap"; + PRODUCT_MODULE_NAME = leveldb; + PRODUCT_NAME = leveldb; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; + 63A8B45744AEE7401DDBEBE7CCBD437A /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 1BF3F64E1475BE07E028DA55AFA132B1 /* FirebaseAuth.xcconfig */; + buildSettings = { + CODE_SIGN_IDENTITY = ""; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + INFOPLIST_FILE = "Target Support Files/FirebaseAuth/FirebaseAuth-Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MACH_O_TYPE = staticlib; + MODULEMAP_FILE = "Target Support Files/FirebaseAuth/FirebaseAuth.modulemap"; + PRODUCT_MODULE_NAME = FirebaseAuth; + PRODUCT_NAME = FirebaseAuth; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; }; 6410F571BA8C1AEC6A19403F1B61B0B5 /* Debug */ = { isa = XCBuildConfiguration; @@ -4702,9 +6158,9 @@ }; name = Debug; }; - 67D18C9DF326A5E619A210A7EF32205C /* Release */ = { + 65AFA0495552EDF87F277E9FAEC17640 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = F3D14E66BDB2841D0EFEC8F5AEFDD339 /* FirebaseCore.xcconfig */; + baseConfigurationReference = 01B4F88D28D6A32495ABD50958F8CDF7 /* FirebaseCore.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -4740,7 +6196,7 @@ }; 6E2226BAF771B9AEEA8FE646C18E7879 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = EF15A43804CDC57252EE721FBE98BB9E /* SwiftyJSON.xcconfig */; + baseConfigurationReference = 3AA569CA9554B67CC7193B1F9F48E987 /* SwiftyJSON.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -4774,9 +6230,9 @@ }; name = Release; }; - 76269340860EE984A49BABFEE76558BE /* Debug */ = { + 74C34631282FDB461A7B1F4461A56486 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 67136CB4DA6EC030CF85638850AFC7F9 /* FirebaseDatabase.xcconfig */; + baseConfigurationReference = 779941B0AB7179D76E9AC94F155A0F35 /* GTMSessionFetcher.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -4787,7 +6243,8 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = "Target Support Files/FirebaseDatabase/FirebaseDatabase-Info.plist"; + GCC_PREFIX_HEADER = "Target Support Files/GTMSessionFetcher/GTMSessionFetcher-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/GTMSessionFetcher/GTMSessionFetcher-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = ( @@ -4795,23 +6252,39 @@ "@executable_path/Frameworks", "@loader_path/Frameworks", ); - MACH_O_TYPE = staticlib; - MODULEMAP_FILE = "Target Support Files/FirebaseDatabase/FirebaseDatabase.modulemap"; - PRODUCT_MODULE_NAME = FirebaseDatabase; - PRODUCT_NAME = FirebaseDatabase; + MODULEMAP_FILE = "Target Support Files/GTMSessionFetcher/GTMSessionFetcher.modulemap"; + PRODUCT_MODULE_NAME = GTMSessionFetcher; + PRODUCT_NAME = GTMSessionFetcher; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; + name = Release; + }; + 76FCA2D2471B3471F64CAEE8CAF1162B /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = A544F2B5BDA3346A8A24C423369B02AD /* FirebaseAnalytics.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_IDENTITY = "iPhone Developer"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + }; name = Debug; }; - 948AB563C55778DB2BDCFC461621BB1C /* Debug */ = { + 7E959DC28BB576F7C331136069856BF5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = F3D14E66BDB2841D0EFEC8F5AEFDD339 /* FirebaseCore.xcconfig */; + baseConfigurationReference = E665438643EAB4A514B6BB0B628139A4 /* GoogleUtilities.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -4822,7 +6295,8 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = "Target Support Files/FirebaseCore/FirebaseCore-Info.plist"; + GCC_PREFIX_HEADER = "Target Support Files/GoogleUtilities/GoogleUtilities-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/GoogleUtilities/GoogleUtilities-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = ( @@ -4830,23 +6304,126 @@ "@executable_path/Frameworks", "@loader_path/Frameworks", ); - MACH_O_TYPE = staticlib; - MODULEMAP_FILE = "Target Support Files/FirebaseCore/FirebaseCore.modulemap"; - PRODUCT_MODULE_NAME = FirebaseCore; - PRODUCT_NAME = FirebaseCore; + MODULEMAP_FILE = "Target Support Files/GoogleUtilities/GoogleUtilities.modulemap"; + PRODUCT_MODULE_NAME = GoogleUtilities; + PRODUCT_NAME = GoogleUtilities; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; + 8127742D89EAA1406D47BB472EC478CB /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 17876D81B0B570803637EFAD8FF96AA9 /* Firebase.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_IDENTITY = "iPhone Developer"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 968B527F237C0BAC6CABEC4A351C8AAF /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 650BE7067521C44A7989F69B9235943D /* YMTGetDeviceName.xcconfig */; + buildSettings = { + CODE_SIGN_IDENTITY = ""; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GCC_PREFIX_HEADER = "Target Support Files/YMTGetDeviceName/YMTGetDeviceName-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/YMTGetDeviceName/YMTGetDeviceName-Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MODULEMAP_FILE = "Target Support Files/YMTGetDeviceName/YMTGetDeviceName.modulemap"; + PRODUCT_MODULE_NAME = YMTGetDeviceName; + PRODUCT_NAME = YMTGetDeviceName; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; + 99A253B5D407670B9E3FB4E39D5A1B74 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 17876D81B0B570803637EFAD8FF96AA9 /* Firebase.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_IDENTITY = "iPhone Developer"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 9BCADCB6F8687169010125653FDEA1D0 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 4CE3999652B86F545D1E365914E0CB07 /* nanopb.xcconfig */; + buildSettings = { + CODE_SIGN_IDENTITY = ""; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GCC_PREFIX_HEADER = "Target Support Files/nanopb/nanopb-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/nanopb/nanopb-Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MODULEMAP_FILE = "Target Support Files/nanopb/nanopb.modulemap"; + PRODUCT_MODULE_NAME = nanopb; + PRODUCT_NAME = nanopb; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; - name = Debug; + name = Release; }; - 968B527F237C0BAC6CABEC4A351C8AAF /* Debug */ = { + A23DA826FA076507EFAF5F0A121AFF1E /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 28BBEC04B983CBBD5FF45C2EA0F3F227 /* YMTGetDeviceName.xcconfig */; + baseConfigurationReference = D1264144B8D342837CF9AAF58389E6E7 /* FirebaseInstanceID.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -4857,8 +6434,7 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_PREFIX_HEADER = "Target Support Files/YMTGetDeviceName/YMTGetDeviceName-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/YMTGetDeviceName/YMTGetDeviceName-Info.plist"; + INFOPLIST_FILE = "Target Support Files/FirebaseInstanceID/FirebaseInstanceID-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = ( @@ -4866,34 +6442,20 @@ "@executable_path/Frameworks", "@loader_path/Frameworks", ); - MODULEMAP_FILE = "Target Support Files/YMTGetDeviceName/YMTGetDeviceName.modulemap"; - PRODUCT_MODULE_NAME = YMTGetDeviceName; - PRODUCT_NAME = YMTGetDeviceName; + MACH_O_TYPE = staticlib; + MODULEMAP_FILE = "Target Support Files/FirebaseInstanceID/FirebaseInstanceID.modulemap"; + PRODUCT_MODULE_NAME = FirebaseInstanceID; + PRODUCT_NAME = FirebaseInstanceID; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; - name = Debug; - }; - 9CB363C0980233387D491C3EF056B800 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = C22DE7CBE891E917FBA4E0A1B3D73675 /* Firebase.xcconfig */; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CODE_SIGN_IDENTITY = "iPhone Developer"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - ); - SDKROOT = iphoneos; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Debug; + name = Release; }; A27713CB74E99AF202AADC23200A32F4 /* Release */ = { isa = XCBuildConfiguration; @@ -4955,49 +6517,29 @@ }; name = Release; }; - A82CBEFB44B1D235A1FCC6361139BD11 /* Release */ = { + A352648FB92F0A45FA75071C794D44A3 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 235E01FCEEA7F67507DB1F4E538A25BB /* Pods-shlack.release.xcconfig */; + baseConfigurationReference = 02D67D74F651B74DEEA46690B13916A1 /* GoogleAppMeasurement.xcconfig */; buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; - CLANG_ENABLE_OBJC_WEAK = NO; - CODE_SIGN_IDENTITY = ""; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = "Target Support Files/Pods-shlack/Pods-shlack-Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 12.4; + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_IDENTITY = "iPhone Developer"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", - "@loader_path/Frameworks", ); - MACH_O_TYPE = staticlib; - MODULEMAP_FILE = "Target Support Files/Pods-shlack/Pods-shlack.modulemap"; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PODS_ROOT = "$(SRCROOT)"; - PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; - PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; SDKROOT = iphoneos; - SKIP_INSTALL = YES; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; }; name = Release; }; - B33C53C9A576E880D3F1BFE1269B643E /* Release */ = { + A539077D95DDFF9149FC66620ED659A5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 8C15328F8A27109C2BCBE6B708E07E97 /* FirebaseInstanceID.xcconfig */; + baseConfigurationReference = D41C036A3ABAC4E0A610258ED95D0F9D /* Pods-shlack.release.xcconfig */; buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; + CLANG_ENABLE_OBJC_WEAK = NO; CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -5007,22 +6549,23 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = "Target Support Files/FirebaseInstanceID/FirebaseInstanceID-Info.plist"; + INFOPLIST_FILE = "Target Support Files/Pods-shlack/Pods-shlack-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; + IPHONEOS_DEPLOYMENT_TARGET = 12.4; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", "@loader_path/Frameworks", ); MACH_O_TYPE = staticlib; - MODULEMAP_FILE = "Target Support Files/FirebaseInstanceID/FirebaseInstanceID.modulemap"; - PRODUCT_MODULE_NAME = FirebaseInstanceID; - PRODUCT_NAME = FirebaseInstanceID; + MODULEMAP_FILE = "Target Support Files/Pods-shlack/Pods-shlack.modulemap"; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PODS_ROOT = "$(SRCROOT)"; + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; SDKROOT = iphoneos; SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; @@ -5030,45 +6573,25 @@ }; name = Release; }; - B5984B3C13FFC2198F2D1DEF740D594F /* Release */ = { + AE5905060F71BAEA35295C1669543757 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = D00BDC1E165DD6DA4625F59638268FDF /* leveldb-library.xcconfig */; + baseConfigurationReference = E2132231C42D65DA3DA076C893171EFE /* FirebaseAuthInterop.xcconfig */; buildSettings = { - CODE_SIGN_IDENTITY = ""; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_PREFIX_HEADER = "Target Support Files/leveldb-library/leveldb-library-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/leveldb-library/leveldb-library-Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_IDENTITY = "iPhone Developer"; IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", - "@loader_path/Frameworks", ); - MODULEMAP_FILE = "Target Support Files/leveldb-library/leveldb-library.modulemap"; - PRODUCT_MODULE_NAME = leveldb; - PRODUCT_NAME = leveldb; SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; }; - name = Release; + name = Debug; }; - BDE36816DBE746AF28AA356786AFD75C /* Debug */ = { + AECEC173899F33914EC7F1CA536820E2 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 331AE045C22D6C1F25D1F2E041AA8D07 /* GoogleAppMeasurement.xcconfig */; + baseConfigurationReference = A544F2B5BDA3346A8A24C423369B02AD /* FirebaseAnalytics.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CODE_SIGN_IDENTITY = "iPhone Developer"; @@ -5079,12 +6602,13 @@ ); SDKROOT = iphoneos; TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; }; - name = Debug; + name = Release; }; C43230F9DEB7D417E12F4C2F50C9242D /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 28BBEC04B983CBBD5FF45C2EA0F3F227 /* YMTGetDeviceName.xcconfig */; + baseConfigurationReference = 650BE7067521C44A7989F69B9235943D /* YMTGetDeviceName.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -5120,7 +6644,7 @@ }; CC353A55682822F47BF89E7F7917E5CE /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 9693A32E3D3AE4A6A64D89F5FE5C6842 /* Realm.xcconfig */; + baseConfigurationReference = 2954CFD22F14C6F62EC86398F2662B5F /* Realm.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -5154,26 +6678,9 @@ }; name = Release; }; - D797B064F85DD5A69F218E1C4D03E316 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 331AE045C22D6C1F25D1F2E041AA8D07 /* GoogleAppMeasurement.xcconfig */; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CODE_SIGN_IDENTITY = "iPhone Developer"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - ); - SDKROOT = iphoneos; - TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; - DC9B00E9868021E9E59848B1319A0A89 /* Release */ = { + D8364C1E92DDFB0DBD4136015A037D8E /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 8A9ACB8A2501EDF7917DE909BA41091A /* nanopb.xcconfig */; + baseConfigurationReference = 4CE3999652B86F545D1E365914E0CB07 /* nanopb.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -5201,15 +6708,14 @@ SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; - name = Release; + name = Debug; }; - DF13138F88537FD570393E8890FDD5E9 /* Release */ = { + E432E36A5A3640B386092E2361B89838 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = C22DE7CBE891E917FBA4E0A1B3D73675 /* Firebase.xcconfig */; + baseConfigurationReference = 02D67D74F651B74DEEA46690B13916A1 /* GoogleAppMeasurement.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CODE_SIGN_IDENTITY = "iPhone Developer"; @@ -5220,13 +6726,12 @@ ); SDKROOT = iphoneos; TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; }; - name = Release; + name = Debug; }; - E39C44BE100D544978E90430CAF3F2AE /* Debug */ = { + E8F35927ECB754A46E0AC8C2BACAF32D /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 0E48A978F489122979C445FA01A8BBA9 /* GoogleUtilities.xcconfig */; + baseConfigurationReference = 3AA569CA9554B67CC7193B1F9F48E987 /* SwiftyJSON.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -5237,8 +6742,8 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_PREFIX_HEADER = "Target Support Files/GoogleUtilities/GoogleUtilities-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/GoogleUtilities/GoogleUtilities-Info.plist"; + GCC_PREFIX_HEADER = "Target Support Files/SwiftyJSON/SwiftyJSON-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/SwiftyJSON/SwiftyJSON-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = ( @@ -5246,9 +6751,9 @@ "@executable_path/Frameworks", "@loader_path/Frameworks", ); - MODULEMAP_FILE = "Target Support Files/GoogleUtilities/GoogleUtilities.modulemap"; - PRODUCT_MODULE_NAME = GoogleUtilities; - PRODUCT_NAME = GoogleUtilities; + MODULEMAP_FILE = "Target Support Files/SwiftyJSON/SwiftyJSON.modulemap"; + PRODUCT_MODULE_NAME = SwiftyJSON; + PRODUCT_NAME = SwiftyJSON; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; @@ -5259,9 +6764,9 @@ }; name = Debug; }; - E8F35927ECB754A46E0AC8C2BACAF32D /* Debug */ = { + F2CB458DBD2FE1C0AC83F8836E686AF2 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = EF15A43804CDC57252EE721FBE98BB9E /* SwiftyJSON.xcconfig */; + baseConfigurationReference = 1BF3F64E1475BE07E028DA55AFA132B1 /* FirebaseAuth.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -5272,8 +6777,7 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_PREFIX_HEADER = "Target Support Files/SwiftyJSON/SwiftyJSON-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/SwiftyJSON/SwiftyJSON-Info.plist"; + INFOPLIST_FILE = "Target Support Files/FirebaseAuth/FirebaseAuth-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = ( @@ -5281,38 +6785,98 @@ "@executable_path/Frameworks", "@loader_path/Frameworks", ); - MODULEMAP_FILE = "Target Support Files/SwiftyJSON/SwiftyJSON.modulemap"; - PRODUCT_MODULE_NAME = SwiftyJSON; - PRODUCT_NAME = SwiftyJSON; + MACH_O_TYPE = staticlib; + MODULEMAP_FILE = "Target Support Files/FirebaseAuth/FirebaseAuth.modulemap"; + PRODUCT_MODULE_NAME = FirebaseAuth; + PRODUCT_NAME = FirebaseAuth; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; - name = Debug; + name = Release; }; - EFB7968E8CFDCFC451689CA52D963DE3 /* Debug */ = { + F86F5AA5D94340F9BF0508955C1D75C5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 74691497CC18DB9AEE8E0E4D92A442AC /* FirebaseAuthInterop.xcconfig */; + baseConfigurationReference = EC0CE3B29E2BEF9317F430A14A80F888 /* RealmSwift.xcconfig */; buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CODE_SIGN_IDENTITY = "iPhone Developer"; + CODE_SIGN_IDENTITY = ""; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GCC_PREFIX_HEADER = "Target Support Files/RealmSwift/RealmSwift-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/RealmSwift/RealmSwift-Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MODULEMAP_FILE = "Target Support Files/RealmSwift/RealmSwift.modulemap"; + PRODUCT_MODULE_NAME = RealmSwift; + PRODUCT_NAME = RealmSwift; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; + F9D136E99AB6F4A32FA1589BEA54E8E9 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 53E28C5A63DF6B7590F818E6075F14C7 /* Pods-shlack.debug.xcconfig */; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; + CLANG_ENABLE_OBJC_WEAK = NO; + CODE_SIGN_IDENTITY = ""; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + INFOPLIST_FILE = "Target Support Files/Pods-shlack/Pods-shlack-Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 12.4; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", ); + MACH_O_TYPE = staticlib; + MODULEMAP_FILE = "Target Support Files/Pods-shlack/Pods-shlack.modulemap"; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PODS_ROOT = "$(SRCROOT)"; + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; SDKROOT = iphoneos; + SKIP_INSTALL = YES; TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; }; name = Debug; }; - F86F5AA5D94340F9BF0508955C1D75C5 /* Release */ = { + FDB7F27BE5034F628AA386B905D43B40 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 5098DADAF593781C93B2902E1AD76B83 /* RealmSwift.xcconfig */; + baseConfigurationReference = 626FDD0CFA426DC8302A661DFCEABD02 /* FirebaseDatabase.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -5323,8 +6887,7 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_PREFIX_HEADER = "Target Support Files/RealmSwift/RealmSwift-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/RealmSwift/RealmSwift-Info.plist"; + INFOPLIST_FILE = "Target Support Files/FirebaseDatabase/FirebaseDatabase-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = ( @@ -5332,23 +6895,23 @@ "@executable_path/Frameworks", "@loader_path/Frameworks", ); - MODULEMAP_FILE = "Target Support Files/RealmSwift/RealmSwift.modulemap"; - PRODUCT_MODULE_NAME = RealmSwift; - PRODUCT_NAME = RealmSwift; + MACH_O_TYPE = staticlib; + MODULEMAP_FILE = "Target Support Files/FirebaseDatabase/FirebaseDatabase.modulemap"; + PRODUCT_MODULE_NAME = FirebaseDatabase; + PRODUCT_NAME = FirebaseDatabase; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; - name = Release; + name = Debug; }; FF4BEBB018E12A643B6C2719D84DEEBD /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 9693A32E3D3AE4A6A64D89F5FE5C6842 /* Realm.xcconfig */; + baseConfigurationReference = 2954CFD22F14C6F62EC86398F2662B5F /* Realm.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -5384,11 +6947,11 @@ /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ - 0B27D0ECC15F7FCC4D5ABE012A695B74 /* Build configuration list for PBXNativeTarget "Pods-shlack" */ = { + 1C65B459EE4502555433D070880563A6 /* Build configuration list for PBXNativeTarget "Pods-shlack" */ = { isa = XCConfigurationList; buildConfigurations = ( - 39C24D79A45E4D9F9CAE03404985CC1F /* Debug */, - A82CBEFB44B1D235A1FCC6361139BD11 /* Release */, + F9D136E99AB6F4A32FA1589BEA54E8E9 /* Debug */, + A539077D95DDFF9149FC66620ED659A5 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -5402,11 +6965,20 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 2ED8A72DB7F84BD892A32A461B4808A5 /* Build configuration list for PBXNativeTarget "leveldb-library" */ = { + 27E03C742D58EE8D2DD3198775CEC365 /* Build configuration list for PBXAggregateTarget "Firebase" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 8127742D89EAA1406D47BB472EC478CB /* Debug */, + 99A253B5D407670B9E3FB4E39D5A1B74 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 36021E283006ABCD25E0624822FD55FB /* Build configuration list for PBXNativeTarget "GTMSessionFetcher" */ = { isa = XCConfigurationList; buildConfigurations = ( - 1E219F8B0A24B328E91F1C695E51B0E7 /* Debug */, - B5984B3C13FFC2198F2D1DEF740D594F /* Release */, + 1485DF4FC0CDC6A6410CFA6FC1E273A8 /* Debug */, + 74C34631282FDB461A7B1F4461A56486 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -5420,6 +6992,24 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; + 55AD7F59A05C9709A6FD9CA79BA2D606 /* Build configuration list for PBXAggregateTarget "FirebaseAuthInterop" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + AE5905060F71BAEA35295C1669543757 /* Debug */, + 1D893CDA7C5AFFD0C693DAADF278E0CF /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 57ECFEB3B4AAA94566EDA10D78A6B898 /* Build configuration list for PBXAggregateTarget "FirebaseAnalytics" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 76FCA2D2471B3471F64CAEE8CAF1162B /* Debug */, + AECEC173899F33914EC7F1CA536820E2 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; 57F907D5B24E77BF53968EF962AE52C5 /* Build configuration list for PBXNativeTarget "YMTGetDeviceName" */ = { isa = XCConfigurationList; buildConfigurations = ( @@ -5429,92 +7019,92 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 5889EFDAC639033660B767DFB79C0B17 /* Build configuration list for PBXNativeTarget "GoogleUtilities" */ = { + 5890834FE0D23035FD3B7B69B98BAEEA /* Build configuration list for PBXNativeTarget "FirebaseInstanceID" */ = { isa = XCConfigurationList; buildConfigurations = ( - E39C44BE100D544978E90430CAF3F2AE /* Debug */, - 10B3FD5626378E271C2FB65878471619 /* Release */, + 4F51D85BA5984D8FF69892AD40391858 /* Debug */, + A23DA826FA076507EFAF5F0A121AFF1E /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 62468BF9C7EDA172E951A24083C3ECA7 /* Build configuration list for PBXNativeTarget "SwiftyJSON" */ = { + 5CD6889BADA94E2A6626EC77AF29E630 /* Build configuration list for PBXNativeTarget "FirebaseDatabase" */ = { isa = XCConfigurationList; buildConfigurations = ( - E8F35927ECB754A46E0AC8C2BACAF32D /* Debug */, - 6E2226BAF771B9AEEA8FE646C18E7879 /* Release */, + FDB7F27BE5034F628AA386B905D43B40 /* Debug */, + 558C18FAE0940138B0F4A6A7FE028E84 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 8DD977517C248319451DB85AB81E48C6 /* Build configuration list for PBXAggregateTarget "Firebase" */ = { + 62468BF9C7EDA172E951A24083C3ECA7 /* Build configuration list for PBXNativeTarget "SwiftyJSON" */ = { isa = XCConfigurationList; buildConfigurations = ( - 9CB363C0980233387D491C3EF056B800 /* Debug */, - DF13138F88537FD570393E8890FDD5E9 /* Release */, + E8F35927ECB754A46E0AC8C2BACAF32D /* Debug */, + 6E2226BAF771B9AEEA8FE646C18E7879 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 9CC09DAFA09AB5D8EBE5B10BB259F60F /* Build configuration list for PBXAggregateTarget "FirebaseAnalytics" */ = { + 971B6C0AE9DBBBC42D37001BF68A48FE /* Build configuration list for PBXAggregateTarget "GoogleAppMeasurement" */ = { isa = XCConfigurationList; buildConfigurations = ( - 45D3BFA350CC6C5259D91E47D268D5DD /* Debug */, - 4FF79D735D1CCBBFFF760BA02EFCFCCE /* Release */, + E432E36A5A3640B386092E2361B89838 /* Debug */, + A352648FB92F0A45FA75071C794D44A3 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 9DF370E92DFA4CEB8080C6483DF947BD /* Build configuration list for PBXNativeTarget "nanopb" */ = { + 9A0D92C6EC324885D2D9195A767B55CA /* Build configuration list for PBXNativeTarget "FirebaseAuth" */ = { isa = XCConfigurationList; buildConfigurations = ( - 10450A40658F186A9F449D9D863782D3 /* Debug */, - DC9B00E9868021E9E59848B1319A0A89 /* Release */, + 63A8B45744AEE7401DDBEBE7CCBD437A /* Debug */, + F2CB458DBD2FE1C0AC83F8836E686AF2 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - B06332DA5A203A349B875007390EFEC7 /* Build configuration list for PBXAggregateTarget "FirebaseAuthInterop" */ = { + C2E255D649731CD4DCFF2E658C062078 /* Build configuration list for PBXNativeTarget "GoogleToolboxForMac" */ = { isa = XCConfigurationList; buildConfigurations = ( - EFB7968E8CFDCFC451689CA52D963DE3 /* Debug */, - 61C86660A5B8F714D0A811F4569D4333 /* Release */, + 1FB251B553AABB33EDC2C8470C544170 /* Debug */, + 4440A751DFB6DC753533EAEE4D3D1762 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - B4E31387BEF7D6F4FD8B312C9578BAE0 /* Build configuration list for PBXAggregateTarget "GoogleAppMeasurement" */ = { + C483BDB3B075D62F1ABCE9A898A030B8 /* Build configuration list for PBXNativeTarget "leveldb-library" */ = { isa = XCConfigurationList; buildConfigurations = ( - BDE36816DBE746AF28AA356786AFD75C /* Debug */, - D797B064F85DD5A69F218E1C4D03E316 /* Release */, + 63607285BB10AAF29C1DE9C4E09E2573 /* Debug */, + 13BF50E5DDF2F4531FDECF59665BC9C5 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - B689081FB906519ACAD19D7FC6F23A92 /* Build configuration list for PBXNativeTarget "FirebaseCore" */ = { + CE0641E81519F94D3542E1D4F4FE19EC /* Build configuration list for PBXAggregateTarget "GoogleSignIn" */ = { isa = XCConfigurationList; buildConfigurations = ( - 948AB563C55778DB2BDCFC461621BB1C /* Debug */, - 67D18C9DF326A5E619A210A7EF32205C /* Release */, + 5F6C8C2BEA58FABE9E7502CCB850CFDA /* Debug */, + 06A453059D87A97067DBFBBD2D2CCBCA /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - CE7EDF042F1D503B96A8DFFD05267C70 /* Build configuration list for PBXNativeTarget "FirebaseDatabase" */ = { + D02EC6E10386AC104A2DE88D8663D646 /* Build configuration list for PBXNativeTarget "GoogleUtilities" */ = { isa = XCConfigurationList; buildConfigurations = ( - 76269340860EE984A49BABFEE76558BE /* Debug */, - 60EF1CD822449BAA9A4EA3F23BB9D0E9 /* Release */, + 7E959DC28BB576F7C331136069856BF5 /* Debug */, + 0B8C584488B9C2E2BD94625B6CD93C36 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - F362EAC4ECF0734220A524D18E1E841C /* Build configuration list for PBXNativeTarget "FirebaseInstanceID" */ = { + F0092F7C27BFDBB1B7C35751888B0695 /* Build configuration list for PBXNativeTarget "nanopb" */ = { isa = XCConfigurationList; buildConfigurations = ( - 086A515AB7DA86D8D18D84CF470CA90C /* Debug */, - B33C53C9A576E880D3F1BFE1269B643E /* Release */, + D8364C1E92DDFB0DBD4136015A037D8E /* Debug */, + 9BCADCB6F8687169010125653FDEA1D0 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -5528,6 +7118,15 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; + FB1DB574AD61EEB4887DAADBDD6AE859 /* Build configuration list for PBXNativeTarget "FirebaseCore" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 0A3DF896E83898F975FBE8D18F1A1336 /* Debug */, + 65AFA0495552EDF87F277E9FAEC17640 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; /* End XCConfigurationList section */ }; rootObject = BFDFE7DC352907FC980B868725387E98 /* Project object */; diff --git a/shlack/Pods/Target Support Files/Firebase/Firebase.xcconfig b/shlack/Pods/Target Support Files/Firebase/Firebase.xcconfig index 7397fad..8242d9a 100644 --- a/shlack/Pods/Target Support Files/Firebase/Firebase.xcconfig +++ b/shlack/Pods/Target Support Files/Firebase/Firebase.xcconfig @@ -1,5 +1,5 @@ CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/Firebase -FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCore" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseDatabase" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseInstanceID" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleUtilities" "${PODS_CONFIGURATION_BUILD_DIR}/leveldb-library" "${PODS_CONFIGURATION_BUILD_DIR}/nanopb" "${PODS_ROOT}/FirebaseAnalytics/Frameworks" "${PODS_ROOT}/GoogleAppMeasurement/Frameworks" +FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseAuth" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCore" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseDatabase" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseInstanceID" "${PODS_CONFIGURATION_BUILD_DIR}/GTMSessionFetcher" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleUtilities" "${PODS_CONFIGURATION_BUILD_DIR}/leveldb-library" "${PODS_CONFIGURATION_BUILD_DIR}/nanopb" "${PODS_ROOT}/FirebaseAnalytics/Frameworks" "${PODS_ROOT}/GoogleAppMeasurement/Frameworks" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/Firebase" "${PODS_ROOT}/Headers/Public" PODS_BUILD_DIR = ${BUILD_DIR} diff --git a/shlack/Pods/Target Support Files/FirebaseAuth/FirebaseAuth-Info.plist b/shlack/Pods/Target Support Files/FirebaseAuth/FirebaseAuth-Info.plist new file mode 100644 index 0000000..7e52625 --- /dev/null +++ b/shlack/Pods/Target Support Files/FirebaseAuth/FirebaseAuth-Info.plist @@ -0,0 +1,26 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIdentifier + ${PRODUCT_BUNDLE_IDENTIFIER} + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${PRODUCT_NAME} + CFBundlePackageType + FMWK + CFBundleShortVersionString + 6.2.1 + CFBundleSignature + ???? + CFBundleVersion + ${CURRENT_PROJECT_VERSION} + NSPrincipalClass + + + diff --git a/shlack/Pods/Target Support Files/FirebaseAuth/FirebaseAuth-dummy.m b/shlack/Pods/Target Support Files/FirebaseAuth/FirebaseAuth-dummy.m new file mode 100644 index 0000000..63dc459 --- /dev/null +++ b/shlack/Pods/Target Support Files/FirebaseAuth/FirebaseAuth-dummy.m @@ -0,0 +1,5 @@ +#import +@interface PodsDummy_FirebaseAuth : NSObject +@end +@implementation PodsDummy_FirebaseAuth +@end diff --git a/shlack/Pods/Target Support Files/FirebaseAuth/FirebaseAuth-umbrella.h b/shlack/Pods/Target Support Files/FirebaseAuth/FirebaseAuth-umbrella.h new file mode 100644 index 0000000..3554468 --- /dev/null +++ b/shlack/Pods/Target Support Files/FirebaseAuth/FirebaseAuth-umbrella.h @@ -0,0 +1,42 @@ +#ifdef __OBJC__ +#import +#else +#ifndef FOUNDATION_EXPORT +#if defined(__cplusplus) +#define FOUNDATION_EXPORT extern "C" +#else +#define FOUNDATION_EXPORT extern +#endif +#endif +#endif + +#import "FIRActionCodeSettings.h" +#import "FIRAdditionalUserInfo.h" +#import "FIRAuth.h" +#import "FIRAuthAPNSTokenType.h" +#import "FIRAuthCredential.h" +#import "FIRAuthDataResult.h" +#import "FIRAuthErrors.h" +#import "FIRAuthSettings.h" +#import "FIRAuthTokenResult.h" +#import "FIRAuthUIDelegate.h" +#import "FirebaseAuth.h" +#import "FirebaseAuthVersion.h" +#import "FIREmailAuthProvider.h" +#import "FIRFacebookAuthProvider.h" +#import "FIRFederatedAuthProvider.h" +#import "FIRGameCenterAuthProvider.h" +#import "FIRGitHubAuthProvider.h" +#import "FIRGoogleAuthProvider.h" +#import "FIROAuthCredential.h" +#import "FIROAuthProvider.h" +#import "FIRPhoneAuthCredential.h" +#import "FIRPhoneAuthProvider.h" +#import "FIRTwitterAuthProvider.h" +#import "FIRUser.h" +#import "FIRUserInfo.h" +#import "FIRUserMetadata.h" + +FOUNDATION_EXPORT double FirebaseAuthVersionNumber; +FOUNDATION_EXPORT const unsigned char FirebaseAuthVersionString[]; + diff --git a/shlack/Pods/Target Support Files/FirebaseAuth/FirebaseAuth.modulemap b/shlack/Pods/Target Support Files/FirebaseAuth/FirebaseAuth.modulemap new file mode 100644 index 0000000..7ee6c70 --- /dev/null +++ b/shlack/Pods/Target Support Files/FirebaseAuth/FirebaseAuth.modulemap @@ -0,0 +1,6 @@ +framework module FirebaseAuth { + umbrella header "FirebaseAuth-umbrella.h" + + export * + module * { export * } +} diff --git a/shlack/Pods/Target Support Files/FirebaseAuth/FirebaseAuth.xcconfig b/shlack/Pods/Target Support Files/FirebaseAuth/FirebaseAuth.xcconfig new file mode 100644 index 0000000..e553e86 --- /dev/null +++ b/shlack/Pods/Target Support Files/FirebaseAuth/FirebaseAuth.xcconfig @@ -0,0 +1,11 @@ +CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/FirebaseAuth +FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCore" "${PODS_CONFIGURATION_BUILD_DIR}/GTMSessionFetcher" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleUtilities" +GCC_C_LANGUAGE_STANDARD = c99 +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 FIRAuth_VERSION=6.2.1 FIRAuth_MINOR_VERSION=6.2 +HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" +PODS_BUILD_DIR = ${BUILD_DIR} +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_ROOT = ${SRCROOT} +PODS_TARGET_SRCROOT = ${PODS_ROOT}/FirebaseAuth +PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} +SKIP_INSTALL = YES diff --git a/shlack/Pods/Target Support Files/GTMSessionFetcher/GTMSessionFetcher-Info.plist b/shlack/Pods/Target Support Files/GTMSessionFetcher/GTMSessionFetcher-Info.plist new file mode 100644 index 0000000..e433362 --- /dev/null +++ b/shlack/Pods/Target Support Files/GTMSessionFetcher/GTMSessionFetcher-Info.plist @@ -0,0 +1,26 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIdentifier + ${PRODUCT_BUNDLE_IDENTIFIER} + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${PRODUCT_NAME} + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.2.2 + CFBundleSignature + ???? + CFBundleVersion + ${CURRENT_PROJECT_VERSION} + NSPrincipalClass + + + diff --git a/shlack/Pods/Target Support Files/GTMSessionFetcher/GTMSessionFetcher-dummy.m b/shlack/Pods/Target Support Files/GTMSessionFetcher/GTMSessionFetcher-dummy.m new file mode 100644 index 0000000..13d68b3 --- /dev/null +++ b/shlack/Pods/Target Support Files/GTMSessionFetcher/GTMSessionFetcher-dummy.m @@ -0,0 +1,5 @@ +#import +@interface PodsDummy_GTMSessionFetcher : NSObject +@end +@implementation PodsDummy_GTMSessionFetcher +@end diff --git a/shlack/Pods/Target Support Files/GTMSessionFetcher/GTMSessionFetcher-prefix.pch b/shlack/Pods/Target Support Files/GTMSessionFetcher/GTMSessionFetcher-prefix.pch new file mode 100644 index 0000000..beb2a24 --- /dev/null +++ b/shlack/Pods/Target Support Files/GTMSessionFetcher/GTMSessionFetcher-prefix.pch @@ -0,0 +1,12 @@ +#ifdef __OBJC__ +#import +#else +#ifndef FOUNDATION_EXPORT +#if defined(__cplusplus) +#define FOUNDATION_EXPORT extern "C" +#else +#define FOUNDATION_EXPORT extern +#endif +#endif +#endif + diff --git a/shlack/Pods/Target Support Files/GTMSessionFetcher/GTMSessionFetcher-umbrella.h b/shlack/Pods/Target Support Files/GTMSessionFetcher/GTMSessionFetcher-umbrella.h new file mode 100644 index 0000000..1c0b7b8 --- /dev/null +++ b/shlack/Pods/Target Support Files/GTMSessionFetcher/GTMSessionFetcher-umbrella.h @@ -0,0 +1,20 @@ +#ifdef __OBJC__ +#import +#else +#ifndef FOUNDATION_EXPORT +#if defined(__cplusplus) +#define FOUNDATION_EXPORT extern "C" +#else +#define FOUNDATION_EXPORT extern +#endif +#endif +#endif + +#import "GTMSessionFetcher.h" +#import "GTMSessionFetcherLogging.h" +#import "GTMSessionFetcherService.h" +#import "GTMSessionUploadFetcher.h" + +FOUNDATION_EXPORT double GTMSessionFetcherVersionNumber; +FOUNDATION_EXPORT const unsigned char GTMSessionFetcherVersionString[]; + diff --git a/shlack/Pods/Target Support Files/GTMSessionFetcher/GTMSessionFetcher.modulemap b/shlack/Pods/Target Support Files/GTMSessionFetcher/GTMSessionFetcher.modulemap new file mode 100644 index 0000000..5121a4d --- /dev/null +++ b/shlack/Pods/Target Support Files/GTMSessionFetcher/GTMSessionFetcher.modulemap @@ -0,0 +1,6 @@ +framework module GTMSessionFetcher { + umbrella header "GTMSessionFetcher-umbrella.h" + + export * + module * { export * } +} diff --git a/shlack/Pods/Target Support Files/GTMSessionFetcher/GTMSessionFetcher.xcconfig b/shlack/Pods/Target Support Files/GTMSessionFetcher/GTMSessionFetcher.xcconfig new file mode 100644 index 0000000..fbeb64c --- /dev/null +++ b/shlack/Pods/Target Support Files/GTMSessionFetcher/GTMSessionFetcher.xcconfig @@ -0,0 +1,9 @@ +CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/GTMSessionFetcher +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +OTHER_LDFLAGS = $(inherited) -framework "Security" +PODS_BUILD_DIR = ${BUILD_DIR} +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_ROOT = ${SRCROOT} +PODS_TARGET_SRCROOT = ${PODS_ROOT}/GTMSessionFetcher +PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} +SKIP_INSTALL = YES diff --git a/shlack/Pods/Target Support Files/GoogleSignIn/GoogleSignIn.xcconfig b/shlack/Pods/Target Support Files/GoogleSignIn/GoogleSignIn.xcconfig new file mode 100644 index 0000000..fc0d41e --- /dev/null +++ b/shlack/Pods/Target Support Files/GoogleSignIn/GoogleSignIn.xcconfig @@ -0,0 +1,10 @@ +CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/GoogleSignIn +FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/GTMSessionFetcher" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleToolboxForMac" "${PODS_ROOT}/GoogleSignIn/Frameworks" +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +OTHER_LDFLAGS = $(inherited) -framework "CoreGraphics" -framework "CoreText" -framework "LocalAuthentication" -framework "SafariServices" -framework "Security" -framework "SystemConfiguration" +PODS_BUILD_DIR = ${BUILD_DIR} +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_ROOT = ${SRCROOT} +PODS_TARGET_SRCROOT = ${PODS_ROOT}/GoogleSignIn +PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} +SKIP_INSTALL = YES diff --git a/shlack/Pods/Target Support Files/GoogleToolboxForMac/GoogleToolboxForMac-Info.plist b/shlack/Pods/Target Support Files/GoogleToolboxForMac/GoogleToolboxForMac-Info.plist new file mode 100644 index 0000000..0816e96 --- /dev/null +++ b/shlack/Pods/Target Support Files/GoogleToolboxForMac/GoogleToolboxForMac-Info.plist @@ -0,0 +1,26 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIdentifier + ${PRODUCT_BUNDLE_IDENTIFIER} + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${PRODUCT_NAME} + CFBundlePackageType + FMWK + CFBundleShortVersionString + 2.2.1 + CFBundleSignature + ???? + CFBundleVersion + ${CURRENT_PROJECT_VERSION} + NSPrincipalClass + + + diff --git a/shlack/Pods/Target Support Files/GoogleToolboxForMac/GoogleToolboxForMac-dummy.m b/shlack/Pods/Target Support Files/GoogleToolboxForMac/GoogleToolboxForMac-dummy.m new file mode 100644 index 0000000..9e35ec0 --- /dev/null +++ b/shlack/Pods/Target Support Files/GoogleToolboxForMac/GoogleToolboxForMac-dummy.m @@ -0,0 +1,5 @@ +#import +@interface PodsDummy_GoogleToolboxForMac : NSObject +@end +@implementation PodsDummy_GoogleToolboxForMac +@end diff --git a/shlack/Pods/Target Support Files/GoogleToolboxForMac/GoogleToolboxForMac-prefix.pch b/shlack/Pods/Target Support Files/GoogleToolboxForMac/GoogleToolboxForMac-prefix.pch new file mode 100644 index 0000000..beb2a24 --- /dev/null +++ b/shlack/Pods/Target Support Files/GoogleToolboxForMac/GoogleToolboxForMac-prefix.pch @@ -0,0 +1,12 @@ +#ifdef __OBJC__ +#import +#else +#ifndef FOUNDATION_EXPORT +#if defined(__cplusplus) +#define FOUNDATION_EXPORT extern "C" +#else +#define FOUNDATION_EXPORT extern +#endif +#endif +#endif + diff --git a/shlack/Pods/Target Support Files/GoogleToolboxForMac/GoogleToolboxForMac-umbrella.h b/shlack/Pods/Target Support Files/GoogleToolboxForMac/GoogleToolboxForMac-umbrella.h new file mode 100644 index 0000000..f719448 --- /dev/null +++ b/shlack/Pods/Target Support Files/GoogleToolboxForMac/GoogleToolboxForMac-umbrella.h @@ -0,0 +1,22 @@ +#ifdef __OBJC__ +#import +#else +#ifndef FOUNDATION_EXPORT +#if defined(__cplusplus) +#define FOUNDATION_EXPORT extern "C" +#else +#define FOUNDATION_EXPORT extern +#endif +#endif +#endif + +#import "GTMDebugSelectorValidation.h" +#import "GTMDebugThreadValidation.h" +#import "GTMMethodCheck.h" +#import "GTMDefines.h" +#import "GTMNSDictionary+URLArguments.h" +#import "GTMNSString+URLArguments.h" + +FOUNDATION_EXPORT double GoogleToolboxForMacVersionNumber; +FOUNDATION_EXPORT const unsigned char GoogleToolboxForMacVersionString[]; + diff --git a/shlack/Pods/Target Support Files/GoogleToolboxForMac/GoogleToolboxForMac.modulemap b/shlack/Pods/Target Support Files/GoogleToolboxForMac/GoogleToolboxForMac.modulemap new file mode 100644 index 0000000..3245b6d --- /dev/null +++ b/shlack/Pods/Target Support Files/GoogleToolboxForMac/GoogleToolboxForMac.modulemap @@ -0,0 +1,6 @@ +framework module GoogleToolboxForMac { + umbrella header "GoogleToolboxForMac-umbrella.h" + + export * + module * { export * } +} diff --git a/shlack/Pods/Target Support Files/GoogleToolboxForMac/GoogleToolboxForMac.xcconfig b/shlack/Pods/Target Support Files/GoogleToolboxForMac/GoogleToolboxForMac.xcconfig new file mode 100644 index 0000000..52c3ab5 --- /dev/null +++ b/shlack/Pods/Target Support Files/GoogleToolboxForMac/GoogleToolboxForMac.xcconfig @@ -0,0 +1,8 @@ +CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/GoogleToolboxForMac +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +PODS_BUILD_DIR = ${BUILD_DIR} +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_ROOT = ${SRCROOT} +PODS_TARGET_SRCROOT = ${PODS_ROOT}/GoogleToolboxForMac +PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} +SKIP_INSTALL = YES diff --git a/shlack/Pods/Target Support Files/Pods-shlack/Pods-shlack-acknowledgements.markdown b/shlack/Pods/Target Support Files/Pods-shlack/Pods-shlack-acknowledgements.markdown index 35312aa..f9cf845 100644 --- a/shlack/Pods/Target Support Files/Pods-shlack/Pods-shlack-acknowledgements.markdown +++ b/shlack/Pods/Target Support Files/Pods-shlack/Pods-shlack-acknowledgements.markdown @@ -9,6 +9,212 @@ Copyright 2019 Google Copyright 2019 Google +## FirebaseAuth + + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + 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. + + ## FirebaseAuthInterop @@ -833,9 +1039,425 @@ Copyright 2019 Google limitations under the License. -## GoogleAppMeasurement +## GTMSessionFetcher + + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + 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. + + +## GoogleAppMeasurement + +Copyright 2019 Google + +## GoogleSignIn + +Copyright 2018 Google + +## GoogleToolboxForMac + + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + 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. -Copyright 2019 Google ## GoogleUtilities diff --git a/shlack/Pods/Target Support Files/Pods-shlack/Pods-shlack-acknowledgements.plist b/shlack/Pods/Target Support Files/Pods-shlack/Pods-shlack-acknowledgements.plist index 00163e7..0d7d1d7 100644 --- a/shlack/Pods/Target Support Files/Pods-shlack/Pods-shlack-acknowledgements.plist +++ b/shlack/Pods/Target Support Files/Pods-shlack/Pods-shlack-acknowledgements.plist @@ -225,6 +225,218 @@ Copyright [yyyy] [name of copyright owner] + 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. + + License + Apache + Title + FirebaseAuth + Type + PSGroupSpecifier + + + FooterText + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + 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 @@ -452,7 +664,219 @@ License Apache Title - FirebaseCore + FirebaseCore + Type + PSGroupSpecifier + + + FooterText + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + 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. + + License + Apache + Title + FirebaseDatabase Type PSGroupSpecifier @@ -664,7 +1088,7 @@ License Apache Title - FirebaseDatabase + FirebaseInstanceID Type PSGroupSpecifier @@ -876,7 +1300,7 @@ License Apache Title - FirebaseInstanceID + GTMSessionFetcher Type PSGroupSpecifier @@ -890,6 +1314,228 @@ Type PSGroupSpecifier + + FooterText + Copyright 2018 Google + License + Copyright + Title + GoogleSignIn + Type + PSGroupSpecifier + + + FooterText + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + 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. + + License + Apache + Title + GoogleToolboxForMac + Type + PSGroupSpecifier + FooterText diff --git a/shlack/Pods/Target Support Files/Pods-shlack/Pods-shlack-frameworks-Debug-input-files.xcfilelist b/shlack/Pods/Target Support Files/Pods-shlack/Pods-shlack-frameworks-Debug-input-files.xcfilelist index ca6b6a5..ede4686 100644 --- a/shlack/Pods/Target Support Files/Pods-shlack/Pods-shlack-frameworks-Debug-input-files.xcfilelist +++ b/shlack/Pods/Target Support Files/Pods-shlack/Pods-shlack-frameworks-Debug-input-files.xcfilelist @@ -1,4 +1,6 @@ ${PODS_ROOT}/Target Support Files/Pods-shlack/Pods-shlack-frameworks.sh +${BUILT_PRODUCTS_DIR}/GTMSessionFetcher/GTMSessionFetcher.framework +${BUILT_PRODUCTS_DIR}/GoogleToolboxForMac/GoogleToolboxForMac.framework ${BUILT_PRODUCTS_DIR}/GoogleUtilities/GoogleUtilities.framework ${BUILT_PRODUCTS_DIR}/Realm/Realm.framework ${BUILT_PRODUCTS_DIR}/RealmSwift/RealmSwift.framework diff --git a/shlack/Pods/Target Support Files/Pods-shlack/Pods-shlack-frameworks-Debug-output-files.xcfilelist b/shlack/Pods/Target Support Files/Pods-shlack/Pods-shlack-frameworks-Debug-output-files.xcfilelist index 57f1f1f..ae414b9 100644 --- a/shlack/Pods/Target Support Files/Pods-shlack/Pods-shlack-frameworks-Debug-output-files.xcfilelist +++ b/shlack/Pods/Target Support Files/Pods-shlack/Pods-shlack-frameworks-Debug-output-files.xcfilelist @@ -1,3 +1,5 @@ +${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/GTMSessionFetcher.framework +${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/GoogleToolboxForMac.framework ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/GoogleUtilities.framework ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Realm.framework ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/RealmSwift.framework diff --git a/shlack/Pods/Target Support Files/Pods-shlack/Pods-shlack-frameworks-Release-input-files.xcfilelist b/shlack/Pods/Target Support Files/Pods-shlack/Pods-shlack-frameworks-Release-input-files.xcfilelist index ca6b6a5..ede4686 100644 --- a/shlack/Pods/Target Support Files/Pods-shlack/Pods-shlack-frameworks-Release-input-files.xcfilelist +++ b/shlack/Pods/Target Support Files/Pods-shlack/Pods-shlack-frameworks-Release-input-files.xcfilelist @@ -1,4 +1,6 @@ ${PODS_ROOT}/Target Support Files/Pods-shlack/Pods-shlack-frameworks.sh +${BUILT_PRODUCTS_DIR}/GTMSessionFetcher/GTMSessionFetcher.framework +${BUILT_PRODUCTS_DIR}/GoogleToolboxForMac/GoogleToolboxForMac.framework ${BUILT_PRODUCTS_DIR}/GoogleUtilities/GoogleUtilities.framework ${BUILT_PRODUCTS_DIR}/Realm/Realm.framework ${BUILT_PRODUCTS_DIR}/RealmSwift/RealmSwift.framework diff --git a/shlack/Pods/Target Support Files/Pods-shlack/Pods-shlack-frameworks-Release-output-files.xcfilelist b/shlack/Pods/Target Support Files/Pods-shlack/Pods-shlack-frameworks-Release-output-files.xcfilelist index 57f1f1f..ae414b9 100644 --- a/shlack/Pods/Target Support Files/Pods-shlack/Pods-shlack-frameworks-Release-output-files.xcfilelist +++ b/shlack/Pods/Target Support Files/Pods-shlack/Pods-shlack-frameworks-Release-output-files.xcfilelist @@ -1,3 +1,5 @@ +${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/GTMSessionFetcher.framework +${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/GoogleToolboxForMac.framework ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/GoogleUtilities.framework ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Realm.framework ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/RealmSwift.framework diff --git a/shlack/Pods/Target Support Files/Pods-shlack/Pods-shlack-frameworks.sh b/shlack/Pods/Target Support Files/Pods-shlack/Pods-shlack-frameworks.sh index 30d224b..4ebef7d 100755 --- a/shlack/Pods/Target Support Files/Pods-shlack/Pods-shlack-frameworks.sh +++ b/shlack/Pods/Target Support Files/Pods-shlack/Pods-shlack-frameworks.sh @@ -161,6 +161,8 @@ strip_invalid_archs() { if [[ "$CONFIGURATION" == "Debug" ]]; then + install_framework "${BUILT_PRODUCTS_DIR}/GTMSessionFetcher/GTMSessionFetcher.framework" + install_framework "${BUILT_PRODUCTS_DIR}/GoogleToolboxForMac/GoogleToolboxForMac.framework" install_framework "${BUILT_PRODUCTS_DIR}/GoogleUtilities/GoogleUtilities.framework" install_framework "${BUILT_PRODUCTS_DIR}/Realm/Realm.framework" install_framework "${BUILT_PRODUCTS_DIR}/RealmSwift/RealmSwift.framework" @@ -170,6 +172,8 @@ if [[ "$CONFIGURATION" == "Debug" ]]; then install_framework "${BUILT_PRODUCTS_DIR}/nanopb/nanopb.framework" fi if [[ "$CONFIGURATION" == "Release" ]]; then + install_framework "${BUILT_PRODUCTS_DIR}/GTMSessionFetcher/GTMSessionFetcher.framework" + install_framework "${BUILT_PRODUCTS_DIR}/GoogleToolboxForMac/GoogleToolboxForMac.framework" install_framework "${BUILT_PRODUCTS_DIR}/GoogleUtilities/GoogleUtilities.framework" install_framework "${BUILT_PRODUCTS_DIR}/Realm/Realm.framework" install_framework "${BUILT_PRODUCTS_DIR}/RealmSwift/RealmSwift.framework" diff --git a/shlack/Pods/Target Support Files/Pods-shlack/Pods-shlack-resources-Debug-input-files.xcfilelist b/shlack/Pods/Target Support Files/Pods-shlack/Pods-shlack-resources-Debug-input-files.xcfilelist new file mode 100644 index 0000000..a56db37 --- /dev/null +++ b/shlack/Pods/Target Support Files/Pods-shlack/Pods-shlack-resources-Debug-input-files.xcfilelist @@ -0,0 +1,2 @@ +${PODS_ROOT}/Target Support Files/Pods-shlack/Pods-shlack-resources.sh +${PODS_ROOT}/GoogleSignIn/Resources/GoogleSignIn.bundle \ No newline at end of file diff --git a/shlack/Pods/Target Support Files/Pods-shlack/Pods-shlack-resources-Debug-output-files.xcfilelist b/shlack/Pods/Target Support Files/Pods-shlack/Pods-shlack-resources-Debug-output-files.xcfilelist new file mode 100644 index 0000000..03d868a --- /dev/null +++ b/shlack/Pods/Target Support Files/Pods-shlack/Pods-shlack-resources-Debug-output-files.xcfilelist @@ -0,0 +1 @@ +${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/GoogleSignIn.bundle \ No newline at end of file diff --git a/shlack/Pods/Target Support Files/Pods-shlack/Pods-shlack-resources-Release-input-files.xcfilelist b/shlack/Pods/Target Support Files/Pods-shlack/Pods-shlack-resources-Release-input-files.xcfilelist new file mode 100644 index 0000000..a56db37 --- /dev/null +++ b/shlack/Pods/Target Support Files/Pods-shlack/Pods-shlack-resources-Release-input-files.xcfilelist @@ -0,0 +1,2 @@ +${PODS_ROOT}/Target Support Files/Pods-shlack/Pods-shlack-resources.sh +${PODS_ROOT}/GoogleSignIn/Resources/GoogleSignIn.bundle \ No newline at end of file diff --git a/shlack/Pods/Target Support Files/Pods-shlack/Pods-shlack-resources-Release-output-files.xcfilelist b/shlack/Pods/Target Support Files/Pods-shlack/Pods-shlack-resources-Release-output-files.xcfilelist new file mode 100644 index 0000000..03d868a --- /dev/null +++ b/shlack/Pods/Target Support Files/Pods-shlack/Pods-shlack-resources-Release-output-files.xcfilelist @@ -0,0 +1 @@ +${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/GoogleSignIn.bundle \ No newline at end of file diff --git a/shlack/Pods/Target Support Files/Pods-shlack/Pods-shlack-resources.sh b/shlack/Pods/Target Support Files/Pods-shlack/Pods-shlack-resources.sh new file mode 100755 index 0000000..28789f5 --- /dev/null +++ b/shlack/Pods/Target Support Files/Pods-shlack/Pods-shlack-resources.sh @@ -0,0 +1,129 @@ +#!/bin/sh +set -e +set -u +set -o pipefail + +function on_error { + echo "$(realpath -mq "${0}"):$1: error: Unexpected failure" +} +trap 'on_error $LINENO' ERR + +if [ -z ${UNLOCALIZED_RESOURCES_FOLDER_PATH+x} ]; then + # If UNLOCALIZED_RESOURCES_FOLDER_PATH is not set, then there's nowhere for us to copy + # resources to, so exit 0 (signalling the script phase was successful). + exit 0 +fi + +mkdir -p "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" + +RESOURCES_TO_COPY=${PODS_ROOT}/resources-to-copy-${TARGETNAME}.txt +> "$RESOURCES_TO_COPY" + +XCASSET_FILES=() + +# This protects against multiple targets copying the same framework dependency at the same time. The solution +# was originally proposed here: https://lists.samba.org/archive/rsync/2008-February/020158.html +RSYNC_PROTECT_TMP_FILES=(--filter "P .*.??????") + +case "${TARGETED_DEVICE_FAMILY:-}" in + 1,2) + TARGET_DEVICE_ARGS="--target-device ipad --target-device iphone" + ;; + 1) + TARGET_DEVICE_ARGS="--target-device iphone" + ;; + 2) + TARGET_DEVICE_ARGS="--target-device ipad" + ;; + 3) + TARGET_DEVICE_ARGS="--target-device tv" + ;; + 4) + TARGET_DEVICE_ARGS="--target-device watch" + ;; + *) + TARGET_DEVICE_ARGS="--target-device mac" + ;; +esac + +install_resource() +{ + if [[ "$1" = /* ]] ; then + RESOURCE_PATH="$1" + else + RESOURCE_PATH="${PODS_ROOT}/$1" + fi + if [[ ! -e "$RESOURCE_PATH" ]] ; then + cat << EOM +error: Resource "$RESOURCE_PATH" not found. Run 'pod install' to update the copy resources script. +EOM + exit 1 + fi + case $RESOURCE_PATH in + *.storyboard) + echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}" || true + ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS} + ;; + *.xib) + echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}" || true + ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS} + ;; + *.framework) + echo "mkdir -p ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" || true + mkdir -p "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" + echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" $RESOURCE_PATH ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" || true + rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" + ;; + *.xcdatamodel) + echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH"`.mom\"" || true + xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodel`.mom" + ;; + *.xcdatamodeld) + echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd\"" || true + xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd" + ;; + *.xcmappingmodel) + echo "xcrun mapc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm\"" || true + xcrun mapc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm" + ;; + *.xcassets) + ABSOLUTE_XCASSET_FILE="$RESOURCE_PATH" + XCASSET_FILES+=("$ABSOLUTE_XCASSET_FILE") + ;; + *) + echo "$RESOURCE_PATH" || true + echo "$RESOURCE_PATH" >> "$RESOURCES_TO_COPY" + ;; + esac +} +if [[ "$CONFIGURATION" == "Debug" ]]; then + install_resource "${PODS_ROOT}/GoogleSignIn/Resources/GoogleSignIn.bundle" +fi +if [[ "$CONFIGURATION" == "Release" ]]; then + install_resource "${PODS_ROOT}/GoogleSignIn/Resources/GoogleSignIn.bundle" +fi + +mkdir -p "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" +rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" +if [[ "${ACTION}" == "install" ]] && [[ "${SKIP_INSTALL}" == "NO" ]]; then + mkdir -p "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" + rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" +fi +rm -f "$RESOURCES_TO_COPY" + +if [[ -n "${WRAPPER_EXTENSION}" ]] && [ "`xcrun --find actool`" ] && [ -n "${XCASSET_FILES:-}" ] +then + # Find all other xcassets (this unfortunately includes those of path pods and other targets). + OTHER_XCASSETS=$(find "$PWD" -iname "*.xcassets" -type d) + while read line; do + if [[ $line != "${PODS_ROOT}*" ]]; then + XCASSET_FILES+=("$line") + fi + done <<<"$OTHER_XCASSETS" + + if [ -z ${ASSETCATALOG_COMPILER_APPICON_NAME+x} ]; then + printf "%s\0" "${XCASSET_FILES[@]}" | xargs -0 xcrun actool --output-format human-readable-text --notices --warnings --platform "${PLATFORM_NAME}" --minimum-deployment-target "${!DEPLOYMENT_TARGET_SETTING_NAME}" ${TARGET_DEVICE_ARGS} --compress-pngs --compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" + else + printf "%s\0" "${XCASSET_FILES[@]}" | xargs -0 xcrun actool --output-format human-readable-text --notices --warnings --platform "${PLATFORM_NAME}" --minimum-deployment-target "${!DEPLOYMENT_TARGET_SETTING_NAME}" ${TARGET_DEVICE_ARGS} --compress-pngs --compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" --app-icon "${ASSETCATALOG_COMPILER_APPICON_NAME}" --output-partial-info-plist "${TARGET_TEMP_DIR}/assetcatalog_generated_info_cocoapods.plist" + fi +fi diff --git a/shlack/Pods/Target Support Files/Pods-shlack/Pods-shlack.debug.xcconfig b/shlack/Pods/Target Support Files/Pods-shlack/Pods-shlack.debug.xcconfig index 8292b03..d6bb15f 100644 --- a/shlack/Pods/Target Support Files/Pods-shlack/Pods-shlack.debug.xcconfig +++ b/shlack/Pods/Target Support Files/Pods-shlack/Pods-shlack.debug.xcconfig @@ -1,10 +1,10 @@ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES -FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCore" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseDatabase" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseInstanceID" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleUtilities" "${PODS_CONFIGURATION_BUILD_DIR}/Realm" "${PODS_CONFIGURATION_BUILD_DIR}/RealmSwift" "${PODS_CONFIGURATION_BUILD_DIR}/SwiftyJSON" "${PODS_CONFIGURATION_BUILD_DIR}/YMTGetDeviceName" "${PODS_CONFIGURATION_BUILD_DIR}/leveldb-library" "${PODS_CONFIGURATION_BUILD_DIR}/nanopb" "${PODS_ROOT}/FirebaseAnalytics/Frameworks" "${PODS_ROOT}/GoogleAppMeasurement/Frameworks" +FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseAuth" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCore" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseDatabase" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseInstanceID" "${PODS_CONFIGURATION_BUILD_DIR}/GTMSessionFetcher" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleToolboxForMac" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleUtilities" "${PODS_CONFIGURATION_BUILD_DIR}/Realm" "${PODS_CONFIGURATION_BUILD_DIR}/RealmSwift" "${PODS_CONFIGURATION_BUILD_DIR}/SwiftyJSON" "${PODS_CONFIGURATION_BUILD_DIR}/YMTGetDeviceName" "${PODS_CONFIGURATION_BUILD_DIR}/leveldb-library" "${PODS_CONFIGURATION_BUILD_DIR}/nanopb" "${PODS_ROOT}/FirebaseAnalytics/Frameworks" "${PODS_ROOT}/GoogleAppMeasurement/Frameworks" "${PODS_ROOT}/GoogleSignIn/Frameworks" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 $(inherited) PB_FIELD_32BIT=1 PB_NO_PACKED_STRUCTS=1 PB_ENABLE_MALLOC=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCore/FirebaseCore.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseDatabase/FirebaseDatabase.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseInstanceID/FirebaseInstanceID.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleUtilities/GoogleUtilities.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Realm/Realm.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/RealmSwift/RealmSwift.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SwiftyJSON/SwiftyJSON.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/YMTGetDeviceName/YMTGetDeviceName.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/leveldb-library/leveldb.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/nanopb/nanopb.framework/Headers" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/Firebase" "${PODS_ROOT}/Headers/Public/FirebaseAuthInterop" $(inherited) ${PODS_ROOT}/Firebase/CoreOnly/Sources +HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseAuth/FirebaseAuth.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCore/FirebaseCore.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseDatabase/FirebaseDatabase.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseInstanceID/FirebaseInstanceID.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/GTMSessionFetcher/GTMSessionFetcher.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleToolboxForMac/GoogleToolboxForMac.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleUtilities/GoogleUtilities.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Realm/Realm.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/RealmSwift/RealmSwift.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SwiftyJSON/SwiftyJSON.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/YMTGetDeviceName/YMTGetDeviceName.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/leveldb-library/leveldb.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/nanopb/nanopb.framework/Headers" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/Firebase" "${PODS_ROOT}/Headers/Public/FirebaseAuthInterop" $(inherited) ${PODS_ROOT}/Firebase/CoreOnly/Sources LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' LIBRARY_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Realm/core" -OTHER_LDFLAGS = $(inherited) -ObjC -l"c++" -l"icucore" -l"sqlite3" -l"z" -framework "CFNetwork" -framework "FIRAnalyticsConnector" -framework "FirebaseAnalytics" -framework "FirebaseCore" -framework "FirebaseCoreDiagnostics" -framework "FirebaseDatabase" -framework "FirebaseInstanceID" -framework "Foundation" -framework "GoogleAppMeasurement" -framework "GoogleUtilities" -framework "Realm" -framework "RealmSwift" -framework "Security" -framework "StoreKit" -framework "SwiftyJSON" -framework "SystemConfiguration" -framework "YMTGetDeviceName" -framework "leveldb" -framework "nanopb" +OTHER_LDFLAGS = $(inherited) -ObjC -l"c++" -l"icucore" -l"sqlite3" -l"z" -framework "CFNetwork" -framework "CoreGraphics" -framework "CoreText" -framework "FIRAnalyticsConnector" -framework "FirebaseAnalytics" -framework "FirebaseAuth" -framework "FirebaseCore" -framework "FirebaseCoreDiagnostics" -framework "FirebaseDatabase" -framework "FirebaseInstanceID" -framework "Foundation" -framework "GTMSessionFetcher" -framework "GoogleAppMeasurement" -framework "GoogleSignIn" -framework "GoogleToolboxForMac" -framework "GoogleUtilities" -framework "LocalAuthentication" -framework "Realm" -framework "RealmSwift" -framework "SafariServices" -framework "Security" -framework "StoreKit" -framework "SwiftyJSON" -framework "SystemConfiguration" -framework "YMTGetDeviceName" -framework "leveldb" -framework "nanopb" OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) diff --git a/shlack/Pods/Target Support Files/Pods-shlack/Pods-shlack.release.xcconfig b/shlack/Pods/Target Support Files/Pods-shlack/Pods-shlack.release.xcconfig index 8292b03..d6bb15f 100644 --- a/shlack/Pods/Target Support Files/Pods-shlack/Pods-shlack.release.xcconfig +++ b/shlack/Pods/Target Support Files/Pods-shlack/Pods-shlack.release.xcconfig @@ -1,10 +1,10 @@ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES -FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCore" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseDatabase" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseInstanceID" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleUtilities" "${PODS_CONFIGURATION_BUILD_DIR}/Realm" "${PODS_CONFIGURATION_BUILD_DIR}/RealmSwift" "${PODS_CONFIGURATION_BUILD_DIR}/SwiftyJSON" "${PODS_CONFIGURATION_BUILD_DIR}/YMTGetDeviceName" "${PODS_CONFIGURATION_BUILD_DIR}/leveldb-library" "${PODS_CONFIGURATION_BUILD_DIR}/nanopb" "${PODS_ROOT}/FirebaseAnalytics/Frameworks" "${PODS_ROOT}/GoogleAppMeasurement/Frameworks" +FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseAuth" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCore" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseDatabase" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseInstanceID" "${PODS_CONFIGURATION_BUILD_DIR}/GTMSessionFetcher" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleToolboxForMac" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleUtilities" "${PODS_CONFIGURATION_BUILD_DIR}/Realm" "${PODS_CONFIGURATION_BUILD_DIR}/RealmSwift" "${PODS_CONFIGURATION_BUILD_DIR}/SwiftyJSON" "${PODS_CONFIGURATION_BUILD_DIR}/YMTGetDeviceName" "${PODS_CONFIGURATION_BUILD_DIR}/leveldb-library" "${PODS_CONFIGURATION_BUILD_DIR}/nanopb" "${PODS_ROOT}/FirebaseAnalytics/Frameworks" "${PODS_ROOT}/GoogleAppMeasurement/Frameworks" "${PODS_ROOT}/GoogleSignIn/Frameworks" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 $(inherited) PB_FIELD_32BIT=1 PB_NO_PACKED_STRUCTS=1 PB_ENABLE_MALLOC=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCore/FirebaseCore.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseDatabase/FirebaseDatabase.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseInstanceID/FirebaseInstanceID.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleUtilities/GoogleUtilities.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Realm/Realm.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/RealmSwift/RealmSwift.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SwiftyJSON/SwiftyJSON.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/YMTGetDeviceName/YMTGetDeviceName.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/leveldb-library/leveldb.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/nanopb/nanopb.framework/Headers" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/Firebase" "${PODS_ROOT}/Headers/Public/FirebaseAuthInterop" $(inherited) ${PODS_ROOT}/Firebase/CoreOnly/Sources +HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseAuth/FirebaseAuth.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCore/FirebaseCore.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseDatabase/FirebaseDatabase.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseInstanceID/FirebaseInstanceID.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/GTMSessionFetcher/GTMSessionFetcher.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleToolboxForMac/GoogleToolboxForMac.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleUtilities/GoogleUtilities.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Realm/Realm.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/RealmSwift/RealmSwift.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SwiftyJSON/SwiftyJSON.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/YMTGetDeviceName/YMTGetDeviceName.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/leveldb-library/leveldb.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/nanopb/nanopb.framework/Headers" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/Firebase" "${PODS_ROOT}/Headers/Public/FirebaseAuthInterop" $(inherited) ${PODS_ROOT}/Firebase/CoreOnly/Sources LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' LIBRARY_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Realm/core" -OTHER_LDFLAGS = $(inherited) -ObjC -l"c++" -l"icucore" -l"sqlite3" -l"z" -framework "CFNetwork" -framework "FIRAnalyticsConnector" -framework "FirebaseAnalytics" -framework "FirebaseCore" -framework "FirebaseCoreDiagnostics" -framework "FirebaseDatabase" -framework "FirebaseInstanceID" -framework "Foundation" -framework "GoogleAppMeasurement" -framework "GoogleUtilities" -framework "Realm" -framework "RealmSwift" -framework "Security" -framework "StoreKit" -framework "SwiftyJSON" -framework "SystemConfiguration" -framework "YMTGetDeviceName" -framework "leveldb" -framework "nanopb" +OTHER_LDFLAGS = $(inherited) -ObjC -l"c++" -l"icucore" -l"sqlite3" -l"z" -framework "CFNetwork" -framework "CoreGraphics" -framework "CoreText" -framework "FIRAnalyticsConnector" -framework "FirebaseAnalytics" -framework "FirebaseAuth" -framework "FirebaseCore" -framework "FirebaseCoreDiagnostics" -framework "FirebaseDatabase" -framework "FirebaseInstanceID" -framework "Foundation" -framework "GTMSessionFetcher" -framework "GoogleAppMeasurement" -framework "GoogleSignIn" -framework "GoogleToolboxForMac" -framework "GoogleUtilities" -framework "LocalAuthentication" -framework "Realm" -framework "RealmSwift" -framework "SafariServices" -framework "Security" -framework "StoreKit" -framework "SwiftyJSON" -framework "SystemConfiguration" -framework "YMTGetDeviceName" -framework "leveldb" -framework "nanopb" OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) diff --git a/shlack/shlack.xcodeproj/project.pbxproj b/shlack/shlack.xcodeproj/project.pbxproj index f43998f..7f4d430 100644 --- a/shlack/shlack.xcodeproj/project.pbxproj +++ b/shlack/shlack.xcodeproj/project.pbxproj @@ -17,6 +17,7 @@ 4392282F22F3C79E00D14CBF /* Item.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4392282E22F3C79E00D14CBF /* Item.swift */; }; 4E0394A022F7AF9100F9628D /* SecondViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4E03949F22F7AF9100F9628D /* SecondViewController.swift */; }; 7345166522FAAA7E00ECA791 /* pudding.mp3 in Resources */ = {isa = PBXBuildFile; fileRef = 7345166422FAAA7D00ECA791 /* pudding.mp3 */; }; + 737FFFB0239780D200A3A1F2 /* AuthViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 737FFFAF239780D200A3A1F2 /* AuthViewController.swift */; }; 980B065E22F7F11700029256 /* AddViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 980B065D22F7F11700029256 /* AddViewController.swift */; }; 98E77E9A22F9440C0062958F /* RandomSelectController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 98E77E9922F9440C0062958F /* RandomSelectController.swift */; }; 98E77E9C22F948250062958F /* RandomSecondController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 98E77E9B22F948250062958F /* RandomSecondController.swift */; }; @@ -62,6 +63,7 @@ 4E03949F22F7AF9100F9628D /* SecondViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SecondViewController.swift; sourceTree = ""; }; 691ED48C7C402D2A14D47BF2 /* Pods_shlack.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_shlack.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 7345166422FAAA7D00ECA791 /* pudding.mp3 */ = {isa = PBXFileReference; lastKnownFileType = audio.mp3; path = pudding.mp3; sourceTree = ""; }; + 737FFFAF239780D200A3A1F2 /* AuthViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AuthViewController.swift; sourceTree = ""; }; 8097AE4212BAAD790D6F7F3B /* Pods-shlack.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-shlack.debug.xcconfig"; path = "Target Support Files/Pods-shlack/Pods-shlack.debug.xcconfig"; sourceTree = ""; }; 980B065D22F7F11700029256 /* AddViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AddViewController.swift; sourceTree = ""; }; 98948CD32356D3F00066E8B4 /* はとぅーーん.m4a */ = {isa = PBXFileReference; lastKnownFileType = file; path = "はとぅーーん.m4a"; sourceTree = ""; }; @@ -124,6 +126,7 @@ isa = PBXGroup; children = ( 4392280022F3BFF600D14CBF /* AppDelegate.swift */, + 737FFFAF239780D200A3A1F2 /* AuthViewController.swift */, 98F27A6122F7D46B0089DD24 /* HomeViewController.swift */, 4392280222F3BFF600D14CBF /* ViewController.swift */, 4E03949F22F7AF9100F9628D /* SecondViewController.swift */, @@ -190,6 +193,7 @@ 439227FA22F3BFF600D14CBF /* Frameworks */, 439227FB22F3BFF600D14CBF /* Resources */, 889A80930DA1D46F2A61B721 /* [CP] Embed Pods Frameworks */, + 9136C1C6A69EAC82432D77B1 /* [CP] Copy Pods Resources */, ); buildRules = ( ); @@ -327,6 +331,23 @@ shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-shlack/Pods-shlack-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; + 9136C1C6A69EAC82432D77B1 /* [CP] Copy Pods Resources */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-shlack/Pods-shlack-resources-${CONFIGURATION}-input-files.xcfilelist", + ); + name = "[CP] Copy Pods Resources"; + outputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-shlack/Pods-shlack-resources-${CONFIGURATION}-output-files.xcfilelist", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-shlack/Pods-shlack-resources.sh\"\n"; + showEnvVarsInLog = 0; + }; A3BF8B358FF6EEA3F4B61020 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; @@ -363,6 +384,7 @@ 980B065E22F7F11700029256 /* AddViewController.swift in Sources */, 4392282F22F3C79E00D14CBF /* Item.swift in Sources */, 4392280122F3BFF600D14CBF /* AppDelegate.swift in Sources */, + 737FFFB0239780D200A3A1F2 /* AuthViewController.swift in Sources */, 4E0394A022F7AF9100F9628D /* SecondViewController.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; diff --git a/shlack/shlack/AppDelegate.swift b/shlack/shlack/AppDelegate.swift index e08afcd..520bb8b 100644 --- a/shlack/shlack/AppDelegate.swift +++ b/shlack/shlack/AppDelegate.swift @@ -9,6 +9,8 @@ import UIKit import RealmSwift import Firebase +import GoogleSignIn +import Firebase @UIApplicationMain class AppDelegate: UIResponder, UIApplicationDelegate { @@ -17,8 +19,9 @@ class AppDelegate: UIResponder, UIApplicationDelegate { func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { - FirebaseApp.configure() // Override point for customization after application launch. + FirebaseApp.configure() + GIDSignIn.sharedInstance().clientID = FirebaseApp.app()?.options.clientID return true } @@ -28,6 +31,11 @@ class AppDelegate: UIResponder, UIApplicationDelegate { return true } + + func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool { + let handle = GIDSignIn.sharedInstance()?.handle(url, sourceApplication: options[UIApplication.OpenURLOptionsKey.sourceApplication] as? String, annotation: options[UIApplication.OpenURLOptionsKey.annotation]) + return handle! + } func applicationWillResignActive(_ application: UIApplication) { // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state. diff --git a/shlack/shlack/AuthViewController.swift b/shlack/shlack/AuthViewController.swift new file mode 100644 index 0000000..6b79b60 --- /dev/null +++ b/shlack/shlack/AuthViewController.swift @@ -0,0 +1,67 @@ +// +// AuthViewController.swift +// shlack +// +// Created by 丸田 on 2019/12/04. +// Copyright © 2019 畑田将太. All rights reserved. +// + +import UIKit +import Firebase +import GoogleSignIn + +class AuthViewController: UIViewController { + + func createGoogleSigninButton(){ + let googleButton = GIDSignInButton () + googleButton.frame = CGRect(x: 20, y: self.view.frame.height/2-30, width: self.view.frame.width-40, height: 60) + self.view.addSubview(googleButton) + } + + override func viewDidLoad() { + super.viewDidLoad() + GIDSignIn.sharedInstance()?.delegate = self as GIDSignInDelegate + GIDSignIn.sharedInstance()?.uiDelegate = self as GIDSignInUIDelegate + + Auth.auth().addStateDidChangeListener { (auth, user) in + if auth.currentUser == nil{ + self.createGoogleSigninButton() + }else{ + print(auth.currentUser?.uid) + print(auth.currentUser?.displayName) + } + } + } + +} + +extension AuthViewController: GIDSignInDelegate, GIDSignInUIDelegate{ + func sign(_ signIn: GIDSignIn!, didSignInFor user: GIDGoogleUser!, withError error: Error!) { + if let error = error { + print(error.localizedDescription) + return + } + guard let authentication = user.authentication else { return } + + //credentialはFirebase登録/ログイン時に必要 + let credential = GoogleAuthProvider.credential(withIDToken: authentication.idToken, + accessToken: authentication.accessToken) + //Firebase Baas側に認証(初回時はレコードを作成) + Auth.auth().signIn(with: credential) { (authResult, error) in + } + + //ユーザ情報へのアクセス + Auth.auth().addStateDidChangeListener { (auth, user) in + if let currentUser = auth.currentUser{ + print(currentUser.uid) + print(currentUser.displayName) + print(currentUser.email) + print(currentUser.photoURL) + + //アドレス確認メールの送信 + Auth.auth().currentUser?.sendEmailVerification { (error) in + } + } + } + } +} diff --git a/shlack/shlack/Base.lproj/Main.storyboard b/shlack/shlack/Base.lproj/Main.storyboard index d533982..b82da0f 100644 --- a/shlack/shlack/Base.lproj/Main.storyboard +++ b/shlack/shlack/Base.lproj/Main.storyboard @@ -1,13 +1,29 @@ - + - + + + + + + + + + + + + + + + + + @@ -17,7 +33,7 @@ - + @@ -68,6 +84,14 @@ + @@ -654,6 +678,6 @@ - + diff --git a/shlack/shlack/Info.plist b/shlack/shlack/Info.plist index c969f43..153bf2b 100644 --- a/shlack/shlack/Info.plist +++ b/shlack/shlack/Info.plist @@ -16,6 +16,18 @@ APPL CFBundleShortVersionString 1.0 + CFBundleURLTypes + + + CFBundleTypeRole + Editor + CFBundleURLSchemes + + com.googleusercontent.apps.523834600774-46let5tdo1eo47dgv8t4cp1i9p3remoe + + + + CFBundleVersion 1 LSRequiresIPhoneOS From eff9ab13fe11663a3d2015a864860089bc37aef4 Mon Sep 17 00:00:00 2001 From: maruta atsuki Date: Fri, 6 Dec 2019 16:38:11 +0900 Subject: [PATCH 3/3] login_tnb --- shlack/shlack/AuthViewController.swift | 22 +++++++++-- shlack/shlack/Base.lproj/Main.storyboard | 49 +++++++++++++++++------- 2 files changed, 54 insertions(+), 17 deletions(-) diff --git a/shlack/shlack/AuthViewController.swift b/shlack/shlack/AuthViewController.swift index 6b79b60..68d7a19 100644 --- a/shlack/shlack/AuthViewController.swift +++ b/shlack/shlack/AuthViewController.swift @@ -12,13 +12,24 @@ import GoogleSignIn class AuthViewController: UIViewController { + //Googleログインボタンの設置 func createGoogleSigninButton(){ let googleButton = GIDSignInButton () googleButton.frame = CGRect(x: 20, y: self.view.frame.height/2-30, width: self.view.frame.width-40, height: 60) self.view.addSubview(googleButton) } - override func viewDidLoad() { + @IBAction func logoutButton(_ sender: Any) { + do { + try? Auth.auth().signOut() + print("てゅうん") + } catch let _ as NSError { + print ("ちゅうえい") + } + } + + //Firebase Authenticationのサイレントログイン + override func viewDidLoad() { super.viewDidLoad() GIDSignIn.sharedInstance()?.delegate = self as GIDSignInDelegate GIDSignIn.sharedInstance()?.uiDelegate = self as GIDSignInUIDelegate @@ -31,10 +42,13 @@ class AuthViewController: UIViewController { print(auth.currentUser?.displayName) } } + + } } +//認証結果コールバックの記述 extension AuthViewController: GIDSignInDelegate, GIDSignInUIDelegate{ func sign(_ signIn: GIDSignIn!, didSignInFor user: GIDGoogleUser!, withError error: Error!) { if let error = error { @@ -42,14 +56,14 @@ extension AuthViewController: GIDSignInDelegate, GIDSignInUIDelegate{ return } guard let authentication = user.authentication else { return } - + //credentialはFirebase登録/ログイン時に必要 let credential = GoogleAuthProvider.credential(withIDToken: authentication.idToken, accessToken: authentication.accessToken) //Firebase Baas側に認証(初回時はレコードを作成) Auth.auth().signIn(with: credential) { (authResult, error) in } - + //ユーザ情報へのアクセス Auth.auth().addStateDidChangeListener { (auth, user) in if let currentUser = auth.currentUser{ @@ -57,7 +71,7 @@ extension AuthViewController: GIDSignInDelegate, GIDSignInUIDelegate{ print(currentUser.displayName) print(currentUser.email) print(currentUser.photoURL) - + //アドレス確認メールの送信 Auth.auth().currentUser?.sendEmailVerification { (error) in } diff --git a/shlack/shlack/Base.lproj/Main.storyboard b/shlack/shlack/Base.lproj/Main.storyboard index b82da0f..9cb82d0 100644 --- a/shlack/shlack/Base.lproj/Main.storyboard +++ b/shlack/shlack/Base.lproj/Main.storyboard @@ -1,5 +1,5 @@ - + @@ -11,18 +11,36 @@ + - + + + + + - - + @@ -84,14 +102,6 @@ - @@ -123,6 +133,19 @@ + + + + + + + + + + + + + @@ -678,6 +701,6 @@ - +

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 X%2FHq_OlAT_G(s3Z!p>{-ejsVF{ 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