From c475f895e80cdd8fa3df7da087d788ca575a68ef Mon Sep 17 00:00:00 2001 From: nielsandriesse Date: Wed, 11 Nov 2020 10:58:56 +1100 Subject: [PATCH] Create SignalUtilitiesKit --- Podfile | 20 + Podfile.lock | 4 +- Pods | 2 +- SessionMessagingKit/Configuration.swift | 2 +- .../Sending & Receiving/MessageSender.swift | 6 +- SessionProtocolKit/Meta/SessionProtocolKit.h | 6 + .../ClosedGroupSenderKey.swift | 2 +- .../Signal/Utility/Cryptography.m | 2 +- .../Signal/Utility/Randomness.h | 20 - .../Signal/Utility/Randomness.m | 24 - SessionSnodeKit/Snode.swift | 8 +- SessionSnodeKit/SnodeAPI.swift | 97 +- .../Utilities/Promise+Threading.swift | 10 +- .../Promise+Delaying.swift | 2 +- Signal.xcodeproj/project.pbxproj | 2003 ++++- SignalUtilitiesKit/AccountServiceClient.swift | 34 + .../AnyPromise+Conversion.swift | 10 + SignalUtilitiesKit/AppContext.h | 130 + SignalUtilitiesKit/AppContext.m | 61 + SignalUtilitiesKit/AppReadiness.h | 38 + SignalUtilitiesKit/AppReadiness.m | 144 + SignalUtilitiesKit/AppVersion.h | 32 + SignalUtilitiesKit/AppVersion.m | 133 + SignalUtilitiesKit/Array+Description.swift | 7 + SignalUtilitiesKit/BuildConfiguration.swift | 21 + SignalUtilitiesKit/ByteParser.h | 40 + SignalUtilitiesKit/ByteParser.m | 143 + SignalUtilitiesKit/CDSQuote.h | 34 + SignalUtilitiesKit/CDSQuote.m | 192 + SignalUtilitiesKit/CDSSigningCertificate.h | 32 + SignalUtilitiesKit/CDSSigningCertificate.m | 391 + SignalUtilitiesKit/ClosedGroupParser.swift | 30 + SignalUtilitiesKit/ClosedGroupPoller.swift | 79 + .../ClosedGroupUpdateMessage.swift | 132 + SignalUtilitiesKit/ClosedGroupUtilities.swift | 71 + SignalUtilitiesKit/ClosedGroupsProtocol.swift | 486 ++ SignalUtilitiesKit/Contact.h | 58 + SignalUtilitiesKit/Contact.m | 434 + SignalUtilitiesKit/ContactDiscoveryService.h | 65 + SignalUtilitiesKit/ContactDiscoveryService.m | 774 ++ SignalUtilitiesKit/ContactParser.swift | 28 + SignalUtilitiesKit/ContactsManagerProtocol.h | 37 + SignalUtilitiesKit/ContactsUpdater.h | 25 + SignalUtilitiesKit/ContactsUpdater.m | 120 + SignalUtilitiesKit/ContentProxy.swift | 127 + .../CreatePreKeysOperation.swift | 57 + SignalUtilitiesKit/Data+SecureRandom.swift | 12 + SignalUtilitiesKit/Data+Streaming.swift | 22 + SignalUtilitiesKit/DataSource.h | 67 + SignalUtilitiesKit/DataSource.m | 401 + SignalUtilitiesKit/Debugging.swift | 12 + SignalUtilitiesKit/DecryptionUtilities.swift | 18 + SignalUtilitiesKit/DeviceLink.swift | 96 + SignalUtilitiesKit/DeviceLinkIndex.swift | 43 + SignalUtilitiesKit/DeviceLinkingSession.swift | 69 + .../DeviceLinkingSessionDelegate.swift | 6 + .../DeviceLinkingUtilities.swift | 57 + SignalUtilitiesKit/DeviceNames.swift | 217 + .../Dictionary+Description.swift | 13 + SignalUtilitiesKit/DisplayNameUtilities.swift | 68 + .../DisplayNameUtilities2.swift | 28 + .../ECKeyPair+Hexadecimal.swift | 22 + SignalUtilitiesKit/EncryptionUtilities.swift | 38 + SignalUtilitiesKit/FeatureFlags.swift | 32 + .../FileServerAPI+Deprecated.swift | 148 + SignalUtilitiesKit/Fingerprint.pb.swift | 164 + SignalUtilitiesKit/FingerprintProto.swift | 235 + SignalUtilitiesKit/FullTextSearchFinder.swift | 274 + SignalUtilitiesKit/FunctionalUtil.h | 27 + SignalUtilitiesKit/FunctionalUtil.m | 98 + SignalUtilitiesKit/GeneralUtilities.swift | 7 + SignalUtilitiesKit/GroupUtilities.swift | 25 + SignalUtilitiesKit/JobQueue.swift | 411 + SignalUtilitiesKit/LKDeviceLinkMessage.h | 19 + SignalUtilitiesKit/LKDeviceLinkMessage.m | 89 + SignalUtilitiesKit/LKGroupUtilities.h | 26 + SignalUtilitiesKit/LKGroupUtilities.m | 77 + SignalUtilitiesKit/LKSyncOpenGroupsMessage.h | 14 + SignalUtilitiesKit/LKSyncOpenGroupsMessage.m | 43 + SignalUtilitiesKit/LKUnlinkDeviceMessage.h | 12 + SignalUtilitiesKit/LKUnlinkDeviceMessage.m | 27 + SignalUtilitiesKit/LKUserDefaults.swift | 73 + SignalUtilitiesKit/LRUCache.swift | 105 + .../LokiDatabaseUtilities.swift | 98 + SignalUtilitiesKit/LokiMessage.swift | 75 + .../LokiPushNotificationManager.swift | 153 + .../LokiSessionResetImplementation.swift | 48 + SignalUtilitiesKit/MIMETypeUtil.h | 68 + SignalUtilitiesKit/MIMETypeUtil.m | 2626 ++++++ SignalUtilitiesKit/Mention.swift | 15 + SignalUtilitiesKit/MentionsManager.swift | 92 + .../MessageSender+Promise.swift | 25 + .../MessageSenderJobQueue.swift | 256 + SignalUtilitiesKit/MessageWrapper.swift | 72 + SignalUtilitiesKit/Meta/Info.plist | 22 + SignalUtilitiesKit/Meta/SignalUtilitiesKit.h | 72 + SignalUtilitiesKit/Mnemonic.swift | 162 + SignalUtilitiesKit/MultiDeviceProtocol.swift | 274 + SignalUtilitiesKit/NSArray+Functional.h | 9 + SignalUtilitiesKit/NSArray+Functional.m | 32 + SignalUtilitiesKit/NSArray+OWS.h | 15 + SignalUtilitiesKit/NSArray+OWS.m | 26 + SignalUtilitiesKit/NSData+Image.h | 28 + SignalUtilitiesKit/NSData+Image.m | 420 + SignalUtilitiesKit/NSError+MessageSending.h | 17 + SignalUtilitiesKit/NSError+MessageSending.m | 61 + SignalUtilitiesKit/NSNotificationCenter+OWS.h | 24 + SignalUtilitiesKit/NSNotificationCenter+OWS.m | 29 + SignalUtilitiesKit/NSObject+Casting.h | 7 + SignalUtilitiesKit/NSObject+Casting.m | 10 + .../NSRegularExpression+SSK.swift | 55 + SignalUtilitiesKit/NSSet+Functional.h | 9 + SignalUtilitiesKit/NSSet+Functional.m | 32 + SignalUtilitiesKit/NSString+SSK.h | 15 + SignalUtilitiesKit/NSString+SSK.m | 26 + SignalUtilitiesKit/NSTimer+OWS.h | 21 + SignalUtilitiesKit/NSTimer+OWS.m | 70 + .../NSURLSessionDataTask+StatusCode.h | 15 + .../NSURLSessionDataTask+StatusCode.m | 18 + SignalUtilitiesKit/NSUserDefaults+OWS.h | 19 + SignalUtilitiesKit/NSUserDefaults+OWS.m | 52 + SignalUtilitiesKit/NetworkManager.swift | 53 + SignalUtilitiesKit/Notification+Loki.swift | 52 + SignalUtilitiesKit/NotificationsProtocol.h | 34 + SignalUtilitiesKit/OWS2FAManager.h | 47 + SignalUtilitiesKit/OWS2FAManager.m | 271 + .../OWSAddToContactsOfferMessage.h | 21 + .../OWSAddToContactsOfferMessage.m | 56 + .../OWSAddToProfileWhitelistOfferMessage.h | 19 + .../OWSAddToProfileWhitelistOfferMessage.m | 40 + SignalUtilitiesKit/OWSAnalytics.h | 165 + SignalUtilitiesKit/OWSAnalytics.m | 426 + SignalUtilitiesKit/OWSAnalyticsEvents.h | 239 + SignalUtilitiesKit/OWSAnalyticsEvents.m | 549 ++ SignalUtilitiesKit/OWSAttachmentDownloads.h | 52 + SignalUtilitiesKit/OWSAttachmentDownloads.m | 556 ++ SignalUtilitiesKit/OWSBackgroundTask.h | 62 + SignalUtilitiesKit/OWSBackgroundTask.m | 438 + SignalUtilitiesKit/OWSBackupFragment.h | 44 + SignalUtilitiesKit/OWSBackupFragment.m | 13 + SignalUtilitiesKit/OWSBatchMessageProcessor.h | 40 + SignalUtilitiesKit/OWSBatchMessageProcessor.m | 546 ++ .../OWSBlockedPhoneNumbersMessage.h | 19 + .../OWSBlockedPhoneNumbersMessage.m | 57 + SignalUtilitiesKit/OWSBlockingManager.h | 51 + SignalUtilitiesKit/OWSBlockingManager.m | 443 ++ SignalUtilitiesKit/OWSCallMessageHandler.h | 30 + .../OWSCensorshipConfiguration.h | 35 + .../OWSCensorshipConfiguration.m | 247 + SignalUtilitiesKit/OWSChunkedOutputStream.h | 25 + SignalUtilitiesKit/OWSChunkedOutputStream.m | 97 + SignalUtilitiesKit/OWSContact+Private.h | 60 + SignalUtilitiesKit/OWSContact.h | 183 + SignalUtilitiesKit/OWSContact.m | 1126 +++ .../OWSContactDiscoveryOperation.swift | 535 ++ SignalUtilitiesKit/OWSContactsOutputStream.h | 27 + SignalUtilitiesKit/OWSContactsOutputStream.m | 109 + SignalUtilitiesKit/OWSCountryMetadata.h | 23 + SignalUtilitiesKit/OWSCountryMetadata.m | 379 + SignalUtilitiesKit/OWSDevice.h | 78 + SignalUtilitiesKit/OWSDevice.m | 353 + SignalUtilitiesKit/OWSDeviceProvisioner.h | 38 + SignalUtilitiesKit/OWSDeviceProvisioner.m | 123 + .../OWSDeviceProvisioningCodeService.h | 18 + .../OWSDeviceProvisioningCodeService.m | 62 + .../OWSDeviceProvisioningService.h | 22 + .../OWSDeviceProvisioningService.m | 57 + SignalUtilitiesKit/OWSDevicesService.h | 25 + SignalUtilitiesKit/OWSDevicesService.m | 126 + ...sappearingConfigurationUpdateInfoMessage.h | 28 + ...sappearingConfigurationUpdateInfoMessage.m | 95 + .../OWSDisappearingMessagesConfiguration.h | 34 + .../OWSDisappearingMessagesConfiguration.m | 133 + ...DisappearingMessagesConfigurationMessage.h | 30 + ...DisappearingMessagesConfigurationMessage.m | 72 + .../OWSDisappearingMessagesFinder.h | 47 + .../OWSDisappearingMessagesFinder.m | 270 + .../OWSDisappearingMessagesJob.h | 56 + .../OWSDisappearingMessagesJob.m | 424 + SignalUtilitiesKit/OWSDispatch.h | 23 + SignalUtilitiesKit/OWSDispatch.m | 34 + .../OWSDynamicOutgoingMessage.h | 36 + .../OWSDynamicOutgoingMessage.m | 64 + SignalUtilitiesKit/OWSEndSessionMessage.h | 30 + SignalUtilitiesKit/OWSEndSessionMessage.m | 74 + SignalUtilitiesKit/OWSError.h | 71 + SignalUtilitiesKit/OWSError.m | 75 + .../OWSFailedAttachmentDownloadsJob.h | 31 + .../OWSFailedAttachmentDownloadsJob.m | 142 + SignalUtilitiesKit/OWSFailedMessagesJob.h | 31 + SignalUtilitiesKit/OWSFailedMessagesJob.m | 149 + SignalUtilitiesKit/OWSFileSystem.h | 59 + SignalUtilitiesKit/OWSFileSystem.m | 430 + SignalUtilitiesKit/OWSFingerprint.h | 52 + SignalUtilitiesKit/OWSFingerprint.m | 334 + SignalUtilitiesKit/OWSFingerprintBuilder.h | 32 + SignalUtilitiesKit/OWSFingerprintBuilder.m | 66 + SignalUtilitiesKit/OWSGroupsOutputStream.h | 18 + SignalUtilitiesKit/OWSGroupsOutputStream.m | 85 + SignalUtilitiesKit/OWSHTTPSecurityPolicy.h | 17 + SignalUtilitiesKit/OWSHTTPSecurityPolicy.m | 106 + SignalUtilitiesKit/OWSIdentityManager.h | 92 + SignalUtilitiesKit/OWSIdentityManager.m | 977 +++ SignalUtilitiesKit/OWSIncomingMessageFinder.h | 30 + SignalUtilitiesKit/OWSIncomingMessageFinder.m | 151 + .../OWSIncomingSentMessageTranscript.h | 52 + .../OWSIncomingSentMessageTranscript.m | 108 + SignalUtilitiesKit/OWSIncompleteCallsJob.h | 31 + SignalUtilitiesKit/OWSIncompleteCallsJob.m | 160 + SignalUtilitiesKit/OWSLinkPreview.swift | 907 +++ .../OWSLinkedDeviceReadReceipt.h | 26 + .../OWSLinkedDeviceReadReceipt.m | 77 + SignalUtilitiesKit/OWSMath.h | 114 + SignalUtilitiesKit/OWSMediaGalleryFinder.h | 54 + SignalUtilitiesKit/OWSMediaGalleryFinder.m | 219 + SignalUtilitiesKit/OWSMediaUtils.swift | 134 + SignalUtilitiesKit/OWSMessageDecrypter.h | 47 + SignalUtilitiesKit/OWSMessageDecrypter.m | 686 ++ SignalUtilitiesKit/OWSMessageHandler.h | 24 + SignalUtilitiesKit/OWSMessageHandler.m | 183 + SignalUtilitiesKit/OWSMessageManager.h | 33 + SignalUtilitiesKit/OWSMessageManager.m | 1735 ++++ SignalUtilitiesKit/OWSMessageReceiver.h | 28 + SignalUtilitiesKit/OWSMessageReceiver.m | 513 ++ SignalUtilitiesKit/OWSMessageSend.swift | 96 + SignalUtilitiesKit/OWSMessageSender.h | 121 + SignalUtilitiesKit/OWSMessageSender.m | 1744 ++++ SignalUtilitiesKit/OWSMessageServiceParams.h | 45 + SignalUtilitiesKit/OWSMessageServiceParams.m | 49 + SignalUtilitiesKit/OWSMessageUtils.h | 25 + SignalUtilitiesKit/OWSMessageUtils.m | 125 + SignalUtilitiesKit/OWSOperation.h | 88 + SignalUtilitiesKit/OWSOperation.m | 269 + SignalUtilitiesKit/OWSOutgoingCallMessage.h | 48 + SignalUtilitiesKit/OWSOutgoingCallMessage.m | 196 + SignalUtilitiesKit/OWSOutgoingNullMessage.h | 31 + SignalUtilitiesKit/OWSOutgoingNullMessage.m | 107 + .../OWSOutgoingReceiptManager.h | 24 + .../OWSOutgoingReceiptManager.m | 313 + .../OWSOutgoingSentMessageTranscript.h | 25 + .../OWSOutgoingSentMessageTranscript.m | 118 + SignalUtilitiesKit/OWSOutgoingSyncMessage.h | 35 + SignalUtilitiesKit/OWSOutgoingSyncMessage.m | 125 + .../OWSPrimaryStorage+Calling.h | 24 + .../OWSPrimaryStorage+Calling.m | 35 + SignalUtilitiesKit/OWSPrimaryStorage+Loki.h | 50 + SignalUtilitiesKit/OWSPrimaryStorage+Loki.m | 194 + .../OWSPrimaryStorage+Loki.swift | 89 + .../OWSPrimaryStorage+PreKeyStore.h | 18 + .../OWSPrimaryStorage+PreKeyStore.m | 112 + .../OWSPrimaryStorage+SessionStore.h | 27 + .../OWSPrimaryStorage+SessionStore.m | 273 + .../OWSPrimaryStorage+SignedPreKeyStore.h | 40 + .../OWSPrimaryStorage+SignedPreKeyStore.m | 224 + .../OWSPrimaryStorage+keyFromIntLong.h | 15 + .../OWSPrimaryStorage+keyFromIntLong.m | 18 + SignalUtilitiesKit/OWSPrimaryStorage.h | 51 + SignalUtilitiesKit/OWSPrimaryStorage.m | 462 ++ SignalUtilitiesKit/OWSProfileKeyMessage.h | 28 + SignalUtilitiesKit/OWSProfileKeyMessage.m | 78 + SignalUtilitiesKit/OWSProvisioningCipher.h | 18 + SignalUtilitiesKit/OWSProvisioningCipher.m | 157 + SignalUtilitiesKit/OWSProvisioningMessage.h | 23 + SignalUtilitiesKit/OWSProvisioningMessage.m | 93 + SignalUtilitiesKit/OWSQueues.h | 28 + SignalUtilitiesKit/OWSReadReceiptManager.h | 88 + SignalUtilitiesKit/OWSReadReceiptManager.m | 552 ++ .../OWSReadReceiptsForLinkedDevicesMessage.h | 20 + .../OWSReadReceiptsForLinkedDevicesMessage.m | 56 + SignalUtilitiesKit/OWSReadTracking.h | 38 + .../OWSReceiptsForSenderMessage.h | 33 + .../OWSReceiptsForSenderMessage.m | 139 + SignalUtilitiesKit/OWSRecipientIdentity.h | 55 + SignalUtilitiesKit/OWSRecipientIdentity.m | 184 + SignalUtilitiesKit/OWSRecordTranscriptJob.h | 28 + SignalUtilitiesKit/OWSRecordTranscriptJob.m | 291 + SignalUtilitiesKit/OWSRequestBuilder.h | 17 + SignalUtilitiesKit/OWSRequestBuilder.m | 43 + SignalUtilitiesKit/OWSRequestFactory.h | 117 + SignalUtilitiesKit/OWSRequestFactory.m | 543 ++ SignalUtilitiesKit/OWSRequestMaker.swift | 247 + SignalUtilitiesKit/OWSSignalAddress.swift | 33 + SignalUtilitiesKit/OWSSignalService.h | 37 + SignalUtilitiesKit/OWSSignalService.m | 328 + SignalUtilitiesKit/OWSStorage+Subclass.h | 32 + SignalUtilitiesKit/OWSStorage.h | 116 + SignalUtilitiesKit/OWSStorage.m | 940 +++ .../OWSSyncConfigurationMessage.h | 22 + .../OWSSyncConfigurationMessage.m | 66 + SignalUtilitiesKit/OWSSyncContactsMessage.h | 28 + SignalUtilitiesKit/OWSSyncContactsMessage.m | 157 + SignalUtilitiesKit/OWSSyncGroupsMessage.h | 24 + SignalUtilitiesKit/OWSSyncGroupsMessage.m | 104 + .../OWSSyncGroupsRequestMessage.h | 27 + .../OWSSyncGroupsRequestMessage.m | 85 + SignalUtilitiesKit/OWSSyncManagerProtocol.h | 34 + SignalUtilitiesKit/OWSThumbnailService.swift | 178 + SignalUtilitiesKit/OWSUDManager.swift | 518 ++ .../OWSUnknownContactBlockOfferMessage.h | 17 + .../OWSUnknownContactBlockOfferMessage.m | 38 + SignalUtilitiesKit/OWSUploadOperation.h | 27 + SignalUtilitiesKit/OWSUploadOperation.m | 191 + .../OWSVerificationStateChangeMessage.h | 26 + .../OWSVerificationStateChangeMessage.m | 35 + .../OWSVerificationStateSyncMessage.h | 27 + .../OWSVerificationStateSyncMessage.m | 111 + SignalUtilitiesKit/OWSWebSocket.h | 55 + SignalUtilitiesKit/OWSWebSocket.m | 1141 +++ SignalUtilitiesKit/OldSnodeAPI.swift | 44 + .../OnionRequestAPI+Encryption.swift | 72 + SignalUtilitiesKit/OutageDetection.swift | 128 + SignalUtilitiesKit/ParamParser.swift | 142 + SignalUtilitiesKit/PhoneNumber.h | 52 + SignalUtilitiesKit/PhoneNumber.m | 584 ++ SignalUtilitiesKit/PhoneNumberUtil.h | 44 + SignalUtilitiesKit/PhoneNumberUtil.m | 610 ++ SignalUtilitiesKit/Poller.swift | 115 + SignalUtilitiesKit/PreKeyBundle+jsonDict.h | 15 + SignalUtilitiesKit/PreKeyBundle+jsonDict.m | 110 + .../PreKeyRefreshOperation.swift | 105 + SignalUtilitiesKit/ProfileManagerProtocol.h | 46 + .../Promise+retainUntilComplete.swift | 63 + SignalUtilitiesKit/ProofOfWork.swift | 109 + SignalUtilitiesKit/ProtoUtils.h | 29 + SignalUtilitiesKit/ProtoUtils.m | 97 + SignalUtilitiesKit/Provisioning.pb.swift | 254 + SignalUtilitiesKit/ProvisioningProto.swift | 310 + .../ProxiedContentDownloader.swift | 932 +++ SignalUtilitiesKit/PublicChatManager.swift | 133 + SignalUtilitiesKit/PublicChatPoller.swift | 248 + SignalUtilitiesKit/ReachabilityManager.swift | 58 + SignalUtilitiesKit/ReverseDispatchQueue.swift | 75 + .../RotateSignedKeyOperation.swift | 79 + SignalUtilitiesKit/SSKAsserts.h | 68 + SignalUtilitiesKit/SSKEnvironment.h | 118 + SignalUtilitiesKit/SSKEnvironment.m | 245 + .../SSKIncrementingIdFinder.swift | 27 + SignalUtilitiesKit/SSKJobRecord.h | 57 + SignalUtilitiesKit/SSKJobRecord.m | 127 + SignalUtilitiesKit/SSKKeychainStorage.swift | 108 + .../SSKMessageSenderJobRecord.h | 29 + .../SSKMessageSenderJobRecord.m | 51 + SignalUtilitiesKit/SSKPreferences.swift | 60 + SignalUtilitiesKit/SSKProto.swift | 7075 +++++++++++++++++ .../SSKProtoEnvelope+Conversion.swift | 15 + .../SSKProtoPrekeyBundleMessage+Loki.swift | 23 + SignalUtilitiesKit/SSKWebSocket.swift | 185 + .../SessionManagementProtocol.swift | 223 + SignalUtilitiesKit/SessionMetaProtocol.swift | 134 + .../SessionRequestMessage.swift | 51 + .../SharedSenderKeysImplementation.swift | 220 + SignalUtilitiesKit/SignalAccount.h | 46 + SignalUtilitiesKit/SignalAccount.m | 57 + SignalUtilitiesKit/SignalIOS.pb.swift | 318 + SignalUtilitiesKit/SignalIOSProto.swift | 409 + SignalUtilitiesKit/SignalMessage.swift | 28 + SignalUtilitiesKit/SignalRecipient.h | 50 + SignalUtilitiesKit/SignalRecipient.m | 283 + SignalUtilitiesKit/SignalService.pb.swift | 5199 ++++++++++++ SignalUtilitiesKit/SignalServiceClient.swift | 94 + SignalUtilitiesKit/SignalServiceProfile.swift | 54 + SignalUtilitiesKit/Storage+ClosedGroups.swift | 83 + SignalUtilitiesKit/Storage+Collections.swift | 21 + .../Storage+OnionRequests.swift | 48 + SignalUtilitiesKit/Storage+PublicChats.swift | 38 + .../Storage+SessionManagement.swift | 31 + SignalUtilitiesKit/Storage+SnodeAPI.swift | 58 + SignalUtilitiesKit/Storage.swift | 76 + SignalUtilitiesKit/String+SSK.swift | 86 + SignalUtilitiesKit/String+Trimming.swift | 9 + SignalUtilitiesKit/SwiftSingletons.swift | 35 + SignalUtilitiesKit/SyncMessagesProtocol.swift | 297 + SignalUtilitiesKit/TSAccountManager.h | 171 + SignalUtilitiesKit/TSAccountManager.m | 765 ++ SignalUtilitiesKit/TSAttachment.h | 103 + SignalUtilitiesKit/TSAttachment.m | 302 + SignalUtilitiesKit/TSAttachmentPointer.h | 75 + SignalUtilitiesKit/TSAttachmentPointer.m | 265 + SignalUtilitiesKit/TSAttachmentStream.h | 108 + SignalUtilitiesKit/TSAttachmentStream.m | 887 +++ SignalUtilitiesKit/TSCall.h | 44 + SignalUtilitiesKit/TSCall.m | 178 + SignalUtilitiesKit/TSConstants.h | 76 + SignalUtilitiesKit/TSConstants.m | 18 + SignalUtilitiesKit/TSContactThread.h | 49 + SignalUtilitiesKit/TSContactThread.m | 142 + .../TSDatabaseSecondaryIndexes.h | 22 + .../TSDatabaseSecondaryIndexes.m | 54 + SignalUtilitiesKit/TSDatabaseView.h | 74 + SignalUtilitiesKit/TSDatabaseView.m | 515 ++ SignalUtilitiesKit/TSErrorMessage.h | 76 + SignalUtilitiesKit/TSErrorMessage.m | 228 + .../TSErrorMessage_privateConstructor.h | 19 + SignalUtilitiesKit/TSGroupModel.h | 47 + SignalUtilitiesKit/TSGroupModel.m | 194 + SignalUtilitiesKit/TSGroupThread.h | 67 + SignalUtilitiesKit/TSGroupThread.m | 339 + SignalUtilitiesKit/TSIncomingMessage.h | 90 + SignalUtilitiesKit/TSIncomingMessage.m | 180 + SignalUtilitiesKit/TSInfoMessage.h | 69 + SignalUtilitiesKit/TSInfoMessage.m | 194 + SignalUtilitiesKit/TSInteraction.h | 88 + SignalUtilitiesKit/TSInteraction.m | 292 + .../TSInvalidIdentityKeyErrorMessage.h | 19 + .../TSInvalidIdentityKeyErrorMessage.m | 31 + ...SInvalidIdentityKeyReceivingErrorMessage.h | 22 + ...SInvalidIdentityKeyReceivingErrorMessage.m | 154 + .../TSInvalidIdentityKeySendingErrorMessage.h | 24 + .../TSInvalidIdentityKeySendingErrorMessage.m | 61 + SignalUtilitiesKit/TSMessage.h | 84 + SignalUtilitiesKit/TSMessage.m | 466 ++ SignalUtilitiesKit/TSNetworkManager.h | 45 + SignalUtilitiesKit/TSNetworkManager.m | 583 ++ SignalUtilitiesKit/TSOutgoingMessage.h | 265 + SignalUtilitiesKit/TSOutgoingMessage.m | 1172 +++ SignalUtilitiesKit/TSPreKeyManager.h | 36 + SignalUtilitiesKit/TSPreKeyManager.m | 293 + SignalUtilitiesKit/TSPrefix.h | 21 + SignalUtilitiesKit/TSQuotedMessage.h | 108 + SignalUtilitiesKit/TSQuotedMessage.m | 378 + SignalUtilitiesKit/TSSocketManager.h | 50 + SignalUtilitiesKit/TSSocketManager.m | 80 + SignalUtilitiesKit/TSStorageHeaders.h | 14 + SignalUtilitiesKit/TSStorageKeys.h | 32 + SignalUtilitiesKit/TSThread.h | 182 + SignalUtilitiesKit/TSThread.m | 740 ++ SignalUtilitiesKit/TSYapDatabaseObject.h | 166 + SignalUtilitiesKit/TSYapDatabaseObject.m | 250 + SignalUtilitiesKit/TTLUtilities.swift | 32 + .../TypingIndicatorMessage.swift | 122 + SignalUtilitiesKit/TypingIndicators.swift | 459 ++ SignalUtilitiesKit/UIImage+OWS.h | 23 + SignalUtilitiesKit/UIImage+OWS.m | 243 + SignalUtilitiesKit/WeakTimer.swift | 43 + SignalUtilitiesKit/YapDatabase+Promise.swift | 52 + .../YapDatabaseConnection+OWS.h | 46 + .../YapDatabaseConnection+OWS.m | 192 + .../YapDatabaseTransaction+OWS.h | 45 + .../YapDatabaseTransaction+OWS.m | 169 + 439 files changed, 77334 insertions(+), 114 deletions(-) delete mode 100644 SessionProtocolKit/Signal/Utility/Randomness.h delete mode 100644 SessionProtocolKit/Signal/Utility/Randomness.m rename {SessionSnodeKit/Utilities => SessionUtilitiesKit}/Promise+Delaying.swift (77%) create mode 100644 SignalUtilitiesKit/AccountServiceClient.swift create mode 100644 SignalUtilitiesKit/AnyPromise+Conversion.swift create mode 100755 SignalUtilitiesKit/AppContext.h create mode 100755 SignalUtilitiesKit/AppContext.m create mode 100755 SignalUtilitiesKit/AppReadiness.h create mode 100755 SignalUtilitiesKit/AppReadiness.m create mode 100755 SignalUtilitiesKit/AppVersion.h create mode 100755 SignalUtilitiesKit/AppVersion.m create mode 100644 SignalUtilitiesKit/Array+Description.swift create mode 100644 SignalUtilitiesKit/BuildConfiguration.swift create mode 100644 SignalUtilitiesKit/ByteParser.h create mode 100644 SignalUtilitiesKit/ByteParser.m create mode 100644 SignalUtilitiesKit/CDSQuote.h create mode 100644 SignalUtilitiesKit/CDSQuote.m create mode 100644 SignalUtilitiesKit/CDSSigningCertificate.h create mode 100644 SignalUtilitiesKit/CDSSigningCertificate.m create mode 100644 SignalUtilitiesKit/ClosedGroupParser.swift create mode 100644 SignalUtilitiesKit/ClosedGroupPoller.swift create mode 100644 SignalUtilitiesKit/ClosedGroupUpdateMessage.swift create mode 100644 SignalUtilitiesKit/ClosedGroupUtilities.swift create mode 100644 SignalUtilitiesKit/ClosedGroupsProtocol.swift create mode 100644 SignalUtilitiesKit/Contact.h create mode 100644 SignalUtilitiesKit/Contact.m create mode 100644 SignalUtilitiesKit/ContactDiscoveryService.h create mode 100644 SignalUtilitiesKit/ContactDiscoveryService.m create mode 100644 SignalUtilitiesKit/ContactParser.swift create mode 100644 SignalUtilitiesKit/ContactsManagerProtocol.h create mode 100644 SignalUtilitiesKit/ContactsUpdater.h create mode 100644 SignalUtilitiesKit/ContactsUpdater.m create mode 100644 SignalUtilitiesKit/ContentProxy.swift create mode 100644 SignalUtilitiesKit/CreatePreKeysOperation.swift create mode 100644 SignalUtilitiesKit/Data+SecureRandom.swift create mode 100644 SignalUtilitiesKit/Data+Streaming.swift create mode 100755 SignalUtilitiesKit/DataSource.h create mode 100755 SignalUtilitiesKit/DataSource.m create mode 100644 SignalUtilitiesKit/Debugging.swift create mode 100644 SignalUtilitiesKit/DecryptionUtilities.swift create mode 100644 SignalUtilitiesKit/DeviceLink.swift create mode 100644 SignalUtilitiesKit/DeviceLinkIndex.swift create mode 100644 SignalUtilitiesKit/DeviceLinkingSession.swift create mode 100644 SignalUtilitiesKit/DeviceLinkingSessionDelegate.swift create mode 100644 SignalUtilitiesKit/DeviceLinkingUtilities.swift create mode 100644 SignalUtilitiesKit/DeviceNames.swift create mode 100644 SignalUtilitiesKit/Dictionary+Description.swift create mode 100644 SignalUtilitiesKit/DisplayNameUtilities.swift create mode 100644 SignalUtilitiesKit/DisplayNameUtilities2.swift create mode 100644 SignalUtilitiesKit/ECKeyPair+Hexadecimal.swift create mode 100644 SignalUtilitiesKit/EncryptionUtilities.swift create mode 100644 SignalUtilitiesKit/FeatureFlags.swift create mode 100644 SignalUtilitiesKit/FileServerAPI+Deprecated.swift create mode 100644 SignalUtilitiesKit/Fingerprint.pb.swift create mode 100644 SignalUtilitiesKit/FingerprintProto.swift create mode 100644 SignalUtilitiesKit/FullTextSearchFinder.swift create mode 100644 SignalUtilitiesKit/FunctionalUtil.h create mode 100644 SignalUtilitiesKit/FunctionalUtil.m create mode 100644 SignalUtilitiesKit/GeneralUtilities.swift create mode 100644 SignalUtilitiesKit/GroupUtilities.swift create mode 100644 SignalUtilitiesKit/JobQueue.swift create mode 100644 SignalUtilitiesKit/LKDeviceLinkMessage.h create mode 100644 SignalUtilitiesKit/LKDeviceLinkMessage.m create mode 100644 SignalUtilitiesKit/LKGroupUtilities.h create mode 100644 SignalUtilitiesKit/LKGroupUtilities.m create mode 100644 SignalUtilitiesKit/LKSyncOpenGroupsMessage.h create mode 100644 SignalUtilitiesKit/LKSyncOpenGroupsMessage.m create mode 100644 SignalUtilitiesKit/LKUnlinkDeviceMessage.h create mode 100644 SignalUtilitiesKit/LKUnlinkDeviceMessage.m create mode 100644 SignalUtilitiesKit/LKUserDefaults.swift create mode 100644 SignalUtilitiesKit/LRUCache.swift create mode 100644 SignalUtilitiesKit/LokiDatabaseUtilities.swift create mode 100644 SignalUtilitiesKit/LokiMessage.swift create mode 100644 SignalUtilitiesKit/LokiPushNotificationManager.swift create mode 100644 SignalUtilitiesKit/LokiSessionResetImplementation.swift create mode 100644 SignalUtilitiesKit/MIMETypeUtil.h create mode 100644 SignalUtilitiesKit/MIMETypeUtil.m create mode 100644 SignalUtilitiesKit/Mention.swift create mode 100644 SignalUtilitiesKit/MentionsManager.swift create mode 100644 SignalUtilitiesKit/MessageSender+Promise.swift create mode 100644 SignalUtilitiesKit/MessageSenderJobQueue.swift create mode 100644 SignalUtilitiesKit/MessageWrapper.swift create mode 100644 SignalUtilitiesKit/Meta/Info.plist create mode 100644 SignalUtilitiesKit/Meta/SignalUtilitiesKit.h create mode 100644 SignalUtilitiesKit/Mnemonic.swift create mode 100644 SignalUtilitiesKit/MultiDeviceProtocol.swift create mode 100644 SignalUtilitiesKit/NSArray+Functional.h create mode 100644 SignalUtilitiesKit/NSArray+Functional.m create mode 100644 SignalUtilitiesKit/NSArray+OWS.h create mode 100644 SignalUtilitiesKit/NSArray+OWS.m create mode 100644 SignalUtilitiesKit/NSData+Image.h create mode 100644 SignalUtilitiesKit/NSData+Image.m create mode 100644 SignalUtilitiesKit/NSError+MessageSending.h create mode 100644 SignalUtilitiesKit/NSError+MessageSending.m create mode 100644 SignalUtilitiesKit/NSNotificationCenter+OWS.h create mode 100644 SignalUtilitiesKit/NSNotificationCenter+OWS.m create mode 100644 SignalUtilitiesKit/NSObject+Casting.h create mode 100644 SignalUtilitiesKit/NSObject+Casting.m create mode 100644 SignalUtilitiesKit/NSRegularExpression+SSK.swift create mode 100644 SignalUtilitiesKit/NSSet+Functional.h create mode 100644 SignalUtilitiesKit/NSSet+Functional.m create mode 100644 SignalUtilitiesKit/NSString+SSK.h create mode 100644 SignalUtilitiesKit/NSString+SSK.m create mode 100644 SignalUtilitiesKit/NSTimer+OWS.h create mode 100644 SignalUtilitiesKit/NSTimer+OWS.m create mode 100644 SignalUtilitiesKit/NSURLSessionDataTask+StatusCode.h create mode 100644 SignalUtilitiesKit/NSURLSessionDataTask+StatusCode.m create mode 100644 SignalUtilitiesKit/NSUserDefaults+OWS.h create mode 100644 SignalUtilitiesKit/NSUserDefaults+OWS.m create mode 100644 SignalUtilitiesKit/NetworkManager.swift create mode 100644 SignalUtilitiesKit/Notification+Loki.swift create mode 100644 SignalUtilitiesKit/NotificationsProtocol.h create mode 100644 SignalUtilitiesKit/OWS2FAManager.h create mode 100644 SignalUtilitiesKit/OWS2FAManager.m create mode 100644 SignalUtilitiesKit/OWSAddToContactsOfferMessage.h create mode 100644 SignalUtilitiesKit/OWSAddToContactsOfferMessage.m create mode 100644 SignalUtilitiesKit/OWSAddToProfileWhitelistOfferMessage.h create mode 100644 SignalUtilitiesKit/OWSAddToProfileWhitelistOfferMessage.m create mode 100755 SignalUtilitiesKit/OWSAnalytics.h create mode 100755 SignalUtilitiesKit/OWSAnalytics.m create mode 100755 SignalUtilitiesKit/OWSAnalyticsEvents.h create mode 100755 SignalUtilitiesKit/OWSAnalyticsEvents.m create mode 100644 SignalUtilitiesKit/OWSAttachmentDownloads.h create mode 100644 SignalUtilitiesKit/OWSAttachmentDownloads.m create mode 100644 SignalUtilitiesKit/OWSBackgroundTask.h create mode 100644 SignalUtilitiesKit/OWSBackgroundTask.m create mode 100644 SignalUtilitiesKit/OWSBackupFragment.h create mode 100644 SignalUtilitiesKit/OWSBackupFragment.m create mode 100644 SignalUtilitiesKit/OWSBatchMessageProcessor.h create mode 100644 SignalUtilitiesKit/OWSBatchMessageProcessor.m create mode 100644 SignalUtilitiesKit/OWSBlockedPhoneNumbersMessage.h create mode 100644 SignalUtilitiesKit/OWSBlockedPhoneNumbersMessage.m create mode 100644 SignalUtilitiesKit/OWSBlockingManager.h create mode 100644 SignalUtilitiesKit/OWSBlockingManager.m create mode 100644 SignalUtilitiesKit/OWSCallMessageHandler.h create mode 100644 SignalUtilitiesKit/OWSCensorshipConfiguration.h create mode 100644 SignalUtilitiesKit/OWSCensorshipConfiguration.m create mode 100644 SignalUtilitiesKit/OWSChunkedOutputStream.h create mode 100644 SignalUtilitiesKit/OWSChunkedOutputStream.m create mode 100644 SignalUtilitiesKit/OWSContact+Private.h create mode 100644 SignalUtilitiesKit/OWSContact.h create mode 100644 SignalUtilitiesKit/OWSContact.m create mode 100644 SignalUtilitiesKit/OWSContactDiscoveryOperation.swift create mode 100644 SignalUtilitiesKit/OWSContactsOutputStream.h create mode 100644 SignalUtilitiesKit/OWSContactsOutputStream.m create mode 100644 SignalUtilitiesKit/OWSCountryMetadata.h create mode 100644 SignalUtilitiesKit/OWSCountryMetadata.m create mode 100644 SignalUtilitiesKit/OWSDevice.h create mode 100644 SignalUtilitiesKit/OWSDevice.m create mode 100644 SignalUtilitiesKit/OWSDeviceProvisioner.h create mode 100644 SignalUtilitiesKit/OWSDeviceProvisioner.m create mode 100644 SignalUtilitiesKit/OWSDeviceProvisioningCodeService.h create mode 100644 SignalUtilitiesKit/OWSDeviceProvisioningCodeService.m create mode 100644 SignalUtilitiesKit/OWSDeviceProvisioningService.h create mode 100644 SignalUtilitiesKit/OWSDeviceProvisioningService.m create mode 100644 SignalUtilitiesKit/OWSDevicesService.h create mode 100644 SignalUtilitiesKit/OWSDevicesService.m create mode 100644 SignalUtilitiesKit/OWSDisappearingConfigurationUpdateInfoMessage.h create mode 100644 SignalUtilitiesKit/OWSDisappearingConfigurationUpdateInfoMessage.m create mode 100644 SignalUtilitiesKit/OWSDisappearingMessagesConfiguration.h create mode 100644 SignalUtilitiesKit/OWSDisappearingMessagesConfiguration.m create mode 100644 SignalUtilitiesKit/OWSDisappearingMessagesConfigurationMessage.h create mode 100644 SignalUtilitiesKit/OWSDisappearingMessagesConfigurationMessage.m create mode 100644 SignalUtilitiesKit/OWSDisappearingMessagesFinder.h create mode 100644 SignalUtilitiesKit/OWSDisappearingMessagesFinder.m create mode 100644 SignalUtilitiesKit/OWSDisappearingMessagesJob.h create mode 100644 SignalUtilitiesKit/OWSDisappearingMessagesJob.m create mode 100644 SignalUtilitiesKit/OWSDispatch.h create mode 100644 SignalUtilitiesKit/OWSDispatch.m create mode 100644 SignalUtilitiesKit/OWSDynamicOutgoingMessage.h create mode 100644 SignalUtilitiesKit/OWSDynamicOutgoingMessage.m create mode 100644 SignalUtilitiesKit/OWSEndSessionMessage.h create mode 100644 SignalUtilitiesKit/OWSEndSessionMessage.m create mode 100644 SignalUtilitiesKit/OWSError.h create mode 100644 SignalUtilitiesKit/OWSError.m create mode 100644 SignalUtilitiesKit/OWSFailedAttachmentDownloadsJob.h create mode 100644 SignalUtilitiesKit/OWSFailedAttachmentDownloadsJob.m create mode 100644 SignalUtilitiesKit/OWSFailedMessagesJob.h create mode 100644 SignalUtilitiesKit/OWSFailedMessagesJob.m create mode 100644 SignalUtilitiesKit/OWSFileSystem.h create mode 100644 SignalUtilitiesKit/OWSFileSystem.m create mode 100644 SignalUtilitiesKit/OWSFingerprint.h create mode 100644 SignalUtilitiesKit/OWSFingerprint.m create mode 100644 SignalUtilitiesKit/OWSFingerprintBuilder.h create mode 100644 SignalUtilitiesKit/OWSFingerprintBuilder.m create mode 100644 SignalUtilitiesKit/OWSGroupsOutputStream.h create mode 100644 SignalUtilitiesKit/OWSGroupsOutputStream.m create mode 100644 SignalUtilitiesKit/OWSHTTPSecurityPolicy.h create mode 100644 SignalUtilitiesKit/OWSHTTPSecurityPolicy.m create mode 100644 SignalUtilitiesKit/OWSIdentityManager.h create mode 100644 SignalUtilitiesKit/OWSIdentityManager.m create mode 100644 SignalUtilitiesKit/OWSIncomingMessageFinder.h create mode 100644 SignalUtilitiesKit/OWSIncomingMessageFinder.m create mode 100644 SignalUtilitiesKit/OWSIncomingSentMessageTranscript.h create mode 100644 SignalUtilitiesKit/OWSIncomingSentMessageTranscript.m create mode 100644 SignalUtilitiesKit/OWSIncompleteCallsJob.h create mode 100644 SignalUtilitiesKit/OWSIncompleteCallsJob.m create mode 100644 SignalUtilitiesKit/OWSLinkPreview.swift create mode 100644 SignalUtilitiesKit/OWSLinkedDeviceReadReceipt.h create mode 100644 SignalUtilitiesKit/OWSLinkedDeviceReadReceipt.m create mode 100644 SignalUtilitiesKit/OWSMath.h create mode 100644 SignalUtilitiesKit/OWSMediaGalleryFinder.h create mode 100644 SignalUtilitiesKit/OWSMediaGalleryFinder.m create mode 100644 SignalUtilitiesKit/OWSMediaUtils.swift create mode 100644 SignalUtilitiesKit/OWSMessageDecrypter.h create mode 100644 SignalUtilitiesKit/OWSMessageDecrypter.m create mode 100644 SignalUtilitiesKit/OWSMessageHandler.h create mode 100644 SignalUtilitiesKit/OWSMessageHandler.m create mode 100644 SignalUtilitiesKit/OWSMessageManager.h create mode 100644 SignalUtilitiesKit/OWSMessageManager.m create mode 100644 SignalUtilitiesKit/OWSMessageReceiver.h create mode 100644 SignalUtilitiesKit/OWSMessageReceiver.m create mode 100644 SignalUtilitiesKit/OWSMessageSend.swift create mode 100644 SignalUtilitiesKit/OWSMessageSender.h create mode 100644 SignalUtilitiesKit/OWSMessageSender.m create mode 100644 SignalUtilitiesKit/OWSMessageServiceParams.h create mode 100644 SignalUtilitiesKit/OWSMessageServiceParams.m create mode 100644 SignalUtilitiesKit/OWSMessageUtils.h create mode 100644 SignalUtilitiesKit/OWSMessageUtils.m create mode 100644 SignalUtilitiesKit/OWSOperation.h create mode 100644 SignalUtilitiesKit/OWSOperation.m create mode 100644 SignalUtilitiesKit/OWSOutgoingCallMessage.h create mode 100644 SignalUtilitiesKit/OWSOutgoingCallMessage.m create mode 100644 SignalUtilitiesKit/OWSOutgoingNullMessage.h create mode 100644 SignalUtilitiesKit/OWSOutgoingNullMessage.m create mode 100644 SignalUtilitiesKit/OWSOutgoingReceiptManager.h create mode 100644 SignalUtilitiesKit/OWSOutgoingReceiptManager.m create mode 100644 SignalUtilitiesKit/OWSOutgoingSentMessageTranscript.h create mode 100644 SignalUtilitiesKit/OWSOutgoingSentMessageTranscript.m create mode 100644 SignalUtilitiesKit/OWSOutgoingSyncMessage.h create mode 100644 SignalUtilitiesKit/OWSOutgoingSyncMessage.m create mode 100644 SignalUtilitiesKit/OWSPrimaryStorage+Calling.h create mode 100644 SignalUtilitiesKit/OWSPrimaryStorage+Calling.m create mode 100644 SignalUtilitiesKit/OWSPrimaryStorage+Loki.h create mode 100644 SignalUtilitiesKit/OWSPrimaryStorage+Loki.m create mode 100644 SignalUtilitiesKit/OWSPrimaryStorage+Loki.swift create mode 100644 SignalUtilitiesKit/OWSPrimaryStorage+PreKeyStore.h create mode 100644 SignalUtilitiesKit/OWSPrimaryStorage+PreKeyStore.m create mode 100644 SignalUtilitiesKit/OWSPrimaryStorage+SessionStore.h create mode 100644 SignalUtilitiesKit/OWSPrimaryStorage+SessionStore.m create mode 100644 SignalUtilitiesKit/OWSPrimaryStorage+SignedPreKeyStore.h create mode 100644 SignalUtilitiesKit/OWSPrimaryStorage+SignedPreKeyStore.m create mode 100644 SignalUtilitiesKit/OWSPrimaryStorage+keyFromIntLong.h create mode 100644 SignalUtilitiesKit/OWSPrimaryStorage+keyFromIntLong.m create mode 100644 SignalUtilitiesKit/OWSPrimaryStorage.h create mode 100644 SignalUtilitiesKit/OWSPrimaryStorage.m create mode 100644 SignalUtilitiesKit/OWSProfileKeyMessage.h create mode 100644 SignalUtilitiesKit/OWSProfileKeyMessage.m create mode 100644 SignalUtilitiesKit/OWSProvisioningCipher.h create mode 100644 SignalUtilitiesKit/OWSProvisioningCipher.m create mode 100644 SignalUtilitiesKit/OWSProvisioningMessage.h create mode 100644 SignalUtilitiesKit/OWSProvisioningMessage.m create mode 100644 SignalUtilitiesKit/OWSQueues.h create mode 100644 SignalUtilitiesKit/OWSReadReceiptManager.h create mode 100644 SignalUtilitiesKit/OWSReadReceiptManager.m create mode 100644 SignalUtilitiesKit/OWSReadReceiptsForLinkedDevicesMessage.h create mode 100644 SignalUtilitiesKit/OWSReadReceiptsForLinkedDevicesMessage.m create mode 100644 SignalUtilitiesKit/OWSReadTracking.h create mode 100644 SignalUtilitiesKit/OWSReceiptsForSenderMessage.h create mode 100644 SignalUtilitiesKit/OWSReceiptsForSenderMessage.m create mode 100644 SignalUtilitiesKit/OWSRecipientIdentity.h create mode 100644 SignalUtilitiesKit/OWSRecipientIdentity.m create mode 100644 SignalUtilitiesKit/OWSRecordTranscriptJob.h create mode 100644 SignalUtilitiesKit/OWSRecordTranscriptJob.m create mode 100644 SignalUtilitiesKit/OWSRequestBuilder.h create mode 100644 SignalUtilitiesKit/OWSRequestBuilder.m create mode 100644 SignalUtilitiesKit/OWSRequestFactory.h create mode 100644 SignalUtilitiesKit/OWSRequestFactory.m create mode 100644 SignalUtilitiesKit/OWSRequestMaker.swift create mode 100644 SignalUtilitiesKit/OWSSignalAddress.swift create mode 100644 SignalUtilitiesKit/OWSSignalService.h create mode 100644 SignalUtilitiesKit/OWSSignalService.m create mode 100644 SignalUtilitiesKit/OWSStorage+Subclass.h create mode 100644 SignalUtilitiesKit/OWSStorage.h create mode 100644 SignalUtilitiesKit/OWSStorage.m create mode 100644 SignalUtilitiesKit/OWSSyncConfigurationMessage.h create mode 100644 SignalUtilitiesKit/OWSSyncConfigurationMessage.m create mode 100644 SignalUtilitiesKit/OWSSyncContactsMessage.h create mode 100644 SignalUtilitiesKit/OWSSyncContactsMessage.m create mode 100644 SignalUtilitiesKit/OWSSyncGroupsMessage.h create mode 100644 SignalUtilitiesKit/OWSSyncGroupsMessage.m create mode 100644 SignalUtilitiesKit/OWSSyncGroupsRequestMessage.h create mode 100644 SignalUtilitiesKit/OWSSyncGroupsRequestMessage.m create mode 100644 SignalUtilitiesKit/OWSSyncManagerProtocol.h create mode 100644 SignalUtilitiesKit/OWSThumbnailService.swift create mode 100644 SignalUtilitiesKit/OWSUDManager.swift create mode 100644 SignalUtilitiesKit/OWSUnknownContactBlockOfferMessage.h create mode 100644 SignalUtilitiesKit/OWSUnknownContactBlockOfferMessage.m create mode 100644 SignalUtilitiesKit/OWSUploadOperation.h create mode 100644 SignalUtilitiesKit/OWSUploadOperation.m create mode 100644 SignalUtilitiesKit/OWSVerificationStateChangeMessage.h create mode 100644 SignalUtilitiesKit/OWSVerificationStateChangeMessage.m create mode 100644 SignalUtilitiesKit/OWSVerificationStateSyncMessage.h create mode 100644 SignalUtilitiesKit/OWSVerificationStateSyncMessage.m create mode 100644 SignalUtilitiesKit/OWSWebSocket.h create mode 100644 SignalUtilitiesKit/OWSWebSocket.m create mode 100644 SignalUtilitiesKit/OldSnodeAPI.swift create mode 100644 SignalUtilitiesKit/OnionRequestAPI+Encryption.swift create mode 100644 SignalUtilitiesKit/OutageDetection.swift create mode 100644 SignalUtilitiesKit/ParamParser.swift create mode 100644 SignalUtilitiesKit/PhoneNumber.h create mode 100644 SignalUtilitiesKit/PhoneNumber.m create mode 100644 SignalUtilitiesKit/PhoneNumberUtil.h create mode 100644 SignalUtilitiesKit/PhoneNumberUtil.m create mode 100644 SignalUtilitiesKit/Poller.swift create mode 100644 SignalUtilitiesKit/PreKeyBundle+jsonDict.h create mode 100644 SignalUtilitiesKit/PreKeyBundle+jsonDict.m create mode 100644 SignalUtilitiesKit/PreKeyRefreshOperation.swift create mode 100644 SignalUtilitiesKit/ProfileManagerProtocol.h create mode 100644 SignalUtilitiesKit/Promise+retainUntilComplete.swift create mode 100644 SignalUtilitiesKit/ProofOfWork.swift create mode 100644 SignalUtilitiesKit/ProtoUtils.h create mode 100644 SignalUtilitiesKit/ProtoUtils.m create mode 100644 SignalUtilitiesKit/Provisioning.pb.swift create mode 100644 SignalUtilitiesKit/ProvisioningProto.swift create mode 100644 SignalUtilitiesKit/ProxiedContentDownloader.swift create mode 100644 SignalUtilitiesKit/PublicChatManager.swift create mode 100644 SignalUtilitiesKit/PublicChatPoller.swift create mode 100644 SignalUtilitiesKit/ReachabilityManager.swift create mode 100644 SignalUtilitiesKit/ReverseDispatchQueue.swift create mode 100644 SignalUtilitiesKit/RotateSignedKeyOperation.swift create mode 100755 SignalUtilitiesKit/SSKAsserts.h create mode 100644 SignalUtilitiesKit/SSKEnvironment.h create mode 100644 SignalUtilitiesKit/SSKEnvironment.m create mode 100644 SignalUtilitiesKit/SSKIncrementingIdFinder.swift create mode 100644 SignalUtilitiesKit/SSKJobRecord.h create mode 100644 SignalUtilitiesKit/SSKJobRecord.m create mode 100644 SignalUtilitiesKit/SSKKeychainStorage.swift create mode 100644 SignalUtilitiesKit/SSKMessageSenderJobRecord.h create mode 100644 SignalUtilitiesKit/SSKMessageSenderJobRecord.m create mode 100644 SignalUtilitiesKit/SSKPreferences.swift create mode 100644 SignalUtilitiesKit/SSKProto.swift create mode 100644 SignalUtilitiesKit/SSKProtoEnvelope+Conversion.swift create mode 100644 SignalUtilitiesKit/SSKProtoPrekeyBundleMessage+Loki.swift create mode 100644 SignalUtilitiesKit/SSKWebSocket.swift create mode 100644 SignalUtilitiesKit/SessionManagementProtocol.swift create mode 100644 SignalUtilitiesKit/SessionMetaProtocol.swift create mode 100644 SignalUtilitiesKit/SessionRequestMessage.swift create mode 100644 SignalUtilitiesKit/SharedSenderKeysImplementation.swift create mode 100644 SignalUtilitiesKit/SignalAccount.h create mode 100644 SignalUtilitiesKit/SignalAccount.m create mode 100644 SignalUtilitiesKit/SignalIOS.pb.swift create mode 100644 SignalUtilitiesKit/SignalIOSProto.swift create mode 100644 SignalUtilitiesKit/SignalMessage.swift create mode 100644 SignalUtilitiesKit/SignalRecipient.h create mode 100644 SignalUtilitiesKit/SignalRecipient.m create mode 100644 SignalUtilitiesKit/SignalService.pb.swift create mode 100644 SignalUtilitiesKit/SignalServiceClient.swift create mode 100644 SignalUtilitiesKit/SignalServiceProfile.swift create mode 100644 SignalUtilitiesKit/Storage+ClosedGroups.swift create mode 100644 SignalUtilitiesKit/Storage+Collections.swift create mode 100644 SignalUtilitiesKit/Storage+OnionRequests.swift create mode 100644 SignalUtilitiesKit/Storage+PublicChats.swift create mode 100644 SignalUtilitiesKit/Storage+SessionManagement.swift create mode 100644 SignalUtilitiesKit/Storage+SnodeAPI.swift create mode 100644 SignalUtilitiesKit/Storage.swift create mode 100644 SignalUtilitiesKit/String+SSK.swift create mode 100644 SignalUtilitiesKit/String+Trimming.swift create mode 100644 SignalUtilitiesKit/SwiftSingletons.swift create mode 100644 SignalUtilitiesKit/SyncMessagesProtocol.swift create mode 100644 SignalUtilitiesKit/TSAccountManager.h create mode 100644 SignalUtilitiesKit/TSAccountManager.m create mode 100644 SignalUtilitiesKit/TSAttachment.h create mode 100644 SignalUtilitiesKit/TSAttachment.m create mode 100644 SignalUtilitiesKit/TSAttachmentPointer.h create mode 100644 SignalUtilitiesKit/TSAttachmentPointer.m create mode 100644 SignalUtilitiesKit/TSAttachmentStream.h create mode 100644 SignalUtilitiesKit/TSAttachmentStream.m create mode 100644 SignalUtilitiesKit/TSCall.h create mode 100644 SignalUtilitiesKit/TSCall.m create mode 100644 SignalUtilitiesKit/TSConstants.h create mode 100644 SignalUtilitiesKit/TSConstants.m create mode 100644 SignalUtilitiesKit/TSContactThread.h create mode 100644 SignalUtilitiesKit/TSContactThread.m create mode 100644 SignalUtilitiesKit/TSDatabaseSecondaryIndexes.h create mode 100644 SignalUtilitiesKit/TSDatabaseSecondaryIndexes.m create mode 100644 SignalUtilitiesKit/TSDatabaseView.h create mode 100644 SignalUtilitiesKit/TSDatabaseView.m create mode 100644 SignalUtilitiesKit/TSErrorMessage.h create mode 100644 SignalUtilitiesKit/TSErrorMessage.m create mode 100644 SignalUtilitiesKit/TSErrorMessage_privateConstructor.h create mode 100644 SignalUtilitiesKit/TSGroupModel.h create mode 100644 SignalUtilitiesKit/TSGroupModel.m create mode 100644 SignalUtilitiesKit/TSGroupThread.h create mode 100644 SignalUtilitiesKit/TSGroupThread.m create mode 100644 SignalUtilitiesKit/TSIncomingMessage.h create mode 100644 SignalUtilitiesKit/TSIncomingMessage.m create mode 100644 SignalUtilitiesKit/TSInfoMessage.h create mode 100644 SignalUtilitiesKit/TSInfoMessage.m create mode 100644 SignalUtilitiesKit/TSInteraction.h create mode 100644 SignalUtilitiesKit/TSInteraction.m create mode 100644 SignalUtilitiesKit/TSInvalidIdentityKeyErrorMessage.h create mode 100644 SignalUtilitiesKit/TSInvalidIdentityKeyErrorMessage.m create mode 100644 SignalUtilitiesKit/TSInvalidIdentityKeyReceivingErrorMessage.h create mode 100644 SignalUtilitiesKit/TSInvalidIdentityKeyReceivingErrorMessage.m create mode 100644 SignalUtilitiesKit/TSInvalidIdentityKeySendingErrorMessage.h create mode 100644 SignalUtilitiesKit/TSInvalidIdentityKeySendingErrorMessage.m create mode 100644 SignalUtilitiesKit/TSMessage.h create mode 100644 SignalUtilitiesKit/TSMessage.m create mode 100644 SignalUtilitiesKit/TSNetworkManager.h create mode 100644 SignalUtilitiesKit/TSNetworkManager.m create mode 100644 SignalUtilitiesKit/TSOutgoingMessage.h create mode 100644 SignalUtilitiesKit/TSOutgoingMessage.m create mode 100644 SignalUtilitiesKit/TSPreKeyManager.h create mode 100644 SignalUtilitiesKit/TSPreKeyManager.m create mode 100644 SignalUtilitiesKit/TSPrefix.h create mode 100644 SignalUtilitiesKit/TSQuotedMessage.h create mode 100644 SignalUtilitiesKit/TSQuotedMessage.m create mode 100644 SignalUtilitiesKit/TSSocketManager.h create mode 100644 SignalUtilitiesKit/TSSocketManager.m create mode 100644 SignalUtilitiesKit/TSStorageHeaders.h create mode 100644 SignalUtilitiesKit/TSStorageKeys.h create mode 100644 SignalUtilitiesKit/TSThread.h create mode 100644 SignalUtilitiesKit/TSThread.m create mode 100644 SignalUtilitiesKit/TSYapDatabaseObject.h create mode 100644 SignalUtilitiesKit/TSYapDatabaseObject.m create mode 100644 SignalUtilitiesKit/TTLUtilities.swift create mode 100644 SignalUtilitiesKit/TypingIndicatorMessage.swift create mode 100644 SignalUtilitiesKit/TypingIndicators.swift create mode 100644 SignalUtilitiesKit/UIImage+OWS.h create mode 100644 SignalUtilitiesKit/UIImage+OWS.m create mode 100644 SignalUtilitiesKit/WeakTimer.swift create mode 100644 SignalUtilitiesKit/YapDatabase+Promise.swift create mode 100644 SignalUtilitiesKit/YapDatabaseConnection+OWS.h create mode 100644 SignalUtilitiesKit/YapDatabaseConnection+OWS.m create mode 100644 SignalUtilitiesKit/YapDatabaseTransaction+OWS.h create mode 100644 SignalUtilitiesKit/YapDatabaseTransaction+OWS.m diff --git a/Podfile b/Podfile index 67e3e8a37..43126a2da 100644 --- a/Podfile +++ b/Podfile @@ -98,6 +98,26 @@ target 'SignalMessaging' do shared_pods end +target 'SignalUtilitiesKit' do + pod 'AFNetworking', inhibit_warnings: true + pod 'CryptoSwift', :inhibit_warnings => true + pod 'Curve25519Kit', :inhibit_warnings => true + pod 'GRKOpenSSLFramework', :inhibit_warnings => true + pod 'HKDFKit', :inhibit_warnings => true + pod 'libPhoneNumber-iOS', :inhibit_warnings => true + pod 'Mantle', git: 'https://github.com/signalapp/Mantle', branch: 'signal-master', :inhibit_warnings => true + pod 'PromiseKit', :inhibit_warnings => true + pod 'Reachability', :inhibit_warnings => true + pod 'SAMKeychain', :inhibit_warnings => true + pod 'Starscream', git: 'https://github.com/signalapp/Starscream.git', branch: 'signal-release', :inhibit_warnings => true + pod 'SwiftProtobuf', '~> 1.5.0', :inhibit_warnings => true + pod 'YapDatabase/SQLCipher', :git => 'https://github.com/signalapp/YapDatabase.git', branch: 'signal-release', :inhibit_warnings => true +end + +target 'SessionUIKit' do + +end + target 'SessionMessagingKit' do pod 'AFNetworking', inhibit_warnings: true pod 'CryptoSwift', :inhibit_warnings => true diff --git a/Podfile.lock b/Podfile.lock index 096a79587..dc9ac5f8a 100644 --- a/Podfile.lock +++ b/Podfile.lock @@ -206,12 +206,14 @@ DEPENDENCIES: - FeedKit (~> 8.1) - GRKOpenSSLFramework - HKDFKit + - libPhoneNumber-iOS - Mantle (from `https://github.com/signalapp/Mantle`, branch `signal-master`) - NVActivityIndicatorView (~> 4.7) - PromiseKit - PromiseKit (= 6.5.3) - PureLayout (~> 3.1.4) - Reachability + - SAMKeychain - SessionAxolotlKit (from `https://github.com/loki-project/session-ios-protocol-kit.git`, branch `master`) - SessionAxolotlKit/Tests (from `https://github.com/loki-project/session-ios-protocol-kit.git`, branch `master`) - SessionCoreKit (from `https://github.com/loki-project/session-ios-core-kit.git`) @@ -333,6 +335,6 @@ SPEC CHECKSUMS: YYImage: 6db68da66f20d9f169ceb94dfb9947c3867b9665 ZXingObjC: fdbb269f25dd2032da343e06f10224d62f537bdb -PODFILE CHECKSUM: 8fc5917e97576b902a46b328af80664381ede889 +PODFILE CHECKSUM: d78dc9a752cd3ce8f01fa327b8518dff3f5236d5 COCOAPODS: 1.10.0.rc.1 diff --git a/Pods b/Pods index 0c79ca436..e28da414f 160000 --- a/Pods +++ b/Pods @@ -1 +1 @@ -Subproject commit 0c79ca436b633fdf1b0daf90e86fd323dcc60c55 +Subproject commit e28da414f77b9cba508c92e90b16b815847cde7e diff --git a/SessionMessagingKit/Configuration.swift b/SessionMessagingKit/Configuration.swift index 020a21d3a..649cc8654 100644 --- a/SessionMessagingKit/Configuration.swift +++ b/SessionMessagingKit/Configuration.swift @@ -13,7 +13,7 @@ public struct Configuration { internal static var shared: Configuration! } -public enum SessionMessagingKit { // Just to make the external API nice +public enum SessionMessagingKitX { // Just to make the external API nice public static func configure( storage: SessionMessagingKitStorageProtocol, diff --git a/SessionMessagingKit/Sending & Receiving/MessageSender.swift b/SessionMessagingKit/Sending & Receiving/MessageSender.swift index abd9799d8..93f7328c6 100644 --- a/SessionMessagingKit/Sending & Receiving/MessageSender.swift +++ b/SessionMessagingKit/Sending & Receiving/MessageSender.swift @@ -2,15 +2,15 @@ import PromiseKit import SessionSnodeKit import SessionUtilitiesKit -internal enum MessageSender { +public enum MessageSender { - internal enum Error : LocalizedError { + public enum Error : LocalizedError { case invalidMessage case protoConversionFailed case proofOfWorkCalculationFailed case noUserPublicKey - internal var errorDescription: String? { + public var errorDescription: String? { switch self { case .invalidMessage: return "Invalid message." case .protoConversionFailed: return "Couldn't convert message to proto." diff --git a/SessionProtocolKit/Meta/SessionProtocolKit.h b/SessionProtocolKit/Meta/SessionProtocolKit.h index 82c84e815..99f92f97c 100644 --- a/SessionProtocolKit/Meta/SessionProtocolKit.h +++ b/SessionProtocolKit/Meta/SessionProtocolKit.h @@ -4,14 +4,20 @@ FOUNDATION_EXPORT double SessionProtocolKitVersionNumber; FOUNDATION_EXPORT const unsigned char SessionProtocolKitVersionString[]; #import +#import #import #import #import +#import #import #import +#import #import #import +#import #import #import #import +#import #import +#import diff --git a/SessionProtocolKit/Shared Sender Keys/ClosedGroupSenderKey.swift b/SessionProtocolKit/Shared Sender Keys/ClosedGroupSenderKey.swift index 05e81f3f0..da16b34ec 100644 --- a/SessionProtocolKit/Shared Sender Keys/ClosedGroupSenderKey.swift +++ b/SessionProtocolKit/Shared Sender Keys/ClosedGroupSenderKey.swift @@ -5,7 +5,7 @@ public final class ClosedGroupSenderKey : NSObject, NSCoding { // NSObject/NSCod public let publicKey: Data // MARK: Initialization - init(chainKey: Data, keyIndex: UInt, publicKey: Data) { + public init(chainKey: Data, keyIndex: UInt, publicKey: Data) { self.chainKey = chainKey self.keyIndex = keyIndex self.publicKey = publicKey diff --git a/SessionProtocolKit/Signal/Utility/Cryptography.m b/SessionProtocolKit/Signal/Utility/Cryptography.m index b6a84350e..5d9a5c402 100644 --- a/SessionProtocolKit/Signal/Utility/Cryptography.m +++ b/SessionProtocolKit/Signal/Utility/Cryptography.m @@ -7,7 +7,7 @@ #import "NSData+OWS.h" #import #import -#import +#import #import #import diff --git a/SessionProtocolKit/Signal/Utility/Randomness.h b/SessionProtocolKit/Signal/Utility/Randomness.h deleted file mode 100644 index f74b525ee..000000000 --- a/SessionProtocolKit/Signal/Utility/Randomness.h +++ /dev/null @@ -1,20 +0,0 @@ -// -// Copyright (c) 2018 Open Whisper Systems. All rights reserved. -// - -#import - -@interface Randomness : NSObject - -/** - * Generates a given number of cryptographically secure bytes using SecRandomCopyBytes. - * - * @param numberBytes The number of bytes to be generated. - * - * @return Random Bytes. - */ - -+ (NSData *)generateRandomBytes:(int)numberBytes; - - -@end diff --git a/SessionProtocolKit/Signal/Utility/Randomness.m b/SessionProtocolKit/Signal/Utility/Randomness.m deleted file mode 100644 index 27fbdf562..000000000 --- a/SessionProtocolKit/Signal/Utility/Randomness.m +++ /dev/null @@ -1,24 +0,0 @@ -// -// Copyright (c) 2018 Open Whisper Systems. All rights reserved. -// - -#import "Randomness.h" -#import - -@implementation Randomness - -+ (NSData *)generateRandomBytes:(int)numberBytes -{ - NSMutableData *_Nullable randomBytes = [NSMutableData dataWithLength:numberBytes]; - if (!randomBytes) { - OWSFail(@"Could not allocate buffer for random bytes."); - } - int err = 0; - err = SecRandomCopyBytes(kSecRandomDefault, numberBytes, [randomBytes mutableBytes]); - if (err != noErr || randomBytes.length != numberBytes) { - OWSFail(@"Could not generate random bytes."); - } - return [randomBytes copy]; -} - -@end diff --git a/SessionSnodeKit/Snode.swift b/SessionSnodeKit/Snode.swift index 6392787a3..9b185edbb 100644 --- a/SessionSnodeKit/Snode.swift +++ b/SessionSnodeKit/Snode.swift @@ -3,7 +3,7 @@ import Foundation public final class Snode : NSObject, NSCoding { // NSObject/NSCoding conformance is needed for YapDatabase compatibility public let address: String public let port: UInt16 - internal let publicKeySet: KeySet + public let publicKeySet: KeySet public var ip: String { address.removingPrefix("https://") @@ -16,9 +16,9 @@ public final class Snode : NSObject, NSCoding { // NSObject/NSCoding conformance case sendMessage = "store" } - internal struct KeySet { - let ed25519Key: String - let x25519Key: String + public struct KeySet { + public let ed25519Key: String + public let x25519Key: String } // MARK: Initialization diff --git a/SessionSnodeKit/SnodeAPI.swift b/SessionSnodeKit/SnodeAPI.swift index 9b59c153c..58aa04fdd 100644 --- a/SessionSnodeKit/SnodeAPI.swift +++ b/SessionSnodeKit/SnodeAPI.swift @@ -1,15 +1,18 @@ import PromiseKit import SessionUtilitiesKit -public enum SnodeAPI { +@objc(SNSnodeAPI) +public final class SnodeAPI : NSObject { /// - Note: Should only be accessed from `Threading.workQueue` to avoid race conditions. internal static var snodeFailureCount: [Snode:UInt] = [:] /// - Note: Should only be accessed from `Threading.workQueue` to avoid race conditions. internal static var snodePool: Set = [] + /// - Note: Should only be accessed from `Threading.workQueue` to avoid race conditions. - internal static var swarmCache: [String:Set] = [:] - + public static var swarmCache: [String:Set] = [:] + public static var workQueue: DispatchQueue { Threading.workQueue } + // MARK: Settings private static let maxRetryCount: UInt = 4 private static let minimumSnodePoolCount = 64 @@ -25,11 +28,13 @@ public enum SnodeAPI { // MARK: Error public enum Error : LocalizedError { + case generic case clockOutOfSync case randomSnodePoolUpdatingFailed public var errorDescription: String? { switch self { + case .generic: return "An error occurred." case .clockOutOfSync: return "Your clock is out of sync with the service node network." case .randomSnodePoolUpdatingFailed: return "Failed to update random service node pool." } @@ -41,8 +46,8 @@ public enum SnodeAPI { public typealias RawResponse = Any public typealias RawResponsePromise = Promise - // MARK: Core - internal static func invoke(_ method: Snode.Method, on snode: Snode, associatedWith publicKey: String, parameters: JSON) -> RawResponsePromise { + // MARK: Internal API + public static func invoke(_ method: Snode.Method, on snode: Snode, associatedWith publicKey: String, parameters: JSON) -> RawResponsePromise { if useOnionRequests { return OnionRequestAPI.sendOnionRequest(to: snode, invoking: method, with: parameters, associatedWith: publicKey).map2 { $0 as Any } } else { @@ -109,35 +114,6 @@ public enum SnodeAPI { } } - internal static func getSwarm(for publicKey: String, isForcedReload: Bool = false) -> Promise> { - if swarmCache[publicKey] == nil { - swarmCache[publicKey] = Configuration.shared.storage.getSwarm(for: publicKey) - } - if let cachedSwarm = swarmCache[publicKey], cachedSwarm.count >= minimumSwarmSnodeCount && !isForcedReload { - return Promise> { $0.fulfill(cachedSwarm) } - } else { - SNLog("Getting swarm for: \((publicKey == Configuration.shared.storage.getUserPublicKey()) ? "self" : publicKey).") - let parameters: [String:Any] = [ "pubKey" : publicKey ] - return getRandomSnode().then2 { snode in - attempt(maxRetryCount: 4, recoveringOn: Threading.workQueue) { - invoke(.getSwarm, on: snode, associatedWith: publicKey, parameters: parameters) - } - }.map2 { rawSnodes in - let swarm = parseSnodes(from: rawSnodes) - swarmCache[publicKey] = swarm - Configuration.shared.storage.with { transaction in - Configuration.shared.storage.setSwarm(to: swarm, for: publicKey, using: transaction) - } - return swarm - } - } - } - - internal static func getTargetSnodes(for publicKey: String) -> Promise<[Snode]> { - // shuffled() uses the system's default random generator, which is cryptographically secure - return getSwarm(for: publicKey).map2 { Array($0.shuffled().prefix(targetSwarmSnodeCount)) } - } - internal static func dropSnodeFromSnodePool(_ snode: Snode) { var snodePool = SnodeAPI.snodePool snodePool.remove(snode) @@ -154,7 +130,8 @@ public enum SnodeAPI { } } - internal static func dropSnodeFromSwarmIfNeeded(_ snode: Snode, publicKey: String) { + // MARK: Public API + public static func dropSnodeFromSwarmIfNeeded(_ snode: Snode, publicKey: String) { let swarm = SnodeAPI.swarmCache[publicKey] if var swarm = swarm, let index = swarm.firstIndex(of: snode) { swarm.remove(at: index) @@ -165,16 +142,55 @@ public enum SnodeAPI { } } - // MARK: Receiving + public static func getTargetSnodes(for publicKey: String) -> Promise<[Snode]> { + // shuffled() uses the system's default random generator, which is cryptographically secure + return getSwarm(for: publicKey).map2 { Array($0.shuffled().prefix(targetSwarmSnodeCount)) } + } + + public static func getSwarm(for publicKey: String, isForcedReload: Bool = false) -> Promise> { + if swarmCache[publicKey] == nil { + swarmCache[publicKey] = Configuration.shared.storage.getSwarm(for: publicKey) + } + if let cachedSwarm = swarmCache[publicKey], cachedSwarm.count >= minimumSwarmSnodeCount && !isForcedReload { + return Promise> { $0.fulfill(cachedSwarm) } + } else { + SNLog("Getting swarm for: \((publicKey == Configuration.shared.storage.getUserPublicKey()) ? "self" : publicKey).") + let parameters: [String:Any] = [ "pubKey" : publicKey ] + return getRandomSnode().then2 { snode in + attempt(maxRetryCount: 4, recoveringOn: Threading.workQueue) { + invoke(.getSwarm, on: snode, associatedWith: publicKey, parameters: parameters) + } + }.map2 { rawSnodes in + let swarm = parseSnodes(from: rawSnodes) + swarmCache[publicKey] = swarm + Configuration.shared.storage.with { transaction in + Configuration.shared.storage.setSwarm(to: swarm, for: publicKey, using: transaction) + } + return swarm + } + } + } + + public static func getRawMessages(from snode: Snode, associatedWith publicKey: String) -> RawResponsePromise { + let storage = Configuration.shared.storage + storage.with { transaction in + storage.pruneLastMessageHashInfoIfExpired(for: snode, associatedWith: publicKey, using: transaction) + } + let lastHash = storage.getLastMessageHash(for: snode, associatedWith: publicKey) ?? "" + let parameters = [ "pubKey" : publicKey, "lastHash" : lastHash ] + return invoke(.getMessages, on: snode, associatedWith: publicKey, parameters: parameters) + } + public static func getMessages(for publicKey: String) -> Promise> { let (promise, seal) = Promise>.pending() + let storage = Configuration.shared.storage Threading.workQueue.async { attempt(maxRetryCount: maxRetryCount, recoveringOn: Threading.workQueue) { getTargetSnodes(for: publicKey).mapValues2 { targetSnode in - Configuration.shared.storage.with { transaction in - Configuration.shared.storage.pruneLastMessageHashInfoIfExpired(for: targetSnode, associatedWith: publicKey, using: transaction) + storage.with { transaction in + storage.pruneLastMessageHashInfoIfExpired(for: targetSnode, associatedWith: publicKey, using: transaction) } - let lastHash = Configuration.shared.storage.getLastMessageHash(for: targetSnode, associatedWith: publicKey) ?? "" + let lastHash = storage.getLastMessageHash(for: targetSnode, associatedWith: publicKey) ?? "" let parameters = [ "pubKey" : publicKey, "lastHash" : lastHash ] return invoke(.getMessages, on: targetSnode, associatedWith: publicKey, parameters: parameters).map2 { rawResponse in parseRawMessagesResponse(rawResponse, from: targetSnode, associatedWith: publicKey) @@ -185,7 +201,6 @@ public enum SnodeAPI { return promise } - // MARK: Sending public static func sendMessage(_ message: SnodeMessage) -> Promise> { let (promise, seal) = Promise>.pending() let publicKey = message.recipient @@ -230,7 +245,7 @@ public enum SnodeAPI { }) } - internal static func parseRawMessagesResponse(_ rawResponse: Any, from snode: Snode, associatedWith publicKey: String) -> [JSON] { + public static func parseRawMessagesResponse(_ rawResponse: Any, from snode: Snode, associatedWith publicKey: String) -> [JSON] { guard let json = rawResponse as? JSON, let rawMessages = json["messages"] as? [JSON] else { return [] } updateLastMessageHashValueIfPossible(for: snode, associatedWith: publicKey, from: rawMessages) return removeDuplicates(from: rawMessages, associatedWith: publicKey) diff --git a/SessionSnodeKit/Utilities/Promise+Threading.swift b/SessionSnodeKit/Utilities/Promise+Threading.swift index 7b4936794..ce7d5ab7a 100644 --- a/SessionSnodeKit/Utilities/Promise+Threading.swift +++ b/SessionSnodeKit/Utilities/Promise+Threading.swift @@ -1,6 +1,6 @@ import PromiseKit -internal extension Thenable { +public extension Thenable { @discardableResult func then2(_ body: @escaping (T) throws -> U) -> Promise where U : Thenable { @@ -23,7 +23,7 @@ internal extension Thenable { } } -internal extension Thenable where T: Sequence { +public extension Thenable where T: Sequence { @discardableResult func mapValues2(_ transform: @escaping (T.Iterator.Element) throws -> U) -> Promise<[U]> { @@ -31,7 +31,7 @@ internal extension Thenable where T: Sequence { } } -internal extension Guarantee { +public extension Guarantee { @discardableResult func then2(_ body: @escaping (T) -> Guarantee) -> Guarantee { @@ -54,7 +54,7 @@ internal extension Guarantee { } } -internal extension CatchMixin { +public extension CatchMixin { @discardableResult func catch2(_ body: @escaping (Error) -> Void) -> PMKFinalizer { @@ -77,7 +77,7 @@ internal extension CatchMixin { } } -internal extension CatchMixin where T == Void { +public extension CatchMixin where T == Void { @discardableResult func recover2(_ body: @escaping(Error) -> Void) -> Guarantee { diff --git a/SessionSnodeKit/Utilities/Promise+Delaying.swift b/SessionUtilitiesKit/Promise+Delaying.swift similarity index 77% rename from SessionSnodeKit/Utilities/Promise+Delaying.swift rename to SessionUtilitiesKit/Promise+Delaying.swift index 9bb1ee1d2..7e02f4e88 100644 --- a/SessionSnodeKit/Utilities/Promise+Delaying.swift +++ b/SessionUtilitiesKit/Promise+Delaying.swift @@ -1,7 +1,7 @@ import PromiseKit /// Delay the execution of the promise constructed in `body` by `delay` seconds. -internal func withDelay(_ delay: TimeInterval, completionQueue: DispatchQueue, body: @escaping () -> Promise) -> Promise { +public func withDelay(_ delay: TimeInterval, completionQueue: DispatchQueue, body: @escaping () -> Promise) -> Promise { #if DEBUG assert(Thread.current.isMainThread) // Timers don't do well on background queues #endif diff --git a/Signal.xcodeproj/project.pbxproj b/Signal.xcodeproj/project.pbxproj index b87914bce..aa6d3e741 100644 --- a/Signal.xcodeproj/project.pbxproj +++ b/Signal.xcodeproj/project.pbxproj @@ -7,6 +7,7 @@ objects = { /* Begin PBXBuildFile section */ + 10AC6C7D50A0C865C5E4779B /* Pods_SessionUIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 71CFEDD2D3C54277731012DF /* Pods_SessionUIKit.framework */; }; 2400888E239F30A600305217 /* SessionRestorationView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2400888D239F30A600305217 /* SessionRestorationView.swift */; }; 2AE2882E4C2B96BFFF9EE27C /* Pods_SignalShareExtension.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0F94C85CB0B235DA37F68ED0 /* Pods_SignalShareExtension.framework */; }; 3403B95D20EA9527001A1F44 /* OWSContactShareButtonsView.m in Sources */ = {isa = PBXBuildFile; fileRef = 3403B95B20EA9526001A1F44 /* OWSContactShareButtonsView.m */; }; @@ -496,6 +497,7 @@ B10C9B601A7049EC00ECA2BF /* pause_icon@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = B10C9B5C1A7049EC00ECA2BF /* pause_icon@2x.png */; }; B10C9B611A7049EC00ECA2BF /* play_icon.png in Resources */ = {isa = PBXBuildFile; fileRef = B10C9B5D1A7049EC00ECA2BF /* play_icon.png */; }; B10C9B621A7049EC00ECA2BF /* play_icon@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = B10C9B5E1A7049EC00ECA2BF /* play_icon@2x.png */; }; + B3E0C9C6F1633B1ABCE5AD0B /* Pods_SignalUtilitiesKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 53D547348A367C8A14D37FC0 /* Pods_SignalUtilitiesKit.framework */; }; B60EDE041A05A01700D73516 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B60EDE031A05A01700D73516 /* AudioToolbox.framework */; }; B633C5861A1D190B0059AC12 /* call@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = B633C5041A1D190B0059AC12 /* call@2x.png */; }; B633C58D1A1D190B0059AC12 /* contact_default_feed.png in Resources */ = {isa = PBXBuildFile; fileRef = B633C50B1A1D190B0059AC12 /* contact_default_feed.png */; }; @@ -599,6 +601,434 @@ C331FFF42558FF0300070591 /* PNOptionView.swift in Sources */ = {isa = PBXBuildFile; fileRef = C353F8F8244809150011121A /* PNOptionView.swift */; }; C331FFFE2558FF3B00070591 /* ConversationCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = B8BB82AA238F669C00BA5194 /* ConversationCell.swift */; }; C33FD4E9255A149100E217F9 /* Colors.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = C39DD28724F3318C008590FC /* Colors.xcassets */; }; + C33FD9AF255A548A00E217F9 /* SignalUtilitiesKit.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FD9AD255A548A00E217F9 /* SignalUtilitiesKit.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C33FD9B2255A548A00E217F9 /* SignalUtilitiesKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C33FD9AB255A548A00E217F9 /* SignalUtilitiesKit.framework */; }; + C33FD9B3255A548A00E217F9 /* SignalUtilitiesKit.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = C33FD9AB255A548A00E217F9 /* SignalUtilitiesKit.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + C33FD9C2255A54EF00E217F9 /* SessionMessagingKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C3C2A6F025539DE700C340D1 /* SessionMessagingKit.framework */; }; + C33FD9C3255A54EF00E217F9 /* SessionProtocolKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C3C2A8622553B41A00C340D1 /* SessionProtocolKit.framework */; }; + C33FD9C4255A54EF00E217F9 /* SessionSnodeKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C3C2A59F255385C100C340D1 /* SessionSnodeKit.framework */; }; + C33FD9C5255A54EF00E217F9 /* SessionUtilitiesKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C3C2A679255388CC00C340D1 /* SessionUtilitiesKit.framework */; }; + C33FDC20255A581F00E217F9 /* OWSOutgoingCallMessage.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDA66255A57F900E217F9 /* OWSOutgoingCallMessage.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C33FDC21255A581F00E217F9 /* OWSPrimaryStorage.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDA67255A57F900E217F9 /* OWSPrimaryStorage.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C33FDC22255A581F00E217F9 /* OWSBlockingManager.m in Sources */ = {isa = PBXBuildFile; fileRef = C33FDA68255A57F900E217F9 /* OWSBlockingManager.m */; }; + C33FDC23255A581F00E217F9 /* SSKPreferences.swift in Sources */ = {isa = PBXBuildFile; fileRef = C33FDA69255A57F900E217F9 /* SSKPreferences.swift */; }; + C33FDC24255A581F00E217F9 /* OWSMessageManager.m in Sources */ = {isa = PBXBuildFile; fileRef = C33FDA6A255A57F900E217F9 /* OWSMessageManager.m */; }; + C33FDC25255A581F00E217F9 /* OWSDisappearingConfigurationUpdateInfoMessage.m in Sources */ = {isa = PBXBuildFile; fileRef = C33FDA6B255A57FA00E217F9 /* OWSDisappearingConfigurationUpdateInfoMessage.m */; }; + C33FDC26255A581F00E217F9 /* ProtoUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = C33FDA6C255A57FA00E217F9 /* ProtoUtils.m */; }; + C33FDC27255A581F00E217F9 /* YapDatabase+Promise.swift in Sources */ = {isa = PBXBuildFile; fileRef = C33FDA6D255A57FA00E217F9 /* YapDatabase+Promise.swift */; }; + C33FDC28255A581F00E217F9 /* Array+Description.swift in Sources */ = {isa = PBXBuildFile; fileRef = C33FDA6E255A57FA00E217F9 /* Array+Description.swift */; }; + C33FDC29255A581F00E217F9 /* ReachabilityManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = C33FDA6F255A57FA00E217F9 /* ReachabilityManager.swift */; }; + C33FDC2A255A581F00E217F9 /* TSMessage.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDA70255A57FA00E217F9 /* TSMessage.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C33FDC2B255A581F00E217F9 /* OWSReadReceiptManager.m in Sources */ = {isa = PBXBuildFile; fileRef = C33FDA71255A57FA00E217F9 /* OWSReadReceiptManager.m */; }; + C33FDC2C255A581F00E217F9 /* OWSFailedAttachmentDownloadsJob.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDA72255A57FA00E217F9 /* OWSFailedAttachmentDownloadsJob.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C33FDC2D255A581F00E217F9 /* ECKeyPair+Hexadecimal.swift in Sources */ = {isa = PBXBuildFile; fileRef = C33FDA73255A57FA00E217F9 /* ECKeyPair+Hexadecimal.swift */; }; + C33FDC2E255A581F00E217F9 /* ClosedGroupsProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = C33FDA74255A57FB00E217F9 /* ClosedGroupsProtocol.swift */; }; + C33FDC2F255A581F00E217F9 /* OWSSyncManagerProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDA75255A57FB00E217F9 /* OWSSyncManagerProtocol.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C33FDC30255A581F00E217F9 /* OWSSyncGroupsRequestMessage.m in Sources */ = {isa = PBXBuildFile; fileRef = C33FDA76255A57FB00E217F9 /* OWSSyncGroupsRequestMessage.m */; }; + C33FDC31255A581F00E217F9 /* Contact.m in Sources */ = {isa = PBXBuildFile; fileRef = C33FDA77255A57FB00E217F9 /* Contact.m */; }; + C33FDC32255A581F00E217F9 /* SSKWebSocket.swift in Sources */ = {isa = PBXBuildFile; fileRef = C33FDA78255A57FB00E217F9 /* SSKWebSocket.swift */; }; + C33FDC33255A581F00E217F9 /* TSGroupThread.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDA79255A57FB00E217F9 /* TSGroupThread.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C33FDC34255A581F00E217F9 /* NSRegularExpression+SSK.swift in Sources */ = {isa = PBXBuildFile; fileRef = C33FDA7A255A57FB00E217F9 /* NSRegularExpression+SSK.swift */; }; + C33FDC35255A581F00E217F9 /* TSInvalidIdentityKeyReceivingErrorMessage.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDA7B255A57FB00E217F9 /* TSInvalidIdentityKeyReceivingErrorMessage.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C33FDC36255A581F00E217F9 /* Debugging.swift in Sources */ = {isa = PBXBuildFile; fileRef = C33FDA7C255A57FB00E217F9 /* Debugging.swift */; }; + C33FDC37255A581F00E217F9 /* OWSCensorshipConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = C33FDA7D255A57FB00E217F9 /* OWSCensorshipConfiguration.m */; }; + C33FDC38255A581F00E217F9 /* Mention.swift in Sources */ = {isa = PBXBuildFile; fileRef = C33FDA7E255A57FB00E217F9 /* Mention.swift */; }; + C33FDC39255A581F00E217F9 /* OWSRecordTranscriptJob.m in Sources */ = {isa = PBXBuildFile; fileRef = C33FDA7F255A57FC00E217F9 /* OWSRecordTranscriptJob.m */; }; + C33FDC3A255A581F00E217F9 /* OWSDisappearingMessagesJob.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDA80255A57FC00E217F9 /* OWSDisappearingMessagesJob.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C33FDC3B255A581F00E217F9 /* MentionsManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = C33FDA81255A57FC00E217F9 /* MentionsManager.swift */; }; + C33FDC3D255A581F00E217F9 /* Promise+retainUntilComplete.swift in Sources */ = {isa = PBXBuildFile; fileRef = C33FDA83255A57FC00E217F9 /* Promise+retainUntilComplete.swift */; }; + C33FDC3E255A581F00E217F9 /* ContactsUpdater.m in Sources */ = {isa = PBXBuildFile; fileRef = C33FDA84255A57FC00E217F9 /* ContactsUpdater.m */; }; + C33FDC3F255A581F00E217F9 /* OWSPrimaryStorage+Loki.swift in Sources */ = {isa = PBXBuildFile; fileRef = C33FDA85255A57FC00E217F9 /* OWSPrimaryStorage+Loki.swift */; }; + C33FDC40255A581F00E217F9 /* OWSDisappearingMessagesFinder.m in Sources */ = {isa = PBXBuildFile; fileRef = C33FDA86255A57FC00E217F9 /* OWSDisappearingMessagesFinder.m */; }; + C33FDC41255A581F00E217F9 /* TypingIndicators.swift in Sources */ = {isa = PBXBuildFile; fileRef = C33FDA87255A57FC00E217F9 /* TypingIndicators.swift */; }; + C33FDC42255A581F00E217F9 /* YapDatabaseTransaction+OWS.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDA88255A57FD00E217F9 /* YapDatabaseTransaction+OWS.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C33FDC43255A581F00E217F9 /* OWSAnalytics.m in Sources */ = {isa = PBXBuildFile; fileRef = C33FDA89255A57FD00E217F9 /* OWSAnalytics.m */; }; + C33FDC44255A581F00E217F9 /* PhoneNumber.m in Sources */ = {isa = PBXBuildFile; fileRef = C33FDA8A255A57FD00E217F9 /* PhoneNumber.m */; }; + C33FDC45255A581F00E217F9 /* AppVersion.m in Sources */ = {isa = PBXBuildFile; fileRef = C33FDA8B255A57FD00E217F9 /* AppVersion.m */; }; + C33FDC46255A581F00E217F9 /* PublicChatPoller.swift in Sources */ = {isa = PBXBuildFile; fileRef = C33FDA8C255A57FD00E217F9 /* PublicChatPoller.swift */; }; + C33FDC47255A581F00E217F9 /* OWSReceiptsForSenderMessage.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDA8D255A57FD00E217F9 /* OWSReceiptsForSenderMessage.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C33FDC48255A581F00E217F9 /* OWSFileSystem.m in Sources */ = {isa = PBXBuildFile; fileRef = C33FDA8E255A57FD00E217F9 /* OWSFileSystem.m */; }; + C33FDC49255A581F00E217F9 /* NSTimer+OWS.m in Sources */ = {isa = PBXBuildFile; fileRef = C33FDA8F255A57FD00E217F9 /* NSTimer+OWS.m */; }; + C33FDC4A255A582000E217F9 /* TSYapDatabaseObject.m in Sources */ = {isa = PBXBuildFile; fileRef = C33FDA90255A57FD00E217F9 /* TSYapDatabaseObject.m */; }; + C33FDC4B255A582000E217F9 /* LKSyncOpenGroupsMessage.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDA91255A57FD00E217F9 /* LKSyncOpenGroupsMessage.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C33FDC4C255A582000E217F9 /* OWSMessageSender.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDA92255A57FE00E217F9 /* OWSMessageSender.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C33FDC4E255A582000E217F9 /* Data+Streaming.swift in Sources */ = {isa = PBXBuildFile; fileRef = C33FDA94255A57FE00E217F9 /* Data+Streaming.swift */; }; + C33FDC4F255A582000E217F9 /* OWSChunkedOutputStream.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDA95255A57FE00E217F9 /* OWSChunkedOutputStream.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C33FDC50255A582000E217F9 /* OWSDispatch.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDA96255A57FE00E217F9 /* OWSDispatch.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C33FDC51255A582000E217F9 /* TSIncomingMessage.m in Sources */ = {isa = PBXBuildFile; fileRef = C33FDA97255A57FE00E217F9 /* TSIncomingMessage.m */; }; + C33FDC52255A582000E217F9 /* RotateSignedKeyOperation.swift in Sources */ = {isa = PBXBuildFile; fileRef = C33FDA98255A57FE00E217F9 /* RotateSignedKeyOperation.swift */; }; + C33FDC53255A582000E217F9 /* OutageDetection.swift in Sources */ = {isa = PBXBuildFile; fileRef = C33FDA99255A57FE00E217F9 /* OutageDetection.swift */; }; + C33FDC54255A582000E217F9 /* OWSLinkedDeviceReadReceipt.m in Sources */ = {isa = PBXBuildFile; fileRef = C33FDA9A255A57FE00E217F9 /* OWSLinkedDeviceReadReceipt.m */; }; + C33FDC55255A582000E217F9 /* OWSProvisioningMessage.m in Sources */ = {isa = PBXBuildFile; fileRef = C33FDA9B255A57FE00E217F9 /* OWSProvisioningMessage.m */; }; + C33FDC56255A582000E217F9 /* OWSSyncContactsMessage.m in Sources */ = {isa = PBXBuildFile; fileRef = C33FDA9C255A57FE00E217F9 /* OWSSyncContactsMessage.m */; }; + C33FDC57255A582000E217F9 /* OWSContactsOutputStream.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDA9D255A57FF00E217F9 /* OWSContactsOutputStream.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C33FDC58255A582000E217F9 /* ReverseDispatchQueue.swift in Sources */ = {isa = PBXBuildFile; fileRef = C33FDA9E255A57FF00E217F9 /* ReverseDispatchQueue.swift */; }; + C33FDC59255A582000E217F9 /* NetworkManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = C33FDA9F255A57FF00E217F9 /* NetworkManager.swift */; }; + C33FDC5A255A582000E217F9 /* OWSRecipientIdentity.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDAA0255A57FF00E217F9 /* OWSRecipientIdentity.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C33FDC5B255A582000E217F9 /* TSYapDatabaseObject.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDAA1255A57FF00E217F9 /* TSYapDatabaseObject.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C33FDC5C255A582000E217F9 /* OWSAddToContactsOfferMessage.m in Sources */ = {isa = PBXBuildFile; fileRef = C33FDAA2255A57FF00E217F9 /* OWSAddToContactsOfferMessage.m */; }; + C33FDC5D255A582000E217F9 /* OWSAddToContactsOfferMessage.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDAA3255A57FF00E217F9 /* OWSAddToContactsOfferMessage.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C33FDC5E255A582000E217F9 /* SSKProto.swift in Sources */ = {isa = PBXBuildFile; fileRef = C33FDAA4255A57FF00E217F9 /* SSKProto.swift */; }; + C33FDC5F255A582000E217F9 /* OWSRequestMaker.swift in Sources */ = {isa = PBXBuildFile; fileRef = C33FDAA5255A57FF00E217F9 /* OWSRequestMaker.swift */; }; + C33FDC60255A582000E217F9 /* OWSLinkedDeviceReadReceipt.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDAA6255A57FF00E217F9 /* OWSLinkedDeviceReadReceipt.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C33FDC61255A582000E217F9 /* OWSPrimaryStorage+SignedPreKeyStore.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDAA7255A57FF00E217F9 /* OWSPrimaryStorage+SignedPreKeyStore.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C33FDC62255A582000E217F9 /* BuildConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = C33FDAA8255A57FF00E217F9 /* BuildConfiguration.swift */; }; + C33FDC63255A582000E217F9 /* Mnemonic.swift in Sources */ = {isa = PBXBuildFile; fileRef = C33FDAA9255A580000E217F9 /* Mnemonic.swift */; }; + C33FDC64255A582000E217F9 /* NSObject+Casting.m in Sources */ = {isa = PBXBuildFile; fileRef = C33FDAAA255A580000E217F9 /* NSObject+Casting.m */; }; + C33FDC65255A582000E217F9 /* OWSWebSocket.m in Sources */ = {isa = PBXBuildFile; fileRef = C33FDAAB255A580000E217F9 /* OWSWebSocket.m */; }; + C33FDC66255A582000E217F9 /* OWSMessageHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDAAC255A580000E217F9 /* OWSMessageHandler.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C33FDC67255A582000E217F9 /* OWSDeviceProvisioner.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDAAD255A580000E217F9 /* OWSDeviceProvisioner.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C33FDC68255A582000E217F9 /* OWSReceiptsForSenderMessage.m in Sources */ = {isa = PBXBuildFile; fileRef = C33FDAAE255A580000E217F9 /* OWSReceiptsForSenderMessage.m */; }; + C33FDC69255A582000E217F9 /* String+Trimming.swift in Sources */ = {isa = PBXBuildFile; fileRef = C33FDAAF255A580000E217F9 /* String+Trimming.swift */; }; + C33FDC6A255A582000E217F9 /* ProvisioningProto.swift in Sources */ = {isa = PBXBuildFile; fileRef = C33FDAB0255A580000E217F9 /* ProvisioningProto.swift */; }; + C33FDC6B255A582000E217F9 /* OWSStorage.m in Sources */ = {isa = PBXBuildFile; fileRef = C33FDAB1255A580000E217F9 /* OWSStorage.m */; }; + C33FDC6C255A582000E217F9 /* TSNetworkManager.m in Sources */ = {isa = PBXBuildFile; fileRef = C33FDAB2255A580000E217F9 /* TSNetworkManager.m */; }; + C33FDC6D255A582000E217F9 /* TSContactThread.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDAB3255A580000E217F9 /* TSContactThread.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C33FDC6E255A582000E217F9 /* OWSMessageReceiver.m in Sources */ = {isa = PBXBuildFile; fileRef = C33FDAB4255A580000E217F9 /* OWSMessageReceiver.m */; }; + C33FDC6F255A582000E217F9 /* TSNetworkManager.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDAB5255A580000E217F9 /* TSNetworkManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C33FDC70255A582000E217F9 /* SyncMessagesProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = C33FDAB6255A580100E217F9 /* SyncMessagesProtocol.swift */; }; + C33FDC71255A582000E217F9 /* OWSFailedMessagesJob.m in Sources */ = {isa = PBXBuildFile; fileRef = C33FDAB7255A580100E217F9 /* OWSFailedMessagesJob.m */; }; + C33FDC72255A582000E217F9 /* NSArray+Functional.m in Sources */ = {isa = PBXBuildFile; fileRef = C33FDAB8255A580100E217F9 /* NSArray+Functional.m */; }; + C33FDC73255A582000E217F9 /* OWSStorage+Subclass.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDAB9255A580100E217F9 /* OWSStorage+Subclass.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C33FDC74255A582000E217F9 /* OWSWebSocket.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDABA255A580100E217F9 /* OWSWebSocket.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C33FDC75255A582000E217F9 /* OWSGroupsOutputStream.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDABB255A580100E217F9 /* OWSGroupsOutputStream.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C33FDC77255A582000E217F9 /* OWSOutgoingReceiptManager.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDABD255A580100E217F9 /* OWSOutgoingReceiptManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C33FDC78255A582000E217F9 /* TSConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = C33FDABE255A580100E217F9 /* TSConstants.m */; }; + C33FDC7A255A582000E217F9 /* OWSIncomingMessageFinder.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDAC0255A580100E217F9 /* OWSIncomingMessageFinder.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C33FDC7B255A582000E217F9 /* NSSet+Functional.m in Sources */ = {isa = PBXBuildFile; fileRef = C33FDAC1255A580100E217F9 /* NSSet+Functional.m */; }; + C33FDC7C255A582000E217F9 /* TSAttachment.m in Sources */ = {isa = PBXBuildFile; fileRef = C33FDAC2255A580200E217F9 /* TSAttachment.m */; }; + C33FDC7D255A582000E217F9 /* OWSDispatch.m in Sources */ = {isa = PBXBuildFile; fileRef = C33FDAC3255A580200E217F9 /* OWSDispatch.m */; }; + C33FDC7E255A582000E217F9 /* TSAttachmentStream.m in Sources */ = {isa = PBXBuildFile; fileRef = C33FDAC4255A580200E217F9 /* TSAttachmentStream.m */; }; + C33FDC7F255A582000E217F9 /* OWSCountryMetadata.m in Sources */ = {isa = PBXBuildFile; fileRef = C33FDAC5255A580200E217F9 /* OWSCountryMetadata.m */; }; + C33FDC80255A582000E217F9 /* Fingerprint.pb.swift in Sources */ = {isa = PBXBuildFile; fileRef = C33FDAC6255A580200E217F9 /* Fingerprint.pb.swift */; }; + C33FDC81255A582000E217F9 /* OWSSignalService.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDAC7255A580200E217F9 /* OWSSignalService.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C33FDC82255A582000E217F9 /* OWSCensorshipConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDAC8255A580200E217F9 /* OWSCensorshipConfiguration.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C33FDC83255A582000E217F9 /* OWSContact.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDAC9255A580200E217F9 /* OWSContact.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C33FDC84255A582000E217F9 /* LokiMessage.swift in Sources */ = {isa = PBXBuildFile; fileRef = C33FDACA255A580200E217F9 /* LokiMessage.swift */; }; + C33FDC85255A582000E217F9 /* CDSSigningCertificate.m in Sources */ = {isa = PBXBuildFile; fileRef = C33FDACB255A580200E217F9 /* CDSSigningCertificate.m */; }; + C33FDC86255A582000E217F9 /* OWSMessageSend.swift in Sources */ = {isa = PBXBuildFile; fileRef = C33FDACC255A580200E217F9 /* OWSMessageSend.swift */; }; + C33FDC87255A582000E217F9 /* SSKJobRecord.m in Sources */ = {isa = PBXBuildFile; fileRef = C33FDACD255A580200E217F9 /* SSKJobRecord.m */; }; + C33FDC88255A582000E217F9 /* OWSVerificationStateSyncMessage.m in Sources */ = {isa = PBXBuildFile; fileRef = C33FDACE255A580300E217F9 /* OWSVerificationStateSyncMessage.m */; }; + C33FDC89255A582000E217F9 /* OWSAttachmentDownloads.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDACF255A580300E217F9 /* OWSAttachmentDownloads.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C33FDC8A255A582000E217F9 /* CDSQuote.m in Sources */ = {isa = PBXBuildFile; fileRef = C33FDAD0255A580300E217F9 /* CDSQuote.m */; }; + C33FDC8B255A582000E217F9 /* OWSDynamicOutgoingMessage.m in Sources */ = {isa = PBXBuildFile; fileRef = C33FDAD1255A580300E217F9 /* OWSDynamicOutgoingMessage.m */; }; + C33FDC8C255A582000E217F9 /* Contact.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDAD2255A580300E217F9 /* Contact.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C33FDC8D255A582000E217F9 /* TSThread.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDAD3255A580300E217F9 /* TSThread.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C33FDC8E255A582000E217F9 /* EncryptionUtilities.swift in Sources */ = {isa = PBXBuildFile; fileRef = C33FDAD4255A580300E217F9 /* EncryptionUtilities.swift */; }; + C33FDC8F255A582000E217F9 /* TSQuotedMessage.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDAD5255A580300E217F9 /* TSQuotedMessage.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C33FDC90255A582000E217F9 /* OWSAnalytics.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDAD6255A580300E217F9 /* OWSAnalytics.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C33FDC91255A582000E217F9 /* OWSDeviceProvisioner.m in Sources */ = {isa = PBXBuildFile; fileRef = C33FDAD7255A580300E217F9 /* OWSDeviceProvisioner.m */; }; + C33FDC92255A582000E217F9 /* OWSGroupsOutputStream.m in Sources */ = {isa = PBXBuildFile; fileRef = C33FDAD8255A580300E217F9 /* OWSGroupsOutputStream.m */; }; + C33FDC93255A582000E217F9 /* OWSDisappearingMessagesConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDAD9255A580300E217F9 /* OWSDisappearingMessagesConfiguration.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C33FDC94255A582000E217F9 /* OWSDisappearingConfigurationUpdateInfoMessage.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDADA255A580400E217F9 /* OWSDisappearingConfigurationUpdateInfoMessage.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C33FDC95255A582000E217F9 /* OWSFailedMessagesJob.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDADB255A580400E217F9 /* OWSFailedMessagesJob.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C33FDC96255A582000E217F9 /* NSObject+Casting.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDADC255A580400E217F9 /* NSObject+Casting.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C33FDC97255A582000E217F9 /* TSInfoMessage.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDADD255A580400E217F9 /* TSInfoMessage.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C33FDC98255A582000E217F9 /* SwiftSingletons.swift in Sources */ = {isa = PBXBuildFile; fileRef = C33FDADE255A580400E217F9 /* SwiftSingletons.swift */; }; + C33FDC99255A582000E217F9 /* PublicChatManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = C33FDADF255A580400E217F9 /* PublicChatManager.swift */; }; + C33FDC9A255A582000E217F9 /* ByteParser.m in Sources */ = {isa = PBXBuildFile; fileRef = C33FDAE0255A580400E217F9 /* ByteParser.m */; }; + C33FDC9B255A582000E217F9 /* OWSReadTracking.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDAE1255A580400E217F9 /* OWSReadTracking.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C33FDC9C255A582000E217F9 /* OWSReadReceiptsForLinkedDevicesMessage.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDAE2255A580400E217F9 /* OWSReadReceiptsForLinkedDevicesMessage.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C33FDC9D255A582000E217F9 /* TSPrefix.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDAE3255A580400E217F9 /* TSPrefix.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C33FDC9E255A582000E217F9 /* TSAttachmentStream.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDAE4255A580400E217F9 /* TSAttachmentStream.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C33FDC9F255A582000E217F9 /* OWSAddToProfileWhitelistOfferMessage.m in Sources */ = {isa = PBXBuildFile; fileRef = C33FDAE5255A580400E217F9 /* OWSAddToProfileWhitelistOfferMessage.m */; }; + C33FDCA0255A582000E217F9 /* TSInteraction.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDAE6255A580400E217F9 /* TSInteraction.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C33FDCA1255A582000E217F9 /* TSErrorMessage.m in Sources */ = {isa = PBXBuildFile; fileRef = C33FDAE7255A580500E217F9 /* TSErrorMessage.m */; }; + C33FDCA2255A582000E217F9 /* OWSMessageUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDAE8255A580500E217F9 /* OWSMessageUtils.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C33FDCA3255A582000E217F9 /* SSKMessageSenderJobRecord.m in Sources */ = {isa = PBXBuildFile; fileRef = C33FDAE9255A580500E217F9 /* SSKMessageSenderJobRecord.m */; }; + C33FDCA4255A582000E217F9 /* OWSBackupFragment.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDAEA255A580500E217F9 /* OWSBackupFragment.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C33FDCA5255A582000E217F9 /* OWSDeviceProvisioningCodeService.m in Sources */ = {isa = PBXBuildFile; fileRef = C33FDAEB255A580500E217F9 /* OWSDeviceProvisioningCodeService.m */; }; + C33FDCA6255A582000E217F9 /* SignalRecipient.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDAEC255A580500E217F9 /* SignalRecipient.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C33FDCA7255A582000E217F9 /* SSKMessageSenderJobRecord.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDAED255A580500E217F9 /* SSKMessageSenderJobRecord.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C33FDCA8255A582000E217F9 /* OWSFingerprintBuilder.m in Sources */ = {isa = PBXBuildFile; fileRef = C33FDAEE255A580500E217F9 /* OWSFingerprintBuilder.m */; }; + C33FDCA9255A582000E217F9 /* NSData+Image.m in Sources */ = {isa = PBXBuildFile; fileRef = C33FDAEF255A580500E217F9 /* NSData+Image.m */; }; + C33FDCAA255A582000E217F9 /* ContactsUpdater.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDAF0255A580500E217F9 /* ContactsUpdater.h */; }; + C33FDCAB255A582000E217F9 /* OWSThumbnailService.swift in Sources */ = {isa = PBXBuildFile; fileRef = C33FDAF1255A580500E217F9 /* OWSThumbnailService.swift */; }; + C33FDCAC255A582000E217F9 /* ProxiedContentDownloader.swift in Sources */ = {isa = PBXBuildFile; fileRef = C33FDAF2255A580500E217F9 /* ProxiedContentDownloader.swift */; }; + C33FDCAD255A582000E217F9 /* OWSPrimaryStorage+SessionStore.m in Sources */ = {isa = PBXBuildFile; fileRef = C33FDAF3255A580500E217F9 /* OWSPrimaryStorage+SessionStore.m */; }; + C33FDCAE255A582000E217F9 /* SSKEnvironment.m in Sources */ = {isa = PBXBuildFile; fileRef = C33FDAF4255A580600E217F9 /* SSKEnvironment.m */; }; + C33FDCAF255A582000E217F9 /* OWSAnalyticsEvents.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDAF5255A580600E217F9 /* OWSAnalyticsEvents.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C33FDCB0255A582000E217F9 /* OWSIncomingSentMessageTranscript.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDAF6255A580600E217F9 /* OWSIncomingSentMessageTranscript.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C33FDCB1255A582000E217F9 /* OWSPrimaryStorage+SignedPreKeyStore.m in Sources */ = {isa = PBXBuildFile; fileRef = C33FDAF7255A580600E217F9 /* OWSPrimaryStorage+SignedPreKeyStore.m */; }; + C33FDCB2255A582000E217F9 /* OWSSyncGroupsRequestMessage.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDAF8255A580600E217F9 /* OWSSyncGroupsRequestMessage.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C33FDCB3255A582000E217F9 /* TSContactThread.m in Sources */ = {isa = PBXBuildFile; fileRef = C33FDAF9255A580600E217F9 /* TSContactThread.m */; }; + C33FDCB4255A582000E217F9 /* LKDeviceLinkMessage.m in Sources */ = {isa = PBXBuildFile; fileRef = C33FDAFA255A580600E217F9 /* LKDeviceLinkMessage.m */; }; + C33FDCB5255A582000E217F9 /* SessionMetaProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = C33FDAFB255A580600E217F9 /* SessionMetaProtocol.swift */; }; + C33FDCB6255A582000E217F9 /* MIMETypeUtil.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDAFC255A580600E217F9 /* MIMETypeUtil.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C33FDCB7255A582000E217F9 /* LRUCache.swift in Sources */ = {isa = PBXBuildFile; fileRef = C33FDAFD255A580600E217F9 /* LRUCache.swift */; }; + C33FDCB8255A582000E217F9 /* OWSStorage.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDAFE255A580600E217F9 /* OWSStorage.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C33FDCB9255A582000E217F9 /* DisplayNameUtilities.swift in Sources */ = {isa = PBXBuildFile; fileRef = C33FDAFF255A580600E217F9 /* DisplayNameUtilities.swift */; }; + C33FDCBA255A582000E217F9 /* OWSRequestBuilder.m in Sources */ = {isa = PBXBuildFile; fileRef = C33FDB00255A580600E217F9 /* OWSRequestBuilder.m */; }; + C33FDCBB255A582000E217F9 /* AppReadiness.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDB01255A580700E217F9 /* AppReadiness.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C33FDCBC255A582000E217F9 /* TSCall.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDB02255A580700E217F9 /* TSCall.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C33FDCBD255A582000E217F9 /* OWSPrimaryStorage+SessionStore.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDB03255A580700E217F9 /* OWSPrimaryStorage+SessionStore.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C33FDCBF255A582000E217F9 /* OWSFingerprint.m in Sources */ = {isa = PBXBuildFile; fileRef = C33FDB05255A580700E217F9 /* OWSFingerprint.m */; }; + C33FDCC0255A582000E217F9 /* OWSRequestBuilder.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDB06255A580700E217F9 /* OWSRequestBuilder.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C33FDCC1255A582000E217F9 /* OWSBackupFragment.m in Sources */ = {isa = PBXBuildFile; fileRef = C33FDB07255A580700E217F9 /* OWSBackupFragment.m */; }; + C33FDCC2255A582000E217F9 /* OWSProfileKeyMessage.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDB08255A580700E217F9 /* OWSProfileKeyMessage.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C33FDCC3255A582000E217F9 /* NSError+MessageSending.m in Sources */ = {isa = PBXBuildFile; fileRef = C33FDB09255A580700E217F9 /* NSError+MessageSending.m */; }; + C33FDCC4255A582000E217F9 /* TSGroupModel.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDB0A255A580700E217F9 /* TSGroupModel.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C33FDCC5255A582000E217F9 /* OWSVerificationStateChangeMessage.m in Sources */ = {isa = PBXBuildFile; fileRef = C33FDB0B255A580700E217F9 /* OWSVerificationStateChangeMessage.m */; }; + C33FDCC6255A582000E217F9 /* CDSQuote.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDB0C255A580700E217F9 /* CDSQuote.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C33FDCC7255A582000E217F9 /* NSArray+OWS.m in Sources */ = {isa = PBXBuildFile; fileRef = C33FDB0D255A580800E217F9 /* NSArray+OWS.m */; }; + C33FDCC8255A582000E217F9 /* NSError+MessageSending.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDB0E255A580800E217F9 /* NSError+MessageSending.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C33FDCC9255A582000E217F9 /* DeviceLinkingSession.swift in Sources */ = {isa = PBXBuildFile; fileRef = C33FDB0F255A580800E217F9 /* DeviceLinkingSession.swift */; }; + C33FDCCA255A582000E217F9 /* OWSBatchMessageProcessor.m in Sources */ = {isa = PBXBuildFile; fileRef = C33FDB10255A580800E217F9 /* OWSBatchMessageProcessor.m */; }; + C33FDCCC255A582000E217F9 /* NSString+SSK.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDB12255A580800E217F9 /* NSString+SSK.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C33FDCCD255A582000E217F9 /* LKUnlinkDeviceMessage.m in Sources */ = {isa = PBXBuildFile; fileRef = C33FDB13255A580800E217F9 /* LKUnlinkDeviceMessage.m */; }; + C33FDCCE255A582000E217F9 /* OWSMath.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDB14255A580800E217F9 /* OWSMath.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C33FDCD0255A582000E217F9 /* OWSDisappearingMessagesConfigurationMessage.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDB16255A580800E217F9 /* OWSDisappearingMessagesConfigurationMessage.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C33FDCD1255A582000E217F9 /* FunctionalUtil.m in Sources */ = {isa = PBXBuildFile; fileRef = C33FDB17255A580800E217F9 /* FunctionalUtil.m */; }; + C33FDCD2255A582000E217F9 /* OWSSignalService.m in Sources */ = {isa = PBXBuildFile; fileRef = C33FDB18255A580800E217F9 /* OWSSignalService.m */; }; + C33FDCD3255A582000E217F9 /* GroupUtilities.swift in Sources */ = {isa = PBXBuildFile; fileRef = C33FDB19255A580900E217F9 /* GroupUtilities.swift */; }; + C33FDCD4255A582000E217F9 /* OWSPrimaryStorage+Calling.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDB1A255A580900E217F9 /* OWSPrimaryStorage+Calling.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C33FDCD5255A582000E217F9 /* OWSDeviceProvisioningCodeService.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDB1B255A580900E217F9 /* OWSDeviceProvisioningCodeService.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C33FDCD6255A582000E217F9 /* UIImage+OWS.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDB1C255A580900E217F9 /* UIImage+OWS.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C33FDCD7255A582000E217F9 /* OWSReadReceiptManager.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDB1D255A580900E217F9 /* OWSReadReceiptManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C33FDCD8255A582000E217F9 /* OWSIncomingMessageFinder.m in Sources */ = {isa = PBXBuildFile; fileRef = C33FDB1E255A580900E217F9 /* OWSIncomingMessageFinder.m */; }; + C33FDCD9255A582000E217F9 /* DeviceLinkingUtilities.swift in Sources */ = {isa = PBXBuildFile; fileRef = C33FDB1F255A580900E217F9 /* DeviceLinkingUtilities.swift */; }; + C33FDCDA255A582000E217F9 /* TSDatabaseSecondaryIndexes.m in Sources */ = {isa = PBXBuildFile; fileRef = C33FDB20255A580900E217F9 /* TSDatabaseSecondaryIndexes.m */; }; + C33FDCDB255A582000E217F9 /* OWS2FAManager.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDB21255A580900E217F9 /* OWS2FAManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C33FDCDC255A582000E217F9 /* OWSMediaUtils.swift in Sources */ = {isa = PBXBuildFile; fileRef = C33FDB22255A580900E217F9 /* OWSMediaUtils.swift */; }; + C33FDCDE255A582000E217F9 /* OWSOutgoingSentMessageTranscript.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDB24255A580900E217F9 /* OWSOutgoingSentMessageTranscript.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C33FDCDF255A582000E217F9 /* TSDatabaseSecondaryIndexes.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDB25255A580900E217F9 /* TSDatabaseSecondaryIndexes.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C33FDCE0255A582000E217F9 /* FingerprintProto.swift in Sources */ = {isa = PBXBuildFile; fileRef = C33FDB26255A580A00E217F9 /* FingerprintProto.swift */; }; + C33FDCE1255A582000E217F9 /* OWSEndSessionMessage.m in Sources */ = {isa = PBXBuildFile; fileRef = C33FDB27255A580A00E217F9 /* OWSEndSessionMessage.m */; }; + C33FDCE2255A582000E217F9 /* OWSOutgoingCallMessage.m in Sources */ = {isa = PBXBuildFile; fileRef = C33FDB28255A580A00E217F9 /* OWSOutgoingCallMessage.m */; }; + C33FDCE3255A582000E217F9 /* NSData+Image.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDB29255A580A00E217F9 /* NSData+Image.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C33FDCE4255A582000E217F9 /* OWSIncompleteCallsJob.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDB2A255A580A00E217F9 /* OWSIncompleteCallsJob.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C33FDCE5255A582000E217F9 /* OWSProvisioningCipher.m in Sources */ = {isa = PBXBuildFile; fileRef = C33FDB2B255A580A00E217F9 /* OWSProvisioningCipher.m */; }; + C33FDCE6255A582000E217F9 /* TSDatabaseView.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDB2C255A580A00E217F9 /* TSDatabaseView.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C33FDCE7255A582000E217F9 /* OWSDevice.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDB2D255A580A00E217F9 /* OWSDevice.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C33FDCE8255A582000E217F9 /* OWSEndSessionMessage.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDB2E255A580A00E217F9 /* OWSEndSessionMessage.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C33FDCE9255A582000E217F9 /* ContactsManagerProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDB2F255A580A00E217F9 /* ContactsManagerProtocol.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C33FDCEA255A582000E217F9 /* OWSDevice.m in Sources */ = {isa = PBXBuildFile; fileRef = C33FDB30255A580A00E217F9 /* OWSDevice.m */; }; + C33FDCEB255A582000E217F9 /* SSKEnvironment.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDB31255A580A00E217F9 /* SSKEnvironment.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C33FDCEC255A582000E217F9 /* SSKIncrementingIdFinder.swift in Sources */ = {isa = PBXBuildFile; fileRef = C33FDB32255A580A00E217F9 /* SSKIncrementingIdFinder.swift */; }; + C33FDCED255A582000E217F9 /* Provisioning.pb.swift in Sources */ = {isa = PBXBuildFile; fileRef = C33FDB33255A580B00E217F9 /* Provisioning.pb.swift */; }; + C33FDCEE255A582000E217F9 /* ClosedGroupPoller.swift in Sources */ = {isa = PBXBuildFile; fileRef = C33FDB34255A580B00E217F9 /* ClosedGroupPoller.swift */; }; + C33FDCEF255A582000E217F9 /* OWSContactDiscoveryOperation.swift in Sources */ = {isa = PBXBuildFile; fileRef = C33FDB35255A580B00E217F9 /* OWSContactDiscoveryOperation.swift */; }; + C33FDCF0255A582000E217F9 /* Storage.swift in Sources */ = {isa = PBXBuildFile; fileRef = C33FDB36255A580B00E217F9 /* Storage.swift */; }; + C33FDCF1255A582000E217F9 /* Storage+SnodeAPI.swift in Sources */ = {isa = PBXBuildFile; fileRef = C33FDB37255A580B00E217F9 /* Storage+SnodeAPI.swift */; }; + C33FDCF2255A582000E217F9 /* OWSBackgroundTask.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDB38255A580B00E217F9 /* OWSBackgroundTask.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C33FDCF4255A582000E217F9 /* Poller.swift in Sources */ = {isa = PBXBuildFile; fileRef = C33FDB3A255A580B00E217F9 /* Poller.swift */; }; + C33FDCF5255A582000E217F9 /* NSNotificationCenter+OWS.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDB3B255A580B00E217F9 /* NSNotificationCenter+OWS.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C33FDCF7255A582000E217F9 /* OWSProfileKeyMessage.m in Sources */ = {isa = PBXBuildFile; fileRef = C33FDB3D255A580B00E217F9 /* OWSProfileKeyMessage.m */; }; + C33FDCF8255A582000E217F9 /* OWSMessageSender.m in Sources */ = {isa = PBXBuildFile; fileRef = C33FDB3E255A580B00E217F9 /* OWSMessageSender.m */; }; + C33FDCF9255A582000E217F9 /* String+SSK.swift in Sources */ = {isa = PBXBuildFile; fileRef = C33FDB3F255A580C00E217F9 /* String+SSK.swift */; }; + C33FDCFA255A582000E217F9 /* SignalIOSProto.swift in Sources */ = {isa = PBXBuildFile; fileRef = C33FDB40255A580C00E217F9 /* SignalIOSProto.swift */; }; + C33FDCFB255A582000E217F9 /* MIMETypeUtil.m in Sources */ = {isa = PBXBuildFile; fileRef = C33FDB41255A580C00E217F9 /* MIMETypeUtil.m */; }; + C33FDCFC255A582000E217F9 /* OWSCountryMetadata.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDB42255A580C00E217F9 /* OWSCountryMetadata.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C33FDCFD255A582000E217F9 /* YapDatabaseConnection+OWS.m in Sources */ = {isa = PBXBuildFile; fileRef = C33FDB43255A580C00E217F9 /* YapDatabaseConnection+OWS.m */; }; + C33FDCFE255A582000E217F9 /* OWSContactsOutputStream.m in Sources */ = {isa = PBXBuildFile; fileRef = C33FDB44255A580C00E217F9 /* OWSContactsOutputStream.m */; }; + C33FDCFF255A582000E217F9 /* NSString+SSK.m in Sources */ = {isa = PBXBuildFile; fileRef = C33FDB45255A580C00E217F9 /* NSString+SSK.m */; }; + C33FDD00255A582000E217F9 /* TSDatabaseView.m in Sources */ = {isa = PBXBuildFile; fileRef = C33FDB46255A580C00E217F9 /* TSDatabaseView.m */; }; + C33FDD01255A582000E217F9 /* OWSPrimaryStorage+PreKeyStore.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDB47255A580C00E217F9 /* OWSPrimaryStorage+PreKeyStore.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C33FDD02255A582000E217F9 /* TSOutgoingMessage.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDB48255A580C00E217F9 /* TSOutgoingMessage.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C33FDD03255A582000E217F9 /* WeakTimer.swift in Sources */ = {isa = PBXBuildFile; fileRef = C33FDB49255A580C00E217F9 /* WeakTimer.swift */; }; + C33FDD04255A582000E217F9 /* SignalServiceClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = C33FDB4A255A580C00E217F9 /* SignalServiceClient.swift */; }; + C33FDD05255A582000E217F9 /* OWSChunkedOutputStream.m in Sources */ = {isa = PBXBuildFile; fileRef = C33FDB4B255A580C00E217F9 /* OWSChunkedOutputStream.m */; }; + C33FDD06255A582000E217F9 /* AppVersion.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDB4C255A580D00E217F9 /* AppVersion.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C33FDD09255A582000E217F9 /* SSKJobRecord.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDB4F255A580D00E217F9 /* SSKJobRecord.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C33FDD0A255A582000E217F9 /* OWSPrimaryStorage+PreKeyStore.m in Sources */ = {isa = PBXBuildFile; fileRef = C33FDB50255A580D00E217F9 /* OWSPrimaryStorage+PreKeyStore.m */; }; + C33FDD0B255A582000E217F9 /* NSUserDefaults+OWS.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDB51255A580D00E217F9 /* NSUserDefaults+OWS.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C33FDD0C255A582000E217F9 /* OWSHTTPSecurityPolicy.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDB52255A580D00E217F9 /* OWSHTTPSecurityPolicy.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C33FDD0D255A582000E217F9 /* PreKeyBundle+jsonDict.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDB53255A580D00E217F9 /* PreKeyBundle+jsonDict.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C33FDD0E255A582000E217F9 /* DataSource.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDB54255A580D00E217F9 /* DataSource.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C33FDD0F255A582000E217F9 /* TSInvalidIdentityKeySendingErrorMessage.m in Sources */ = {isa = PBXBuildFile; fileRef = C33FDB55255A580D00E217F9 /* TSInvalidIdentityKeySendingErrorMessage.m */; }; + C33FDD10255A582000E217F9 /* TSOutgoingMessage.m in Sources */ = {isa = PBXBuildFile; fileRef = C33FDB56255A580D00E217F9 /* TSOutgoingMessage.m */; }; + C33FDD11255A582000E217F9 /* OWSSyncContactsMessage.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDB57255A580D00E217F9 /* OWSSyncContactsMessage.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C33FDD12255A582000E217F9 /* OWSPrimaryStorage+Loki.m in Sources */ = {isa = PBXBuildFile; fileRef = C33FDB58255A580E00E217F9 /* OWSPrimaryStorage+Loki.m */; }; + C33FDD13255A582000E217F9 /* OWSFailedAttachmentDownloadsJob.m in Sources */ = {isa = PBXBuildFile; fileRef = C33FDB59255A580E00E217F9 /* OWSFailedAttachmentDownloadsJob.m */; }; + C33FDD14255A582000E217F9 /* OWSUDManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = C33FDB5A255A580E00E217F9 /* OWSUDManager.swift */; }; + C33FDD15255A582000E217F9 /* YapDatabaseTransaction+OWS.m in Sources */ = {isa = PBXBuildFile; fileRef = C33FDB5B255A580E00E217F9 /* YapDatabaseTransaction+OWS.m */; }; + C33FDD16255A582000E217F9 /* NSArray+Functional.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDB5C255A580E00E217F9 /* NSArray+Functional.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C33FDD17255A582000E217F9 /* TSErrorMessage_privateConstructor.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDB5D255A580E00E217F9 /* TSErrorMessage_privateConstructor.h */; }; + C33FDD18255A582000E217F9 /* ContactParser.swift in Sources */ = {isa = PBXBuildFile; fileRef = C33FDB5E255A580E00E217F9 /* ContactParser.swift */; }; + C33FDD19255A582000E217F9 /* YapDatabaseConnection+OWS.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDB5F255A580E00E217F9 /* YapDatabaseConnection+OWS.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C33FDD1A255A582000E217F9 /* TSMessage.m in Sources */ = {isa = PBXBuildFile; fileRef = C33FDB60255A580E00E217F9 /* TSMessage.m */; }; + C33FDD1B255A582000E217F9 /* LKUnlinkDeviceMessage.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDB61255A580E00E217F9 /* LKUnlinkDeviceMessage.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C33FDD1C255A582000E217F9 /* OWSProvisioningCipher.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDB62255A580E00E217F9 /* OWSProvisioningCipher.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C33FDD1D255A582000E217F9 /* OWSDynamicOutgoingMessage.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDB63255A580E00E217F9 /* OWSDynamicOutgoingMessage.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C33FDD1E255A582000E217F9 /* PreKeyRefreshOperation.swift in Sources */ = {isa = PBXBuildFile; fileRef = C33FDB64255A580E00E217F9 /* PreKeyRefreshOperation.swift */; }; + C33FDD1F255A582000E217F9 /* OWSSyncConfigurationMessage.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDB65255A580F00E217F9 /* OWSSyncConfigurationMessage.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C33FDD20255A582000E217F9 /* ContactDiscoveryService.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDB66255A580F00E217F9 /* ContactDiscoveryService.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C33FDD21255A582000E217F9 /* OWSMediaGalleryFinder.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDB67255A580F00E217F9 /* OWSMediaGalleryFinder.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C33FDD22255A582000E217F9 /* ContentProxy.swift in Sources */ = {isa = PBXBuildFile; fileRef = C33FDB68255A580F00E217F9 /* ContentProxy.swift */; }; + C33FDD23255A582000E217F9 /* FeatureFlags.swift in Sources */ = {isa = PBXBuildFile; fileRef = C33FDB69255A580F00E217F9 /* FeatureFlags.swift */; }; + C33FDD24255A582000E217F9 /* SignalMessage.swift in Sources */ = {isa = PBXBuildFile; fileRef = C33FDB6A255A580F00E217F9 /* SignalMessage.swift */; }; + C33FDD25255A582000E217F9 /* LKUserDefaults.swift in Sources */ = {isa = PBXBuildFile; fileRef = C33FDB6B255A580F00E217F9 /* LKUserDefaults.swift */; }; + C33FDD26255A582000E217F9 /* NSNotificationCenter+OWS.m in Sources */ = {isa = PBXBuildFile; fileRef = C33FDB6C255A580F00E217F9 /* NSNotificationCenter+OWS.m */; }; + C33FDD27255A582000E217F9 /* TSPreKeyManager.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDB6D255A580F00E217F9 /* TSPreKeyManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C33FDD28255A582000E217F9 /* SSKProtoPrekeyBundleMessage+Loki.swift in Sources */ = {isa = PBXBuildFile; fileRef = C33FDB6E255A580F00E217F9 /* SSKProtoPrekeyBundleMessage+Loki.swift */; }; + C33FDD29255A582000E217F9 /* OWSOutgoingReceiptManager.m in Sources */ = {isa = PBXBuildFile; fileRef = C33FDB6F255A580F00E217F9 /* OWSOutgoingReceiptManager.m */; }; + C33FDD2A255A582000E217F9 /* OWSMessageServiceParams.m in Sources */ = {isa = PBXBuildFile; fileRef = C33FDB70255A580F00E217F9 /* OWSMessageServiceParams.m */; }; + C33FDD2B255A582000E217F9 /* OWSMediaGalleryFinder.m in Sources */ = {isa = PBXBuildFile; fileRef = C33FDB71255A581000E217F9 /* OWSMediaGalleryFinder.m */; }; + C33FDD2C255A582000E217F9 /* DeviceLinkIndex.swift in Sources */ = {isa = PBXBuildFile; fileRef = C33FDB72255A581000E217F9 /* DeviceLinkIndex.swift */; }; + C33FDD2D255A582000E217F9 /* TSGroupModel.m in Sources */ = {isa = PBXBuildFile; fileRef = C33FDB73255A581000E217F9 /* TSGroupModel.m */; }; + C33FDD2E255A582000E217F9 /* TSInvalidIdentityKeyErrorMessage.m in Sources */ = {isa = PBXBuildFile; fileRef = C33FDB74255A581000E217F9 /* TSInvalidIdentityKeyErrorMessage.m */; }; + C33FDD2F255A582000E217F9 /* AppReadiness.m in Sources */ = {isa = PBXBuildFile; fileRef = C33FDB75255A581000E217F9 /* AppReadiness.m */; }; + C33FDD30255A582000E217F9 /* ClosedGroupUtilities.swift in Sources */ = {isa = PBXBuildFile; fileRef = C33FDB76255A581000E217F9 /* ClosedGroupUtilities.swift */; }; + C33FDD31255A582000E217F9 /* NSUserDefaults+OWS.m in Sources */ = {isa = PBXBuildFile; fileRef = C33FDB77255A581000E217F9 /* NSUserDefaults+OWS.m */; }; + C33FDD32255A582000E217F9 /* OWSOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = C33FDB78255A581000E217F9 /* OWSOperation.m */; }; + C33FDD33255A582000E217F9 /* PhoneNumberUtil.m in Sources */ = {isa = PBXBuildFile; fileRef = C33FDB79255A581000E217F9 /* PhoneNumberUtil.m */; }; + C33FDD34255A582000E217F9 /* NotificationsProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDB7A255A581000E217F9 /* NotificationsProtocol.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C33FDD36255A582000E217F9 /* OWSVerificationStateChangeMessage.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDB7C255A581000E217F9 /* OWSVerificationStateChangeMessage.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C33FDD37255A582000E217F9 /* OWSMessageManager.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDB7D255A581100E217F9 /* OWSMessageManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C33FDD38255A582000E217F9 /* TSPreKeyManager.m in Sources */ = {isa = PBXBuildFile; fileRef = C33FDB7E255A581100E217F9 /* TSPreKeyManager.m */; }; + C33FDD39255A582000E217F9 /* FullTextSearchFinder.swift in Sources */ = {isa = PBXBuildFile; fileRef = C33FDB7F255A581100E217F9 /* FullTextSearchFinder.swift */; }; + C33FDD3A255A582000E217F9 /* Notification+Loki.swift in Sources */ = {isa = PBXBuildFile; fileRef = C33FDB80255A581100E217F9 /* Notification+Loki.swift */; }; + C33FDD3B255A582000E217F9 /* UIImage+OWS.m in Sources */ = {isa = PBXBuildFile; fileRef = C33FDB81255A581100E217F9 /* UIImage+OWS.m */; }; + C33FDD3C255A582000E217F9 /* MessageWrapper.swift in Sources */ = {isa = PBXBuildFile; fileRef = C33FDB82255A581100E217F9 /* MessageWrapper.swift */; }; + C33FDD3D255A582000E217F9 /* TSQuotedMessage.m in Sources */ = {isa = PBXBuildFile; fileRef = C33FDB83255A581100E217F9 /* TSQuotedMessage.m */; }; + C33FDD3E255A582000E217F9 /* OWSIncomingSentMessageTranscript.m in Sources */ = {isa = PBXBuildFile; fileRef = C33FDB84255A581100E217F9 /* OWSIncomingSentMessageTranscript.m */; }; + C33FDD3F255A582000E217F9 /* AppContext.m in Sources */ = {isa = PBXBuildFile; fileRef = C33FDB85255A581100E217F9 /* AppContext.m */; }; + C33FDD40255A582000E217F9 /* OWSRequestFactory.m in Sources */ = {isa = PBXBuildFile; fileRef = C33FDB86255A581100E217F9 /* OWSRequestFactory.m */; }; + C33FDD41255A582000E217F9 /* JobQueue.swift in Sources */ = {isa = PBXBuildFile; fileRef = C33FDB87255A581100E217F9 /* JobQueue.swift */; }; + C33FDD42255A582000E217F9 /* TSAccountManager.m in Sources */ = {isa = PBXBuildFile; fileRef = C33FDB88255A581200E217F9 /* TSAccountManager.m */; }; + C33FDD43255A582000E217F9 /* FileServerAPI+Deprecated.swift in Sources */ = {isa = PBXBuildFile; fileRef = C33FDB89255A581200E217F9 /* FileServerAPI+Deprecated.swift */; }; + C33FDD44255A582000E217F9 /* AppContext.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDB8A255A581200E217F9 /* AppContext.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C33FDD45255A582000E217F9 /* Storage+SessionManagement.swift in Sources */ = {isa = PBXBuildFile; fileRef = C33FDB8B255A581200E217F9 /* Storage+SessionManagement.swift */; }; + C33FDD46255A582000E217F9 /* TSInvalidIdentityKeyErrorMessage.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDB8C255A581200E217F9 /* TSInvalidIdentityKeyErrorMessage.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C33FDD47255A582000E217F9 /* DeviceLinkingSessionDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = C33FDB8D255A581200E217F9 /* DeviceLinkingSessionDelegate.swift */; }; + C33FDD48255A582000E217F9 /* OWSContact+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDB8E255A581200E217F9 /* OWSContact+Private.h */; }; + C33FDD49255A582000E217F9 /* ParamParser.swift in Sources */ = {isa = PBXBuildFile; fileRef = C33FDB8F255A581200E217F9 /* ParamParser.swift */; }; + C33FDD4A255A582000E217F9 /* OWSMessageDecrypter.m in Sources */ = {isa = PBXBuildFile; fileRef = C33FDB90255A581200E217F9 /* OWSMessageDecrypter.m */; }; + C33FDD4B255A582000E217F9 /* ProtoUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDB91255A581200E217F9 /* ProtoUtils.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C33FDD4C255A582000E217F9 /* OWSDeviceProvisioningService.m in Sources */ = {isa = PBXBuildFile; fileRef = C33FDB92255A581200E217F9 /* OWSDeviceProvisioningService.m */; }; + C33FDD4D255A582000E217F9 /* PreKeyBundle+jsonDict.m in Sources */ = {isa = PBXBuildFile; fileRef = C33FDB93255A581200E217F9 /* PreKeyBundle+jsonDict.m */; }; + C33FDD4E255A582000E217F9 /* TSAccountManager.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDB94255A581300E217F9 /* TSAccountManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C33FDD4F255A582000E217F9 /* Storage+Collections.swift in Sources */ = {isa = PBXBuildFile; fileRef = C33FDB95255A581300E217F9 /* Storage+Collections.swift */; }; + C33FDD50255A582000E217F9 /* OWSReadReceiptsForLinkedDevicesMessage.m in Sources */ = {isa = PBXBuildFile; fileRef = C33FDB96255A581300E217F9 /* OWSReadReceiptsForLinkedDevicesMessage.m */; }; + C33FDD51255A582000E217F9 /* OWSDisappearingMessagesConfigurationMessage.m in Sources */ = {isa = PBXBuildFile; fileRef = C33FDB97255A581300E217F9 /* OWSDisappearingMessagesConfigurationMessage.m */; }; + C33FDD52255A582000E217F9 /* DeviceNames.swift in Sources */ = {isa = PBXBuildFile; fileRef = C33FDB98255A581300E217F9 /* DeviceNames.swift */; }; + C33FDD53255A582000E217F9 /* OWSPrimaryStorage+keyFromIntLong.m in Sources */ = {isa = PBXBuildFile; fileRef = C33FDB99255A581300E217F9 /* OWSPrimaryStorage+keyFromIntLong.m */; }; + C33FDD54255A582000E217F9 /* OWS2FAManager.m in Sources */ = {isa = PBXBuildFile; fileRef = C33FDB9A255A581300E217F9 /* OWS2FAManager.m */; }; + C33FDD55255A582000E217F9 /* MessageSenderJobQueue.swift in Sources */ = {isa = PBXBuildFile; fileRef = C33FDB9B255A581300E217F9 /* MessageSenderJobQueue.swift */; }; + C33FDD56255A582000E217F9 /* TSIncomingMessage.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDB9C255A581300E217F9 /* TSIncomingMessage.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C33FDD57255A582000E217F9 /* OWSCallMessageHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDB9D255A581300E217F9 /* OWSCallMessageHandler.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C33FDD58255A582000E217F9 /* TSAttachmentPointer.m in Sources */ = {isa = PBXBuildFile; fileRef = C33FDB9E255A581400E217F9 /* TSAttachmentPointer.m */; }; + C33FDD59255A582000E217F9 /* TTLUtilities.swift in Sources */ = {isa = PBXBuildFile; fileRef = C33FDB9F255A581400E217F9 /* TTLUtilities.swift */; }; + C33FDD5A255A582000E217F9 /* TSStorageHeaders.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDBA0255A581400E217F9 /* TSStorageHeaders.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C33FDD5B255A582000E217F9 /* OWSOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDBA1255A581400E217F9 /* OWSOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C33FDD5C255A582000E217F9 /* PhoneNumber.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDBA2255A581400E217F9 /* PhoneNumber.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C33FDD5D255A582000E217F9 /* SessionManagementProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = C33FDBA3255A581400E217F9 /* SessionManagementProtocol.swift */; }; + C33FDD5E255A582000E217F9 /* OWSDisappearingMessagesConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = C33FDBA4255A581400E217F9 /* OWSDisappearingMessagesConfiguration.m */; }; + C33FDD5F255A582000E217F9 /* SignalServiceProfile.swift in Sources */ = {isa = PBXBuildFile; fileRef = C33FDBA5255A581400E217F9 /* SignalServiceProfile.swift */; }; + C33FDD60255A582000E217F9 /* TSInvalidIdentityKeySendingErrorMessage.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDBA6255A581400E217F9 /* TSInvalidIdentityKeySendingErrorMessage.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C33FDD62255A582000E217F9 /* OWSLinkPreview.swift in Sources */ = {isa = PBXBuildFile; fileRef = C33FDBA8255A581500E217F9 /* OWSLinkPreview.swift */; }; + C33FDD63255A582000E217F9 /* OWSIdentityManager.m in Sources */ = {isa = PBXBuildFile; fileRef = C33FDBA9255A581500E217F9 /* OWSIdentityManager.m */; }; + C33FDD65255A582000E217F9 /* OWSFileSystem.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDBAB255A581500E217F9 /* OWSFileSystem.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C33FDD66255A582000E217F9 /* Data+SecureRandom.swift in Sources */ = {isa = PBXBuildFile; fileRef = C33FDBAC255A581500E217F9 /* Data+SecureRandom.swift */; }; + C33FDD67255A582000E217F9 /* OWSRecordTranscriptJob.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDBAD255A581500E217F9 /* OWSRecordTranscriptJob.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C33FDD68255A582000E217F9 /* SignalAccount.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDBAE255A581500E217F9 /* SignalAccount.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C33FDD69255A582000E217F9 /* OWSAnalyticsEvents.m in Sources */ = {isa = PBXBuildFile; fileRef = C33FDBAF255A581500E217F9 /* OWSAnalyticsEvents.m */; }; + C33FDD6A255A582000E217F9 /* TSErrorMessage.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDBB0255A581500E217F9 /* TSErrorMessage.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C33FDD6B255A582000E217F9 /* TSSocketManager.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDBB1255A581500E217F9 /* TSSocketManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C33FDD6D255A582000E217F9 /* OWSOutgoingNullMessage.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDBB3255A581500E217F9 /* OWSOutgoingNullMessage.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C33FDD6E255A582000E217F9 /* NSURLSessionDataTask+StatusCode.m in Sources */ = {isa = PBXBuildFile; fileRef = C33FDBB4255A581600E217F9 /* NSURLSessionDataTask+StatusCode.m */; }; + C33FDD6F255A582000E217F9 /* OWSSyncGroupsMessage.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDBB5255A581600E217F9 /* OWSSyncGroupsMessage.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C33FDD70255A582000E217F9 /* DataSource.m in Sources */ = {isa = PBXBuildFile; fileRef = C33FDBB6255A581600E217F9 /* DataSource.m */; }; + C33FDD71255A582000E217F9 /* SignalRecipient.m in Sources */ = {isa = PBXBuildFile; fileRef = C33FDBB7255A581600E217F9 /* SignalRecipient.m */; }; + C33FDD72255A582000E217F9 /* TSThread.m in Sources */ = {isa = PBXBuildFile; fileRef = C33FDBB8255A581600E217F9 /* TSThread.m */; }; + C33FDD73255A582000E217F9 /* ProfileManagerProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDBB9255A581600E217F9 /* ProfileManagerProtocol.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C33FDD74255A582000E217F9 /* OWSPrimaryStorage+keyFromIntLong.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDBBA255A581600E217F9 /* OWSPrimaryStorage+keyFromIntLong.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C33FDD75255A582000E217F9 /* OWSPrimaryStorage+Loki.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDBBB255A581600E217F9 /* OWSPrimaryStorage+Loki.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C33FDD76255A582000E217F9 /* SSKKeychainStorage.swift in Sources */ = {isa = PBXBuildFile; fileRef = C33FDBBC255A581600E217F9 /* SSKKeychainStorage.swift */; }; + C33FDD77255A582000E217F9 /* OWSAddToProfileWhitelistOfferMessage.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDBBD255A581600E217F9 /* OWSAddToProfileWhitelistOfferMessage.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C33FDD79255A582000E217F9 /* OWSHTTPSecurityPolicy.m in Sources */ = {isa = PBXBuildFile; fileRef = C33FDBBF255A581700E217F9 /* OWSHTTPSecurityPolicy.m */; }; + C33FDD7A255A582000E217F9 /* OWSRequestFactory.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDBC0255A581700E217F9 /* OWSRequestFactory.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C33FDD7B255A582000E217F9 /* GeneralUtilities.swift in Sources */ = {isa = PBXBuildFile; fileRef = C33FDBC1255A581700E217F9 /* GeneralUtilities.swift */; }; + C33FDD7C255A582000E217F9 /* SSKAsserts.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDBC2255A581700E217F9 /* SSKAsserts.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C33FDD7D255A582000E217F9 /* AnyPromise+Conversion.swift in Sources */ = {isa = PBXBuildFile; fileRef = C33FDBC3255A581700E217F9 /* AnyPromise+Conversion.swift */; }; + C33FDD7E255A582000E217F9 /* TypingIndicatorMessage.swift in Sources */ = {isa = PBXBuildFile; fileRef = C33FDBC4255A581700E217F9 /* TypingIndicatorMessage.swift */; }; + C33FDD80255A582000E217F9 /* OWSMessageReceiver.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDBC6255A581700E217F9 /* OWSMessageReceiver.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C33FDD82255A582000E217F9 /* OWSFingerprint.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDBC8255A581700E217F9 /* OWSFingerprint.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C33FDD83255A582000E217F9 /* CreatePreKeysOperation.swift in Sources */ = {isa = PBXBuildFile; fileRef = C33FDBC9255A581700E217F9 /* CreatePreKeysOperation.swift */; }; + C33FDD84255A582000E217F9 /* LKGroupUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDBCA255A581700E217F9 /* LKGroupUtilities.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C33FDD85255A582000E217F9 /* TSInvalidIdentityKeyReceivingErrorMessage.m in Sources */ = {isa = PBXBuildFile; fileRef = C33FDBCB255A581800E217F9 /* TSInvalidIdentityKeyReceivingErrorMessage.m */; }; + C33FDD86255A582000E217F9 /* MultiDeviceProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = C33FDBCC255A581800E217F9 /* MultiDeviceProtocol.swift */; }; + C33FDD88255A582000E217F9 /* OWSMessageServiceParams.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDBCE255A581800E217F9 /* OWSMessageServiceParams.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C33FDD89255A582000E217F9 /* OWSFingerprintBuilder.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDBCF255A581800E217F9 /* OWSFingerprintBuilder.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C33FDD8A255A582000E217F9 /* OnionRequestAPI+Encryption.swift in Sources */ = {isa = PBXBuildFile; fileRef = C33FDBD0255A581800E217F9 /* OnionRequestAPI+Encryption.swift */; }; + C33FDD8B255A582000E217F9 /* DeviceLink.swift in Sources */ = {isa = PBXBuildFile; fileRef = C33FDBD1255A581800E217F9 /* DeviceLink.swift */; }; + C33FDD8C255A582000E217F9 /* OWSUnknownContactBlockOfferMessage.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDBD2255A581800E217F9 /* OWSUnknownContactBlockOfferMessage.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C33FDD8D255A582000E217F9 /* OWSSignalAddress.swift in Sources */ = {isa = PBXBuildFile; fileRef = C33FDBD3255A581800E217F9 /* OWSSignalAddress.swift */; }; + C33FDD8E255A582000E217F9 /* OWSBatchMessageProcessor.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDBD4255A581900E217F9 /* OWSBatchMessageProcessor.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C33FDD8F255A582000E217F9 /* OWSOutgoingSentMessageTranscript.m in Sources */ = {isa = PBXBuildFile; fileRef = C33FDBD5255A581900E217F9 /* OWSOutgoingSentMessageTranscript.m */; }; + C33FDD90255A582000E217F9 /* OWSUploadOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDBD6255A581900E217F9 /* OWSUploadOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C33FDD91255A582000E217F9 /* OWSMessageUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = C33FDBD7255A581900E217F9 /* OWSMessageUtils.m */; }; + C33FDD92255A582000E217F9 /* SignalIOS.pb.swift in Sources */ = {isa = PBXBuildFile; fileRef = C33FDBD8255A581900E217F9 /* SignalIOS.pb.swift */; }; + C33FDD93255A582000E217F9 /* OWSVerificationStateSyncMessage.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDBD9255A581900E217F9 /* OWSVerificationStateSyncMessage.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C33FDD94255A582000E217F9 /* Dictionary+Description.swift in Sources */ = {isa = PBXBuildFile; fileRef = C33FDBDA255A581900E217F9 /* Dictionary+Description.swift */; }; + C33FDD95255A582000E217F9 /* OWSDevicesService.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDBDB255A581900E217F9 /* OWSDevicesService.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C33FDD96255A582000E217F9 /* ContactDiscoveryService.m in Sources */ = {isa = PBXBuildFile; fileRef = C33FDBDC255A581900E217F9 /* ContactDiscoveryService.m */; }; + C33FDD97255A582000E217F9 /* OWSDisappearingMessagesJob.m in Sources */ = {isa = PBXBuildFile; fileRef = C33FDBDD255A581900E217F9 /* OWSDisappearingMessagesJob.m */; }; + C33FDD98255A582000E217F9 /* LokiPushNotificationManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = C33FDBDE255A581900E217F9 /* LokiPushNotificationManager.swift */; }; + C33FDD99255A582000E217F9 /* LKSyncOpenGroupsMessage.m in Sources */ = {isa = PBXBuildFile; fileRef = C33FDBDF255A581A00E217F9 /* LKSyncOpenGroupsMessage.m */; }; + C33FDD9A255A582000E217F9 /* OWSBlockedPhoneNumbersMessage.m in Sources */ = {isa = PBXBuildFile; fileRef = C33FDBE0255A581A00E217F9 /* OWSBlockedPhoneNumbersMessage.m */; }; + C33FDD9B255A582000E217F9 /* LKGroupUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = C33FDBE1255A581A00E217F9 /* LKGroupUtilities.m */; }; + C33FDD9C255A582000E217F9 /* OWSUnknownContactBlockOfferMessage.m in Sources */ = {isa = PBXBuildFile; fileRef = C33FDBE2255A581A00E217F9 /* OWSUnknownContactBlockOfferMessage.m */; }; + C33FDD9D255A582000E217F9 /* CDSSigningCertificate.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDBE3255A581A00E217F9 /* CDSSigningCertificate.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C33FDD9E255A582000E217F9 /* OWSOutgoingSyncMessage.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDBE4255A581A00E217F9 /* OWSOutgoingSyncMessage.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C33FDD9F255A582000E217F9 /* OWSDevicesService.m in Sources */ = {isa = PBXBuildFile; fileRef = C33FDBE5255A581A00E217F9 /* OWSDevicesService.m */; }; + C33FDDA0255A582000E217F9 /* OWSOutgoingNullMessage.m in Sources */ = {isa = PBXBuildFile; fileRef = C33FDBE6255A581A00E217F9 /* OWSOutgoingNullMessage.m */; }; + C33FDDA1255A582000E217F9 /* NSTimer+OWS.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDBE7255A581A00E217F9 /* NSTimer+OWS.h */; }; + C33FDDA2255A582000E217F9 /* Storage+OnionRequests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C33FDBE8255A581A00E217F9 /* Storage+OnionRequests.swift */; }; + C33FDDA3255A582000E217F9 /* TSInteraction.m in Sources */ = {isa = PBXBuildFile; fileRef = C33FDBE9255A581A00E217F9 /* TSInteraction.m */; }; + C33FDDA4255A582000E217F9 /* SessionRequestMessage.swift in Sources */ = {isa = PBXBuildFile; fileRef = C33FDBEA255A581A00E217F9 /* SessionRequestMessage.swift */; }; + C33FDDA5255A582000E217F9 /* OWSBlockingManager.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDBEB255A581B00E217F9 /* OWSBlockingManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C33FDDA6255A582000E217F9 /* OWSRecipientIdentity.m in Sources */ = {isa = PBXBuildFile; fileRef = C33FDBEC255A581B00E217F9 /* OWSRecipientIdentity.m */; }; + C33FDDA7255A582000E217F9 /* ClosedGroupParser.swift in Sources */ = {isa = PBXBuildFile; fileRef = C33FDBED255A581B00E217F9 /* ClosedGroupParser.swift */; }; + C33FDDA8255A582000E217F9 /* ClosedGroupUpdateMessage.swift in Sources */ = {isa = PBXBuildFile; fileRef = C33FDBEE255A581B00E217F9 /* ClosedGroupUpdateMessage.swift */; }; + C33FDDA9255A582000E217F9 /* TSStorageKeys.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDBEF255A581B00E217F9 /* TSStorageKeys.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C33FDDAA255A582000E217F9 /* LokiDatabaseUtilities.swift in Sources */ = {isa = PBXBuildFile; fileRef = C33FDBF0255A581B00E217F9 /* LokiDatabaseUtilities.swift */; }; + C33FDDAB255A582000E217F9 /* OWSIdentityManager.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDBF1255A581B00E217F9 /* OWSIdentityManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C33FDDAC255A582000E217F9 /* MessageSender+Promise.swift in Sources */ = {isa = PBXBuildFile; fileRef = C33FDBF2255A581B00E217F9 /* MessageSender+Promise.swift */; }; + C33FDDAD255A582000E217F9 /* OWSBlockedPhoneNumbersMessage.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDBF3255A581B00E217F9 /* OWSBlockedPhoneNumbersMessage.h */; }; + C33FDDAE255A582000E217F9 /* DisplayNameUtilities2.swift in Sources */ = {isa = PBXBuildFile; fileRef = C33FDBF4255A581B00E217F9 /* DisplayNameUtilities2.swift */; }; + C33FDDAF255A582000E217F9 /* OWSDeviceProvisioningService.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDBF5255A581B00E217F9 /* OWSDeviceProvisioningService.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C33FDDB0255A582000E217F9 /* NSURLSessionDataTask+StatusCode.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDBF6255A581C00E217F9 /* NSURLSessionDataTask+StatusCode.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C33FDDB1255A582000E217F9 /* OWSIncompleteCallsJob.m in Sources */ = {isa = PBXBuildFile; fileRef = C33FDBF7255A581C00E217F9 /* OWSIncompleteCallsJob.m */; }; + C33FDDB2255A582000E217F9 /* NSArray+OWS.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDBF8255A581C00E217F9 /* NSArray+OWS.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C33FDDB3255A582000E217F9 /* OWSError.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDBF9255A581C00E217F9 /* OWSError.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C33FDDB4255A582000E217F9 /* PhoneNumberUtil.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDBFA255A581C00E217F9 /* PhoneNumberUtil.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C33FDDB5255A582000E217F9 /* Storage+PublicChats.swift in Sources */ = {isa = PBXBuildFile; fileRef = C33FDBFB255A581C00E217F9 /* Storage+PublicChats.swift */; }; + C33FDDB6255A582000E217F9 /* OWSMessageHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = C33FDBFC255A581C00E217F9 /* OWSMessageHandler.m */; }; + C33FDDB7255A582000E217F9 /* OWSPrimaryStorage+Calling.m in Sources */ = {isa = PBXBuildFile; fileRef = C33FDBFD255A581C00E217F9 /* OWSPrimaryStorage+Calling.m */; }; + C33FDDB8255A582000E217F9 /* NSSet+Functional.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDBFE255A581C00E217F9 /* NSSet+Functional.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C33FDDB9255A582000E217F9 /* OWSOutgoingSyncMessage.m in Sources */ = {isa = PBXBuildFile; fileRef = C33FDBFF255A581C00E217F9 /* OWSOutgoingSyncMessage.m */; }; + C33FDDBA255A582000E217F9 /* OWSSyncGroupsMessage.m in Sources */ = {isa = PBXBuildFile; fileRef = C33FDC00255A581C00E217F9 /* OWSSyncGroupsMessage.m */; }; + C33FDDBB255A582000E217F9 /* TSGroupThread.m in Sources */ = {isa = PBXBuildFile; fileRef = C33FDC01255A581C00E217F9 /* TSGroupThread.m */; }; + C33FDDBC255A582000E217F9 /* OWSPrimaryStorage.m in Sources */ = {isa = PBXBuildFile; fileRef = C33FDC02255A581D00E217F9 /* OWSPrimaryStorage.m */; }; + C33FDDBD255A582000E217F9 /* ByteParser.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDC03255A581D00E217F9 /* ByteParser.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C33FDDBE255A582000E217F9 /* DecryptionUtilities.swift in Sources */ = {isa = PBXBuildFile; fileRef = C33FDC04255A581D00E217F9 /* DecryptionUtilities.swift */; }; + C33FDDBF255A582000E217F9 /* OWSDisappearingMessagesFinder.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDC05255A581D00E217F9 /* OWSDisappearingMessagesFinder.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C33FDDC0255A582000E217F9 /* SignalAccount.m in Sources */ = {isa = PBXBuildFile; fileRef = C33FDC06255A581D00E217F9 /* SignalAccount.m */; }; + C33FDDC1255A582000E217F9 /* Storage+ClosedGroups.swift in Sources */ = {isa = PBXBuildFile; fileRef = C33FDC07255A581D00E217F9 /* Storage+ClosedGroups.swift */; }; + C33FDDC2255A582000E217F9 /* SignalService.pb.swift in Sources */ = {isa = PBXBuildFile; fileRef = C33FDC08255A581D00E217F9 /* SignalService.pb.swift */; }; + C33FDDC3255A582000E217F9 /* AccountServiceClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = C33FDC09255A581D00E217F9 /* AccountServiceClient.swift */; }; + C33FDDC4255A582000E217F9 /* OWSContact.m in Sources */ = {isa = PBXBuildFile; fileRef = C33FDC0A255A581D00E217F9 /* OWSContact.m */; }; + C33FDDC5255A582000E217F9 /* OWSError.m in Sources */ = {isa = PBXBuildFile; fileRef = C33FDC0B255A581D00E217F9 /* OWSError.m */; }; + C33FDDC6255A582000E217F9 /* TSInfoMessage.m in Sources */ = {isa = PBXBuildFile; fileRef = C33FDC0C255A581E00E217F9 /* TSInfoMessage.m */; }; + C33FDDC7255A582000E217F9 /* OWSProvisioningMessage.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDC0D255A581E00E217F9 /* OWSProvisioningMessage.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C33FDDC8255A582000E217F9 /* OWSMessageDecrypter.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDC0E255A581E00E217F9 /* OWSMessageDecrypter.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C33FDDC9255A582000E217F9 /* LKDeviceLinkMessage.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDC0F255A581E00E217F9 /* LKDeviceLinkMessage.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C33FDDCA255A582000E217F9 /* ProofOfWork.swift in Sources */ = {isa = PBXBuildFile; fileRef = C33FDC10255A581E00E217F9 /* ProofOfWork.swift */; }; + C33FDDCB255A582000E217F9 /* TSSocketManager.m in Sources */ = {isa = PBXBuildFile; fileRef = C33FDC11255A581E00E217F9 /* TSSocketManager.m */; }; + C33FDDCC255A582000E217F9 /* TSConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDC12255A581E00E217F9 /* TSConstants.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C33FDDCD255A582000E217F9 /* OWSAttachmentDownloads.m in Sources */ = {isa = PBXBuildFile; fileRef = C33FDC13255A581E00E217F9 /* OWSAttachmentDownloads.m */; }; + C33FDDCF255A582000E217F9 /* TSAttachment.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDC15255A581E00E217F9 /* TSAttachment.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C33FDDD0255A582000E217F9 /* FunctionalUtil.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDC16255A581E00E217F9 /* FunctionalUtil.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C33FDDD1255A582000E217F9 /* SharedSenderKeysImplementation.swift in Sources */ = {isa = PBXBuildFile; fileRef = C33FDC17255A581F00E217F9 /* SharedSenderKeysImplementation.swift */; }; + C33FDDD2255A582000E217F9 /* TSAttachmentPointer.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDC18255A581F00E217F9 /* TSAttachmentPointer.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C33FDDD3255A582000E217F9 /* OWSQueues.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDC19255A581F00E217F9 /* OWSQueues.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C33FDDD5255A582000E217F9 /* OWSBackgroundTask.m in Sources */ = {isa = PBXBuildFile; fileRef = C33FDC1B255A581F00E217F9 /* OWSBackgroundTask.m */; }; + C33FDDD6255A582000E217F9 /* TSCall.m in Sources */ = {isa = PBXBuildFile; fileRef = C33FDC1C255A581F00E217F9 /* TSCall.m */; }; + C33FDDD7255A582000E217F9 /* OWSSyncConfigurationMessage.m in Sources */ = {isa = PBXBuildFile; fileRef = C33FDC1D255A581F00E217F9 /* OWSSyncConfigurationMessage.m */; }; + C33FDDD8255A582000E217F9 /* OWSUploadOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = C33FDC1E255A581F00E217F9 /* OWSUploadOperation.m */; }; + C33FDDD9255A582000E217F9 /* LokiSessionResetImplementation.swift in Sources */ = {isa = PBXBuildFile; fileRef = C33FDC1F255A581F00E217F9 /* LokiSessionResetImplementation.swift */; }; + C33FDEF8255A656D00E217F9 /* Promise+Delaying.swift in Sources */ = {isa = PBXBuildFile; fileRef = C3C2A5D32553860900C340D1 /* Promise+Delaying.swift */; }; C3402FE52559036600EA6424 /* SessionUIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C331FF1B2558F9D300070591 /* SessionUIKit.framework */; }; C3471ECB2555356A00297E91 /* MessageSender+Encryption.swift in Sources */ = {isa = PBXBuildFile; fileRef = C3471ECA2555356A00297E91 /* MessageSender+Encryption.swift */; }; C3471ED42555386B00297E91 /* AESGCM.swift in Sources */ = {isa = PBXBuildFile; fileRef = C3C2A5D72553860B00C340D1 /* AESGCM.swift */; }; @@ -632,6 +1062,8 @@ C364535C252467900045C478 /* AudioUtilities.swift in Sources */ = {isa = PBXBuildFile; fileRef = C364535B252467900045C478 /* AudioUtilities.swift */; }; C369549D24D27A3500CEB4E3 /* MultiDeviceRemovalSheet.swift in Sources */ = {isa = PBXBuildFile; fileRef = C369549C24D27A3500CEB4E3 /* MultiDeviceRemovalSheet.swift */; }; C36B8707243C50C60049991D /* SignalMessaging.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 453518921FC63DBF00210559 /* SignalMessaging.framework */; }; + C38EEF0A255B49A8007E1867 /* SSKProtoEnvelope+Conversion.swift in Sources */ = {isa = PBXBuildFile; fileRef = C38EEF09255B49A8007E1867 /* SSKProtoEnvelope+Conversion.swift */; }; + C38EEFD6255B5BA2007E1867 /* OldSnodeAPI.swift in Sources */ = {isa = PBXBuildFile; fileRef = C38EEFD5255B5BA2007E1867 /* OldSnodeAPI.swift */; }; C396DAEF2518408B00FF6DC5 /* ParsingState.swift in Sources */ = {isa = PBXBuildFile; fileRef = C396DAE82518408900FF6DC5 /* ParsingState.swift */; }; C396DAF02518408B00FF6DC5 /* String+Lines.swift in Sources */ = {isa = PBXBuildFile; fileRef = C396DAE92518408A00FF6DC5 /* String+Lines.swift */; }; C396DAF12518408B00FF6DC5 /* EnumeratedView.swift in Sources */ = {isa = PBXBuildFile; fileRef = C396DAEA2518408A00FF6DC5 /* EnumeratedView.swift */; }; @@ -695,7 +1127,6 @@ C3C2A5DB2553860B00C340D1 /* Promise+Hashing.swift in Sources */ = {isa = PBXBuildFile; fileRef = C3C2A5CF2553860700C340D1 /* Promise+Hashing.swift */; }; C3C2A5DC2553860B00C340D1 /* Promise+Threading.swift in Sources */ = {isa = PBXBuildFile; fileRef = C3C2A5D02553860800C340D1 /* Promise+Threading.swift */; }; C3C2A5DE2553860B00C340D1 /* String+Utilities.swift in Sources */ = {isa = PBXBuildFile; fileRef = C3C2A5D22553860900C340D1 /* String+Utilities.swift */; }; - C3C2A5DF2553860B00C340D1 /* Promise+Delaying.swift in Sources */ = {isa = PBXBuildFile; fileRef = C3C2A5D32553860900C340D1 /* Promise+Delaying.swift */; }; C3C2A5E02553860B00C340D1 /* Threading.swift in Sources */ = {isa = PBXBuildFile; fileRef = C3C2A5D42553860A00C340D1 /* Threading.swift */; }; C3C2A5E42553860B00C340D1 /* Data+Utilities.swift in Sources */ = {isa = PBXBuildFile; fileRef = C3C2A5D82553860B00C340D1 /* Data+Utilities.swift */; }; C3C2A67D255388CC00C340D1 /* SessionUtilitiesKit.h in Headers */ = {isa = PBXBuildFile; fileRef = C3C2A67B255388CC00C340D1 /* SessionUtilitiesKit.h */; settings = {ATTRIBUTES = (Public, ); }; }; @@ -795,10 +1226,8 @@ C3C2AA002553B9C400C340D1 /* NSDate+OWS.h in Headers */ = {isa = PBXBuildFile; fileRef = C3C2A9E52553B9C300C340D1 /* NSDate+OWS.h */; settings = {ATTRIBUTES = (Public, ); }; }; C3C2AA012553B9C400C340D1 /* Threading.m in Sources */ = {isa = PBXBuildFile; fileRef = C3C2A9E62553B9C300C340D1 /* Threading.m */; }; C3C2AA022553B9C400C340D1 /* Cryptography.h in Headers */ = {isa = PBXBuildFile; fileRef = C3C2A9E72553B9C300C340D1 /* Cryptography.h */; settings = {ATTRIBUTES = (Public, ); }; }; - C3C2AA032553B9C400C340D1 /* Randomness.m in Sources */ = {isa = PBXBuildFile; fileRef = C3C2A9E82553B9C300C340D1 /* Randomness.m */; }; C3C2AA042553B9C400C340D1 /* OWSAsserts.h in Headers */ = {isa = PBXBuildFile; fileRef = C3C2A9E92553B9C300C340D1 /* OWSAsserts.h */; settings = {ATTRIBUTES = (Public, ); }; }; C3C2AA052553B9C400C340D1 /* SCKExceptionWrapper.m in Sources */ = {isa = PBXBuildFile; fileRef = C3C2A9EA2553B9C300C340D1 /* SCKExceptionWrapper.m */; }; - C3C2AA062553B9C400C340D1 /* Randomness.h in Headers */ = {isa = PBXBuildFile; fileRef = C3C2A9EB2553B9C400C340D1 /* Randomness.h */; settings = {ATTRIBUTES = (Public, ); }; }; C3C2AA072553B9C400C340D1 /* Cryptography.m in Sources */ = {isa = PBXBuildFile; fileRef = C3C2A9EC2553B9C400C340D1 /* Cryptography.m */; }; C3C2AA082553B9C400C340D1 /* NSString+OWS.m in Sources */ = {isa = PBXBuildFile; fileRef = C3C2A9ED2553B9C400C340D1 /* NSString+OWS.m */; }; C3C2AA092553B9C400C340D1 /* NSObject+OWS.h in Headers */ = {isa = PBXBuildFile; fileRef = C3C2A9EE2553B9C400C340D1 /* NSObject+OWS.h */; settings = {ATTRIBUTES = (Public, ); }; }; @@ -891,6 +1320,13 @@ remoteGlobalIDString = C331FF1A2558F9D300070591; remoteInfo = SessionUIKit; }; + C33FD9B0255A548A00E217F9 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = D221A080169C9E5E00537ABF /* Project object */; + proxyType = 1; + remoteGlobalIDString = C33FD9AA255A548A00E217F9; + remoteInfo = SignalUtilitiesKit; + }; C36B8705243C50B00049991D /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D221A080169C9E5E00537ABF /* Project object */; @@ -949,6 +1385,7 @@ files = ( C3C2A86A2553B41A00C340D1 /* SessionProtocolKit.framework in Embed Frameworks */, C3C2A681255388CC00C340D1 /* SessionUtilitiesKit.framework in Embed Frameworks */, + C33FD9B3255A548A00E217F9 /* SignalUtilitiesKit.framework in Embed Frameworks */, C3C2A5A7255385C100C340D1 /* SessionSnodeKit.framework in Embed Frameworks */, 4535189A1FC63DBF00210559 /* SignalMessaging.framework in Embed Frameworks */, C331FF232558F9D300070591 /* SessionUIKit.framework in Embed Frameworks */, @@ -1500,9 +1937,12 @@ 4CFD151C22415AA400F2450F /* CallVideoHintView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CallVideoHintView.swift; sourceTree = ""; }; 4CFE6B6B21F92BA700006701 /* LegacyNotificationsAdaptee.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = LegacyNotificationsAdaptee.swift; path = UserInterface/Notifications/LegacyNotificationsAdaptee.swift; sourceTree = ""; }; 4CFF4C0920F55BBA005DA313 /* MenuActionsViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MenuActionsViewController.swift; sourceTree = ""; }; + 53D547348A367C8A14D37FC0 /* Pods_SignalUtilitiesKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_SignalUtilitiesKit.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 5F3070F3395081DD0EB4F933 /* Pods-SignalUtilitiesKit.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SignalUtilitiesKit.debug.xcconfig"; path = "Pods/Target Support Files/Pods-SignalUtilitiesKit/Pods-SignalUtilitiesKit.debug.xcconfig"; sourceTree = ""; }; 69349DE607F5BA6036C9AC60 /* Pods-SignalShareExtension.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SignalShareExtension.debug.xcconfig"; path = "Pods/Target Support Files/Pods-SignalShareExtension/Pods-SignalShareExtension.debug.xcconfig"; sourceTree = ""; }; 6A26D6558DE69AF455E571C1 /* Pods-SessionMessagingKit.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SessionMessagingKit.debug.xcconfig"; path = "Pods/Target Support Files/Pods-SessionMessagingKit/Pods-SessionMessagingKit.debug.xcconfig"; sourceTree = ""; }; 70377AAA1918450100CAF501 /* MobileCoreServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MobileCoreServices.framework; path = System/Library/Frameworks/MobileCoreServices.framework; sourceTree = SDKROOT; }; + 71CFEDD2D3C54277731012DF /* Pods_SessionUIKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_SessionUIKit.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 748A5CAEDD7C919FC64C6807 /* Pods_SignalTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_SignalTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 768A1A2A17FC9CD300E00ED8 /* libz.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libz.dylib; path = usr/lib/libz.dylib; sourceTree = SDKROOT; }; 76C87F18181EFCE600C4ACAB /* MediaPlayer.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MediaPlayer.framework; path = System/Library/Frameworks/MediaPlayer.framework; sourceTree = SDKROOT; }; @@ -1521,6 +1961,7 @@ 948239851C08032C842937CC /* Pods-SignalMessaging.test.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SignalMessaging.test.xcconfig"; path = "Pods/Target Support Files/Pods-SignalMessaging/Pods-SignalMessaging.test.xcconfig"; sourceTree = ""; }; 9559C3068280BA2383F547F7 /* Pods_SessionSnodeKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_SessionSnodeKit.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 9B533A9FA46206D3D99C9ADA /* Pods-SignalMessaging.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SignalMessaging.debug.xcconfig"; path = "Pods/Target Support Files/Pods-SignalMessaging/Pods-SignalMessaging.debug.xcconfig"; sourceTree = ""; }; + 9C0469AC557930C01552CC83 /* Pods-SignalUtilitiesKit.app store release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SignalUtilitiesKit.app store release.xcconfig"; path = "Pods/Target Support Files/Pods-SignalUtilitiesKit/Pods-SignalUtilitiesKit.app store release.xcconfig"; sourceTree = ""; }; A11CD70C17FA230600A2D1B1 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; }; A163E8AA16F3F6A90094D68B /* Security.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Security.framework; path = System/Library/Frameworks/Security.framework; sourceTree = SDKROOT; }; A1C32D4D17A0652C000A904E /* AddressBook.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AddressBook.framework; path = System/Library/Frameworks/AddressBook.framework; sourceTree = SDKROOT; }; @@ -1628,6 +2069,7 @@ B97940261832BD2400BD66CB /* UIUtil.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UIUtil.m; sourceTree = ""; }; B9EB5ABC1884C002007CBB57 /* MessageUI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MessageUI.framework; path = System/Library/Frameworks/MessageUI.framework; sourceTree = SDKROOT; }; C022DD8E076866C6241610BF /* Pods-SessionSnodeKit.app store release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SessionSnodeKit.app store release.xcconfig"; path = "Pods/Target Support Files/Pods-SessionSnodeKit/Pods-SessionSnodeKit.app store release.xcconfig"; sourceTree = ""; }; + C1A746BC424B531D8ED478F6 /* Pods-SessionUIKit.app store release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SessionUIKit.app store release.xcconfig"; path = "Pods/Target Support Files/Pods-SessionUIKit/Pods-SessionUIKit.app store release.xcconfig"; sourceTree = ""; }; C300A5B12554AF9800555489 /* VisibleMessage+Profile.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "VisibleMessage+Profile.swift"; sourceTree = ""; }; C300A5BC2554B00D00555489 /* ReadReceipt.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReadReceipt.swift; sourceTree = ""; }; C300A5C82554B04E00555489 /* SessionRequest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SessionRequest.swift; sourceTree = ""; }; @@ -1654,6 +2096,429 @@ C331FF1B2558F9D300070591 /* SessionUIKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = SessionUIKit.framework; sourceTree = BUILT_PRODUCTS_DIR; }; C331FF1D2558F9D300070591 /* SessionUIKit.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SessionUIKit.h; sourceTree = ""; }; C331FF1E2558F9D300070591 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + C33FD9AB255A548A00E217F9 /* SignalUtilitiesKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = SignalUtilitiesKit.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + C33FD9AD255A548A00E217F9 /* SignalUtilitiesKit.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SignalUtilitiesKit.h; sourceTree = ""; }; + C33FD9AE255A548A00E217F9 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + C33FDA66255A57F900E217F9 /* OWSOutgoingCallMessage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OWSOutgoingCallMessage.h; sourceTree = ""; }; + C33FDA67255A57F900E217F9 /* OWSPrimaryStorage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastK