From 45b6a1c1add0a24af99b2a2f834c9c80c07c9135 Mon Sep 17 00:00:00 2001 From: rathishubham7 Date: Sun, 29 Aug 2021 10:58:28 +0530 Subject: [PATCH] fix: pod files --- .gitignore | 2 +- cocoapods/Pods/BestLogger/License.md | 7 - cocoapods/Pods/BestLogger/README.md | 30 - .../Sources/BestLogger/BestLogger.swift | 149 - cocoapods/Pods/BigInt/LICENSE.md | 20 - cocoapods/Pods/BigInt/README.md | 430 -- cocoapods/Pods/BigInt/Sources/Addition.swift | 126 - cocoapods/Pods/BigInt/Sources/BigInt.swift | 74 - cocoapods/Pods/BigInt/Sources/BigUInt.swift | 386 -- .../Pods/BigInt/Sources/Bitwise Ops.swift | 121 - cocoapods/Pods/BigInt/Sources/Codable.swift | 155 - .../Pods/BigInt/Sources/Comparable.swift | 63 - .../Pods/BigInt/Sources/Data Conversion.swift | 110 - cocoapods/Pods/BigInt/Sources/Division.swift | 374 -- .../Pods/BigInt/Sources/Exponentiation.swift | 119 - .../Sources/Floating Point Conversion.swift | 73 - cocoapods/Pods/BigInt/Sources/GCD.swift | 80 - cocoapods/Pods/BigInt/Sources/Hashable.swift | 26 - .../BigInt/Sources/Integer Conversion.swift | 89 - .../Pods/BigInt/Sources/Multiplication.swift | 165 - .../Pods/BigInt/Sources/Prime Test.swift | 153 - cocoapods/Pods/BigInt/Sources/Random.swift | 71 - cocoapods/Pods/BigInt/Sources/Shifts.swift | 211 - .../Pods/BigInt/Sources/Square Root.swift | 41 - .../Pods/BigInt/Sources/Strideable.swift | 38 - .../BigInt/Sources/String Conversion.swift | 236 -- .../Pods/BigInt/Sources/Subtraction.swift | 169 - .../Pods/BigInt/Sources/Words and Bits.swift | 202 - cocoapods/Pods/CryptoSwift/LICENSE | 11 - cocoapods/Pods/CryptoSwift/README.md | 551 --- .../Sources/CryptoSwift/AEAD/AEAD.swift | 40 - .../AEAD/AEADChaCha20Poly1305.swift | 59 - .../Sources/CryptoSwift/AES.Cryptors.swift | 39 - .../CryptoSwift/Sources/CryptoSwift/AES.swift | 556 --- .../Sources/CryptoSwift/Array+Extension.swift | 150 - .../Sources/CryptoSwift/Authenticator.swift | 20 - .../CryptoSwift/BatchedCollection.swift | 81 - .../CryptoSwift/Sources/CryptoSwift/Bit.swift | 26 - .../Sources/CryptoSwift/BlockCipher.swift | 18 - .../Sources/CryptoSwift/BlockDecryptor.swift | 98 - .../Sources/CryptoSwift/BlockEncryptor.swift | 62 - .../CryptoSwift/BlockMode/BlockMode.swift | 26 - .../BlockMode/BlockModeOptions.swift | 34 - .../Sources/CryptoSwift/BlockMode/CBC.swift | 76 - .../Sources/CryptoSwift/BlockMode/CCM.swift | 364 -- .../Sources/CryptoSwift/BlockMode/CFB.swift | 102 - .../Sources/CryptoSwift/BlockMode/CTR.swift | 138 - .../BlockMode/CipherModeWorker.swift | 64 - .../Sources/CryptoSwift/BlockMode/ECB.swift | 53 - .../Sources/CryptoSwift/BlockMode/GCM.swift | 374 -- .../Sources/CryptoSwift/BlockMode/OFB.swift | 73 - .../Sources/CryptoSwift/BlockMode/PCBC.swift | 74 - .../Sources/CryptoSwift/Blowfish.swift | 537 --- .../Sources/CryptoSwift/CBCMAC.swift | 30 - .../Sources/CryptoSwift/CMAC.swift | 106 - .../Sources/CryptoSwift/ChaCha20.swift | 347 -- .../Sources/CryptoSwift/Checksum.swift | 208 - .../Sources/CryptoSwift/Cipher.swift | 47 - .../CryptoSwift/Collection+Extension.swift | 61 - .../Sources/CryptoSwift/CompactMap.swift | 24 - .../Sources/CryptoSwift/Cryptor.swift | 22 - .../Sources/CryptoSwift/Cryptors.swift | 44 - .../Sources/CryptoSwift/Digest.swift | 78 - .../Sources/CryptoSwift/DigestType.swift | 18 - .../Foundation/AES+Foundation.swift | 32 - .../Foundation/Array+Foundation.swift | 32 - .../Foundation/Blowfish+Foundation.swift | 23 - .../Foundation/ChaCha20+Foundation.swift | 22 - .../Foundation/Data+Extension.swift | 92 - .../Foundation/HMAC+Foundation.swift | 22 - .../Foundation/Rabbit+Foundation.swift | 26 - .../String+FoundationExtension.swift | 41 - .../Foundation/Utils+Foundation.swift | 27 - .../Sources/CryptoSwift/Generics.swift | 43 - .../Sources/CryptoSwift/HKDF.swift | 86 - .../Sources/CryptoSwift/HMAC.swift | 102 - .../Sources/CryptoSwift/Int+Extension.swift | 33 - .../CryptoSwift/Sources/CryptoSwift/MD5.swift | 161 - .../Sources/CryptoSwift/NoPadding.swift | 27 - .../Sources/CryptoSwift/Operators.swift | 32 - .../Sources/CryptoSwift/PKCS/PBKDF1.swift | 97 - .../Sources/CryptoSwift/PKCS/PBKDF2.swift | 118 - .../Sources/CryptoSwift/PKCS/PKCS5.swift | 22 - .../Sources/CryptoSwift/PKCS/PKCS7.swift | 18 - .../CryptoSwift/PKCS/PKCS7Padding.swift | 62 - .../Sources/CryptoSwift/Padding.swift | 57 - .../Sources/CryptoSwift/Poly1305.swift | 165 - .../Sources/CryptoSwift/Rabbit.swift | 221 - .../Sources/CryptoSwift/SHA1.swift | 158 - .../Sources/CryptoSwift/SHA2.swift | 368 -- .../Sources/CryptoSwift/SHA3.swift | 299 -- .../Sources/CryptoSwift/Scrypt.swift | 256 -- .../Sources/CryptoSwift/SecureBytes.swift | 87 - .../Sources/CryptoSwift/StreamDecryptor.swift | 92 - .../Sources/CryptoSwift/StreamEncryptor.swift | 68 - .../CryptoSwift/String+Extension.swift | 96 - .../Sources/CryptoSwift/UInt128.swift | 90 - .../CryptoSwift/UInt16+Extension.swift | 37 - .../CryptoSwift/UInt32+Extension.swift | 51 - .../CryptoSwift/UInt64+Extension.swift | 44 - .../Sources/CryptoSwift/UInt8+Extension.swift | 74 - .../Sources/CryptoSwift/Updatable.swift | 107 - .../Sources/CryptoSwift/Utils.swift | 117 - .../Sources/CryptoSwift/ZeroPadding.swift | 40 - .../Local Podspecs/Torus-utils.podspec.json | 50 - cocoapods/Pods/Manifest.lock | 56 - cocoapods/Pods/Pods.xcodeproj/project.pbxproj | 3721 ----------------- .../Sources/NSNotificationCenter+AnyPromise.h | 44 - .../Sources/NSNotificationCenter+AnyPromise.m | 18 - .../NSNotificationCenter+Promise.swift | 33 - .../Foundation/Sources/NSObject+Promise.swift | 57 - .../Foundation/Sources/NSTask+AnyPromise.h | 53 - .../Foundation/Sources/NSTask+AnyPromise.m | 59 - .../Sources/NSURLSession+AnyPromise.h | 79 - .../Sources/NSURLSession+AnyPromise.m | 113 - .../Sources/NSURLSession+Promise.swift | 246 -- .../Foundation/Sources/PMKFoundation.h | 3 - .../Foundation/Sources/Process+Promise.swift | 190 - .../Foundation/Sources/afterlife.swift | 26 - cocoapods/Pods/PromiseKit/LICENSE | 20 - cocoapods/Pods/PromiseKit/README.md | 211 - .../PromiseKit/Sources/AnyPromise+Private.h | 32 - .../Pods/PromiseKit/Sources/AnyPromise.h | 308 -- .../Pods/PromiseKit/Sources/AnyPromise.m | 179 - .../Pods/PromiseKit/Sources/AnyPromise.swift | 224 - cocoapods/Pods/PromiseKit/Sources/Box.swift | 101 - .../Pods/PromiseKit/Sources/Catchable.swift | 256 -- .../PromiseKit/Sources/Configuration.swift | 35 - .../Sources/CustomStringConvertible.swift | 44 - .../PromiseKit/Sources/Deprecations.swift | 93 - cocoapods/Pods/PromiseKit/Sources/Error.swift | 111 - .../Pods/PromiseKit/Sources/Guarantee.swift | 390 -- .../Pods/PromiseKit/Sources/LogEvent.swift | 30 - .../Sources/NSMethodSignatureForBlock.m | 77 - .../PromiseKit/Sources/PMKCallVariadicBlock.m | 120 - .../Pods/PromiseKit/Sources/Promise.swift | 184 - .../Pods/PromiseKit/Sources/PromiseKit.h | 7 - .../Pods/PromiseKit/Sources/Resolver.swift | 111 - .../Pods/PromiseKit/Sources/Thenable.swift | 533 --- cocoapods/Pods/PromiseKit/Sources/after.m | 14 - cocoapods/Pods/PromiseKit/Sources/after.swift | 46 - .../PromiseKit/Sources/dispatch_promise.m | 10 - .../Pods/PromiseKit/Sources/firstly.swift | 39 - cocoapods/Pods/PromiseKit/Sources/fwd.h | 165 - cocoapods/Pods/PromiseKit/Sources/hang.m | 29 - cocoapods/Pods/PromiseKit/Sources/hang.swift | 55 - cocoapods/Pods/PromiseKit/Sources/join.m | 54 - cocoapods/Pods/PromiseKit/Sources/race.m | 9 - cocoapods/Pods/PromiseKit/Sources/race.swift | 102 - cocoapods/Pods/PromiseKit/Sources/when.m | 107 - cocoapods/Pods/PromiseKit/Sources/when.swift | 363 -- .../BestLogger/BestLogger-Info.plist | 26 - .../BestLogger/BestLogger-dummy.m | 5 - .../BestLogger/BestLogger-prefix.pch | 12 - .../BestLogger/BestLogger-umbrella.h | 16 - .../BestLogger/BestLogger.debug.xcconfig | 12 - .../BestLogger/BestLogger.modulemap | 6 - .../BestLogger/BestLogger.release.xcconfig | 12 - .../BigInt/BigInt-Info.plist | 26 - .../BigInt/BigInt-dummy.m | 5 - .../BigInt/BigInt-prefix.pch | 12 - .../BigInt/BigInt-umbrella.h | 16 - .../BigInt/BigInt.debug.xcconfig | 12 - .../BigInt/BigInt.modulemap | 6 - .../BigInt/BigInt.release.xcconfig | 12 - .../CryptoSwift/CryptoSwift-Info.plist | 26 - .../CryptoSwift/CryptoSwift-dummy.m | 5 - .../CryptoSwift/CryptoSwift-prefix.pch | 12 - .../CryptoSwift/CryptoSwift-umbrella.h | 16 - .../CryptoSwift/CryptoSwift.debug.xcconfig | 12 - .../CryptoSwift/CryptoSwift.modulemap | 6 - .../CryptoSwift/CryptoSwift.release.xcconfig | 12 - ...pplication-TestApplicationTests-Info.plist | 26 - ...ApplicationTests-acknowledgements.markdown | 182 - ...estApplicationTests-acknowledgements.plist | 262 -- ...stApplication-TestApplicationTests-dummy.m | 5 - ...ts-frameworks-Debug-input-files.xcfilelist | 10 - ...s-frameworks-Debug-output-files.xcfilelist | 9 - ...-frameworks-Release-input-files.xcfilelist | 10 - ...frameworks-Release-output-files.xcfilelist | 9 - ...ication-TestApplicationTests-frameworks.sh | 201 - ...pplication-TestApplicationTests-umbrella.h | 16 - ...cation-TestApplicationTests.debug.xcconfig | 15 - ...Application-TestApplicationTests.modulemap | 6 - ...tion-TestApplicationTests.release.xcconfig | 15 - .../Pods-TestApplication-Info.plist | 26 - ...-TestApplication-acknowledgements.markdown | 182 - ...ods-TestApplication-acknowledgements.plist | 262 -- .../Pods-TestApplication-dummy.m | 5 - .../Pods-TestApplication-umbrella.h | 16 - .../Pods-TestApplication.debug.xcconfig | 14 - .../Pods-TestApplication.modulemap | 6 - .../Pods-TestApplication.release.xcconfig | 14 - .../PromiseKit/PromiseKit-Info.plist | 26 - .../PromiseKit/PromiseKit-dummy.m | 5 - .../PromiseKit/PromiseKit-prefix.pch | 12 - .../PromiseKit/PromiseKit-umbrella.h | 23 - .../PromiseKit/PromiseKit.debug.xcconfig | 13 - .../PromiseKit/PromiseKit.modulemap | 6 - .../PromiseKit/PromiseKit.release.xcconfig | 13 - .../Torus-fetchNodeDetails-Info.plist | 26 - .../Torus-fetchNodeDetails-dummy.m | 5 - .../Torus-fetchNodeDetails-prefix.pch | 12 - .../Torus-fetchNodeDetails-umbrella.h | 16 - .../Torus-fetchNodeDetails.debug.xcconfig | 14 - .../Torus-fetchNodeDetails.modulemap | 6 - .../Torus-fetchNodeDetails.release.xcconfig | 14 - .../Torus-utils/Torus-utils-Info.plist | 26 - .../Torus-utils/Torus-utils-dummy.m | 5 - .../Torus-utils/Torus-utils-prefix.pch | 12 - .../Torus-utils/Torus-utils-umbrella.h | 16 - .../Torus-utils/Torus-utils.debug.xcconfig | 14 - .../Torus-utils/Torus-utils.modulemap | 6 - .../Torus-utils/Torus-utils.release.xcconfig | 14 - .../Pods/Torus-fetchNodeDetails/License.md | 11 - .../Pods/Torus-fetchNodeDetails/README.md | 11 - .../FetchNodeDetails/contract/abi.json | 116 - .../FetchNodeDetails/contract/abi.swift | 10 - .../Sources/FetchNodeDetails/epochInfo.swift | 91 - .../FetchNodeDetails/ethereumNetwork.swift | 16 - .../FetchNodeDetails/extensions/String.swift | 12 - .../fetchNodeDetails+promise.swift | 120 - .../FetchNodeDetails/fetchNodeDetails.swift | 42 - .../FetchNodeDetails/nodeDetails.swift | 120 - .../FetchNodeDetails/torusNodePub.swift | 26 - 225 files changed, 1 insertion(+), 23099 deletions(-) delete mode 100644 cocoapods/Pods/BestLogger/License.md delete mode 100644 cocoapods/Pods/BestLogger/README.md delete mode 100644 cocoapods/Pods/BestLogger/Sources/BestLogger/BestLogger.swift delete mode 100644 cocoapods/Pods/BigInt/LICENSE.md delete mode 100644 cocoapods/Pods/BigInt/README.md delete mode 100644 cocoapods/Pods/BigInt/Sources/Addition.swift delete mode 100644 cocoapods/Pods/BigInt/Sources/BigInt.swift delete mode 100644 cocoapods/Pods/BigInt/Sources/BigUInt.swift delete mode 100644 cocoapods/Pods/BigInt/Sources/Bitwise Ops.swift delete mode 100644 cocoapods/Pods/BigInt/Sources/Codable.swift delete mode 100644 cocoapods/Pods/BigInt/Sources/Comparable.swift delete mode 100644 cocoapods/Pods/BigInt/Sources/Data Conversion.swift delete mode 100644 cocoapods/Pods/BigInt/Sources/Division.swift delete mode 100644 cocoapods/Pods/BigInt/Sources/Exponentiation.swift delete mode 100644 cocoapods/Pods/BigInt/Sources/Floating Point Conversion.swift delete mode 100644 cocoapods/Pods/BigInt/Sources/GCD.swift delete mode 100644 cocoapods/Pods/BigInt/Sources/Hashable.swift delete mode 100644 cocoapods/Pods/BigInt/Sources/Integer Conversion.swift delete mode 100644 cocoapods/Pods/BigInt/Sources/Multiplication.swift delete mode 100644 cocoapods/Pods/BigInt/Sources/Prime Test.swift delete mode 100644 cocoapods/Pods/BigInt/Sources/Random.swift delete mode 100644 cocoapods/Pods/BigInt/Sources/Shifts.swift delete mode 100644 cocoapods/Pods/BigInt/Sources/Square Root.swift delete mode 100644 cocoapods/Pods/BigInt/Sources/Strideable.swift delete mode 100644 cocoapods/Pods/BigInt/Sources/String Conversion.swift delete mode 100644 cocoapods/Pods/BigInt/Sources/Subtraction.swift delete mode 100644 cocoapods/Pods/BigInt/Sources/Words and Bits.swift delete mode 100644 cocoapods/Pods/CryptoSwift/LICENSE delete mode 100644 cocoapods/Pods/CryptoSwift/README.md delete mode 100644 cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/AEAD/AEAD.swift delete mode 100644 cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/AEAD/AEADChaCha20Poly1305.swift delete mode 100644 cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/AES.Cryptors.swift delete mode 100644 cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/AES.swift delete mode 100644 cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/Array+Extension.swift delete mode 100644 cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/Authenticator.swift delete mode 100644 cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/BatchedCollection.swift delete mode 100644 cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/Bit.swift delete mode 100644 cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/BlockCipher.swift delete mode 100644 cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/BlockDecryptor.swift delete mode 100644 cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/BlockEncryptor.swift delete mode 100644 cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/BlockMode.swift delete mode 100644 cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/BlockModeOptions.swift delete mode 100644 cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/CBC.swift delete mode 100644 cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/CCM.swift delete mode 100644 cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/CFB.swift delete mode 100644 cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/CTR.swift delete mode 100644 cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/CipherModeWorker.swift delete mode 100644 cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/ECB.swift delete mode 100644 cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/GCM.swift delete mode 100644 cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/OFB.swift delete mode 100644 cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/PCBC.swift delete mode 100644 cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/Blowfish.swift delete mode 100644 cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/CBCMAC.swift delete mode 100644 cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/CMAC.swift delete mode 100644 cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/ChaCha20.swift delete mode 100644 cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/Checksum.swift delete mode 100644 cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/Cipher.swift delete mode 100644 cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/Collection+Extension.swift delete mode 100644 cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/CompactMap.swift delete mode 100644 cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/Cryptor.swift delete mode 100644 cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/Cryptors.swift delete mode 100644 cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/Digest.swift delete mode 100644 cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/DigestType.swift delete mode 100644 cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/Foundation/AES+Foundation.swift delete mode 100644 cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/Foundation/Array+Foundation.swift delete mode 100644 cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/Foundation/Blowfish+Foundation.swift delete mode 100644 cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/Foundation/ChaCha20+Foundation.swift delete mode 100644 cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/Foundation/Data+Extension.swift delete mode 100644 cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/Foundation/HMAC+Foundation.swift delete mode 100644 cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/Foundation/Rabbit+Foundation.swift delete mode 100644 cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/Foundation/String+FoundationExtension.swift delete mode 100644 cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/Foundation/Utils+Foundation.swift delete mode 100644 cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/Generics.swift delete mode 100644 cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/HKDF.swift delete mode 100644 cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/HMAC.swift delete mode 100644 cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/Int+Extension.swift delete mode 100644 cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/MD5.swift delete mode 100644 cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/NoPadding.swift delete mode 100644 cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/Operators.swift delete mode 100644 cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/PKCS/PBKDF1.swift delete mode 100644 cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/PKCS/PBKDF2.swift delete mode 100644 cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/PKCS/PKCS5.swift delete mode 100644 cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/PKCS/PKCS7.swift delete mode 100644 cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/PKCS/PKCS7Padding.swift delete mode 100644 cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/Padding.swift delete mode 100644 cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/Poly1305.swift delete mode 100644 cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/Rabbit.swift delete mode 100644 cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/SHA1.swift delete mode 100644 cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/SHA2.swift delete mode 100644 cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/SHA3.swift delete mode 100644 cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/Scrypt.swift delete mode 100644 cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/SecureBytes.swift delete mode 100644 cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/StreamDecryptor.swift delete mode 100644 cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/StreamEncryptor.swift delete mode 100644 cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/String+Extension.swift delete mode 100644 cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/UInt128.swift delete mode 100644 cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/UInt16+Extension.swift delete mode 100644 cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/UInt32+Extension.swift delete mode 100644 cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/UInt64+Extension.swift delete mode 100644 cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/UInt8+Extension.swift delete mode 100644 cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/Updatable.swift delete mode 100644 cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/Utils.swift delete mode 100644 cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/ZeroPadding.swift delete mode 100644 cocoapods/Pods/Local Podspecs/Torus-utils.podspec.json delete mode 100644 cocoapods/Pods/Manifest.lock delete mode 100644 cocoapods/Pods/Pods.xcodeproj/project.pbxproj delete mode 100644 cocoapods/Pods/PromiseKit/Extensions/Foundation/Sources/NSNotificationCenter+AnyPromise.h delete mode 100644 cocoapods/Pods/PromiseKit/Extensions/Foundation/Sources/NSNotificationCenter+AnyPromise.m delete mode 100644 cocoapods/Pods/PromiseKit/Extensions/Foundation/Sources/NSNotificationCenter+Promise.swift delete mode 100644 cocoapods/Pods/PromiseKit/Extensions/Foundation/Sources/NSObject+Promise.swift delete mode 100644 cocoapods/Pods/PromiseKit/Extensions/Foundation/Sources/NSTask+AnyPromise.h delete mode 100644 cocoapods/Pods/PromiseKit/Extensions/Foundation/Sources/NSTask+AnyPromise.m delete mode 100644 cocoapods/Pods/PromiseKit/Extensions/Foundation/Sources/NSURLSession+AnyPromise.h delete mode 100644 cocoapods/Pods/PromiseKit/Extensions/Foundation/Sources/NSURLSession+AnyPromise.m delete mode 100644 cocoapods/Pods/PromiseKit/Extensions/Foundation/Sources/NSURLSession+Promise.swift delete mode 100644 cocoapods/Pods/PromiseKit/Extensions/Foundation/Sources/PMKFoundation.h delete mode 100644 cocoapods/Pods/PromiseKit/Extensions/Foundation/Sources/Process+Promise.swift delete mode 100644 cocoapods/Pods/PromiseKit/Extensions/Foundation/Sources/afterlife.swift delete mode 100644 cocoapods/Pods/PromiseKit/LICENSE delete mode 100644 cocoapods/Pods/PromiseKit/README.md delete mode 100644 cocoapods/Pods/PromiseKit/Sources/AnyPromise+Private.h delete mode 100644 cocoapods/Pods/PromiseKit/Sources/AnyPromise.h delete mode 100644 cocoapods/Pods/PromiseKit/Sources/AnyPromise.m delete mode 100644 cocoapods/Pods/PromiseKit/Sources/AnyPromise.swift delete mode 100644 cocoapods/Pods/PromiseKit/Sources/Box.swift delete mode 100644 cocoapods/Pods/PromiseKit/Sources/Catchable.swift delete mode 100644 cocoapods/Pods/PromiseKit/Sources/Configuration.swift delete mode 100644 cocoapods/Pods/PromiseKit/Sources/CustomStringConvertible.swift delete mode 100644 cocoapods/Pods/PromiseKit/Sources/Deprecations.swift delete mode 100644 cocoapods/Pods/PromiseKit/Sources/Error.swift delete mode 100644 cocoapods/Pods/PromiseKit/Sources/Guarantee.swift delete mode 100644 cocoapods/Pods/PromiseKit/Sources/LogEvent.swift delete mode 100644 cocoapods/Pods/PromiseKit/Sources/NSMethodSignatureForBlock.m delete mode 100644 cocoapods/Pods/PromiseKit/Sources/PMKCallVariadicBlock.m delete mode 100644 cocoapods/Pods/PromiseKit/Sources/Promise.swift delete mode 100644 cocoapods/Pods/PromiseKit/Sources/PromiseKit.h delete mode 100644 cocoapods/Pods/PromiseKit/Sources/Resolver.swift delete mode 100644 cocoapods/Pods/PromiseKit/Sources/Thenable.swift delete mode 100644 cocoapods/Pods/PromiseKit/Sources/after.m delete mode 100644 cocoapods/Pods/PromiseKit/Sources/after.swift delete mode 100644 cocoapods/Pods/PromiseKit/Sources/dispatch_promise.m delete mode 100644 cocoapods/Pods/PromiseKit/Sources/firstly.swift delete mode 100644 cocoapods/Pods/PromiseKit/Sources/fwd.h delete mode 100644 cocoapods/Pods/PromiseKit/Sources/hang.m delete mode 100644 cocoapods/Pods/PromiseKit/Sources/hang.swift delete mode 100644 cocoapods/Pods/PromiseKit/Sources/join.m delete mode 100644 cocoapods/Pods/PromiseKit/Sources/race.m delete mode 100644 cocoapods/Pods/PromiseKit/Sources/race.swift delete mode 100644 cocoapods/Pods/PromiseKit/Sources/when.m delete mode 100644 cocoapods/Pods/PromiseKit/Sources/when.swift delete mode 100644 cocoapods/Pods/Target Support Files/BestLogger/BestLogger-Info.plist delete mode 100644 cocoapods/Pods/Target Support Files/BestLogger/BestLogger-dummy.m delete mode 100644 cocoapods/Pods/Target Support Files/BestLogger/BestLogger-prefix.pch delete mode 100644 cocoapods/Pods/Target Support Files/BestLogger/BestLogger-umbrella.h delete mode 100644 cocoapods/Pods/Target Support Files/BestLogger/BestLogger.debug.xcconfig delete mode 100644 cocoapods/Pods/Target Support Files/BestLogger/BestLogger.modulemap delete mode 100644 cocoapods/Pods/Target Support Files/BestLogger/BestLogger.release.xcconfig delete mode 100644 cocoapods/Pods/Target Support Files/BigInt/BigInt-Info.plist delete mode 100644 cocoapods/Pods/Target Support Files/BigInt/BigInt-dummy.m delete mode 100644 cocoapods/Pods/Target Support Files/BigInt/BigInt-prefix.pch delete mode 100644 cocoapods/Pods/Target Support Files/BigInt/BigInt-umbrella.h delete mode 100644 cocoapods/Pods/Target Support Files/BigInt/BigInt.debug.xcconfig delete mode 100644 cocoapods/Pods/Target Support Files/BigInt/BigInt.modulemap delete mode 100644 cocoapods/Pods/Target Support Files/BigInt/BigInt.release.xcconfig delete mode 100644 cocoapods/Pods/Target Support Files/CryptoSwift/CryptoSwift-Info.plist delete mode 100644 cocoapods/Pods/Target Support Files/CryptoSwift/CryptoSwift-dummy.m delete mode 100644 cocoapods/Pods/Target Support Files/CryptoSwift/CryptoSwift-prefix.pch delete mode 100644 cocoapods/Pods/Target Support Files/CryptoSwift/CryptoSwift-umbrella.h delete mode 100644 cocoapods/Pods/Target Support Files/CryptoSwift/CryptoSwift.debug.xcconfig delete mode 100644 cocoapods/Pods/Target Support Files/CryptoSwift/CryptoSwift.modulemap delete mode 100644 cocoapods/Pods/Target Support Files/CryptoSwift/CryptoSwift.release.xcconfig delete mode 100644 cocoapods/Pods/Target Support Files/Pods-TestApplication-TestApplicationTests/Pods-TestApplication-TestApplicationTests-Info.plist delete mode 100644 cocoapods/Pods/Target Support Files/Pods-TestApplication-TestApplicationTests/Pods-TestApplication-TestApplicationTests-acknowledgements.markdown delete mode 100644 cocoapods/Pods/Target Support Files/Pods-TestApplication-TestApplicationTests/Pods-TestApplication-TestApplicationTests-acknowledgements.plist delete mode 100644 cocoapods/Pods/Target Support Files/Pods-TestApplication-TestApplicationTests/Pods-TestApplication-TestApplicationTests-dummy.m delete mode 100644 cocoapods/Pods/Target Support Files/Pods-TestApplication-TestApplicationTests/Pods-TestApplication-TestApplicationTests-frameworks-Debug-input-files.xcfilelist delete mode 100644 cocoapods/Pods/Target Support Files/Pods-TestApplication-TestApplicationTests/Pods-TestApplication-TestApplicationTests-frameworks-Debug-output-files.xcfilelist delete mode 100644 cocoapods/Pods/Target Support Files/Pods-TestApplication-TestApplicationTests/Pods-TestApplication-TestApplicationTests-frameworks-Release-input-files.xcfilelist delete mode 100644 cocoapods/Pods/Target Support Files/Pods-TestApplication-TestApplicationTests/Pods-TestApplication-TestApplicationTests-frameworks-Release-output-files.xcfilelist delete mode 100755 cocoapods/Pods/Target Support Files/Pods-TestApplication-TestApplicationTests/Pods-TestApplication-TestApplicationTests-frameworks.sh delete mode 100644 cocoapods/Pods/Target Support Files/Pods-TestApplication-TestApplicationTests/Pods-TestApplication-TestApplicationTests-umbrella.h delete mode 100644 cocoapods/Pods/Target Support Files/Pods-TestApplication-TestApplicationTests/Pods-TestApplication-TestApplicationTests.debug.xcconfig delete mode 100644 cocoapods/Pods/Target Support Files/Pods-TestApplication-TestApplicationTests/Pods-TestApplication-TestApplicationTests.modulemap delete mode 100644 cocoapods/Pods/Target Support Files/Pods-TestApplication-TestApplicationTests/Pods-TestApplication-TestApplicationTests.release.xcconfig delete mode 100644 cocoapods/Pods/Target Support Files/Pods-TestApplication/Pods-TestApplication-Info.plist delete mode 100644 cocoapods/Pods/Target Support Files/Pods-TestApplication/Pods-TestApplication-acknowledgements.markdown delete mode 100644 cocoapods/Pods/Target Support Files/Pods-TestApplication/Pods-TestApplication-acknowledgements.plist delete mode 100644 cocoapods/Pods/Target Support Files/Pods-TestApplication/Pods-TestApplication-dummy.m delete mode 100644 cocoapods/Pods/Target Support Files/Pods-TestApplication/Pods-TestApplication-umbrella.h delete mode 100644 cocoapods/Pods/Target Support Files/Pods-TestApplication/Pods-TestApplication.debug.xcconfig delete mode 100644 cocoapods/Pods/Target Support Files/Pods-TestApplication/Pods-TestApplication.modulemap delete mode 100644 cocoapods/Pods/Target Support Files/Pods-TestApplication/Pods-TestApplication.release.xcconfig delete mode 100644 cocoapods/Pods/Target Support Files/PromiseKit/PromiseKit-Info.plist delete mode 100644 cocoapods/Pods/Target Support Files/PromiseKit/PromiseKit-dummy.m delete mode 100644 cocoapods/Pods/Target Support Files/PromiseKit/PromiseKit-prefix.pch delete mode 100644 cocoapods/Pods/Target Support Files/PromiseKit/PromiseKit-umbrella.h delete mode 100644 cocoapods/Pods/Target Support Files/PromiseKit/PromiseKit.debug.xcconfig delete mode 100644 cocoapods/Pods/Target Support Files/PromiseKit/PromiseKit.modulemap delete mode 100644 cocoapods/Pods/Target Support Files/PromiseKit/PromiseKit.release.xcconfig delete mode 100644 cocoapods/Pods/Target Support Files/Torus-fetchNodeDetails/Torus-fetchNodeDetails-Info.plist delete mode 100644 cocoapods/Pods/Target Support Files/Torus-fetchNodeDetails/Torus-fetchNodeDetails-dummy.m delete mode 100644 cocoapods/Pods/Target Support Files/Torus-fetchNodeDetails/Torus-fetchNodeDetails-prefix.pch delete mode 100644 cocoapods/Pods/Target Support Files/Torus-fetchNodeDetails/Torus-fetchNodeDetails-umbrella.h delete mode 100644 cocoapods/Pods/Target Support Files/Torus-fetchNodeDetails/Torus-fetchNodeDetails.debug.xcconfig delete mode 100644 cocoapods/Pods/Target Support Files/Torus-fetchNodeDetails/Torus-fetchNodeDetails.modulemap delete mode 100644 cocoapods/Pods/Target Support Files/Torus-fetchNodeDetails/Torus-fetchNodeDetails.release.xcconfig delete mode 100644 cocoapods/Pods/Target Support Files/Torus-utils/Torus-utils-Info.plist delete mode 100644 cocoapods/Pods/Target Support Files/Torus-utils/Torus-utils-dummy.m delete mode 100644 cocoapods/Pods/Target Support Files/Torus-utils/Torus-utils-prefix.pch delete mode 100644 cocoapods/Pods/Target Support Files/Torus-utils/Torus-utils-umbrella.h delete mode 100644 cocoapods/Pods/Target Support Files/Torus-utils/Torus-utils.debug.xcconfig delete mode 100644 cocoapods/Pods/Target Support Files/Torus-utils/Torus-utils.modulemap delete mode 100644 cocoapods/Pods/Target Support Files/Torus-utils/Torus-utils.release.xcconfig delete mode 100644 cocoapods/Pods/Torus-fetchNodeDetails/License.md delete mode 100644 cocoapods/Pods/Torus-fetchNodeDetails/README.md delete mode 100644 cocoapods/Pods/Torus-fetchNodeDetails/Sources/FetchNodeDetails/contract/abi.json delete mode 100644 cocoapods/Pods/Torus-fetchNodeDetails/Sources/FetchNodeDetails/contract/abi.swift delete mode 100644 cocoapods/Pods/Torus-fetchNodeDetails/Sources/FetchNodeDetails/epochInfo.swift delete mode 100644 cocoapods/Pods/Torus-fetchNodeDetails/Sources/FetchNodeDetails/ethereumNetwork.swift delete mode 100644 cocoapods/Pods/Torus-fetchNodeDetails/Sources/FetchNodeDetails/extensions/String.swift delete mode 100644 cocoapods/Pods/Torus-fetchNodeDetails/Sources/FetchNodeDetails/fetchNodeDetails+promise.swift delete mode 100644 cocoapods/Pods/Torus-fetchNodeDetails/Sources/FetchNodeDetails/fetchNodeDetails.swift delete mode 100644 cocoapods/Pods/Torus-fetchNodeDetails/Sources/FetchNodeDetails/nodeDetails.swift delete mode 100644 cocoapods/Pods/Torus-fetchNodeDetails/Sources/FetchNodeDetails/torusNodePub.swift diff --git a/.gitignore b/.gitignore index 180fec6f..ff4f2d5e 100644 --- a/.gitignore +++ b/.gitignore @@ -49,7 +49,7 @@ playground.xcworkspace # # Xcode automatically generates this directory with a .xcworkspacedata file and xcuserdata # hence it is not needed unless you have added a package configuration file to your project -# .swiftpm +.swiftpm/ .build/ diff --git a/cocoapods/Pods/BestLogger/License.md b/cocoapods/Pods/BestLogger/License.md deleted file mode 100644 index 1b39e537..00000000 --- a/cocoapods/Pods/BestLogger/License.md +++ /dev/null @@ -1,7 +0,0 @@ -Copyright 2020 Shubham Rathi - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/cocoapods/Pods/BestLogger/README.md b/cocoapods/Pods/BestLogger/README.md deleted file mode 100644 index 639f2e83..00000000 --- a/cocoapods/Pods/BestLogger/README.md +++ /dev/null @@ -1,30 +0,0 @@ -# BestLogger - -**THE REASON ITS CALLED BEST LOGGER IS BECAUSE EASYLOGGER WAS TAKEN AND SUBDEPENDECIES MIGHT HAVE LOGGER ALREADY DECLARED** - -This is a very simple, one file, swift logger which supports multiple arguments. - -We support 6 logging levels -* .trace = 0 // should be used for application flow. e.g., viewdidload executed -* .debug // used for debugging -* .info // used for informative messages. e.g., application started from app delegate -* .warning // e.g., this method could lead to memory leaks -* .error // e.g., JSONDecoder() failed to while casting -* .none // Abosolutely no logs. logger.none() doesn't exist. - -## Usage - -```swift -import BestLogger -let logger = BestLogger(label: "TestLogger", level: .debug) // .trace = 0, .debug, .info, .warning, .error, .none - -logger.debug("this is the best swift logger :P") // will print -logger.warning("Fix me:") // will print -logger.trace("application started") // will not print -``` - -## Development - -* Add static method to be used across different classes -* Make a PR for any improvements -* Contact - Shubham Rathi (twitter @metallicalfa) diff --git a/cocoapods/Pods/BestLogger/Sources/BestLogger/BestLogger.swift b/cocoapods/Pods/BestLogger/Sources/BestLogger/BestLogger.swift deleted file mode 100644 index 4bf2150a..00000000 --- a/cocoapods/Pods/BestLogger/Sources/BestLogger/BestLogger.swift +++ /dev/null @@ -1,149 +0,0 @@ -// -// BestLogger.swift -// -// Author - Shubham Rathi 15/06/2020 - -import Foundation - -/// A `Logger` is the a struc in `BestLogger`. You can use its method to print various variables depending on set `logLevel` -/// corresponding to a log level. -/// -/// The most basic usage of a `BestLogger` is -/// -/// logger.info("Hello World!") -/// - -public struct BestLogger{ - - /// Logger identifier - public let label: String - - /// Log level identifier - public var logLevel: Level - - /// Construct a `BestLogger` given a `label` and level `logLevel` - /// - /// The `label` should identify the creator of the `Logger`. This can be an application, a sub-system, or even - /// a datatype. - /// - /// - parameters: - /// - label: An identifier for the creator of a `Logger`. - /// - logLevel: A Identifier for log level - public init(label: String, level: Level) { - self.label = label - self.logLevel = level - } - - /// The log level. - /// - /// Log levels are ordered by their severity, with `.trace` being the least severe and - /// `.none` being nothing. - public enum Level: Int, Comparable { - case trace = 0 - case debug - case info - case warning - case error - case none - - public static func < (a: Level, b: Level) -> Bool { - return a.rawValue < b.rawValue - } - } - -} - -extension BestLogger{ - /// Log a message passing with the `Logger.Level.trace` log level. - /// - /// will be logged if `.trace` is at least as severe as the `Logger`'s `logLevel` - /// - /// - parameters: - /// - message: The message to be logged, pass multiple vairables to be logged. e.g, .trace(1,2,3) - /// - metadata: One-off metadata to attach to this log message - /// - file: The file this log message originates from - /// - function: The function this log message originates from - /// - line: The line this log message originates from - @inlinable - public func trace(_ message: Any..., file: String = #file, function: String = #function, line: UInt = #line) { - if self.logLevel <= .trace{ - print("[TRACE] \((file as NSString).lastPathComponent) [\(line)]:", terminator: " ") - _ = message.map{ return print($0, terminator: " ")} - print("\n") - } - } - - - /// Log a message passing with the `Logger.Level.debug` log level. - /// - /// will be logged if `.debug` is at least as severe as the `Logger`'s `logLevel` - /// - /// - parameters: - /// - message: The message to be logged, pass multiple vairables to be logged. e.g, .debug(1,2,3) - /// - metadata: One-off metadata to attach to this log message - /// - file: The file this log message originates from - /// - function: The function this log message originates from - /// - line: The line this log message originates from - public func debug(_ message: Any..., file: String = #file, function: String = #function, line: UInt = #line) { - if self.logLevel <= .debug{ - print("[DEBUG] \((file as NSString).lastPathComponent) [\(line)]:", terminator: " ") - _ = message.map{ print($0, terminator: " ")} - print("\n") - } - } - - /// Log a message passing with the `Logger.Level.info` log level. - /// - /// will be logged if `.info` is at least as severe as the `Logger`'s `logLevel` - /// - /// - parameters: - /// - message: The message to be logged, pass multiple vairables to be logged. e.g, .info(1,2,3) - /// - metadata: One-off metadata to attach to this log message - /// - file: The file this log message originates from - /// - function: The function this log message originates from - /// - line: The line this log message originates from - public func info(_ message: Any..., file: String = #file, function: String = #function, line: UInt = #line) { - if self.logLevel <= .info{ - print("[INFO] \((file as NSString).lastPathComponent) [\(line)]:", terminator: " ") - _ = message.map{ print($0, terminator: " ")} - print("\n") - } - } - - /// Log a message passing with the `Logger.Level.warning` log level. - /// - /// will be logged if `.warning` is at least as severe as the `Logger`'s `logLevel` - /// - /// - parameters: - /// - message: The message to be logged, pass multiple vairables to be logged. e.g, .trace(1,2,3) - /// - metadata: One-off metadata to attach to this log message - /// - file: The file this log message originates from - /// - function: The function this log message originates from - /// - line: The line this log message originates from - public func warning(_ message: Any..., file: String = #file, function: String = #function, line: UInt = #line) { - if self.logLevel <= .warning{ - print("[WARNING] \((file as NSString).lastPathComponent) [\(line)]:", terminator: " ") - _ = message.map{ print($0, terminator: " ")} - print("\n") - } - } - - /// Log a message passing with the `Logger.Level.error` log level. - /// - /// will be logged if `.error` is at least as severe as the `Logger`'s `logLevel` - /// - /// - parameters: - /// - message: The message to be logged, pass multiple vairables to be logged. e.g, .error(1,2,3) - /// - metadata: One-off metadata to attach to this log message - /// - file: The file this log message originates from - /// - function: The function this log message originates from - /// - line: The line this log message originates from - public func error(_ message: Any..., file: String = #file, function: String = #function, line: UInt = #line) { - if self.logLevel <= .error{ - print("[ERROR] \((file as NSString).lastPathComponent) [\(line)]:", terminator: " ") - _ = message.map{ print($0, terminator: " ")} - print("\n") - } - } - -} diff --git a/cocoapods/Pods/BigInt/LICENSE.md b/cocoapods/Pods/BigInt/LICENSE.md deleted file mode 100644 index 18cefd11..00000000 --- a/cocoapods/Pods/BigInt/LICENSE.md +++ /dev/null @@ -1,20 +0,0 @@ - -Copyright (c) 2016-2017 Károly Lőrentey - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/cocoapods/Pods/BigInt/README.md b/cocoapods/Pods/BigInt/README.md deleted file mode 100644 index 4a90d640..00000000 --- a/cocoapods/Pods/BigInt/README.md +++ /dev/null @@ -1,430 +0,0 @@ -[![BigInt](https://github.com/attaswift/BigInt/raw/master/images/banner.png)](https://github.com/attaswift/BigInt) - -* [Overview](#overview) -* [API Documentation](#api) -* [License](#license) -* [Requirements and Integration](#integration) -* [Implementation Notes](#notes) - * [Full-width multiplication and division primitives](#fullwidth) - * [Why is there no generic `BigInt` type?](#generics) -* [Calculation Samples](#samples) - * [Obligatory factorial demo](#factorial) - * [RSA Cryptography](#rsa) - * [Calculating the Digits of π](#pi) - -[![Swift 3](https://img.shields.io/badge/Swift-5-blue.svg)](https://developer.apple.com/swift/) -[![License](https://img.shields.io/badge/licence-MIT-blue.svg)](http://cocoapods.org/pods/BigInt) -[![Platform](https://img.shields.io/cocoapods/p/BigInt.svg)](http://cocoapods.org/pods/BigInt) - -[![Build Status](https://travis-ci.org/attaswift/BigInt.svg?branch=master)](https://travis-ci.org/attaswift/BigInt) -[![Code Coverage](https://codecov.io/github/attaswift/BigInt/coverage.svg?branch=master)](https://codecov.io/github/attaswift/BigInt?branch=master) -[![Carthage compatible](https://img.shields.io/badge/Carthage-compatible-4BC51D.svg)](https://github.com/Carthage/Carthage) -[![Version](https://img.shields.io/cocoapods/v/BigInt.svg)](http://cocoapods.org/pods/BigInt) - -## Overview - -This repository provides [integer types of arbitrary width][wiki] implemented -in 100% pure Swift. The underlying representation is in base 2^64, using `Array`. - -[wiki]: https://en.wikipedia.org/wiki/Arbitrary-precision_arithmetic - -This module is handy when you need an integer type that's wider than `UIntMax`, but -you don't want to add [The GNU Multiple Precision Arithmetic Library][GMP] -as a dependency. - -[GMP]: https://gmplib.org - -Two big integer types are included: [`BigUInt`][BigUInt] and [`BigInt`][BigInt], -the latter being the signed variant. -Both of these are Swift structs with copy-on-write value semantics, and they can be used much -like any other integer type. - -The library provides implementations for some of the most frequently useful functions on -big integers, including - -- All functionality from [`Comparable`][comparison] and [`Hashable`][hashing] - -- [The full set of arithmetic operators][addition]: `+`, `-`, `*`, `/`, `%`, `+=`, `-=`, `*=`, `/=`, `%=` - - [Addition][addition] and [subtraction][subtraction] have variants that allow for - shifting the digits of the second operand on the fly. - - Unsigned subtraction will trap when the result would be negative. - ([There are variants][subtraction] that return an overflow flag.) - - [Multiplication][mul] uses brute force for numbers up to 1024 digits, then switches to Karatsuba's recursive method. - (This limit is configurable, see `BigUInt.directMultiplicationLimit`.) - - A [fused multiply-add][fused] method is also available, along with other [special-case variants][multiplication]. - - [Division][division] uses Knuth's Algorithm D, with its 3/2 digits wide quotient approximation. - It will trap when the divisor is zero. - - [`BigUInt.divide`][divide] returns the quotient and - remainder at once; this is faster than calculating them separately. - -- [Bitwise operators][bitwise]: `~`, `|`, `&`, `^`, `|=`, `&=`, `^=`, plus the following read-only properties: - - [`width`][width]: the minimum number of bits required to store the integer, - - [`trailingZeroBitCount`][trailingZeroBitCount]: the number of trailing zero bits in the binary representation, - - [`leadingZeroBitCount`][leadingZeroBitCount]: the number of leading zero bits (when the last digit isn't full), - -- [Shift operators][shift]: `>>`, `<<`, `>>=`, `<<=` - -- Methods to [convert `NSData` to big integers][data] and vice versa. - -- Support for [generating random integers][random] of specified maximum width or magnitude. - -- Radix conversion to/from [`String`s][radix1] and [big integers][radix2] up to base 36 (using repeated divisions). - - Big integers use this to implement `StringLiteralConvertible` (in base 10). - -- [`sqrt(n)`][sqrt]: The square root of an integer (using Newton's method). - -- [`BigUInt.gcd(n, m)`][GCD]: The greatest common divisor of two integers (Stein's algorithm). - -- [`base.power(exponent, modulus)`][powmod]: Modular exponentiation (right-to-left binary method). - [Vanilla exponentiation][power] is also available. -- [`n.inverse(modulus)`][inverse]: Multiplicative inverse in modulo arithmetic (extended Euclidean algorithm). -- [`n.isPrime()`][prime]: Miller–Rabin primality test. - -The implementations are intended to be reasonably efficient, but they are unlikely to be -competitive with GMP at all, even when I happened to implement an algorithm with same asymptotic -behavior as GMP. (I haven't performed a comparison benchmark, though.) - -The library has 100% unit test coverage. Sadly this does not imply that there are no bugs -in it. - -## API Documentation - -Generated API docs are available at http://attaswift.github.io/BigInt/. - -## License - -BigInt can be used, distributed and modified under [the MIT license][license]. - -## Requirements and Integration - -BigInt 4.0.0 requires Swift 4.2 (The last version with support for Swift 3.x was BigInt 2.1.0. -The last version with support for Swift 2 was BigInt 1.3.0.) - -| Swift Version | last BigInt Version| -| ------------- |:-------------------| -| 3.x | 2.1.0 | -| 4.0 | 3.1.0 | -| 4.2 | 4.0.0 | -| 5.0 | 5.0.0 | - -BigInt deploys to macOS 10.10, iOS 9, watchOS 2 and tvOS 9. -It has been tested on the latest OS releases only---however, as the module uses very few platform-provided APIs, -there should be very few issues with earlier versions. - -BigInt uses no APIs specific to Apple platforms except for `arc4random_buf` in `BigUInt Random.swift`, so -it should be easy to port it to other operating systems. - -Setup instructions: - -- **Swift Package Manager:** - Although the Package Manager is still in its infancy, BigInt provides experimental support for it. - Add this to the dependency section of your `Package.swift` manifest: - - ```Swift - .package(url: "https://github.com/attaswift/BigInt.git", from: "5.0.0") - ``` - -- **CocoaPods:** Put this in your `Podfile`: - - ```Ruby - pod 'BigInt', '~> 5.0' - ``` - -- **Carthage:** Put this in your `Cartfile`: - - ``` - github "attaswift/BigInt" ~> 5.0 - ``` - -## Implementation notes - -[`BigUInt`][BigUInt] is a `MutableCollectionType` of its 64-bit digits, with the least significant -digit at index 0. As a convenience, [`BigUInt`][BigUInt] allows you to subscript it with indexes at -or above its `count`. [The subscript operator][subscript] returns 0 for out-of-bound `get`s and -automatically extends the array on out-of-bound `set`s. This makes memory management simpler. - -[`BigInt`][BigInt] is just a tiny wrapper around a `BigUInt` [absolute value][abs] and a -[sign bit][negative], both of which are accessible as public read-write properties. - -### Why is there no generic `BigInt` type? - -The types provided by `BigInt` are not parametric—this is very much intentional, as -Swift generics cost us dearly at runtime in this use case. In every approach I tried, -making arbitrary-precision arithmetic operations work with a generic `Digit` type parameter -resulted in code that was literally *ten times slower*. If you can make the algorithms generic -without such a huge performance hit, [please enlighten me][twitter]! - -This is an area that I plan to investigate more, as it would be useful to have generic -implementations for arbitrary-width arithmetic operations. (Polynomial division and decimal bases -are two examples.) The library already implements double-digit multiplication and division as -extension methods on a protocol with an associated type requirement; this has not measurably affected -performance. Unfortunately, the same is not true for `BigUInt`'s methods. - -Of course, as a last resort, we could just duplicate the code to create a separate -generic variant that was slower but more flexible. - -[license]: https://github.com/attaswift/BigInt/blob/master/LICENSE.md -[twitter]: https://twitter.com/lorentey -[BigUInt]: http://attaswift.github.io/BigInt/Structs/BigUInt.html -[BigInt]: http://attaswift.github.io/BigInt/Structs/BigInt.html -[comparison]: http://attaswift.github.io/BigInt/Structs/BigUInt.html#/Comparison -[hashing]: http://attaswift.github.io/BigInt/Structs/BigUInt.html#/Hashing -[addition]: http://attaswift.github.io/BigInt/Structs/BigUInt.html#/Addition -[subtraction]: http://attaswift.github.io/BigInt/Structs/BigUInt.html#/Subtraction -[mul]: http://attaswift.github.io/BigInt/Structs/BigUInt.html#/s:ZFV6BigInt7BigUIntoi1mFTS0_S0__S0_ -[fused]: http://attaswift.github.io/BigInt/Structs/BigUInt.html#/s:FV6BigInt7BigUInt14multiplyAndAddFTS0_Vs6UInt6410atPositionSi_T_ -[multiplication]: http://attaswift.github.io/BigInt/Structs/BigUInt.html#/Multiplication -[division]: http://attaswift.github.io/BigInt/Structs/BigUInt.html#/Division -[divide]: http://attaswift.github.io/BigInt/Structs/BigUInt.html#/s:FV6BigInt7BigUInt7dividedFT2byS0__T8quotientS0_9remainderS0__ -[bitwise]: http://attaswift.github.io/BigInt/Structs/BigUInt.html#/Bitwise%20Operations -[width]: http://attaswift.github.io/BigInt/Structs/BigUInt.html#/s:vV6BigInt7BigUInt5widthSi -[leadingZeroBitCount]: http://attaswift.github.io/BigInt/Structs/BigUInt.html#/s:vV6BigInt7BigUInt13leadingZeroBitCountSi -[trailingZeroBitCount]: http://attaswift.github.io/BigInt/Structs/BigUInt.html#/s:vV6BigInt7BigUInt14trailingZeroBitCountSi -[shift]: http://attaswift.github.io/BigInt/Structs/BigUInt.html#/Shift%20Operators -[data]: http://attaswift.github.io/BigInt/Structs/BigUInt.html#/NSData%20Conversion -[random]: http://attaswift.github.io/BigInt/Structs/BigUInt.html#/Random%20Integers -[radix1]: http://attaswift.github.io/BigInt/Extensions/String.html#/s:FE6BigIntSScFTVS_7BigUInt5radixSi9uppercaseSb_SS -[radix2]: http://attaswift.github.io/BigInt/Structs/BigUInt.html#/s:FV6BigInt7BigUIntcFTSS5radixSi_GSqS0__ -[sqrt]: http://attaswift.github.io/BigInt/Functions.html#/s:F6BigInt4sqrtFVS_7BigUIntS0_ -[GCD]: http://attaswift.github.io/BigInt/Structs/BigUInt.html#/s:ZFV6BigInt7BigUInt3gcdFTS0_S0__S0_ -[powmod]: http://attaswift.github.io/BigInt/Structs/BigUInt.html#/s:FV6BigInt7BigUInt5powerFTS0_7modulusS0__S0_ -[power]: http://attaswift.github.io/BigInt/Structs/BigUInt.html#/s:FV6BigInt7BigUInt5powerFSiS0_ -[inverse]: http://attaswift.github.io/BigInt/Structs/BigUInt.html#/s:FV6BigInt7BigUInt7inverseFS0_GSqS0__ -[prime]: http://attaswift.github.io/BigInt/Structs/BigUInt.html#/Primality%20Testing -[abs]: http://attaswift.github.io/BigInt/Structs/BigInt.html#/s:vV6BigInt6BigInt3absVS_7BigUInt -[negative]: http://attaswift.github.io/BigInt/Structs/BigInt.html#/s:vV6BigInt6BigInt8negativeSb -[subscript]: https://github.com/attaswift/BigInt/blob/v2.0.0/Sources/BigUInt.swift#L216-L239 -[fullmuldiv]: https://github.com/attaswift/BigInt/blob/v2.0.0/Sources/BigDigit.swift#L96-L167 - - -## Calculation Samples - -### Obligatory Factorial Demo - -It is easy to use `BigInt` to calculate the factorial function for any integer: - -```Swift -import BigInt - -func factorial(_ n: Int) -> BigInt { - return (1 ... n).map { BigInt($0) }.reduce(BigInt(1), *) -} - -print(factorial(10)) -==> 362880 - -print(factorial(100)) -==> 93326215443944152681699238856266700490715968264381621468592963895217599993229915 - 6089414639761565182862536979208272237582511852109168640000000000000000000000 - -print(factorial(1000)) -==> 40238726007709377354370243392300398571937486421071463254379991042993851239862902 - 05920442084869694048004799886101971960586316668729948085589013238296699445909974 - 24504087073759918823627727188732519779505950995276120874975462497043601418278094 - 64649629105639388743788648733711918104582578364784997701247663288983595573543251 - 31853239584630755574091142624174743493475534286465766116677973966688202912073791 - 43853719588249808126867838374559731746136085379534524221586593201928090878297308 - 43139284440328123155861103697680135730421616874760967587134831202547858932076716 - 91324484262361314125087802080002616831510273418279777047846358681701643650241536 - 91398281264810213092761244896359928705114964975419909342221566832572080821333186 - 11681155361583654698404670897560290095053761647584772842188967964624494516076535 - 34081989013854424879849599533191017233555566021394503997362807501378376153071277 - 61926849034352625200015888535147331611702103968175921510907788019393178114194545 - 25722386554146106289218796022383897147608850627686296714667469756291123408243920 - 81601537808898939645182632436716167621791689097799119037540312746222899880051954 - 44414282012187361745992642956581746628302955570299024324153181617210465832036786 - 90611726015878352075151628422554026517048330422614397428693306169089796848259012 - 54583271682264580665267699586526822728070757813918581788896522081643483448259932 - 66043367660176999612831860788386150279465955131156552036093988180612138558600301 - 43569452722420634463179746059468257310379008402443243846565724501440282188525247 - 09351906209290231364932734975655139587205596542287497740114133469627154228458623 - 77387538230483865688976461927383814900140767310446640259899490222221765904339901 - 88601856652648506179970235619389701786004081188972991831102117122984590164192106 - 88843871218556461249607987229085192968193723886426148396573822911231250241866493 - 53143970137428531926649875337218940694281434118520158014123344828015051399694290 - 15348307764456909907315243327828826986460278986432113908350621709500259738986355 - 42771967428222487575867657523442202075736305694988250879689281627538488633969099 - 59826280956121450994871701244516461260379029309120889086942028510640182154399457 - 15680594187274899809425474217358240106367740459574178516082923013535808184009699 - 63725242305608559037006242712434169090041536901059339838357779394109700277534720 - 00000000000000000000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000000000000000000000000000000000000000000000000000000000 - 00000 -``` - -Well, I guess that's all right, but it's not very interesting. Let's try something more useful. - -### RSA Cryptography - -The `BigInt` module provides all necessary parts to implement an (overly) -simple [RSA cryptography system][RSA]. - -[RSA]: https://en.wikipedia.org/wiki/RSA_(cryptosystem) - -Let's start with a simple function that generates a random n-bit prime. The module -includes a function to generate random integers of a specific size, and also an -`isPrime` method that performs the Miller–Rabin primality test. These are all we need: - -```Swift -func generatePrime(_ width: Int) -> BigUInt { - while true { - var random = BigUInt.randomInteger(withExactWidth: width) - random |= BigUInt(1) - if random.isPrime() { - return random - } - } -} - -let p = generatePrime(1024) -==> 13308187650642192396256419911012544845370493728424936791561478318443071617242872 - 81980956747087187419914435169914161116601678883358611076800743580556055714173922 - 08406194264346635072293912609713085260354070700055888678514690878149253177960273 - 775659537560220378850112471985434373425534121373466492101182463962031 - -let q = generatePrime(1024) -==> 17072954422657145489547308812333368925007949054501204983863958355897172093173783 - 10108226596943999553784252564650624766276133157586733504784616138305701168410157 - 80784336308507083874651158029602582993233111593356512531869546706885170044355115 - 669728424124141763799008880327106952436883614887277350838425336156327 -``` - -Cool! Now that we have two large primes, we can produce an RSA public/private keypair -out of them. - -```Swift -typealias Key = (modulus: BigUInt, exponent: BigUInt) - -let n = p * q -==> 22721008120758282530010953362926306641542233757318103044313144976976529789946696 - 15454966720907712515917481418981591379647635391260569349099666410127279690367978 - 81184375533755888994370640857883754985364288413796100527262763202679037134021810 - 57933883525572232242690805678883227791774442041516929419640051653934584376704034 - 63953169772816907280591934423237977258358097846511079947337857778137177570668391 - 57455417707100275487770399281417352829897118140972240757708561027087217205975220 - 02207275447810167397968435583004676293892340103729490987263776871467057582629588 - 916498579594964478080508868267360515953225283461208420137 - -let e: BigUInt = 65537 -let phi = (p - 1) * (q - 1) -let d = e.inverse(phi)! // d * e % phi == 1 -==> 13964664343869014759736350480776837992604500903989703383202366291905558996277719 - 77822086142456362972689566985925179681282432115598451765899180050962461295573831 - 37069237934291884106584820998146965085531433195106686745474222222620986858696591 - 69836532468835154412554521152103642453158895363417640676611704542784576974374954 - 45789456921660619938185093118762690200980720312508614337759620606992462563490422 - 76669559556568917533268479190948959560397579572761529852891246283539604545691244 - 89999692877158676643042118662613875863504016129837099223040687512684532694527109 - 80742873307409704484365002175294665608486688146261327793 - -let publicKey: Key = (n, e) -let privateKey: Key = (n, d) -``` - -In RSA, modular exponentiation is used to encrypt (and decrypt) messages. - -```Swift -func encrypt(_ message: BigUInt, key: Key) -> BigUInt { - return message.power(key.exponent, modulus: key.modulus) -} -``` - -Let's try out our new keypair by converting a string into UTF-8, interpreting -the resulting binary representation as a big integer, and encrypting it with the -public key. `BigUInt` has an initializer that takes an `NSData`, so this is pretty -easy to do: - -```Swift -let secret: BigUInt = BigUInt("Arbitrary precision arithmetic is fun!".dataUsingEncoding(NSUTF8StringEncoding)!) -==> 83323446846105976078466731524728681905293067701804838925389198929123912971229457 - 68818568737 - -let cyphertext = encrypt(secret, key: publicKey) -==> 95186982543485985200666516508066093880038842892337880561554910904277290917831453 - 54854954722744805432145474047391353716305176389470779020645959135298322520888633 - 61674945129099575943384767330342554525120384485469428048962027149169876127890306 - 77028183904699491962050888974524603226290836984166164759586952419343589385279641 - 47999991283152843977988979846238236160274201261075188190509539751990119132013021 - 74866638595734222867005089157198503204192264814750832072844208520394603054901706 - 06024394731371973402595826456435944968439153664617188570808940022471990638468783 - 49208193955207336172861151720299024935127021719852700882 -``` - -Well, it looks encrypted all right, but can we get the original message back? -In theory, encrypting the cyphertext with the private key returns the original message. -Let's see: - -```Swift -let plaintext = encrypt(cyphertext, key: privateKey) -==> 83323446846105976078466731524728681905293067701804838925389198929123912971229457 - 68818568737 - -let received = String(data: plaintext.serialize(), encoding: NSUTF8StringEncoding) -==> "Arbitrary precision arithmetic is fun!" -``` - -Yay! This is truly terrific, but please don't use this example code in an actual -cryptography system. RSA has lots of subtle (and some not so subtle) complications -that we ignored to keep this example short. - -### Calculating the Digits of π - -Another fun activity to try with `BigInt`s is to generate the digits of π. -Let's try implementing [Jeremy Gibbon's spigot algorithm][spigot]. -This is a rather slow algorithm as π-generators go, but it makes up for it with its grooviness -factor: it's remarkably short, it only uses (big) integer arithmetic, and every iteration -produces a single new digit in the base-10 representation of π. This naturally leads to an -implementation as an infinite `GeneratorType`: - -[spigot]: http://www.cs.ox.ac.uk/jeremy.gibbons/publications/spigot.pdf - -```Swift -func digitsOfPi() -> AnyGenerator { - var q: BigUInt = 1 - var r: BigUInt = 180 - var t: BigUInt = 60 - var i: UInt64 = 2 // Does not overflow until digit #826_566_842 - return AnyIterator { - let u: UInt64 = 3 * (3 * i + 1) * (3 * i + 2) - let y = (q.multiplied(byDigit: 27 * i - 12) + 5 * r) / (5 * t) - (q, r, t) = ( - 10 * q.multiplied(byDigit: i * (2 * i - 1)), - 10 * (q.multiplied(byDigit: 5 * i - 2) + r - y * t).multiplied(byDigit: u), - t.multiplied(byDigit: u)) - i += 1 - return Int(y[0]) - } -} -``` - -Well, that was surprisingly easy. But does it work? Of course it does! - -```Swift -var digits = "π ≈ " -var count = 0 -for digit in digitsOfPi() { - assert(digit < 10) - digits += String(digit) - count += 1 - if count == 1 { digits += "." } - if count == 1000 { break } -} - -digits -==> π ≈ 3.14159265358979323846264338327950288419716939937510582097494459230781640628 - 62089986280348253421170679821480865132823066470938446095505822317253594081284811 - 17450284102701938521105559644622948954930381964428810975665933446128475648233786 - 78316527120190914564856692346034861045432664821339360726024914127372458700660631 - 55881748815209209628292540917153643678925903600113305305488204665213841469519415 - 11609433057270365759591953092186117381932611793105118548074462379962749567351885 - 75272489122793818301194912983367336244065664308602139494639522473719070217986094 - 37027705392171762931767523846748184676694051320005681271452635608277857713427577 - 89609173637178721468440901224953430146549585371050792279689258923542019956112129 - 02196086403441815981362977477130996051870721134999999837297804995105973173281609 - 63185950244594553469083026425223082533446850352619311881710100031378387528865875 - 33208381420617177669147303598253490428755468731159562863882353787593751957781857 - 780532171226806613001927876611195909216420198 -``` - -Now go and have some fun with big integers on your own! diff --git a/cocoapods/Pods/BigInt/Sources/Addition.swift b/cocoapods/Pods/BigInt/Sources/Addition.swift deleted file mode 100644 index 34f4d44e..00000000 --- a/cocoapods/Pods/BigInt/Sources/Addition.swift +++ /dev/null @@ -1,126 +0,0 @@ -// -// Addition.swift -// BigInt -// -// Created by Károly Lőrentey on 2016-01-03. -// Copyright © 2016-2017 Károly Lőrentey. -// - -extension BigUInt { - //MARK: Addition - - /// Add `word` to this integer in place. - /// `word` is shifted `shift` words to the left before being added. - /// - /// - Complexity: O(max(count, shift)) - internal mutating func addWord(_ word: Word, shiftedBy shift: Int = 0) { - precondition(shift >= 0) - var carry = word - var i = shift - while carry > 0 { - let (d, c) = self[i].addingReportingOverflow(carry) - self[i] = d - carry = (c ? 1 : 0) - i += 1 - } - } - - /// Add the digit `d` to this integer and return the result. - /// `d` is shifted `shift` words to the left before being added. - /// - /// - Complexity: O(max(count, shift)) - internal func addingWord(_ word: Word, shiftedBy shift: Int = 0) -> BigUInt { - var r = self - r.addWord(word, shiftedBy: shift) - return r - } - - /// Add `b` to this integer in place. - /// `b` is shifted `shift` words to the left before being added. - /// - /// - Complexity: O(max(count, b.count + shift)) - internal mutating func add(_ b: BigUInt, shiftedBy shift: Int = 0) { - precondition(shift >= 0) - var carry = false - var bi = 0 - let bc = b.count - while bi < bc || carry { - let ai = shift + bi - let (d, c) = self[ai].addingReportingOverflow(b[bi]) - if carry { - let (d2, c2) = d.addingReportingOverflow(1) - self[ai] = d2 - carry = c || c2 - } - else { - self[ai] = d - carry = c - } - bi += 1 - } - } - - /// Add `b` to this integer and return the result. - /// `b` is shifted `shift` words to the left before being added. - /// - /// - Complexity: O(max(count, b.count + shift)) - internal func adding(_ b: BigUInt, shiftedBy shift: Int = 0) -> BigUInt { - var r = self - r.add(b, shiftedBy: shift) - return r - } - - /// Increment this integer by one. If `shift` is non-zero, it selects - /// the word that is to be incremented. - /// - /// - Complexity: O(count + shift) - internal mutating func increment(shiftedBy shift: Int = 0) { - self.addWord(1, shiftedBy: shift) - } - - /// Add `a` and `b` together and return the result. - /// - /// - Complexity: O(max(a.count, b.count)) - public static func +(a: BigUInt, b: BigUInt) -> BigUInt { - return a.adding(b) - } - - /// Add `a` and `b` together, and store the sum in `a`. - /// - /// - Complexity: O(max(a.count, b.count)) - public static func +=(a: inout BigUInt, b: BigUInt) { - a.add(b, shiftedBy: 0) - } -} - -extension BigInt { - /// Add `a` to `b` and return the result. - public static func +(a: BigInt, b: BigInt) -> BigInt { - switch (a.sign, b.sign) { - case (.plus, .plus): - return BigInt(sign: .plus, magnitude: a.magnitude + b.magnitude) - case (.minus, .minus): - return BigInt(sign: .minus, magnitude: a.magnitude + b.magnitude) - case (.plus, .minus): - if a.magnitude >= b.magnitude { - return BigInt(sign: .plus, magnitude: a.magnitude - b.magnitude) - } - else { - return BigInt(sign: .minus, magnitude: b.magnitude - a.magnitude) - } - case (.minus, .plus): - if b.magnitude >= a.magnitude { - return BigInt(sign: .plus, magnitude: b.magnitude - a.magnitude) - } - else { - return BigInt(sign: .minus, magnitude: a.magnitude - b.magnitude) - } - } - } - - /// Add `b` to `a` in place. - public static func +=(a: inout BigInt, b: BigInt) { - a = a + b - } -} - diff --git a/cocoapods/Pods/BigInt/Sources/BigInt.swift b/cocoapods/Pods/BigInt/Sources/BigInt.swift deleted file mode 100644 index 11318ffc..00000000 --- a/cocoapods/Pods/BigInt/Sources/BigInt.swift +++ /dev/null @@ -1,74 +0,0 @@ -// -// BigInt.swift -// BigInt -// -// Created by Károly Lőrentey on 2015-12-27. -// Copyright © 2016-2017 Károly Lőrentey. -// - -//MARK: BigInt - -/// An arbitary precision signed integer type, also known as a "big integer". -/// -/// Operations on big integers never overflow, but they might take a long time to execute. -/// The amount of memory (and address space) available is the only constraint to the magnitude of these numbers. -/// -/// This particular big integer type uses base-2^64 digits to represent integers. -/// -/// `BigInt` is essentially a tiny wrapper that extends `BigUInt` with a sign bit and provides signed integer -/// operations. Both the underlying absolute value and the negative/positive flag are available as read-write -/// properties. -/// -/// Not all algorithms of `BigUInt` are available for `BigInt` values; for example, there is no square root or -/// primality test for signed integers. When you need to call one of these, just extract the absolute value: -/// -/// ```Swift -/// BigInt(255).abs.isPrime() // Returns false -/// ``` -/// -public struct BigInt: SignedInteger { - public enum Sign { - case plus - case minus - } - - public typealias Magnitude = BigUInt - - /// The type representing a digit in `BigInt`'s underlying number system. - public typealias Word = BigUInt.Word - - public static var isSigned: Bool { - return true - } - - /// The absolute value of this integer. - public var magnitude: BigUInt - - /// True iff the value of this integer is negative. - public var sign: Sign - - /// Initializes a new big integer with the provided absolute number and sign flag. - public init(sign: Sign, magnitude: BigUInt) { - self.sign = (magnitude.isZero ? .plus : sign) - self.magnitude = magnitude - } - - /// Return true iff this integer is zero. - /// - /// - Complexity: O(1) - public var isZero: Bool { - return magnitude.isZero - } - - /// Returns `-1` if this value is negative and `1` if it’s positive; otherwise, `0`. - /// - /// - Returns: The sign of this number, expressed as an integer of the same type. - public func signum() -> BigInt { - switch sign { - case .plus: - return isZero ? 0 : 1 - case .minus: - return -1 - } - } -} diff --git a/cocoapods/Pods/BigInt/Sources/BigUInt.swift b/cocoapods/Pods/BigInt/Sources/BigUInt.swift deleted file mode 100644 index 81aa9a83..00000000 --- a/cocoapods/Pods/BigInt/Sources/BigUInt.swift +++ /dev/null @@ -1,386 +0,0 @@ -// -// BigUInt.swift -// BigInt -// -// Created by Károly Lőrentey on 2015-12-26. -// Copyright © 2016-2017 Károly Lőrentey. -// - -/// An arbitary precision unsigned integer type, also known as a "big integer". -/// -/// Operations on big integers never overflow, but they may take a long time to execute. -/// The amount of memory (and address space) available is the only constraint to the magnitude of these numbers. -/// -/// This particular big integer type uses base-2^64 digits to represent integers; you can think of it as a wrapper -/// around `Array`. (In fact, `BigUInt` only uses an array if there are more than two digits.) -public struct BigUInt: UnsignedInteger { - /// The type representing a digit in `BigUInt`'s underlying number system. - public typealias Word = UInt - - /// The storage variants of a `BigUInt`. - enum Kind { - /// Value consists of the two specified words (low and high). Either or both words may be zero. - case inline(Word, Word) - /// Words are stored in a slice of the storage array. - case slice(from: Int, to: Int) - /// Words are stored in the storage array. - case array - } - - internal fileprivate (set) var kind: Kind // Internal for testing only - internal fileprivate (set) var storage: [Word] // Internal for testing only; stored separately to prevent COW copies - - /// Initializes a new BigUInt with value 0. - public init() { - self.kind = .inline(0, 0) - self.storage = [] - } - - internal init(word: Word) { - self.kind = .inline(word, 0) - self.storage = [] - } - - internal init(low: Word, high: Word) { - self.kind = .inline(low, high) - self.storage = [] - } - - /// Initializes a new BigUInt with the specified digits. The digits are ordered from least to most significant. - public init(words: [Word]) { - self.kind = .array - self.storage = words - normalize() - } - - internal init(words: [Word], from startIndex: Int, to endIndex: Int) { - self.kind = .slice(from: startIndex, to: endIndex) - self.storage = words - normalize() - } -} - -extension BigUInt { - public static var isSigned: Bool { - return false - } - - /// Return true iff this integer is zero. - /// - /// - Complexity: O(1) - var isZero: Bool { - switch kind { - case .inline(0, 0): return true - case .array: return storage.isEmpty - default: - return false - } - } - - /// Returns `1` if this value is, positive; otherwise, `0`. - /// - /// - Returns: The sign of this number, expressed as an integer of the same type. - public func signum() -> BigUInt { - return isZero ? 0 : 1 - } -} - -extension BigUInt { - mutating func ensureArray() { - switch kind { - case let .inline(w0, w1): - kind = .array - storage = w1 != 0 ? [w0, w1] - : w0 != 0 ? [w0] - : [] - case let .slice(from: start, to: end): - kind = .array - storage = Array(storage[start ..< end]) - case .array: - break - } - } - - var capacity: Int { - guard case .array = kind else { return 0 } - return storage.capacity - } - - mutating func reserveCapacity(_ minimumCapacity: Int) { - switch kind { - case let .inline(w0, w1): - kind = .array - storage.reserveCapacity(minimumCapacity) - if w1 != 0 { - storage.append(w0) - storage.append(w1) - } - else if w0 != 0 { - storage.append(w0) - } - case let .slice(from: start, to: end): - kind = .array - var words: [Word] = [] - words.reserveCapacity(Swift.max(end - start, minimumCapacity)) - words.append(contentsOf: storage[start ..< end]) - storage = words - case .array: - storage.reserveCapacity(minimumCapacity) - } - } - - /// Gets rid of leading zero digits in the digit array and converts slices into inline digits when possible. - internal mutating func normalize() { - switch kind { - case .slice(from: let start, to: var end): - assert(start >= 0 && end <= storage.count && start <= end) - while start < end, storage[end - 1] == 0 { - end -= 1 - } - switch end - start { - case 0: - kind = .inline(0, 0) - storage = [] - case 1: - kind = .inline(storage[start], 0) - storage = [] - case 2: - kind = .inline(storage[start], storage[start + 1]) - storage = [] - case storage.count: - assert(start == 0) - kind = .array - default: - kind = .slice(from: start, to: end) - } - case .array where storage.last == 0: - while storage.last == 0 { - storage.removeLast() - } - default: - break - } - } - - /// Set this integer to 0 without releasing allocated storage capacity (if any). - mutating func clear() { - self.load(0) - } - - /// Set this integer to `value` by copying its digits without releasing allocated storage capacity (if any). - mutating func load(_ value: BigUInt) { - switch kind { - case .inline, .slice: - self = value - case .array: - self.storage.removeAll(keepingCapacity: true) - self.storage.append(contentsOf: value.words) - } - } -} - -extension BigUInt { - //MARK: Collection-like members - - /// The number of digits in this integer, excluding leading zero digits. - var count: Int { - switch kind { - case let .inline(w0, w1): - return w1 != 0 ? 2 - : w0 != 0 ? 1 - : 0 - case let .slice(from: start, to: end): - return end - start - case .array: - return storage.count - } - } - - /// Get or set a digit at a given index. - /// - /// - Note: Unlike a normal collection, it is OK for the index to be greater than or equal to `endIndex`. - /// The subscripting getter returns zero for indexes beyond the most significant digit. - /// Setting these extended digits automatically appends new elements to the underlying digit array. - /// - Requires: index >= 0 - /// - Complexity: The getter is O(1). The setter is O(1) if the conditions below are true; otherwise it's O(count). - /// - The integer's storage is not shared with another integer - /// - The integer wasn't created as a slice of another integer - /// - `index < count` - subscript(_ index: Int) -> Word { - get { - precondition(index >= 0) - switch (kind, index) { - case (.inline(let w0, _), 0): return w0 - case (.inline(_, let w1), 1): return w1 - case (.slice(from: let start, to: let end), _) where index < end - start: - return storage[start + index] - case (.array, _) where index < storage.count: - return storage[index] - default: - return 0 - } - } - set(word) { - precondition(index >= 0) - switch (kind, index) { - case let (.inline(_, w1), 0): - kind = .inline(word, w1) - case let (.inline(w0, _), 1): - kind = .inline(w0, word) - case let (.slice(from: start, to: end), _) where index < end - start: - replace(at: index, with: word) - case (.array, _) where index < storage.count: - replace(at: index, with: word) - default: - extend(at: index, with: word) - } - } - } - - private mutating func replace(at index: Int, with word: Word) { - ensureArray() - precondition(index < storage.count) - storage[index] = word - if word == 0, index == storage.count - 1 { - normalize() - } - } - - private mutating func extend(at index: Int, with word: Word) { - guard word != 0 else { return } - reserveCapacity(index + 1) - precondition(index >= storage.count) - storage.append(contentsOf: repeatElement(0, count: index - storage.count)) - storage.append(word) - } - - /// Returns an integer built from the digits of this integer in the given range. - internal func extract(_ bounds: Range) -> BigUInt { - switch kind { - case let .inline(w0, w1): - let bounds = bounds.clamped(to: 0 ..< 2) - if bounds == 0 ..< 2 { - return BigUInt(low: w0, high: w1) - } - else if bounds == 0 ..< 1 { - return BigUInt(word: w0) - } - else if bounds == 1 ..< 2 { - return BigUInt(word: w1) - } - else { - return BigUInt() - } - case let .slice(from: start, to: end): - let s = Swift.min(end, start + Swift.max(bounds.lowerBound, 0)) - let e = Swift.max(s, (bounds.upperBound > end - start ? end : start + bounds.upperBound)) - return BigUInt(words: storage, from: s, to: e) - case .array: - let b = bounds.clamped(to: storage.startIndex ..< storage.endIndex) - return BigUInt(words: storage, from: b.lowerBound, to: b.upperBound) - } - } - - internal func extract(_ bounds: Bounds) -> BigUInt where Bounds.Bound == Int { - return self.extract(bounds.relative(to: 0 ..< Int.max)) - } -} - -extension BigUInt { - internal mutating func shiftRight(byWords amount: Int) { - assert(amount >= 0) - guard amount > 0 else { return } - switch kind { - case let .inline(_, w1) where amount == 1: - kind = .inline(w1, 0) - case .inline(_, _): - kind = .inline(0, 0) - case let .slice(from: start, to: end): - let s = start + amount - if s >= end { - kind = .inline(0, 0) - } - else { - kind = .slice(from: s, to: end) - normalize() - } - case .array: - if amount >= storage.count { - storage.removeAll(keepingCapacity: true) - } - else { - storage.removeFirst(amount) - } - } - } - - internal mutating func shiftLeft(byWords amount: Int) { - assert(amount >= 0) - guard amount > 0 else { return } - guard !isZero else { return } - switch kind { - case let .inline(w0, 0) where amount == 1: - kind = .inline(0, w0) - case let .inline(w0, w1): - let c = (w1 == 0 ? 1 : 2) - storage.reserveCapacity(amount + c) - storage.append(contentsOf: repeatElement(0, count: amount)) - storage.append(w0) - if w1 != 0 { - storage.append(w1) - } - kind = .array - case let .slice(from: start, to: end): - var words: [Word] = [] - words.reserveCapacity(amount + count) - words.append(contentsOf: repeatElement(0, count: amount)) - words.append(contentsOf: storage[start ..< end]) - storage = words - kind = .array - case .array: - storage.insert(contentsOf: repeatElement(0, count: amount), at: 0) - } - } -} - -extension BigUInt { - //MARK: Low and High - - /// Split this integer into a high-order and a low-order part. - /// - /// - Requires: count > 1 - /// - Returns: `(low, high)` such that - /// - `self == low.add(high, shiftedBy: middleIndex)` - /// - `high.width <= floor(width / 2)` - /// - `low.width <= ceil(width / 2)` - /// - Complexity: Typically O(1), but O(count) in the worst case, because high-order zero digits need to be removed after the split. - internal var split: (high: BigUInt, low: BigUInt) { - precondition(count > 1) - let mid = middleIndex - return (self.extract(mid...), self.extract(.. 1 - internal var low: BigUInt { - return self.extract(0 ..< middleIndex) - } - - /// The high-order half of this BigUInt. - /// - /// - Returns: `self[middleIndex ..< count]` - /// - Requires: count > 1 - internal var high: BigUInt { - return self.extract(middleIndex ..< count) - } -} - diff --git a/cocoapods/Pods/BigInt/Sources/Bitwise Ops.swift b/cocoapods/Pods/BigInt/Sources/Bitwise Ops.swift deleted file mode 100644 index 0d00148b..00000000 --- a/cocoapods/Pods/BigInt/Sources/Bitwise Ops.swift +++ /dev/null @@ -1,121 +0,0 @@ -// -// Bitwise Ops.swift -// BigInt -// -// Created by Károly Lőrentey on 2016-01-03. -// Copyright © 2016-2017 Károly Lőrentey. -// - -//MARK: Bitwise Operations - -extension BigUInt { - /// Return the ones' complement of `a`. - /// - /// - Complexity: O(a.count) - public static prefix func ~(a: BigUInt) -> BigUInt { - return BigUInt(words: a.words.map { ~$0 }) - } - - /// Calculate the bitwise OR of `a` and `b`, and store the result in `a`. - /// - /// - Complexity: O(max(a.count, b.count)) - public static func |= (a: inout BigUInt, b: BigUInt) { - a.reserveCapacity(b.count) - for i in 0 ..< b.count { - a[i] |= b[i] - } - } - - /// Calculate the bitwise AND of `a` and `b` and return the result. - /// - /// - Complexity: O(max(a.count, b.count)) - public static func &= (a: inout BigUInt, b: BigUInt) { - for i in 0 ..< Swift.max(a.count, b.count) { - a[i] &= b[i] - } - } - - /// Calculate the bitwise XOR of `a` and `b` and return the result. - /// - /// - Complexity: O(max(a.count, b.count)) - public static func ^= (a: inout BigUInt, b: BigUInt) { - a.reserveCapacity(b.count) - for i in 0 ..< b.count { - a[i] ^= b[i] - } - } -} - -extension BigInt { - public static prefix func ~(x: BigInt) -> BigInt { - switch x.sign { - case .plus: - return BigInt(sign: .minus, magnitude: x.magnitude + 1) - case .minus: - return BigInt(sign: .plus, magnitude: x.magnitude - 1) - } - } - - public static func &(lhs: inout BigInt, rhs: BigInt) -> BigInt { - let left = lhs.words - let right = rhs.words - // Note we aren't using left.count/right.count here; we account for the sign bit separately later. - let count = Swift.max(lhs.magnitude.count, rhs.magnitude.count) - var words: [UInt] = [] - words.reserveCapacity(count) - for i in 0 ..< count { - words.append(left[i] & right[i]) - } - if lhs.sign == .minus && rhs.sign == .minus { - words.twosComplement() - return BigInt(sign: .minus, magnitude: BigUInt(words: words)) - } - return BigInt(sign: .plus, magnitude: BigUInt(words: words)) - } - - public static func |(lhs: inout BigInt, rhs: BigInt) -> BigInt { - let left = lhs.words - let right = rhs.words - // Note we aren't using left.count/right.count here; we account for the sign bit separately later. - let count = Swift.max(lhs.magnitude.count, rhs.magnitude.count) - var words: [UInt] = [] - words.reserveCapacity(count) - for i in 0 ..< count { - words.append(left[i] | right[i]) - } - if lhs.sign == .minus || rhs.sign == .minus { - words.twosComplement() - return BigInt(sign: .minus, magnitude: BigUInt(words: words)) - } - return BigInt(sign: .plus, magnitude: BigUInt(words: words)) - } - - public static func ^(lhs: inout BigInt, rhs: BigInt) -> BigInt { - let left = lhs.words - let right = rhs.words - // Note we aren't using left.count/right.count here; we account for the sign bit separately later. - let count = Swift.max(lhs.magnitude.count, rhs.magnitude.count) - var words: [UInt] = [] - words.reserveCapacity(count) - for i in 0 ..< count { - words.append(left[i] ^ right[i]) - } - if (lhs.sign == .minus) != (rhs.sign == .minus) { - words.twosComplement() - return BigInt(sign: .minus, magnitude: BigUInt(words: words)) - } - return BigInt(sign: .plus, magnitude: BigUInt(words: words)) - } - - public static func &=(lhs: inout BigInt, rhs: BigInt) { - lhs = lhs & rhs - } - - public static func |=(lhs: inout BigInt, rhs: BigInt) { - lhs = lhs | rhs - } - - public static func ^=(lhs: inout BigInt, rhs: BigInt) { - lhs = lhs ^ rhs - } -} diff --git a/cocoapods/Pods/BigInt/Sources/Codable.swift b/cocoapods/Pods/BigInt/Sources/Codable.swift deleted file mode 100644 index b53b30be..00000000 --- a/cocoapods/Pods/BigInt/Sources/Codable.swift +++ /dev/null @@ -1,155 +0,0 @@ -// -// Codable.swift -// BigInt -// -// Created by Károly Lőrentey on 2017-8-11. -// Copyright © 2016-2017 Károly Lőrentey. -// - - -// Little-endian to big-endian -struct Units: RandomAccessCollection -where Words.Element: FixedWidthInteger, Words.Index == Int { - typealias Word = Words.Element - let words: Words - init(of type: Unit.Type, _ words: Words) { - precondition(Word.bitWidth % Unit.bitWidth == 0 || Unit.bitWidth % Word.bitWidth == 0) - self.words = words - } - var count: Int { return (words.count * Word.bitWidth + Unit.bitWidth - 1) / Unit.bitWidth } - var startIndex: Int { return 0 } - var endIndex: Int { return count } - subscript(_ index: Int) -> Unit { - let index = count - 1 - index - if Unit.bitWidth == Word.bitWidth { - return Unit(words[index]) - } - else if Unit.bitWidth > Word.bitWidth { - let c = Unit.bitWidth / Word.bitWidth - var unit: Unit = 0 - var j = 0 - for i in (c * index) ..< Swift.min(c * (index + 1), words.endIndex) { - unit |= Unit(words[i]) << j - j += Word.bitWidth - } - return unit - } - // Unit.bitWidth < Word.bitWidth - let c = Word.bitWidth / Unit.bitWidth - let i = index / c - let j = index % c - return Unit(truncatingIfNeeded: words[i] >> (j * Unit.bitWidth)) - } -} - -extension Array where Element: FixedWidthInteger { - // Big-endian to little-endian - init(count: Int?, generator: () throws -> Unit?) rethrows { - typealias Word = Element - precondition(Word.bitWidth % Unit.bitWidth == 0 || Unit.bitWidth % Word.bitWidth == 0) - self = [] - if Unit.bitWidth == Word.bitWidth { - if let count = count { - self.reserveCapacity(count) - } - while let unit = try generator() { - self.append(Word(unit)) - } - } - else if Unit.bitWidth > Word.bitWidth { - let wordsPerUnit = Unit.bitWidth / Word.bitWidth - if let count = count { - self.reserveCapacity(count * wordsPerUnit) - } - while let unit = try generator() { - var shift = Unit.bitWidth - Word.bitWidth - while shift >= 0 { - self.append(Word(truncatingIfNeeded: unit >> shift)) - shift -= Word.bitWidth - } - } - } - else { - let unitsPerWord = Word.bitWidth / Unit.bitWidth - if let count = count { - self.reserveCapacity((count + unitsPerWord - 1) / unitsPerWord) - } - var word: Word = 0 - var c = 0 - while let unit = try generator() { - word <<= Unit.bitWidth - word |= Word(unit) - c += Unit.bitWidth - if c == Word.bitWidth { - self.append(word) - word = 0 - c = 0 - } - } - if c > 0 { - self.append(word << c) - var shifted: Word = 0 - for i in self.indices { - let word = self[i] - self[i] = shifted | (word >> c) - shifted = word << (Word.bitWidth - c) - } - } - } - self.reverse() - } -} - -extension BigInt: Codable { - public init(from decoder: Decoder) throws { - var container = try decoder.unkeyedContainer() - - // Decode sign - let sign: BigInt.Sign - switch try container.decode(String.self) { - case "+": - sign = .plus - case "-": - sign = .minus - default: - throw DecodingError.dataCorrupted(.init(codingPath: container.codingPath, - debugDescription: "Invalid big integer sign")) - } - - // Decode magnitude - let words = try [UInt](count: container.count?.advanced(by: -1)) { () -> UInt64? in - guard !container.isAtEnd else { return nil } - return try container.decode(UInt64.self) - } - let magnitude = BigUInt(words: words) - - self.init(sign: sign, magnitude: magnitude) - } - - public func encode(to encoder: Encoder) throws { - var container = encoder.unkeyedContainer() - try container.encode(sign == .plus ? "+" : "-") - let units = Units(of: UInt64.self, self.magnitude.words) - if units.isEmpty { - try container.encode(0 as UInt64) - } - else { - try container.encode(contentsOf: units) - } - } -} - -extension BigUInt: Codable { - public init(from decoder: Decoder) throws { - let value = try BigInt(from: decoder) - guard value.sign == .plus else { - throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, - debugDescription: "BigUInt cannot hold a negative value")) - } - self = value.magnitude - } - - public func encode(to encoder: Encoder) throws { - try BigInt(sign: .plus, magnitude: self).encode(to: encoder) - } -} diff --git a/cocoapods/Pods/BigInt/Sources/Comparable.swift b/cocoapods/Pods/BigInt/Sources/Comparable.swift deleted file mode 100644 index d9ab87e7..00000000 --- a/cocoapods/Pods/BigInt/Sources/Comparable.swift +++ /dev/null @@ -1,63 +0,0 @@ -// -// Comparable.swift -// BigInt -// -// Created by Károly Lőrentey on 2016-01-03. -// Copyright © 2016-2017 Károly Lőrentey. -// - -import Foundation - -extension BigUInt: Comparable { - //MARK: Comparison - - /// Compare `a` to `b` and return an `NSComparisonResult` indicating their order. - /// - /// - Complexity: O(count) - public static func compare(_ a: BigUInt, _ b: BigUInt) -> ComparisonResult { - if a.count != b.count { return a.count > b.count ? .orderedDescending : .orderedAscending } - for i in (0 ..< a.count).reversed() { - let ad = a[i] - let bd = b[i] - if ad != bd { return ad > bd ? .orderedDescending : .orderedAscending } - } - return .orderedSame - } - - /// Return true iff `a` is equal to `b`. - /// - /// - Complexity: O(count) - public static func ==(a: BigUInt, b: BigUInt) -> Bool { - return BigUInt.compare(a, b) == .orderedSame - } - - /// Return true iff `a` is less than `b`. - /// - /// - Complexity: O(count) - public static func <(a: BigUInt, b: BigUInt) -> Bool { - return BigUInt.compare(a, b) == .orderedAscending - } -} - -extension BigInt { - /// Return true iff `a` is equal to `b`. - public static func ==(a: BigInt, b: BigInt) -> Bool { - return a.sign == b.sign && a.magnitude == b.magnitude - } - - /// Return true iff `a` is less than `b`. - public static func <(a: BigInt, b: BigInt) -> Bool { - switch (a.sign, b.sign) { - case (.plus, .plus): - return a.magnitude < b.magnitude - case (.plus, .minus): - return false - case (.minus, .plus): - return true - case (.minus, .minus): - return a.magnitude > b.magnitude - } - } -} - - diff --git a/cocoapods/Pods/BigInt/Sources/Data Conversion.swift b/cocoapods/Pods/BigInt/Sources/Data Conversion.swift deleted file mode 100644 index e21b7bb0..00000000 --- a/cocoapods/Pods/BigInt/Sources/Data Conversion.swift +++ /dev/null @@ -1,110 +0,0 @@ -// -// Data Conversion.swift -// BigInt -// -// Created by Károly Lőrentey on 2016-01-04. -// Copyright © 2016-2017 Károly Lőrentey. -// - -import Foundation - -extension BigUInt { - //MARK: NSData Conversion - - public init(_ buffer: UnsafeRawBufferPointer) { - // This assumes Word is binary. - precondition(Word.bitWidth % 8 == 0) - - self.init() - - let length = buffer.count - guard length > 0 else { return } - let bytesPerDigit = Word.bitWidth / 8 - var index = length / bytesPerDigit - var c = bytesPerDigit - length % bytesPerDigit - if c == bytesPerDigit { - c = 0 - index -= 1 - } - - var word: Word = 0 - for byte in buffer { - word <<= 8 - word += Word(byte) - c += 1 - if c == bytesPerDigit { - self[index] = word - index -= 1 - c = 0 - word = 0 - } - } - assert(c == 0 && word == 0 && index == -1) - } - - - /// Initializes an integer from the bits stored inside a piece of `Data`. - /// The data is assumed to be in network (big-endian) byte order. - public init(_ data: Data) { - // This assumes Word is binary. - precondition(Word.bitWidth % 8 == 0) - - self.init() - - let length = data.count - guard length > 0 else { return } - let bytesPerDigit = Word.bitWidth / 8 - var index = length / bytesPerDigit - var c = bytesPerDigit - length % bytesPerDigit - if c == bytesPerDigit { - c = 0 - index -= 1 - } - let word: Word = data.withUnsafeBytes { buffPtr in - var word: Word = 0 - let p = buffPtr.bindMemory(to: UInt8.self) - for byte in p { - word <<= 8 - word += Word(byte) - c += 1 - if c == bytesPerDigit { - self[index] = word - index -= 1 - c = 0 - word = 0 - } - } - return word - } - assert(c == 0 && word == 0 && index == -1) - } - - /// Return a `Data` value that contains the base-256 representation of this integer, in network (big-endian) byte order. - public func serialize() -> Data { - // This assumes Digit is binary. - precondition(Word.bitWidth % 8 == 0) - - let byteCount = (self.bitWidth + 7) / 8 - - guard byteCount > 0 else { return Data() } - - var data = Data(count: byteCount) - data.withUnsafeMutableBytes { buffPtr in - let p = buffPtr.bindMemory(to: UInt8.self) - var i = byteCount - 1 - for var word in self.words { - for _ in 0 ..< Word.bitWidth / 8 { - p[i] = UInt8(word & 0xFF) - word >>= 8 - if i == 0 { - assert(word == 0) - break - } - i -= 1 - } - } - } - return data - } -} - diff --git a/cocoapods/Pods/BigInt/Sources/Division.swift b/cocoapods/Pods/BigInt/Sources/Division.swift deleted file mode 100644 index 4393f52e..00000000 --- a/cocoapods/Pods/BigInt/Sources/Division.swift +++ /dev/null @@ -1,374 +0,0 @@ -// -// Division.swift -// BigInt -// -// Created by Károly Lőrentey on 2016-01-03. -// Copyright © 2016-2017 Károly Lőrentey. -// - -//MARK: Full-width multiplication and division - -extension FixedWidthInteger where Magnitude == Self { - private var halfShift: Self { - return Self(Self.bitWidth / 2) - - } - private var high: Self { - return self &>> halfShift - } - - private var low: Self { - let mask: Self = 1 &<< halfShift - 1 - return self & mask - } - - private var upshifted: Self { - return self &<< halfShift - } - - private var split: (high: Self, low: Self) { - return (self.high, self.low) - } - - private init(_ value: (high: Self, low: Self)) { - self = value.high.upshifted + value.low - } - - /// Divide the double-width integer `dividend` by `self` and return the quotient and remainder. - /// - /// - Requires: `dividend.high < self`, so that the result will fit in a single digit. - /// - Complexity: O(1) with 2 divisions, 6 multiplications and ~12 or so additions/subtractions. - internal func fastDividingFullWidth(_ dividend: (high: Self, low: Self.Magnitude)) -> (quotient: Self, remainder: Self) { - // Division is complicated; doing it with single-digit operations is maddeningly complicated. - // This is a Swift adaptation for "divlu2" in Hacker's Delight, - // which is in turn a C adaptation of Knuth's Algorithm D (TAOCP vol 2, 4.3.1). - precondition(dividend.high < self) - - // This replaces the implementation in stdlib, which is much slower. - // FIXME: Speed up stdlib. It should use full-width idiv on Intel processors, and - // fall back to a reasonably fast algorithm elsewhere. - - // The trick here is that we're actually implementing a 4/2 long division using half-words, - // with the long division loop unrolled into two 3/2 half-word divisions. - // Luckily, 3/2 half-word division can be approximated by a single full-word division operation - // that, when the divisor is normalized, differs from the correct result by at most 2. - - /// Find the half-word quotient in `u / vn`, which must be normalized. - /// `u` contains three half-words in the two halves of `u.high` and the lower half of - /// `u.low`. (The weird distribution makes for a slightly better fit with the input.) - /// `vn` contains the normalized divisor, consisting of two half-words. - /// - /// - Requires: u.high < vn && u.low.high == 0 && vn.leadingZeroBitCount == 0 - func quotient(dividing u: (high: Self, low: Self), by vn: Self) -> Self { - let (vn1, vn0) = vn.split - // Get approximate quotient. - let (q, r) = u.high.quotientAndRemainder(dividingBy: vn1) - let p = q * vn0 - // q is often already correct, but sometimes the approximation overshoots by at most 2. - // The code that follows checks for this while being careful to only perform single-digit operations. - if q.high == 0 && p <= r.upshifted + u.low { return q } - let r2 = r + vn1 - if r2.high != 0 { return q - 1 } - if (q - 1).high == 0 && p - vn0 <= r2.upshifted + u.low { return q - 1 } - //assert((r + 2 * vn1).high != 0 || p - 2 * vn0 <= (r + 2 * vn1).upshifted + u.low) - return q - 2 - } - /// Divide 3 half-digits by 2 half-digits to get a half-digit quotient and a full-digit remainder. - /// - /// - Requires: u.high < v && u.low.high == 0 && vn.width = width(Digit) - func quotientAndRemainder(dividing u: (high: Self, low: Self), by v: Self) -> (quotient: Self, remainder: Self) { - let q = quotient(dividing: u, by: v) - // Note that `uh.low` masks off a couple of bits, and `q * v` and the - // subtraction are likely to overflow. Despite this, the end result (remainder) will - // still be correct and it will fit inside a single (full) Digit. - let r = Self(u) &- q &* v - assert(r < v) - return (q, r) - } - - // Normalize the dividend and the divisor (self) such that the divisor has no leading zeroes. - let z = Self(self.leadingZeroBitCount) - let w = Self(Self.bitWidth) - z - let vn = self << z - - let un32 = (z == 0 ? dividend.high : (dividend.high &<< z) | (dividend.low &>> w)) // No bits are lost - let un10 = dividend.low &<< z - let (un1, un0) = un10.split - - // Divide `(un32,un10)` by `vn`, splitting the full 4/2 division into two 3/2 ones. - let (q1, un21) = quotientAndRemainder(dividing: (un32, un1), by: vn) - let (q0, rn) = quotientAndRemainder(dividing: (un21, un0), by: vn) - - // Undo normalization of the remainder and combine the two halves of the quotient. - let mod = rn >> z - let div = Self((q1, q0)) - return (div, mod) - } - - /// Return the quotient of the 3/2-word division `x/y` as a single word. - /// - /// - Requires: (x.0, x.1) <= y && y.0.high != 0 - /// - Returns: The exact value when it fits in a single word, otherwise `Self`. - static func approximateQuotient(dividing x: (Self, Self, Self), by y: (Self, Self)) -> Self { - // Start with q = (x.0, x.1) / y.0, (or Word.max on overflow) - var q: Self - var r: Self - if x.0 == y.0 { - q = Self.max - let (s, o) = x.0.addingReportingOverflow(x.1) - if o { return q } - r = s - } - else { - (q, r) = y.0.fastDividingFullWidth((x.0, x.1)) - } - // Now refine q by considering x.2 and y.1. - // Note that since y is normalized, q * y - x is between 0 and 2. - let (ph, pl) = q.multipliedFullWidth(by: y.1) - if ph < r || (ph == r && pl <= x.2) { return q } - - let (r1, ro) = r.addingReportingOverflow(y.0) - if ro { return q - 1 } - - let (pl1, so) = pl.subtractingReportingOverflow(y.1) - let ph1 = (so ? ph - 1 : ph) - - if ph1 < r1 || (ph1 == r1 && pl1 <= x.2) { return q - 1 } - return q - 2 - } -} - -extension BigUInt { - //MARK: Division - - /// Divide this integer by the word `y`, leaving the quotient in its place and returning the remainder. - /// - /// - Requires: y > 0 - /// - Complexity: O(count) - internal mutating func divide(byWord y: Word) -> Word { - precondition(y > 0) - if y == 1 { return 0 } - - var remainder: Word = 0 - for i in (0 ..< count).reversed() { - let u = self[i] - (self[i], remainder) = y.fastDividingFullWidth((remainder, u)) - } - return remainder - } - - /// Divide this integer by the word `y` and return the resulting quotient and remainder. - /// - /// - Requires: y > 0 - /// - Returns: (quotient, remainder) where quotient = floor(x/y), remainder = x - quotient * y - /// - Complexity: O(x.count) - internal func quotientAndRemainder(dividingByWord y: Word) -> (quotient: BigUInt, remainder: Word) { - var div = self - let mod = div.divide(byWord: y) - return (div, mod) - } - - /// Divide `x` by `y`, putting the quotient in `x` and the remainder in `y`. - /// Reusing integers like this reduces the number of allocations during the calculation. - static func divide(_ x: inout BigUInt, by y: inout BigUInt) { - // This is a Swift adaptation of "divmnu" from Hacker's Delight, which is in - // turn a C adaptation of Knuth's Algorithm D (TAOCP vol 2, 4.3.1). - - precondition(!y.isZero) - - // First, let's take care of the easy cases. - if x < y { - (x, y) = (0, x) - return - } - if y.count == 1 { - // The single-word case reduces to a simpler loop. - y = BigUInt(x.divide(byWord: y[0])) - return - } - - // In the hard cases, we will perform the long division algorithm we learned in school. - // It works by successively calculating the single-word quotient of the top y.count + 1 - // words of x divided by y, replacing the top of x with the remainder, and repeating - // the process one word lower. - // - // The tricky part is that the algorithm needs to be able to do n+1/n word divisions, - // but we only have a primitive for dividing two words by a single - // word. (Remember that this step is also tricky when we do it on paper!) - // - // The solution is that the long division can be approximated by a single full division - // using just the most significant words. We can then use multiplications and - // subtractions to refine the approximation until we get the correct quotient word. - // - // We could do this by doing a simple 2/1 full division, but Knuth goes one step further, - // and implements a 3/2 division. This results in an exact approximation in the - // vast majority of cases, eliminating an extra subtraction over big integers. - // - // The function `approximateQuotient` above implements Knuth's 3/2 division algorithm. - // It requires that the divisor's most significant word is larger than - // Word.max / 2. This ensures that the approximation has tiny error bounds, - // which is what makes this entire approach viable. - // To satisfy this requirement, we will normalize the division by multiplying - // both the divisor and the dividend by the same (small) factor. - let z = y.leadingZeroBitCount - y <<= z - x <<= z // We'll calculate the remainder in the normalized dividend. - var quotient = BigUInt() - assert(y.leadingZeroBitCount == 0) - - // We're ready to start the long division! - let dc = y.count - let d1 = y[dc - 1] - let d0 = y[dc - 2] - var product: BigUInt = 0 - for j in (dc ... x.count).reversed() { - // Approximate dividing the top dc+1 words of `remainder` using the topmost 3/2 words. - let r2 = x[j] - let r1 = x[j - 1] - let r0 = x[j - 2] - let q = Word.approximateQuotient(dividing: (r2, r1, r0), by: (d1, d0)) - - // Multiply the entire divisor with `q` and subtract the result from remainder. - // Normalization ensures the 3/2 quotient will either be exact for the full division, or - // it may overshoot by at most 1, in which case the product will be greater - // than the remainder. - product.load(y) - product.multiply(byWord: q) - if product <= x.extract(j - dc ..< j + 1) { - x.subtract(product, shiftedBy: j - dc) - quotient[j - dc] = q - } - else { - // This case is extremely rare -- it has a probability of 1/2^(Word.bitWidth - 1). - x.add(y, shiftedBy: j - dc) - x.subtract(product, shiftedBy: j - dc) - quotient[j - dc] = q - 1 - } - } - // The remainder's normalization needs to be undone, but otherwise we're done. - x >>= z - y = x - x = quotient - } - - /// Divide `x` by `y`, putting the remainder in `x`. - mutating func formRemainder(dividingBy y: BigUInt, normalizedBy shift: Int) { - precondition(!y.isZero) - assert(y.leadingZeroBitCount == 0) - if y.count == 1 { - let remainder = self.divide(byWord: y[0] >> shift) - self.load(BigUInt(remainder)) - return - } - self <<= shift - if self >= y { - let dc = y.count - let d1 = y[dc - 1] - let d0 = y[dc - 2] - var product: BigUInt = 0 - for j in (dc ... self.count).reversed() { - let r2 = self[j] - let r1 = self[j - 1] - let r0 = self[j - 2] - let q = Word.approximateQuotient(dividing: (r2, r1, r0), by: (d1, d0)) - product.load(y) - product.multiply(byWord: q) - if product <= self.extract(j - dc ..< j + 1) { - self.subtract(product, shiftedBy: j - dc) - } - else { - self.add(y, shiftedBy: j - dc) - self.subtract(product, shiftedBy: j - dc) - } - } - } - self >>= shift - } - - - /// Divide this integer by `y` and return the resulting quotient and remainder. - /// - /// - Requires: `y > 0` - /// - Returns: `(quotient, remainder)` where `quotient = floor(self/y)`, `remainder = self - quotient * y` - /// - Complexity: O(count^2) - public func quotientAndRemainder(dividingBy y: BigUInt) -> (quotient: BigUInt, remainder: BigUInt) { - var x = self - var y = y - BigUInt.divide(&x, by: &y) - return (x, y) - } - - /// Divide `x` by `y` and return the quotient. - /// - /// - Note: Use `divided(by:)` if you also need the remainder. - public static func /(x: BigUInt, y: BigUInt) -> BigUInt { - return x.quotientAndRemainder(dividingBy: y).quotient - } - - /// Divide `x` by `y` and return the remainder. - /// - /// - Note: Use `divided(by:)` if you also need the remainder. - public static func %(x: BigUInt, y: BigUInt) -> BigUInt { - var x = x - let shift = y.leadingZeroBitCount - x.formRemainder(dividingBy: y << shift, normalizedBy: shift) - return x - } - - /// Divide `x` by `y` and store the quotient in `x`. - /// - /// - Note: Use `divided(by:)` if you also need the remainder. - public static func /=(x: inout BigUInt, y: BigUInt) { - var y = y - BigUInt.divide(&x, by: &y) - } - - /// Divide `x` by `y` and store the remainder in `x`. - /// - /// - Note: Use `divided(by:)` if you also need the remainder. - public static func %=(x: inout BigUInt, y: BigUInt) { - let shift = y.leadingZeroBitCount - x.formRemainder(dividingBy: y << shift, normalizedBy: shift) - } -} - -extension BigInt { - /// Divide this integer by `y` and return the resulting quotient and remainder. - /// - /// - Requires: `y > 0` - /// - Returns: `(quotient, remainder)` where `quotient = floor(self/y)`, `remainder = self - quotient * y` - /// - Complexity: O(count^2) - public func quotientAndRemainder(dividingBy y: BigInt) -> (quotient: BigInt, remainder: BigInt) { - var a = self.magnitude - var b = y.magnitude - BigUInt.divide(&a, by: &b) - return (BigInt(sign: self.sign == y.sign ? .plus : .minus, magnitude: a), - BigInt(sign: self.sign, magnitude: b)) - } - - /// Divide `a` by `b` and return the quotient. Traps if `b` is zero. - public static func /(a: BigInt, b: BigInt) -> BigInt { - return BigInt(sign: a.sign == b.sign ? .plus : .minus, magnitude: a.magnitude / b.magnitude) - } - - /// Divide `a` by `b` and return the remainder. The result has the same sign as `a`. - public static func %(a: BigInt, b: BigInt) -> BigInt { - return BigInt(sign: a.sign, magnitude: a.magnitude % b.magnitude) - } - - /// Return the result of `a` mod `b`. The result is always a nonnegative integer that is less than the absolute value of `b`. - public func modulus(_ mod: BigInt) -> BigInt { - let remainder = self.magnitude % mod.magnitude - return BigInt( - self.sign == .minus && !remainder.isZero - ? mod.magnitude - remainder - : remainder) - } -} - -extension BigInt { - /// Divide `a` by `b` storing the quotient in `a`. - public static func /=(a: inout BigInt, b: BigInt) { a = a / b } - /// Divide `a` by `b` storing the remainder in `a`. - public static func %=(a: inout BigInt, b: BigInt) { a = a % b } -} diff --git a/cocoapods/Pods/BigInt/Sources/Exponentiation.swift b/cocoapods/Pods/BigInt/Sources/Exponentiation.swift deleted file mode 100644 index 9d7ee85d..00000000 --- a/cocoapods/Pods/BigInt/Sources/Exponentiation.swift +++ /dev/null @@ -1,119 +0,0 @@ -// -// Exponentiation.swift -// BigInt -// -// Created by Károly Lőrentey on 2016-01-03. -// Copyright © 2016-2017 Károly Lőrentey. -// - -extension BigUInt { - //MARK: Exponentiation - - /// Returns this integer raised to the power `exponent`. - /// - /// This function calculates the result by [successively squaring the base while halving the exponent][expsqr]. - /// - /// [expsqr]: https://en.wikipedia.org/wiki/Exponentiation_by_squaring - /// - /// - Note: This function can be unreasonably expensive for large exponents, which is why `exponent` is - /// a simple integer value. If you want to calculate big exponents, you'll probably need to use - /// the modulo arithmetic variant. - /// - Returns: 1 if `exponent == 0`, otherwise `self` raised to `exponent`. (This implies that `0.power(0) == 1`.) - /// - SeeAlso: `BigUInt.power(_:, modulus:)` - /// - Complexity: O((exponent * self.count)^log2(3)) or somesuch. The result may require a large amount of memory, too. - public func power(_ exponent: Int) -> BigUInt { - if exponent == 0 { return 1 } - if exponent == 1 { return self } - if exponent < 0 { - precondition(!self.isZero) - return self == 1 ? 1 : 0 - } - if self <= 1 { return self } - var result = BigUInt(1) - var b = self - var e = exponent - while e > 0 { - if e & 1 == 1 { - result *= b - } - e >>= 1 - b *= b - } - return result - } - - /// Returns the remainder of this integer raised to the power `exponent` in modulo arithmetic under `modulus`. - /// - /// Uses the [right-to-left binary method][rtlb]. - /// - /// [rtlb]: https://en.wikipedia.org/wiki/Modular_exponentiation#Right-to-left_binary_method - /// - /// - Complexity: O(exponent.count * modulus.count^log2(3)) or somesuch - public func power(_ exponent: BigUInt, modulus: BigUInt) -> BigUInt { - precondition(!modulus.isZero) - if modulus == (1 as BigUInt) { return 0 } - let shift = modulus.leadingZeroBitCount - let normalizedModulus = modulus << shift - var result = BigUInt(1) - var b = self - b.formRemainder(dividingBy: normalizedModulus, normalizedBy: shift) - for var e in exponent.words { - for _ in 0 ..< Word.bitWidth { - if e & 1 == 1 { - result *= b - result.formRemainder(dividingBy: normalizedModulus, normalizedBy: shift) - } - e >>= 1 - b *= b - b.formRemainder(dividingBy: normalizedModulus, normalizedBy: shift) - } - } - return result - } -} - -extension BigInt { - /// Returns this integer raised to the power `exponent`. - /// - /// This function calculates the result by [successively squaring the base while halving the exponent][expsqr]. - /// - /// [expsqr]: https://en.wikipedia.org/wiki/Exponentiation_by_squaring - /// - /// - Note: This function can be unreasonably expensive for large exponents, which is why `exponent` is - /// a simple integer value. If you want to calculate big exponents, you'll probably need to use - /// the modulo arithmetic variant. - /// - Returns: 1 if `exponent == 0`, otherwise `self` raised to `exponent`. (This implies that `0.power(0) == 1`.) - /// - SeeAlso: `BigUInt.power(_:, modulus:)` - /// - Complexity: O((exponent * self.count)^log2(3)) or somesuch. The result may require a large amount of memory, too. - public func power(_ exponent: Int) -> BigInt { - return BigInt(sign: self.sign == .minus && exponent & 1 != 0 ? .minus : .plus, - magnitude: self.magnitude.power(exponent)) - } - - /// Returns the remainder of this integer raised to the power `exponent` in modulo arithmetic under `modulus`. - /// - /// Uses the [right-to-left binary method][rtlb]. - /// - /// [rtlb]: https://en.wikipedia.org/wiki/Modular_exponentiation#Right-to-left_binary_method - /// - /// - Complexity: O(exponent.count * modulus.count^log2(3)) or somesuch - public func power(_ exponent: BigInt, modulus: BigInt) -> BigInt { - precondition(!modulus.isZero) - if modulus.magnitude == 1 { return 0 } - if exponent.isZero { return 1 } - if exponent == 1 { return self.modulus(modulus) } - if exponent < 0 { - precondition(!self.isZero) - guard magnitude == 1 else { return 0 } - guard sign == .minus else { return 1 } - guard exponent.magnitude[0] & 1 != 0 else { return 1 } - return BigInt(modulus.magnitude - 1) - } - let power = self.magnitude.power(exponent.magnitude, - modulus: modulus.magnitude) - if self.sign == .plus || exponent.magnitude[0] & 1 == 0 || power.isZero { - return BigInt(power) - } - return BigInt(modulus.magnitude - power) - } -} diff --git a/cocoapods/Pods/BigInt/Sources/Floating Point Conversion.swift b/cocoapods/Pods/BigInt/Sources/Floating Point Conversion.swift deleted file mode 100644 index 6c2395a3..00000000 --- a/cocoapods/Pods/BigInt/Sources/Floating Point Conversion.swift +++ /dev/null @@ -1,73 +0,0 @@ -// -// Floating Point Conversion.swift -// BigInt -// -// Created by Károly Lőrentey on 2017-08-11. -// Copyright © 2016-2017 Károly Lőrentey. -// - -extension BigUInt { - public init?(exactly source: T) { - guard source.isFinite else { return nil } - guard !source.isZero else { self = 0; return } - guard source.sign == .plus else { return nil } - let value = source.rounded(.towardZero) - guard value == source else { return nil } - assert(value.floatingPointClass == .positiveNormal) - assert(value.exponent >= 0) - let significand = value.significandBitPattern - self = (BigUInt(1) << value.exponent) + BigUInt(significand) >> (T.significandBitCount - Int(value.exponent)) - } - - public init(_ source: T) { - self.init(exactly: source.rounded(.towardZero))! - } -} - -extension BigInt { - public init?(exactly source: T) { - switch source.sign{ - case .plus: - guard let magnitude = BigUInt(exactly: source) else { return nil } - self = BigInt(sign: .plus, magnitude: magnitude) - case .minus: - guard let magnitude = BigUInt(exactly: -source) else { return nil } - self = BigInt(sign: .minus, magnitude: magnitude) - } - } - - public init(_ source: T) { - self.init(exactly: source.rounded(.towardZero))! - } -} - -extension BinaryFloatingPoint where RawExponent: FixedWidthInteger, RawSignificand: FixedWidthInteger { - public init(_ value: BigInt) { - guard !value.isZero else { self = 0; return } - let v = value.magnitude - let bitWidth = v.bitWidth - var exponent = bitWidth - 1 - let shift = bitWidth - Self.significandBitCount - 1 - var significand = value.magnitude >> (shift - 1) - if significand[0] & 3 == 3 { // Handle rounding - significand >>= 1 - significand += 1 - if significand.trailingZeroBitCount >= Self.significandBitCount { - exponent += 1 - } - } - else { - significand >>= 1 - } - let bias = 1 << (Self.exponentBitCount - 1) - 1 - guard exponent <= bias else { self = Self.infinity; return } - significand &= 1 << Self.significandBitCount - 1 - self = Self.init(sign: value.sign == .plus ? .plus : .minus, - exponentBitPattern: RawExponent(bias + exponent), - significandBitPattern: RawSignificand(significand)) - } - - public init(_ value: BigUInt) { - self.init(BigInt(sign: .plus, magnitude: value)) - } -} diff --git a/cocoapods/Pods/BigInt/Sources/GCD.swift b/cocoapods/Pods/BigInt/Sources/GCD.swift deleted file mode 100644 index d55605dc..00000000 --- a/cocoapods/Pods/BigInt/Sources/GCD.swift +++ /dev/null @@ -1,80 +0,0 @@ -// -// GCD.swift -// BigInt -// -// Created by Károly Lőrentey on 2016-01-03. -// Copyright © 2016-2017 Károly Lőrentey. -// - -extension BigUInt { - //MARK: Greatest Common Divisor - - /// Returns the greatest common divisor of `self` and `b`. - /// - /// - Complexity: O(count^2) where count = max(self.count, b.count) - public func greatestCommonDivisor(with b: BigUInt) -> BigUInt { - // This is Stein's algorithm: https://en.wikipedia.org/wiki/Binary_GCD_algorithm - if self.isZero { return b } - if b.isZero { return self } - - let az = self.trailingZeroBitCount - let bz = b.trailingZeroBitCount - let twos = Swift.min(az, bz) - - var (x, y) = (self >> az, b >> bz) - if x < y { swap(&x, &y) } - - while !x.isZero { - x >>= x.trailingZeroBitCount - if x < y { swap(&x, &y) } - x -= y - } - return y << twos - } - - /// Returns the [multiplicative inverse of this integer in modulo `modulus` arithmetic][inverse], - /// or `nil` if there is no such number. - /// - /// [inverse]: https://en.wikipedia.org/wiki/Extended_Euclidean_algorithm#Modular_integers - /// - /// - Returns: If `gcd(self, modulus) == 1`, the value returned is an integer `a < modulus` such that `(a * self) % modulus == 1`. If `self` and `modulus` aren't coprime, the return value is `nil`. - /// - Requires: modulus > 1 - /// - Complexity: O(count^3) - public func inverse(_ modulus: BigUInt) -> BigUInt? { - precondition(modulus > 1) - var t1 = BigInt(0) - var t2 = BigInt(1) - var r1 = modulus - var r2 = self - while !r2.isZero { - let quotient = r1 / r2 - (t1, t2) = (t2, t1 - BigInt(quotient) * t2) - (r1, r2) = (r2, r1 - quotient * r2) - } - if r1 > 1 { return nil } - if t1.sign == .minus { return modulus - t1.magnitude } - return t1.magnitude - } -} - -extension BigInt { - /// Returns the greatest common divisor of `a` and `b`. - /// - /// - Complexity: O(count^2) where count = max(a.count, b.count) - public func greatestCommonDivisor(with b: BigInt) -> BigInt { - return BigInt(self.magnitude.greatestCommonDivisor(with: b.magnitude)) - } - - /// Returns the [multiplicative inverse of this integer in modulo `modulus` arithmetic][inverse], - /// or `nil` if there is no such number. - /// - /// [inverse]: https://en.wikipedia.org/wiki/Extended_Euclidean_algorithm#Modular_integers - /// - /// - Returns: If `gcd(self, modulus) == 1`, the value returned is an integer `a < modulus` such that `(a * self) % modulus == 1`. If `self` and `modulus` aren't coprime, the return value is `nil`. - /// - Requires: modulus.magnitude > 1 - /// - Complexity: O(count^3) - public func inverse(_ modulus: BigInt) -> BigInt? { - guard let inv = self.magnitude.inverse(modulus.magnitude) else { return nil } - return BigInt(self.sign == .plus || inv.isZero ? inv : modulus.magnitude - inv) - } -} diff --git a/cocoapods/Pods/BigInt/Sources/Hashable.swift b/cocoapods/Pods/BigInt/Sources/Hashable.swift deleted file mode 100644 index c5dc0e64..00000000 --- a/cocoapods/Pods/BigInt/Sources/Hashable.swift +++ /dev/null @@ -1,26 +0,0 @@ -// -// Hashable.swift -// BigInt -// -// Created by Károly Lőrentey on 2016-01-03. -// Copyright © 2016-2017 Károly Lőrentey. -// - -extension BigUInt: Hashable { - //MARK: Hashing - - /// Append this `BigUInt` to the specified hasher. - public func hash(into hasher: inout Hasher) { - for word in self.words { - hasher.combine(word) - } - } -} - -extension BigInt: Hashable { - /// Append this `BigInt` to the specified hasher. - public func hash(into hasher: inout Hasher) { - hasher.combine(sign) - hasher.combine(magnitude) - } -} diff --git a/cocoapods/Pods/BigInt/Sources/Integer Conversion.swift b/cocoapods/Pods/BigInt/Sources/Integer Conversion.swift deleted file mode 100644 index 9a210e4a..00000000 --- a/cocoapods/Pods/BigInt/Sources/Integer Conversion.swift +++ /dev/null @@ -1,89 +0,0 @@ -// -// Integer Conversion.swift -// BigInt -// -// Created by Károly Lőrentey on 2017-08-11. -// Copyright © 2016-2017 Károly Lőrentey. -// - -extension BigUInt { - public init?(exactly source: T) { - guard source >= (0 as T) else { return nil } - if source.bitWidth <= 2 * Word.bitWidth { - var it = source.words.makeIterator() - self.init(low: it.next() ?? 0, high: it.next() ?? 0) - precondition(it.next() == nil, "Length of BinaryInteger.words is greater than its bitWidth") - } - else { - self.init(words: source.words) - } - } - - public init(_ source: T) { - precondition(source >= (0 as T), "BigUInt cannot represent negative values") - self.init(exactly: source)! - } - - public init(truncatingIfNeeded source: T) { - self.init(words: source.words) - } - - public init(clamping source: T) { - if source <= (0 as T) { - self.init() - } - else { - self.init(words: source.words) - } - } -} - -extension BigInt { - public init() { - self.init(sign: .plus, magnitude: 0) - } - - /// Initializes a new signed big integer with the same value as the specified unsigned big integer. - public init(_ integer: BigUInt) { - self.magnitude = integer - self.sign = .plus - } - - public init(_ source: T) where T : BinaryInteger { - if source >= (0 as T) { - self.init(sign: .plus, magnitude: BigUInt(source)) - } - else { - var words = Array(source.words) - words.twosComplement() - self.init(sign: .minus, magnitude: BigUInt(words: words)) - } - } - - public init?(exactly source: T) where T : BinaryInteger { - self.init(source) - } - - public init(clamping source: T) where T : BinaryInteger { - self.init(source) - } - - public init(truncatingIfNeeded source: T) where T : BinaryInteger { - self.init(source) - } -} - -extension BigUInt: ExpressibleByIntegerLiteral { - /// Initialize a new big integer from an integer literal. - public init(integerLiteral value: UInt64) { - self.init(value) - } -} - -extension BigInt: ExpressibleByIntegerLiteral { - /// Initialize a new big integer from an integer literal. - public init(integerLiteral value: Int64) { - self.init(value) - } -} - diff --git a/cocoapods/Pods/BigInt/Sources/Multiplication.swift b/cocoapods/Pods/BigInt/Sources/Multiplication.swift deleted file mode 100644 index 635c36a5..00000000 --- a/cocoapods/Pods/BigInt/Sources/Multiplication.swift +++ /dev/null @@ -1,165 +0,0 @@ -// -// Multiplication.swift -// BigInt -// -// Created by Károly Lőrentey on 2016-01-03. -// Copyright © 2016-2017 Károly Lőrentey. -// - -extension BigUInt { - - //MARK: Multiplication - - /// Multiply this big integer by a single word, and store the result in place of the original big integer. - /// - /// - Complexity: O(count) - public mutating func multiply(byWord y: Word) { - guard y != 0 else { self = 0; return } - guard y != 1 else { return } - var carry: Word = 0 - let c = self.count - for i in 0 ..< c { - let (h, l) = self[i].multipliedFullWidth(by: y) - let (low, o) = l.addingReportingOverflow(carry) - self[i] = low - carry = (o ? h + 1 : h) - } - self[c] = carry - } - - /// Multiply this big integer by a single Word, and return the result. - /// - /// - Complexity: O(count) - public func multiplied(byWord y: Word) -> BigUInt { - var r = self - r.multiply(byWord: y) - return r - } - - /// Multiply `x` by `y`, and add the result to this integer, optionally shifted `shift` words to the left. - /// - /// - Note: This is the fused multiply/shift/add operation; it is more efficient than doing the components - /// individually. (The fused operation doesn't need to allocate space for temporary big integers.) - /// - Returns: `self` is set to `self + (x * y) << (shift * 2^Word.bitWidth)` - /// - Complexity: O(count) - public mutating func multiplyAndAdd(_ x: BigUInt, _ y: Word, shiftedBy shift: Int = 0) { - precondition(shift >= 0) - guard y != 0 && x.count > 0 else { return } - guard y != 1 else { self.add(x, shiftedBy: shift); return } - var mulCarry: Word = 0 - var addCarry = false - let xc = x.count - var xi = 0 - while xi < xc || addCarry || mulCarry > 0 { - let (h, l) = x[xi].multipliedFullWidth(by: y) - let (low, o) = l.addingReportingOverflow(mulCarry) - mulCarry = (o ? h + 1 : h) - - let ai = shift + xi - let (sum1, so1) = self[ai].addingReportingOverflow(low) - if addCarry { - let (sum2, so2) = sum1.addingReportingOverflow(1) - self[ai] = sum2 - addCarry = so1 || so2 - } - else { - self[ai] = sum1 - addCarry = so1 - } - xi += 1 - } - } - - /// Multiply this integer by `y` and return the result. - /// - /// - Note: This uses the naive O(n^2) multiplication algorithm unless both arguments have more than - /// `BigUInt.directMultiplicationLimit` words. - /// - Complexity: O(n^log2(3)) - public func multiplied(by y: BigUInt) -> BigUInt { - // This method is mostly defined for symmetry with the rest of the arithmetic operations. - return self * y - } - - /// Multiplication switches to an asymptotically better recursive algorithm when arguments have more words than this limit. - public static var directMultiplicationLimit: Int = 1024 - - /// Multiply `a` by `b` and return the result. - /// - /// - Note: This uses the naive O(n^2) multiplication algorithm unless both arguments have more than - /// `BigUInt.directMultiplicationLimit` words. - /// - Complexity: O(n^log2(3)) - public static func *(x: BigUInt, y: BigUInt) -> BigUInt { - let xc = x.count - let yc = y.count - if xc == 0 { return BigUInt() } - if yc == 0 { return BigUInt() } - if yc == 1 { return x.multiplied(byWord: y[0]) } - if xc == 1 { return y.multiplied(byWord: x[0]) } - - if Swift.min(xc, yc) <= BigUInt.directMultiplicationLimit { - // Long multiplication. - let left = (xc < yc ? y : x) - let right = (xc < yc ? x : y) - var result = BigUInt() - for i in (0 ..< right.count).reversed() { - result.multiplyAndAdd(left, right[i], shiftedBy: i) - } - return result - } - - if yc < xc { - let (xh, xl) = x.split - var r = xl * y - r.add(xh * y, shiftedBy: x.middleIndex) - return r - } - else if xc < yc { - let (yh, yl) = y.split - var r = yl * x - r.add(yh * x, shiftedBy: y.middleIndex) - return r - } - - let shift = x.middleIndex - - // Karatsuba multiplication: - // x * y = * = (ignoring carry) - let (a, b) = x.split - let (c, d) = y.split - - let high = a * c - let low = b * d - let xp = a >= b - let yp = c >= d - let xm = (xp ? a - b : b - a) - let ym = (yp ? c - d : d - c) - let m = xm * ym - - var r = low - r.add(high, shiftedBy: 2 * shift) - r.add(low, shiftedBy: shift) - r.add(high, shiftedBy: shift) - if xp == yp { - r.subtract(m, shiftedBy: shift) - } - else { - r.add(m, shiftedBy: shift) - } - return r - } - - /// Multiply `a` by `b` and store the result in `a`. - public static func *=(a: inout BigUInt, b: BigUInt) { - a = a * b - } -} - -extension BigInt { - /// Multiply `a` with `b` and return the result. - public static func *(a: BigInt, b: BigInt) -> BigInt { - return BigInt(sign: a.sign == b.sign ? .plus : .minus, magnitude: a.magnitude * b.magnitude) - } - - /// Multiply `a` with `b` in place. - public static func *=(a: inout BigInt, b: BigInt) { a = a * b } -} diff --git a/cocoapods/Pods/BigInt/Sources/Prime Test.swift b/cocoapods/Pods/BigInt/Sources/Prime Test.swift deleted file mode 100644 index 7f187110..00000000 --- a/cocoapods/Pods/BigInt/Sources/Prime Test.swift +++ /dev/null @@ -1,153 +0,0 @@ -// -// Prime Test.swift -// BigInt -// -// Created by Károly Lőrentey on 2016-01-04. -// Copyright © 2016-2017 Károly Lőrentey. -// - -/// The first several [prime numbers][primes]. -/// -/// [primes]: https://oeis.org/A000040 -let primes: [BigUInt.Word] = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41] - -/// The ith element in this sequence is the smallest composite number that passes the strong probable prime test -/// for all of the first (i+1) primes. -/// -/// This is sequence [A014233](http://oeis.org/A014233) on the [Online Encyclopaedia of Integer Sequences](http://oeis.org). -let pseudoPrimes: [BigUInt] = [ - /* 2 */ 2_047, - /* 3 */ 1_373_653, - /* 5 */ 25_326_001, - /* 7 */ 3_215_031_751, - /* 11 */ 2_152_302_898_747, - /* 13 */ 3_474_749_660_383, - /* 17 */ 341_550_071_728_321, - /* 19 */ 341_550_071_728_321, - /* 23 */ 3_825_123_056_546_413_051, - /* 29 */ 3_825_123_056_546_413_051, - /* 31 */ 3_825_123_056_546_413_051, - /* 37 */ "318665857834031151167461", - /* 41 */ "3317044064679887385961981", -] - -extension BigUInt { - //MARK: Primality Testing - - /// Returns true iff this integer passes the [strong probable prime test][sppt] for the specified base. - /// - /// [sppt]: https://en.wikipedia.org/wiki/Probable_prime - public func isStrongProbablePrime(_ base: BigUInt) -> Bool { - precondition(base > (1 as BigUInt)) - precondition(self > (0 as BigUInt)) - let dec = self - 1 - - let r = dec.trailingZeroBitCount - let d = dec >> r - - var test = base.power(d, modulus: self) - if test == 1 || test == dec { return true } - - if r > 0 { - let shift = self.leadingZeroBitCount - let normalized = self << shift - for _ in 1 ..< r { - test *= test - test.formRemainder(dividingBy: normalized, normalizedBy: shift) - if test == 1 { - return false - } - if test == dec { return true } - } - } - return false - } - - /// Returns true if this integer is probably prime. Returns false if this integer is definitely not prime. - /// - /// This function performs a probabilistic [Miller-Rabin Primality Test][mrpt], consisting of `rounds` iterations, - /// each calculating the strong probable prime test for a random base. The number of rounds is 10 by default, - /// but you may specify your own choice. - /// - /// To speed things up, the function checks if `self` is divisible by the first few prime numbers before - /// diving into (slower) Miller-Rabin testing. - /// - /// Also, when `self` is less than 82 bits wide, `isPrime` does a deterministic test that is guaranteed to - /// return a correct result. - /// - /// [mrpt]: https://en.wikipedia.org/wiki/Miller–Rabin_primality_test - public func isPrime(rounds: Int = 10) -> Bool { - if count <= 1 && self[0] < 2 { return false } - if count == 1 && self[0] < 4 { return true } - - // Even numbers above 2 aren't prime. - if self[0] & 1 == 0 { return false } - - // Quickly check for small primes. - for i in 1 ..< primes.count { - let p = primes[i] - if self.count == 1 && self[0] == p { - return true - } - if self.quotientAndRemainder(dividingByWord: p).remainder == 0 { - return false - } - } - - /// Give an exact answer when we can. - if self < pseudoPrimes.last! { - for i in 0 ..< pseudoPrimes.count { - guard isStrongProbablePrime(BigUInt(primes[i])) else { - break - } - if self < pseudoPrimes[i] { - // `self` is below the lowest pseudoprime corresponding to the prime bases we tested. It's a prime! - return true - } - } - return false - } - - /// Otherwise do as many rounds of random SPPT as required. - for _ in 0 ..< rounds { - let random = BigUInt.randomInteger(lessThan: self - 2) + 2 - guard isStrongProbablePrime(random) else { - return false - } - } - - // Well, it smells primey to me. - return true - } -} - -extension BigInt { - //MARK: Primality Testing - - /// Returns true iff this integer passes the [strong probable prime test][sppt] for the specified base. - /// - /// [sppt]: https://en.wikipedia.org/wiki/Probable_prime - public func isStrongProbablePrime(_ base: BigInt) -> Bool { - precondition(base.sign == .plus) - if self.sign == .minus { return false } - return self.magnitude.isStrongProbablePrime(base.magnitude) - } - - /// Returns true if this integer is probably prime. Returns false if this integer is definitely not prime. - /// - /// This function performs a probabilistic [Miller-Rabin Primality Test][mrpt], consisting of `rounds` iterations, - /// each calculating the strong probable prime test for a random base. The number of rounds is 10 by default, - /// but you may specify your own choice. - /// - /// To speed things up, the function checks if `self` is divisible by the first few prime numbers before - /// diving into (slower) Miller-Rabin testing. - /// - /// Also, when `self` is less than 82 bits wide, `isPrime` does a deterministic test that is guaranteed to - /// return a correct result. - /// - /// [mrpt]: https://en.wikipedia.org/wiki/Miller–Rabin_primality_test - public func isPrime(rounds: Int = 10) -> Bool { - if self.sign == .minus { return false } - return self.magnitude.isPrime(rounds: rounds) - } -} diff --git a/cocoapods/Pods/BigInt/Sources/Random.swift b/cocoapods/Pods/BigInt/Sources/Random.swift deleted file mode 100644 index 5813b4bd..00000000 --- a/cocoapods/Pods/BigInt/Sources/Random.swift +++ /dev/null @@ -1,71 +0,0 @@ -// -// Random.swift -// BigInt -// -// Created by Károly Lőrentey on 2016-01-04. -// Copyright © 2016-2017 Károly Lőrentey. -// - -import Foundation -#if os(Linux) || os(FreeBSD) - import Glibc -#endif - - -extension BigUInt { - //MARK: Random Integers - - /// Create a big integer consisting of `width` uniformly distributed random bits. - /// - /// - Returns: A big integer less than `1 << width`. - /// - Note: This function uses `arc4random_buf` to generate random bits. - public static func randomInteger(withMaximumWidth width: Int) -> BigUInt { - guard width > 0 else { return 0 } - - let byteCount = (width + 7) / 8 - assert(byteCount > 0) - - let buffer = UnsafeMutablePointer.allocate(capacity: byteCount) - #if os(Linux) || os(FreeBSD) - let fd = open("/dev/urandom", O_RDONLY) - defer { - close(fd) - } - let _ = read(fd, buffer, MemoryLayout.size * byteCount) - #else - arc4random_buf(buffer, byteCount) - #endif - if width % 8 != 0 { - buffer[0] &= UInt8(1 << (width % 8) - 1) - } - defer { - buffer.deinitialize(count: byteCount) - buffer.deallocate() - } - return BigUInt(Data(bytesNoCopy: buffer, count: byteCount, deallocator: .none)) - } - - /// Create a big integer consisting of `width-1` uniformly distributed random bits followed by a one bit. - /// - /// - Returns: A random big integer whose width is `width`. - /// - Note: This function uses `arc4random_buf` to generate random bits. - public static func randomInteger(withExactWidth width: Int) -> BigUInt { - guard width > 1 else { return BigUInt(width) } - var result = randomInteger(withMaximumWidth: width - 1) - result[(width - 1) / Word.bitWidth] |= 1 << Word((width - 1) % Word.bitWidth) - return result - } - - /// Create a uniformly distributed random integer that's less than the specified limit. - /// - /// - Returns: A random big integer that is less than `limit`. - /// - Note: This function uses `arc4random_buf` to generate random bits. - public static func randomInteger(lessThan limit: BigUInt) -> BigUInt { - let width = limit.bitWidth - var random = randomInteger(withMaximumWidth: width) - while random >= limit { - random = randomInteger(withMaximumWidth: width) - } - return random - } -} diff --git a/cocoapods/Pods/BigInt/Sources/Shifts.swift b/cocoapods/Pods/BigInt/Sources/Shifts.swift deleted file mode 100644 index e676e414..00000000 --- a/cocoapods/Pods/BigInt/Sources/Shifts.swift +++ /dev/null @@ -1,211 +0,0 @@ -// -// Shifts.swift -// BigInt -// -// Created by Károly Lőrentey on 2016-01-03. -// Copyright © 2016-2017 Károly Lőrentey. -// - -extension BigUInt { - - //MARK: Shift Operators - - internal func shiftedLeft(by amount: Word) -> BigUInt { - guard amount > 0 else { return self } - - let ext = Int(amount / Word(Word.bitWidth)) // External shift amount (new words) - let up = Word(amount % Word(Word.bitWidth)) // Internal shift amount (subword shift) - let down = Word(Word.bitWidth) - up - - var result = BigUInt() - if up > 0 { - var i = 0 - var lowbits: Word = 0 - while i < self.count || lowbits > 0 { - let word = self[i] - result[i + ext] = word << up | lowbits - lowbits = word >> down - i += 1 - } - } - else { - for i in 0 ..< self.count { - result[i + ext] = self[i] - } - } - return result - } - - internal mutating func shiftLeft(by amount: Word) { - guard amount > 0 else { return } - - let ext = Int(amount / Word(Word.bitWidth)) // External shift amount (new words) - let up = Word(amount % Word(Word.bitWidth)) // Internal shift amount (subword shift) - let down = Word(Word.bitWidth) - up - - if up > 0 { - var i = 0 - var lowbits: Word = 0 - while i < self.count || lowbits > 0 { - let word = self[i] - self[i] = word << up | lowbits - lowbits = word >> down - i += 1 - } - } - if ext > 0 && self.count > 0 { - self.shiftLeft(byWords: ext) - } - } - - internal func shiftedRight(by amount: Word) -> BigUInt { - guard amount > 0 else { return self } - guard amount < self.bitWidth else { return 0 } - - let ext = Int(amount / Word(Word.bitWidth)) // External shift amount (new words) - let down = Word(amount % Word(Word.bitWidth)) // Internal shift amount (subword shift) - let up = Word(Word.bitWidth) - down - - var result = BigUInt() - if down > 0 { - var highbits: Word = 0 - for i in (ext ..< self.count).reversed() { - let word = self[i] - result[i - ext] = highbits | word >> down - highbits = word << up - } - } - else { - for i in (ext ..< self.count).reversed() { - result[i - ext] = self[i] - } - } - return result - } - - internal mutating func shiftRight(by amount: Word) { - guard amount > 0 else { return } - guard amount < self.bitWidth else { self.clear(); return } - - let ext = Int(amount / Word(Word.bitWidth)) // External shift amount (new words) - let down = Word(amount % Word(Word.bitWidth)) // Internal shift amount (subword shift) - let up = Word(Word.bitWidth) - down - - if ext > 0 { - self.shiftRight(byWords: ext) - } - if down > 0 { - var i = self.count - 1 - var highbits: Word = 0 - while i >= 0 { - let word = self[i] - self[i] = highbits | word >> down - highbits = word << up - i -= 1 - } - } - } - - public static func >>=(lhs: inout BigUInt, rhs: Other) { - if rhs < (0 as Other) { - lhs <<= (0 - rhs) - } - else if rhs >= lhs.bitWidth { - lhs.clear() - } - else { - lhs.shiftRight(by: UInt(rhs)) - } - } - - public static func <<=(lhs: inout BigUInt, rhs: Other) { - if rhs < (0 as Other) { - lhs >>= (0 - rhs) - return - } - lhs.shiftLeft(by: Word(exactly: rhs)!) - } - - public static func >>(lhs: BigUInt, rhs: Other) -> BigUInt { - if rhs < (0 as Other) { - return lhs << (0 - rhs) - } - if rhs > Word.max { - return 0 - } - return lhs.shiftedRight(by: UInt(rhs)) - } - - public static func <<(lhs: BigUInt, rhs: Other) -> BigUInt { - if rhs < (0 as Other) { - return lhs >> (0 - rhs) - } - return lhs.shiftedLeft(by: Word(exactly: rhs)!) - } -} - -extension BigInt { - func shiftedLeft(by amount: Word) -> BigInt { - return BigInt(sign: self.sign, magnitude: self.magnitude.shiftedLeft(by: amount)) - } - - mutating func shiftLeft(by amount: Word) { - self.magnitude.shiftLeft(by: amount) - } - - func shiftedRight(by amount: Word) -> BigInt { - let m = self.magnitude.shiftedRight(by: amount) - return BigInt(sign: self.sign, magnitude: self.sign == .minus && m.isZero ? 1 : m) - } - - mutating func shiftRight(by amount: Word) { - magnitude.shiftRight(by: amount) - if sign == .minus, magnitude.isZero { - magnitude.load(1) - } - } - - public static func &<<(left: BigInt, right: BigInt) -> BigInt { - return left.shiftedLeft(by: right.words[0]) - } - - public static func &<<=(left: inout BigInt, right: BigInt) { - left.shiftLeft(by: right.words[0]) - } - - public static func &>>(left: BigInt, right: BigInt) -> BigInt { - return left.shiftedRight(by: right.words[0]) - } - - public static func &>>=(left: inout BigInt, right: BigInt) { - left.shiftRight(by: right.words[0]) - } - - public static func <<(lhs: BigInt, rhs: Other) -> BigInt { - guard rhs >= (0 as Other) else { return lhs >> (0 - rhs) } - return lhs.shiftedLeft(by: Word(rhs)) - } - - public static func <<=(lhs: inout BigInt, rhs: Other) { - if rhs < (0 as Other) { - lhs >>= (0 - rhs) - } - else { - lhs.shiftLeft(by: Word(rhs)) - } - } - - public static func >>(lhs: BigInt, rhs: Other) -> BigInt { - guard rhs >= (0 as Other) else { return lhs << (0 - rhs) } - return lhs.shiftedRight(by: Word(rhs)) - } - - public static func >>=(lhs: inout BigInt, rhs: Other) { - if rhs < (0 as Other) { - lhs <<= (0 - rhs) - } - else { - lhs.shiftRight(by: Word(rhs)) - } - } -} diff --git a/cocoapods/Pods/BigInt/Sources/Square Root.swift b/cocoapods/Pods/BigInt/Sources/Square Root.swift deleted file mode 100644 index 68db0691..00000000 --- a/cocoapods/Pods/BigInt/Sources/Square Root.swift +++ /dev/null @@ -1,41 +0,0 @@ -// -// Square Root.swift -// BigInt -// -// Created by Károly Lőrentey on 2016-01-03. -// Copyright © 2016-2017 Károly Lőrentey. -// - -//MARK: Square Root - -extension BigUInt { - /// Returns the integer square root of a big integer; i.e., the largest integer whose square isn't greater than `value`. - /// - /// - Returns: floor(sqrt(self)) - public func squareRoot() -> BigUInt { - // This implementation uses Newton's method. - guard !self.isZero else { return BigUInt() } - var x = BigUInt(1) << ((self.bitWidth + 1) / 2) - var y: BigUInt = 0 - while true { - y.load(self) - y /= x - y += x - y >>= 1 - if x == y || x == y - 1 { break } - x = y - } - return x - } -} - -extension BigInt { - /// Returns the integer square root of a big integer; i.e., the largest integer whose square isn't greater than `value`. - /// - /// - Requires: self >= 0 - /// - Returns: floor(sqrt(self)) - public func squareRoot() -> BigInt { - precondition(self.sign == .plus) - return BigInt(sign: .plus, magnitude: self.magnitude.squareRoot()) - } -} diff --git a/cocoapods/Pods/BigInt/Sources/Strideable.swift b/cocoapods/Pods/BigInt/Sources/Strideable.swift deleted file mode 100644 index 2b79babd..00000000 --- a/cocoapods/Pods/BigInt/Sources/Strideable.swift +++ /dev/null @@ -1,38 +0,0 @@ -// -// Strideable.swift -// BigInt -// -// Created by Károly Lőrentey on 2017-08-11. -// Copyright © 2016-2017 Károly Lőrentey. -// - -extension BigUInt: Strideable { - /// A type that can represent the distance between two values ofa `BigUInt`. - public typealias Stride = BigInt - - /// Adds `n` to `self` and returns the result. Traps if the result would be less than zero. - public func advanced(by n: BigInt) -> BigUInt { - return n.sign == .minus ? self - n.magnitude : self + n.magnitude - } - - /// Returns the (potentially negative) difference between `self` and `other` as a `BigInt`. Never traps. - public func distance(to other: BigUInt) -> BigInt { - return BigInt(other) - BigInt(self) - } -} - -extension BigInt: Strideable { - public typealias Stride = BigInt - - /// Returns `self + n`. - public func advanced(by n: Stride) -> BigInt { - return self + n - } - - /// Returns `other - self`. - public func distance(to other: BigInt) -> Stride { - return other - self - } -} - - diff --git a/cocoapods/Pods/BigInt/Sources/String Conversion.swift b/cocoapods/Pods/BigInt/Sources/String Conversion.swift deleted file mode 100644 index d6f340c9..00000000 --- a/cocoapods/Pods/BigInt/Sources/String Conversion.swift +++ /dev/null @@ -1,236 +0,0 @@ -// -// String Conversion.swift -// BigInt -// -// Created by Károly Lőrentey on 2016-01-03. -// Copyright © 2016-2017 Károly Lőrentey. -// - -extension BigUInt { - - //MARK: String Conversion - - /// Calculates the number of numerals in a given radix that fit inside a single `Word`. - /// - /// - Returns: (chars, power) where `chars` is highest that satisfy `radix^chars <= 2^Word.bitWidth`. `power` is zero - /// if radix is a power of two; otherwise `power == radix^chars`. - fileprivate static func charsPerWord(forRadix radix: Int) -> (chars: Int, power: Word) { - var power: Word = 1 - var overflow = false - var count = 0 - while !overflow { - let (p, o) = power.multipliedReportingOverflow(by: Word(radix)) - overflow = o - if !o || p == 0 { - count += 1 - power = p - } - } - return (count, power) - } - - /// Initialize a big integer from an ASCII representation in a given radix. Numerals above `9` are represented by - /// letters from the English alphabet. - /// - /// - Requires: `radix > 1 && radix < 36` - /// - Parameter `text`: A string consisting of characters corresponding to numerals in the given radix. (0-9, a-z, A-Z) - /// - Parameter `radix`: The base of the number system to use, or 10 if unspecified. - /// - Returns: The integer represented by `text`, or nil if `text` contains a character that does not represent a numeral in `radix`. - public init?(_ text: S, radix: Int = 10) { - precondition(radix > 1) - let (charsPerWord, power) = BigUInt.charsPerWord(forRadix: radix) - - var words: [Word] = [] - var end = text.endIndex - var start = end - var count = 0 - while start != text.startIndex { - start = text.index(before: start) - count += 1 - if count == charsPerWord { - guard let d = Word.init(text[start ..< end], radix: radix) else { return nil } - words.append(d) - end = start - count = 0 - } - } - if start != end { - guard let d = Word.init(text[start ..< end], radix: radix) else { return nil } - words.append(d) - } - - if power == 0 { - self.init(words: words) - } - else { - self.init() - for d in words.reversed() { - self.multiply(byWord: power) - self.addWord(d) - } - } - } -} - -extension BigInt { - /// Initialize a big integer from an ASCII representation in a given radix. Numerals above `9` are represented by - /// letters from the English alphabet. - /// - /// - Requires: `radix > 1 && radix < 36` - /// - Parameter `text`: A string optionally starting with "-" or "+" followed by characters corresponding to numerals in the given radix. (0-9, a-z, A-Z) - /// - Parameter `radix`: The base of the number system to use, or 10 if unspecified. - /// - Returns: The integer represented by `text`, or nil if `text` contains a character that does not represent a numeral in `radix`. - public init?(_ text: S, radix: Int = 10) { - var magnitude: BigUInt? - var sign: Sign = .plus - if text.first == "-" { - sign = .minus - let text = text.dropFirst() - magnitude = BigUInt(text, radix: radix) - } - else if text.first == "+" { - let text = text.dropFirst() - magnitude = BigUInt(text, radix: radix) - } - else { - magnitude = BigUInt(text, radix: radix) - } - guard let m = magnitude else { return nil } - self.magnitude = m - self.sign = sign - } -} - -extension String { - /// Initialize a new string with the base-10 representation of an unsigned big integer. - /// - /// - Complexity: O(v.count^2) - public init(_ v: BigUInt) { self.init(v, radix: 10, uppercase: false) } - - /// Initialize a new string representing an unsigned big integer in the given radix (base). - /// - /// Numerals greater than 9 are represented as letters from the English alphabet, - /// starting with `a` if `uppercase` is false or `A` otherwise. - /// - /// - Requires: radix > 1 && radix <= 36 - /// - Complexity: O(count) when radix is a power of two; otherwise O(count^2). - public init(_ v: BigUInt, radix: Int, uppercase: Bool = false) { - precondition(radix > 1) - let (charsPerWord, power) = BigUInt.charsPerWord(forRadix: radix) - - guard !v.isZero else { self = "0"; return } - - var parts: [String] - if power == 0 { - parts = v.words.map { String($0, radix: radix, uppercase: uppercase) } - } - else { - parts = [] - var rest = v - while !rest.isZero { - let mod = rest.divide(byWord: power) - parts.append(String(mod, radix: radix, uppercase: uppercase)) - } - } - assert(!parts.isEmpty) - - self = "" - var first = true - for part in parts.reversed() { - let zeroes = charsPerWord - part.count - assert(zeroes >= 0) - if !first && zeroes > 0 { - // Insert leading zeroes for mid-Words - self += String(repeating: "0", count: zeroes) - } - first = false - self += part - } - } - - /// Initialize a new string representing a signed big integer in the given radix (base). - /// - /// Numerals greater than 9 are represented as letters from the English alphabet, - /// starting with `a` if `uppercase` is false or `A` otherwise. - /// - /// - Requires: radix > 1 && radix <= 36 - /// - Complexity: O(count) when radix is a power of two; otherwise O(count^2). - public init(_ value: BigInt, radix: Int = 10, uppercase: Bool = false) { - self = String(value.magnitude, radix: radix, uppercase: uppercase) - if value.sign == .minus { - self = "-" + self - } - } -} - -extension BigUInt: ExpressibleByStringLiteral { - /// Initialize a new big integer from a Unicode scalar. - /// The scalar must represent a decimal digit. - public init(unicodeScalarLiteral value: UnicodeScalar) { - self = BigUInt(String(value), radix: 10)! - } - - /// Initialize a new big integer from an extended grapheme cluster. - /// The cluster must consist of a decimal digit. - public init(extendedGraphemeClusterLiteral value: String) { - self = BigUInt(value, radix: 10)! - } - - /// Initialize a new big integer from a decimal number represented by a string literal of arbitrary length. - /// The string must contain only decimal digits. - public init(stringLiteral value: StringLiteralType) { - self = BigUInt(value, radix: 10)! - } -} - -extension BigInt: ExpressibleByStringLiteral { - /// Initialize a new big integer from a Unicode scalar. - /// The scalar must represent a decimal digit. - public init(unicodeScalarLiteral value: UnicodeScalar) { - self = BigInt(String(value), radix: 10)! - } - - /// Initialize a new big integer from an extended grapheme cluster. - /// The cluster must consist of a decimal digit. - public init(extendedGraphemeClusterLiteral value: String) { - self = BigInt(value, radix: 10)! - } - - /// Initialize a new big integer from a decimal number represented by a string literal of arbitrary length. - /// The string must contain only decimal digits. - public init(stringLiteral value: StringLiteralType) { - self = BigInt(value, radix: 10)! - } -} - -extension BigUInt: CustomStringConvertible { - /// Return the decimal representation of this integer. - public var description: String { - return String(self, radix: 10) - } -} - -extension BigInt: CustomStringConvertible { - /// Return the decimal representation of this integer. - public var description: String { - return String(self, radix: 10) - } -} - -extension BigUInt: CustomPlaygroundDisplayConvertible { - - /// Return the playground quick look representation of this integer. - public var playgroundDescription: Any { - let text = String(self) - return text + " (\(self.bitWidth) bits)" - } -} - -extension BigInt: CustomPlaygroundDisplayConvertible { - - /// Return the playground quick look representation of this integer. - public var playgroundDescription: Any { - let text = String(self) - return text + " (\(self.magnitude.bitWidth) bits)" - } -} diff --git a/cocoapods/Pods/BigInt/Sources/Subtraction.swift b/cocoapods/Pods/BigInt/Sources/Subtraction.swift deleted file mode 100644 index 5ac872e6..00000000 --- a/cocoapods/Pods/BigInt/Sources/Subtraction.swift +++ /dev/null @@ -1,169 +0,0 @@ -// -// Subtraction.swift -// BigInt -// -// Created by Károly Lőrentey on 2016-01-03. -// Copyright © 2016-2017 Károly Lőrentey. -// - -extension BigUInt { - //MARK: Subtraction - - /// Subtract `word` from this integer in place, returning a flag indicating if the operation - /// caused an arithmetic overflow. `word` is shifted `shift` words to the left before being subtracted. - /// - /// - Note: If the result indicates an overflow, then `self` becomes the two's complement of the absolute difference. - /// - Complexity: O(count) - internal mutating func subtractWordReportingOverflow(_ word: Word, shiftedBy shift: Int = 0) -> Bool { - precondition(shift >= 0) - var carry: Word = word - var i = shift - let count = self.count - while carry > 0 && i < count { - let (d, c) = self[i].subtractingReportingOverflow(carry) - self[i] = d - carry = (c ? 1 : 0) - i += 1 - } - return carry > 0 - } - - /// Subtract `word` from this integer, returning the difference and a flag that is true if the operation - /// caused an arithmetic overflow. `word` is shifted `shift` words to the left before being subtracted. - /// - /// - Note: If `overflow` is true, then the returned value is the two's complement of the absolute difference. - /// - Complexity: O(count) - internal func subtractingWordReportingOverflow(_ word: Word, shiftedBy shift: Int = 0) -> (partialValue: BigUInt, overflow: Bool) { - var result = self - let overflow = result.subtractWordReportingOverflow(word, shiftedBy: shift) - return (result, overflow) - } - - /// Subtract a digit `d` from this integer in place. - /// `d` is shifted `shift` digits to the left before being subtracted. - /// - /// - Requires: self >= d * 2^shift - /// - Complexity: O(count) - internal mutating func subtractWord(_ word: Word, shiftedBy shift: Int = 0) { - let overflow = subtractWordReportingOverflow(word, shiftedBy: shift) - precondition(!overflow) - } - - /// Subtract a digit `d` from this integer and return the result. - /// `d` is shifted `shift` digits to the left before being subtracted. - /// - /// - Requires: self >= d * 2^shift - /// - Complexity: O(count) - internal func subtractingWord(_ word: Word, shiftedBy shift: Int = 0) -> BigUInt { - var result = self - result.subtractWord(word, shiftedBy: shift) - return result - } - - /// Subtract `other` from this integer in place, and return a flag indicating if the operation caused an - /// arithmetic overflow. `other` is shifted `shift` digits to the left before being subtracted. - /// - /// - Note: If the result indicates an overflow, then `self` becomes the twos' complement of the absolute difference. - /// - Complexity: O(count) - public mutating func subtractReportingOverflow(_ b: BigUInt, shiftedBy shift: Int = 0) -> Bool { - precondition(shift >= 0) - var carry = false - var bi = 0 - let bc = b.count - let count = self.count - while bi < bc || (shift + bi < count && carry) { - let ai = shift + bi - let (d, c) = self[ai].subtractingReportingOverflow(b[bi]) - if carry { - let (d2, c2) = d.subtractingReportingOverflow(1) - self[ai] = d2 - carry = c || c2 - } - else { - self[ai] = d - carry = c - } - bi += 1 - } - return carry - } - - /// Subtract `other` from this integer, returning the difference and a flag indicating arithmetic overflow. - /// `other` is shifted `shift` digits to the left before being subtracted. - /// - /// - Note: If `overflow` is true, then the result value is the twos' complement of the absolute value of the difference. - /// - Complexity: O(count) - public func subtractingReportingOverflow(_ other: BigUInt, shiftedBy shift: Int) -> (partialValue: BigUInt, overflow: Bool) { - var result = self - let overflow = result.subtractReportingOverflow(other, shiftedBy: shift) - return (result, overflow) - } - - /// Subtracts `other` from `self`, returning the result and a flag indicating arithmetic overflow. - /// - /// - Note: When the operation overflows, then `partialValue` is the twos' complement of the absolute value of the difference. - /// - Complexity: O(count) - public func subtractingReportingOverflow(_ other: BigUInt) -> (partialValue: BigUInt, overflow: Bool) { - return self.subtractingReportingOverflow(other, shiftedBy: 0) - } - - /// Subtract `other` from this integer in place. - /// `other` is shifted `shift` digits to the left before being subtracted. - /// - /// - Requires: self >= other * 2^shift - /// - Complexity: O(count) - public mutating func subtract(_ other: BigUInt, shiftedBy shift: Int = 0) { - let overflow = subtractReportingOverflow(other, shiftedBy: shift) - precondition(!overflow) - } - - /// Subtract `b` from this integer, and return the difference. - /// `b` is shifted `shift` digits to the left before being subtracted. - /// - /// - Requires: self >= b * 2^shift - /// - Complexity: O(count) - public func subtracting(_ other: BigUInt, shiftedBy shift: Int = 0) -> BigUInt { - var result = self - result.subtract(other, shiftedBy: shift) - return result - } - - /// Decrement this integer by one. - /// - /// - Requires: !isZero - /// - Complexity: O(count) - public mutating func decrement(shiftedBy shift: Int = 0) { - self.subtract(1, shiftedBy: shift) - } - - /// Subtract `b` from `a` and return the result. - /// - /// - Requires: a >= b - /// - Complexity: O(a.count) - public static func -(a: BigUInt, b: BigUInt) -> BigUInt { - return a.subtracting(b) - } - - /// Subtract `b` from `a` and store the result in `a`. - /// - /// - Requires: a >= b - /// - Complexity: O(a.count) - public static func -=(a: inout BigUInt, b: BigUInt) { - a.subtract(b) - } -} - -extension BigInt { - public mutating func negate() { - guard !magnitude.isZero else { return } - self.sign = self.sign == .plus ? .minus : .plus - } - - /// Subtract `b` from `a` and return the result. - public static func -(a: BigInt, b: BigInt) -> BigInt { - return a + -b - } - - /// Subtract `b` from `a` in place. - public static func -=(a: inout BigInt, b: BigInt) { a = a - b } -} diff --git a/cocoapods/Pods/BigInt/Sources/Words and Bits.swift b/cocoapods/Pods/BigInt/Sources/Words and Bits.swift deleted file mode 100644 index 4543c1bc..00000000 --- a/cocoapods/Pods/BigInt/Sources/Words and Bits.swift +++ /dev/null @@ -1,202 +0,0 @@ -// -// Words and Bits.swift -// BigInt -// -// Created by Károly Lőrentey on 2017-08-11. -// Copyright © 2016-2017 Károly Lőrentey. -// - -extension Array where Element == UInt { - mutating func twosComplement() { - var increment = true - for i in 0 ..< self.count { - if increment { - (self[i], increment) = (~self[i]).addingReportingOverflow(1) - } - else { - self[i] = ~self[i] - } - } - } -} - -extension BigUInt { - public subscript(bitAt index: Int) -> Bool { - get { - precondition(index >= 0) - let (i, j) = index.quotientAndRemainder(dividingBy: Word.bitWidth) - return self[i] & (1 << j) != 0 - } - set { - precondition(index >= 0) - let (i, j) = index.quotientAndRemainder(dividingBy: Word.bitWidth) - if newValue { - self[i] |= 1 << j - } - else { - self[i] &= ~(1 << j) - } - } - } -} - -extension BigUInt { - /// The minimum number of bits required to represent this integer in binary. - /// - /// - Returns: floor(log2(2 * self + 1)) - /// - Complexity: O(1) - public var bitWidth: Int { - guard count > 0 else { return 0 } - return count * Word.bitWidth - self[count - 1].leadingZeroBitCount - } - - /// The number of leading zero bits in the binary representation of this integer in base `2^(Word.bitWidth)`. - /// This is useful when you need to normalize a `BigUInt` such that the top bit of its most significant word is 1. - /// - /// - Note: 0 is considered to have zero leading zero bits. - /// - Returns: A value in `0...(Word.bitWidth - 1)`. - /// - SeeAlso: width - /// - Complexity: O(1) - public var leadingZeroBitCount: Int { - guard count > 0 else { return 0 } - return self[count - 1].leadingZeroBitCount - } - - /// The number of trailing zero bits in the binary representation of this integer. - /// - /// - Note: 0 is considered to have zero trailing zero bits. - /// - Returns: A value in `0...width`. - /// - Complexity: O(count) - public var trailingZeroBitCount: Int { - guard count > 0 else { return 0 } - let i = self.words.firstIndex { $0 != 0 }! - return i * Word.bitWidth + self[i].trailingZeroBitCount - } -} - -extension BigInt { - public var bitWidth: Int { - guard !magnitude.isZero else { return 0 } - return magnitude.bitWidth + 1 - } - - public var trailingZeroBitCount: Int { - // Amazingly, this works fine for negative numbers - return magnitude.trailingZeroBitCount - } -} - -extension BigUInt { - public struct Words: RandomAccessCollection { - private let value: BigUInt - - fileprivate init(_ value: BigUInt) { self.value = value } - - public var startIndex: Int { return 0 } - public var endIndex: Int { return value.count } - - public subscript(_ index: Int) -> Word { - return value[index] - } - } - - public var words: Words { return Words(self) } - - public init(words: Words) where Words.Element == Word { - let uc = words.underestimatedCount - if uc > 2 { - self.init(words: Array(words)) - } - else { - var it = words.makeIterator() - guard let w0 = it.next() else { - self.init() - return - } - guard let w1 = it.next() else { - self.init(word: w0) - return - } - if let w2 = it.next() { - var words: [UInt] = [] - words.reserveCapacity(Swift.max(3, uc)) - words.append(w0) - words.append(w1) - words.append(w2) - while let word = it.next() { - words.append(word) - } - self.init(words: words) - } - else { - self.init(low: w0, high: w1) - } - } - } -} - -extension BigInt { - public struct Words: RandomAccessCollection { - public typealias Indices = CountableRange - - private let value: BigInt - private let decrementLimit: Int - - fileprivate init(_ value: BigInt) { - self.value = value - switch value.sign { - case .plus: - self.decrementLimit = 0 - case .minus: - assert(!value.magnitude.isZero) - self.decrementLimit = value.magnitude.words.firstIndex(where: { $0 != 0 })! - } - } - - public var count: Int { - switch value.sign { - case .plus: - if let high = value.magnitude.words.last, high >> (Word.bitWidth - 1) != 0 { - return value.magnitude.count + 1 - } - return value.magnitude.count - case .minus: - let high = value.magnitude.words.last! - if high >> (Word.bitWidth - 1) != 0 { - return value.magnitude.count + 1 - } - return value.magnitude.count - } - } - - public var indices: Indices { return 0 ..< count } - public var startIndex: Int { return 0 } - public var endIndex: Int { return count } - - public subscript(_ index: Int) -> UInt { - // Note that indices above `endIndex` are accepted. - if value.sign == .plus { - return value.magnitude[index] - } - if index <= decrementLimit { - return ~(value.magnitude[index] &- 1) - } - return ~value.magnitude[index] - } - } - - public var words: Words { - return Words(self) - } - - public init(words: S) where S.Element == Word { - var words = Array(words) - if (words.last ?? 0) >> (Word.bitWidth - 1) == 0 { - self.init(sign: .plus, magnitude: BigUInt(words: words)) - } - else { - words.twosComplement() - self.init(sign: .minus, magnitude: BigUInt(words: words)) - } - } -} diff --git a/cocoapods/Pods/CryptoSwift/LICENSE b/cocoapods/Pods/CryptoSwift/LICENSE deleted file mode 100644 index e52af7df..00000000 --- a/cocoapods/Pods/CryptoSwift/LICENSE +++ /dev/null @@ -1,11 +0,0 @@ -Copyright (C) 2014-2017 Marcin Krzyżanowski -This software is provided 'as-is', without any express or implied warranty. - -In no event will the authors be held liable for any damages arising from the use of this software. - -Permission is granted to anyone to use this software for any purpose,including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: - -- The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation is required. -- Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -- This notice may not be removed or altered from any source or binary distribution. -- Redistributions of any form whatsoever must retain the following acknowledgment: 'This product includes software developed by the "Marcin Krzyzanowski" (http://krzyzanowskim.com/).' diff --git a/cocoapods/Pods/CryptoSwift/README.md b/cocoapods/Pods/CryptoSwift/README.md deleted file mode 100644 index 6a376a45..00000000 --- a/cocoapods/Pods/CryptoSwift/README.md +++ /dev/null @@ -1,551 +0,0 @@ -[![Platform](https://img.shields.io/badge/Platforms-iOS%20%7C%20Android%20%7CmacOS%20%7C%20watchOS%20%7C%20tvOS%20%7C%20Linux-4E4E4E.svg?colorA=28a745)](#installation) - -[![Swift support](https://img.shields.io/badge/Swift-3.1%20%7C%203.2%20%7C%204.0%20%7C%204.1%20%7C%204.2%20%7C%205.0-lightgrey.svg?colorA=28a745&colorB=4E4E4E)](#swift-versions-support) -[![Swift Package Manager compatible](https://img.shields.io/badge/SPM-compatible-brightgreen.svg?style=flat&colorA=28a745&&colorB=4E4E4E)](https://github.com/apple/swift-package-manager) -[![CocoaPods Compatible](https://img.shields.io/cocoapods/v/CryptoSwift.svg?style=flat&label=CocoaPods&colorA=28a745&&colorB=4E4E4E)](https://cocoapods.org/pods/CryptoSwift) -[![Carthage compatible](https://img.shields.io/badge/Carthage-compatible-brightgreen.svg?style=flat&colorA=28a745&&colorB=4E4E4E)](https://github.com/Carthage/Carthage) - -# CryptoSwift - -Crypto related functions and helpers for [Swift](https://swift.org) implemented in Swift. ([#PureSwift](https://twitter.com/hashtag/pureswift)) - -**Note**: The `master` branch follows the latest currently released **version of Swift**. If you need an earlier version for an older version of Swift, you can specify its version in your `Podfile` or use the code on the branch for that version. Older branches are unsupported. Check [versions](#swift-versions-support) for details. - ---- - -[Requirements](#requirements) | [Features](#features) | [Contribution](#contribution) | [Installation](#installation) | [Swift versions](#swift-versions-support) | [How-to](#how-to) | [Author](#author) | [License](#license) | [Changelog](#changelog) - -## Sponsorship - -It takes some time to keep it all for your convenience, so maybe spare $1, so I can keep working on that. There are more than 8000 clones daily. If I'd get $1/month from each company that uses my work here, I'd say we're even. Hurry up, find the [Sponsorship](https://github.com/users/krzyzanowskim/sponsorship) button, and fulfill your duty. - -CryptoSwift isn't backed by any big company and is developer in my spare time that I also use to as a freelancer. - -[![Twitter](https://img.shields.io/badge/Twitter-@krzyzanowskim-blue.svg?style=flat)](http://twitter.com/krzyzanowskim) - -## Requirements -Good mood - -## Features - -- Easy to use -- Convenient extensions for String and Data -- Support for incremental updates (stream, ...) -- iOS, Android, macOS, AppleTV, watchOS, Linux support - -#### Hash (Digest) - [MD5](http://tools.ietf.org/html/rfc1321) -| [SHA1](http://tools.ietf.org/html/rfc3174) -| [SHA2-224](http://tools.ietf.org/html/rfc6234) -| [SHA2-256](http://tools.ietf.org/html/rfc6234) -| [SHA2-384](http://tools.ietf.org/html/rfc6234) -| [SHA2-512](http://tools.ietf.org/html/rfc6234) -| [SHA3](http://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.202.pdf) - -#### Cyclic Redundancy Check (CRC) - [CRC32](http://en.wikipedia.org/wiki/Cyclic_redundancy_check) -| [CRC32C](http://en.wikipedia.org/wiki/Cyclic_redundancy_check) -| [CRC16](http://en.wikipedia.org/wiki/Cyclic_redundancy_check) - -#### Cipher - [AES-128, AES-192, AES-256](http://csrc.nist.gov/publications/fips/fips197/fips-197.pdf) -| [ChaCha20](http://cr.yp.to/chacha/chacha-20080128.pdf) -| [Rabbit](https://tools.ietf.org/html/rfc4503) -| [Blowfish](https://www.schneier.com/academic/blowfish/) - -#### Message authenticators - [Poly1305](http://cr.yp.to/mac/poly1305-20050329.pdf) -| [HMAC (MD5, SHA1, SHA256)](https://www.ietf.org/rfc/rfc2104.txt) -| [CMAC](https://tools.ietf.org/html/rfc4493) -| [CBC-MAC](https://en.wikipedia.org/wiki/CBC-MAC) - -#### Cipher mode of operation -- Electronic codebook ([ECB](http://en.wikipedia.org/wiki/Block_cipher_mode_of_operation#Electronic_codebook_.28ECB.29)) -- Cipher-block chaining ([CBC](http://en.wikipedia.org/wiki/Block_cipher_mode_of_operation#Cipher-block_chaining_.28CBC.29)) -- Propagating Cipher Block Chaining ([PCBC](http://en.wikipedia.org/wiki/Block_cipher_mode_of_operation#Propagating_Cipher_Block_Chaining_.28PCBC.29)) -- Cipher feedback ([CFB](http://en.wikipedia.org/wiki/Block_cipher_mode_of_operation#Cipher_feedback_.28CFB.29)) -- Output Feedback ([OFB](http://en.wikipedia.org/wiki/Block_cipher_mode_of_operation#Output_Feedback_.28OFB.29)) -- Counter Mode ([CTR](https://en.wikipedia.org/wiki/Block_cipher_mode_of_operation#Counter_.28CTR.29)) -- Galois/Counter Mode ([GCM](https://csrc.nist.gov/publications/detail/sp/800-38d/final)) -- Counter with Cipher Block Chaining-Message Authentication Code ([CCM](https://csrc.nist.gov/publications/detail/sp/800-38c/final)) -- OCB Authenticated-Encryption Algorithm ([OCB](https://tools.ietf.org/html/rfc7253)) - -#### Password-Based Key Derivation Function -- [PBKDF1](http://tools.ietf.org/html/rfc2898#section-5.1) (Password-Based Key Derivation Function 1) -- [PBKDF2](http://tools.ietf.org/html/rfc2898#section-5.2) (Password-Based Key Derivation Function 2) -- [HKDF](https://tools.ietf.org/html/rfc5869) (HMAC-based Extract-and-Expand Key Derivation Function) -- [Scrypt](https://tools.ietf.org/html/rfc7914) (The scrypt Password-Based Key Derivation Function) - -#### Data padding - PKCS#5 -| [PKCS#7](http://tools.ietf.org/html/rfc5652#section-6.3) -| [Zero padding](https://en.wikipedia.org/wiki/Padding_(cryptography)#Zero_padding) -| [ISO78164](http://www.embedx.com/pdfs/ISO_STD_7816/info_isoiec7816-4%7Bed21.0%7Den.pdf) -| [ISO10126](https://en.wikipedia.org/wiki/Padding_(cryptography)#ISO_10126) -| No padding - -#### Authenticated Encryption with Associated Data (AEAD) -- [AEAD\_CHACHA20\_POLY1305](https://tools.ietf.org/html/rfc7539#section-2.8) - -## Why -[Why?](https://github.com/krzyzanowskim/CryptoSwift/issues/5) [Because I can](https://github.com/krzyzanowskim/CryptoSwift/issues/5#issuecomment-53379391). - -## How do I get involved? - -You want to help, great! Go ahead and fork our repo, make your changes and send us a pull request. - -## Contribution - -Check out [CONTRIBUTING.md](CONTRIBUTING.md) for more information on how to help with CryptoSwift. - -- If you found a bug, [open an issue](https://github.com/krzyzanowskim/CryptoSwift/issues). -- If you have a feature request, [open an issue](https://github.com/krzyzanowskim/CryptoSwift/issues). - -## Installation - -### Hardened Runtime (macOS) and Xcode - -Binary CryptoSwift.xcframework (Used by Swift Package Manager package integration) won't load properly in your app if the app uses **Sign to Run Locally** Signing Certificate with Hardened Runtime enabled. It is possible to setup Xcode like this. To solve the problem you have two options: -- Use proper Signing Certificate, eg. *Development* <- this is the proper action -- Use `Disable Library Validation` aka `com.apple.security.cs.disable-library-validation` entitlement - -#### Xcode Project - -To install CryptoSwift, add it as a submodule to your project (on the top level project directory): - - git submodule add https://github.com/krzyzanowskim/CryptoSwift.git - -It is recommended to enable [Whole-Module Optimization](https://swift.org/blog/whole-module-optimizations/) to gain better performance. Non-optimized build results in significantly worse performance. - -#### Swift Package Manager - -You can use [Swift Package Manager](https://swift.org/package-manager/) and specify dependency in `Package.swift` by adding this: - -```swift -.package(url: "https://github.com/krzyzanowskim/CryptoSwift.git", .upToNextMajor(from: "1.4.1")) -``` - -See: [Package.swift - manual](http://blog.krzyzanowskim.com/2016/08/09/package-swift-manual/) - -Notice: Swift Package Manager uses debug configuration for debug Xcode build, that may result in significant (up to x10000) worse performance. Performance characteristic is different in Release build. To overcome this prolem, consider embed `CryptoSwift.xcframework` described below. - -#### CocoaPods - -You can use [CocoaPods](https://cocoapods.org/pods/CryptoSwift). - -```ruby -pod 'CryptoSwift', '~> 1.4.1' -``` - -Bear in mind that CocoaPods will build CryptoSwift without [Whole-Module Optimization](https://swift.org/blog/whole-module-optimizations/) that may impact performance. You can change it manually after installation, or use [cocoapods-wholemodule](https://github.com/jedlewison/cocoapods-wholemodule) plugin. - -#### Carthage - -You can use [Carthage](https://github.com/Carthage/Carthage). -Specify in Cartfile: - -```ruby -github "krzyzanowskim/CryptoSwift" -``` - -Run `carthage` to build the framework and drag the built CryptoSwift.framework into your Xcode project. Follow [build instructions](https://github.com/Carthage/Carthage#getting-started). [Common issues](https://github.com/krzyzanowskim/CryptoSwift/issues/492#issuecomment-330822874). - -#### XCFramework - -XCFrameworks require Xcode 11 or later and they can be integrated similarly to how we’re used to integrating the `.framework` format. -Please use script [scripts/build-framework.sh](scripts/build-framework.sh) to generate binary `CryptoSwift.xcframework` archive that you can use as a dependency in Xcode. - -CryptoSwift.xcframework is a Release (Optimized) binary that offer best available Swift code performance. - -Screen Shot 2020-10-27 at 00 06 32 - -#### Embedded Framework - -Embedded frameworks require a minimum deployment target of iOS 9 or macOS Sierra (10.12). Drag the `CryptoSwift.xcodeproj` file into your Xcode project, and add appropriate framework as a dependency to your target. Now select your App and choose the General tab for the app target. Find *Embedded Binaries* and press "+", then select `CryptoSwift.framework` (iOS, macOS, watchOS or tvOS) - -![](https://cloud.githubusercontent.com/assets/758033/10834511/25a26852-7e9a-11e5-8c01-6cc8f1838459.png) - -Sometimes "embedded framework" option is not available. In that case, you have to add new build phase for the target. - -![](https://cloud.githubusercontent.com/assets/758033/18415615/d5edabb0-77f8-11e6-8c94-f41d9fc2b8cb.png) - -##### iOS, macOS, watchOS, tvOS - -In the project, you'll find [single scheme](https://mxcl.dev/PromiseKit/news/2016/08/Multiplatform-Single-Scheme-Xcode-Projects/) for all platforms: -- CryptoSwift - -#### Swift versions support - -- Swift 1.2: branch [swift12](https://github.com/krzyzanowskim/CryptoSwift/tree/swift12) version <= 0.0.13 -- Swift 2.1: branch [swift21](https://github.com/krzyzanowskim/CryptoSwift/tree/swift21) version <= 0.2.3 -- Swift 2.2, 2.3: branch [swift2](https://github.com/krzyzanowskim/CryptoSwift/tree/swift2) version <= 0.5.2 -- Swift 3.1, branch [swift3](https://github.com/krzyzanowskim/CryptoSwift/tree/swift3) version <= 0.6.9 -- Swift 3.2, branch [swift32](https://github.com/krzyzanowskim/CryptoSwift/tree/swift32) version = 0.7.0 -- Swift 4.0, branch [swift4](https://github.com/krzyzanowskim/CryptoSwift/tree/swift4) version <= 0.12.0 -- Swift 4.2, branch [swift42](https://github.com/krzyzanowskim/CryptoSwift/tree/swift42) version <= 0.15.0 -- Swift 5.0, branch [swift5](https://github.com/krzyzanowskim/CryptoSwift/tree/swift5) version <= 1.2.0 -- Swift 5.1, branch [swift5](https://github.com/krzyzanowskim/CryptoSwift/tree/swift51) version <= 1.3.3 -- Swift 5.3 and newer, branch [master](https://github.com/krzyzanowskim/CryptoSwift/tree/master) - -## How-to - -* [Basics (data types, conversion, ...)](#basics) -* [Digest (MD5, SHA...)](#calculate-digest) -* [Message authenticators (HMAC, CMAC...)](#message-authenticators-1) -* [Password-Based Key Derivation Function (PBKDF2, ...)](#password-based-key-derivation-functions) -* [HMAC-based Key Derivation Function (HKDF)](#hmac-based-key-derivation-function) -* [Data Padding](#data-padding) -* [ChaCha20](#chacha20) -* [Rabbit](#rabbit) -* [Blowfish](#blowfish) -* [AES - Advanced Encryption Standard](#aes) -* [AES-GCM](#aes-gcm) -* [Authenticated Encryption with Associated Data (AEAD)](#aead) - -##### Basics - -```swift -import CryptoSwift -``` - -CryptoSwift uses array of bytes aka `Array` as a base type for all operations. Every data may be converted to a stream of bytes. You will find convenience functions that accept `String` or `Data`, and it will be internally converted to the array of bytes. - -##### Data types conversion - -For your convenience, **CryptoSwift** provides two functions to easily convert an array of bytes to `Data` or `Data` to an array of bytes: - -Data from bytes: - -```swift -let data = Data( [0x01, 0x02, 0x03]) -``` - -`Data` to `Array` - -```swift -let bytes = data.bytes // [1,2,3] -``` - -[Hexadecimal](https://en.wikipedia.org/wiki/Hexadecimal) encoding: - -```swift -let bytes = Array(hex: "0x010203") // [1,2,3] -let hex = bytes.toHexString() // "010203" -``` - -Build bytes out of `String` -```swift -let bytes: Array = "cipherkey".bytes // Array("cipherkey".utf8) -``` - -Also... check out helpers that work with **Base64** encoded data: -```swift -"aPf/i9th9iX+vf49eR7PYk2q7S5xmm3jkRLejgzHNJs=".decryptBase64ToString(cipher) -"aPf/i9th9iX+vf49eR7PYk2q7S5xmm3jkRLejgzHNJs=".decryptBase64(cipher) -bytes.toBase64() -``` - -##### Calculate Digest - -Hashing a data or array of bytes (aka `Array`) -```swift -/* Hash struct usage */ -let bytes: Array = [0x01, 0x02, 0x03] -let digest = input.md5() -let digest = Digest.md5(bytes) -``` - -```swift -let data = Data([0x01, 0x02, 0x03]) - -let hash = data.md5() -let hash = data.sha1() -let hash = data.sha224() -let hash = data.sha256() -let hash = data.sha384() -let hash = data.sha512() -``` -```swift -do { - var digest = MD5() - let partial1 = try digest.update(withBytes: [0x31, 0x32]) - let partial2 = try digest.update(withBytes: [0x33]) - let result = try digest.finish() -} catch { } -``` - -Hashing a String and printing result - -```swift -let hash = "123".md5() // "123".bytes.md5() -``` - -##### Calculate CRC - -```swift -bytes.crc16() -data.crc16() - -bytes.crc32() -data.crc32() -``` - -##### Message authenticators - -```swift -// Calculate Message Authentication Code (MAC) for message -let key: Array = [1,2,3,4,5,6,7,8,9,10,...] - -try Poly1305(key: key).authenticate(bytes) -try HMAC(key: key, variant: .sha256).authenticate(bytes) -try CMAC(key: key).authenticate(bytes) -``` - -##### Password-Based Key Derivation Functions - -```swift -let password: Array = Array("s33krit".utf8) -let salt: Array = Array("nacllcan".utf8) - -let key = try PKCS5.PBKDF2(password: password, salt: salt, iterations: 4096, keyLength: 32, variant: .sha256).calculate() -``` - -```swift -let password: Array = Array("s33krit".utf8) -let salt: Array = Array("nacllcan".utf8) -// Scrypt implementation does not implement work parallelization, so `p` parameter will -// increase the work time even in multicore systems -let key = try Scrypt(password: password, salt: salt, dkLen: 64, N: 16384, r: 8, p: 1).calculate() -``` - -##### HMAC-based Key Derivation Function - -```swift -let password: Array = Array("s33krit".utf8) -let salt: Array = Array("nacllcan".utf8) - -let key = try HKDF(password: password, salt: salt, variant: .sha256).calculate() -``` - - -##### Data Padding - -Some content-encryption algorithms assume the input length is a multiple of `k` octets, where `k` is greater than one. For such algorithms, the input shall be padded. - -```swift -Padding.pkcs7.add(to: bytes, blockSize: AES.blockSize) -``` - -#### Working with Ciphers -##### ChaCha20 - -```swift -let encrypted = try ChaCha20(key: key, iv: iv).encrypt(message) -let decrypted = try ChaCha20(key: key, iv: iv).decrypt(encrypted) -``` - -##### Rabbit - -```swift -let encrypted = try Rabbit(key: key, iv: iv).encrypt(message) -let decrypted = try Rabbit(key: key, iv: iv).decrypt(encrypted) -``` -##### Blowfish - -```swift -let encrypted = try Blowfish(key: key, blockMode: CBC(iv: iv), padding: .pkcs7).encrypt(message) -let decrypted = try Blowfish(key: key, blockMode: CBC(iv: iv), padding: .pkcs7).decrypt(encrypted) -``` - -##### AES - -Notice regarding padding: *Manual padding of data is optional, and CryptoSwift is using PKCS7 padding by default. If you need to manually disable/enable padding, you can do this by setting parameter for __AES__ class* - -Variant of AES encryption (AES-128, AES-192, AES-256) depends on given key length: - -- AES-128 = 16 bytes -- AES-192 = 24 bytes -- AES-256 = 32 bytes - -AES-256 example - -```swift -let encryptedBytes = try AES(key: [1,2,3,...,32], blockMode: CBC(iv: [1,2,3,...,16]), padding: .pkcs7) -``` - -Full example: - -```swift -let password: [UInt8] = Array("s33krit".utf8) -let salt: [UInt8] = Array("nacllcan".utf8) - -/* Generate a key from a `password`. Optional if you already have a key */ -let key = try PKCS5.PBKDF2( - password: password, - salt: salt, - iterations: 4096, - keyLength: 32, /* AES-256 */ - variant: .sha256 -).calculate() - -/* Generate random IV value. IV is public value. Either need to generate, or get it from elsewhere */ -let iv = AES.randomIV(AES.blockSize) - -/* AES cryptor instance */ -let aes = try AES(key: key, blockMode: CBC(iv: iv), padding: .pkcs7) - -/* Encrypt Data */ -let inputData = Data() -let encryptedBytes = try aes.encrypt(inputData.bytes) -let encryptedData = Data(encryptedBytes) - -/* Decrypt Data */ -let decryptedBytes = try aes.decrypt(encryptedData.bytes) -let decryptedData = Data(decryptedBytes) -``` - -###### All at once -```swift -do { - let aes = try AES(key: "keykeykeykeykeyk", iv: "drowssapdrowssap") // aes128 - let ciphertext = try aes.encrypt(Array("Nullam quis risus eget urna mollis ornare vel eu leo.".utf8)) -} catch { } -``` - -###### Incremental updates - -Incremental operations use instance of Cryptor and encrypt/decrypt one part at a time, this way you can save on memory for large files. - -```swift -do { - var encryptor = try AES(key: "keykeykeykeykeyk", iv: "drowssapdrowssap").makeEncryptor() - - var ciphertext = Array() - // aggregate partial results - ciphertext += try encryptor.update(withBytes: Array("Nullam quis risus ".utf8)) - ciphertext += try encryptor.update(withBytes: Array("eget urna mollis ".utf8)) - ciphertext += try encryptor.update(withBytes: Array("ornare vel eu leo.".utf8)) - // finish at the end - ciphertext += try encryptor.finish() - - print(ciphertext.toHexString()) -} catch { - print(error) -} -``` - -###### AES Advanced usage -```swift -let input: Array = [0,1,2,3,4,5,6,7,8,9] - -let key: Array = [0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00] -let iv: Array = // Random bytes of `AES.blockSize` length - -do { - let encrypted = try AES(key: key, blockMode: CBC(iv: iv), padding: .pkcs7).encrypt(input) - let decrypted = try AES(key: key, blockMode: CBC(iv: iv), padding: .pkcs7).decrypt(encrypted) -} catch { - print(error) -} -``` - -AES without data padding - -```swift -let input: Array = [0,1,2,3,4,5,6,7,8,9] -let encrypted: Array = try! AES(key: Array("secret0key000000".utf8), blockMode: CBC(iv: Array("0123456789012345".utf8)), padding: .noPadding).encrypt(input) -``` - -Using convenience extensions - -```swift -let plain = Data([0x01, 0x02, 0x03]) -let encrypted = try! plain.encrypt(ChaCha20(key: key, iv: iv)) -let decrypted = try! encrypted.decrypt(ChaCha20(key: key, iv: iv)) -``` - -##### AES-GCM - -The result of Galois/Counter Mode (GCM) encryption is ciphertext and **authentication tag**, that is later used to decryption. - -encryption - -```swift -do { - // In combined mode, the authentication tag is directly appended to the encrypted message. This is usually what you want. - let gcm = GCM(iv: iv, mode: .combined) - let aes = try AES(key: key, blockMode: gcm, padding: .noPadding) - let encrypted = try aes.encrypt(plaintext) - let tag = gcm.authenticationTag -} catch { - // failed -} -``` - -decryption - -```swift -do { - // In combined mode, the authentication tag is appended to the encrypted message. This is usually what you want. - let gcm = GCM(iv: iv, mode: .combined) - let aes = try AES(key: key, blockMode: gcm, padding: .noPadding) - return try aes.decrypt(encrypted) -} catch { - // failed -} -``` - -**Note**: GCM instance is not intended to be reused. So you can't use the same `GCM` instance from encoding to also perform decoding. - -##### AES-CCM - -The result of Counter with Cipher Block Chaining-Message Authentication Code encryption is ciphertext and **authentication tag**, that is later used to decryption. - -```swift -do { - // The authentication tag is appended to the encrypted message. - let tagLength = 8 - let ccm = CCM(iv: iv, tagLength: tagLength, messageLength: ciphertext.count - tagLength, additionalAuthenticatedData: data) - let aes = try AES(key: key, blockMode: ccm, padding: .noPadding) - return try aes.decrypt(encrypted) -} catch { - // failed -} -``` - -Check documentation or CCM specification for valid parameters for CCM. - -##### AEAD - -```swift -let encrypt = try AEADChaCha20Poly1305.encrypt(plaintext, key: key, iv: nonce, authenticationHeader: header) -let decrypt = try AEADChaCha20Poly1305.decrypt(ciphertext, key: key, iv: nonce, authenticationHeader: header, authenticationTag: tagArr: tag) -``` - -## Author - -CryptoSwift is owned and maintained by [Marcin Krzyżanowski](http://www.krzyzanowskim.com) - -You can follow me on Twitter at [@krzyzanowskim](http://twitter.com/krzyzanowskim) for project updates and releases. - -# Cryptography Notice - -This distribution includes cryptographic software. The country in which you currently reside may have restrictions on the import, possession, use, and/or re-export to another country, of encryption software. BEFORE using any encryption software, please check your country's laws, regulations and policies concerning the import, possession, or use, and re-export of encryption software, to see if this is permitted. See http://www.wassenaar.org/ for more information. - -## License - -Copyright (C) 2014-2017 Marcin Krzyżanowski -This software is provided 'as-is', without any express or implied warranty. - -In no event will the authors be held liable for any damages arising from the use of this software. - -Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: - -- The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, **an acknowledgment in the product documentation is required**. -- Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -- This notice may not be removed or altered from any source or binary distribution. -- Redistributions of any form whatsoever must retain the following acknowledgment: 'This product includes software developed by the "Marcin Krzyzanowski" (http://krzyzanowskim.com/).' - -## Changelog - -See [CHANGELOG](./CHANGELOG) file. diff --git a/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/AEAD/AEAD.swift b/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/AEAD/AEAD.swift deleted file mode 100644 index 6d85c047..00000000 --- a/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/AEAD/AEAD.swift +++ /dev/null @@ -1,40 +0,0 @@ -// -// AEAD.swift -// CryptoSwift -// -// Copyright (C) 2014-2017 Marcin Krzyżanowski -// This software is provided 'as-is', without any express or implied warranty. -// -// In no event will the authors be held liable for any damages arising from the use of this software. -// -// Permission is granted to anyone to use this software for any purpose,including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: -// -// - The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation is required. -// - Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -// - This notice may not be removed or altered from any source or binary distribution. -// -// - -// https://www.iana.org/assignments/aead-parameters/aead-parameters.xhtml - -/// Authenticated Encryption with Associated Data (AEAD) -public protocol AEAD { - static var kLen: Int { get } // key length - static var ivRange: Range { get } // nonce length -} - -extension AEAD { - static func calculateAuthenticationTag(authenticator: Authenticator, cipherText: Array, authenticationHeader: Array) throws -> Array { - let headerPadding = ((16 - (authenticationHeader.count & 0xf)) & 0xf) - let cipherPadding = ((16 - (cipherText.count & 0xf)) & 0xf) - - var mac = authenticationHeader - mac += Array(repeating: 0, count: headerPadding) - mac += cipherText - mac += Array(repeating: 0, count: cipherPadding) - mac += UInt64(bigEndian: UInt64(authenticationHeader.count)).bytes() - mac += UInt64(bigEndian: UInt64(cipherText.count)).bytes() - - return try authenticator.authenticate(mac) - } -} diff --git a/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/AEAD/AEADChaCha20Poly1305.swift b/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/AEAD/AEADChaCha20Poly1305.swift deleted file mode 100644 index 085f031e..00000000 --- a/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/AEAD/AEADChaCha20Poly1305.swift +++ /dev/null @@ -1,59 +0,0 @@ -// -// ChaCha20Poly1305.swift -// CryptoSwift -// -// Copyright (C) 2014-2017 Marcin Krzyżanowski -// This software is provided 'as-is', without any express or implied warranty. -// -// In no event will the authors be held liable for any damages arising from the use of this software. -// -// Permission is granted to anyone to use this software for any purpose,including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: -// -// - The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation is required. -// - Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -// - This notice may not be removed or altered from any source or binary distribution. -// -// -// https://tools.ietf.org/html/rfc7539#section-2.8.1 - -/// AEAD_CHACHA20_POLY1305 -public final class AEADChaCha20Poly1305: AEAD { - public static let kLen = 32 // key length - public static var ivRange = Range(12...12) - - /// Authenticated encryption - public static func encrypt(_ plainText: Array, key: Array, iv: Array, authenticationHeader: Array) throws -> (cipherText: Array, authenticationTag: Array) { - let cipher = try ChaCha20(key: key, iv: iv) - - var polykey = Array(repeating: 0, count: kLen) - var toEncrypt = polykey - polykey = try cipher.encrypt(polykey) - toEncrypt += polykey - toEncrypt += plainText - - let fullCipherText = try cipher.encrypt(toEncrypt) - let cipherText = Array(fullCipherText.dropFirst(64)) - - let tag = try calculateAuthenticationTag(authenticator: Poly1305(key: polykey), cipherText: cipherText, authenticationHeader: authenticationHeader) - return (cipherText, tag) - } - - /// Authenticated decryption - public static func decrypt(_ cipherText: Array, key: Array, iv: Array, authenticationHeader: Array, authenticationTag: Array) throws -> (plainText: Array, success: Bool) { - let chacha = try ChaCha20(key: key, iv: iv) - - let polykey = try chacha.encrypt(Array(repeating: 0, count: self.kLen)) - let mac = try calculateAuthenticationTag(authenticator: Poly1305(key: polykey), cipherText: cipherText, authenticationHeader: authenticationHeader) - guard mac == authenticationTag else { - return (cipherText, false) - } - - var toDecrypt = Array(reserveCapacity: cipherText.count + 64) - toDecrypt += polykey - toDecrypt += polykey - toDecrypt += cipherText - let fullPlainText = try chacha.decrypt(toDecrypt) - let plainText = Array(fullPlainText.dropFirst(64)) - return (plainText, true) - } -} diff --git a/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/AES.Cryptors.swift b/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/AES.Cryptors.swift deleted file mode 100644 index 3714df55..00000000 --- a/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/AES.Cryptors.swift +++ /dev/null @@ -1,39 +0,0 @@ -// -// CryptoSwift -// -// Copyright (C) 2014-2017 Marcin Krzyżanowski -// This software is provided 'as-is', without any express or implied warranty. -// -// In no event will the authors be held liable for any damages arising from the use of this software. -// -// Permission is granted to anyone to use this software for any purpose,including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: -// -// - The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation is required. -// - Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -// - This notice may not be removed or altered from any source or binary distribution. -// - -// MARK: Cryptors - -extension AES: Cryptors { - @inlinable - public func makeEncryptor() throws -> Cryptor & Updatable { - let blockSize = blockMode.customBlockSize ?? AES.blockSize - let worker = try blockMode.worker(blockSize: blockSize, cipherOperation: encrypt, encryptionOperation: encrypt) - if worker is StreamModeWorker { - return try StreamEncryptor(blockSize: blockSize, padding: padding, worker) - } - return try BlockEncryptor(blockSize: blockSize, padding: padding, worker) - } - - @inlinable - public func makeDecryptor() throws -> Cryptor & Updatable { - let blockSize = blockMode.customBlockSize ?? AES.blockSize - let cipherOperation: CipherOperationOnBlock = blockMode.options.contains(.useEncryptToDecrypt) == true ? encrypt : decrypt - let worker = try blockMode.worker(blockSize: blockSize, cipherOperation: cipherOperation, encryptionOperation: encrypt) - if worker is StreamModeWorker { - return try StreamDecryptor(blockSize: blockSize, padding: padding, worker) - } - return try BlockDecryptor(blockSize: blockSize, padding: padding, worker) - } -} diff --git a/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/AES.swift b/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/AES.swift deleted file mode 100644 index bd50158e..00000000 --- a/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/AES.swift +++ /dev/null @@ -1,556 +0,0 @@ -// -// CryptoSwift -// -// Copyright (C) 2014-2017 Marcin Krzyżanowski -// This software is provided 'as-is', without any express or implied warranty. -// -// In no event will the authors be held liable for any damages arising from the use of this software. -// -// Permission is granted to anyone to use this software for any purpose,including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: -// -// - The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation is required. -// - Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -// - This notice may not be removed or altered from any source or binary distribution. -// - -// Implementation of Gladman algorithm http://www.gladman.me.uk/AES -// - -/// The Advanced Encryption Standard (AES) -public final class AES: BlockCipher { - public enum Error: Swift.Error { - /// Invalid key - case invalidKeySize - /// Data padding is required - case dataPaddingRequired - /// Invalid Data - case invalidData - } - - public enum Variant: Int { - case aes128 = 1, aes192, aes256 - - var Nk: Int { // Nk words - [4, 6, 8][self.rawValue - 1] - } - - var Nb: Int { // Nb words - 4 - } - - var Nr: Int { // Nr - self.Nk + 6 - } - } - - @usableFromInline - internal let variantNr: Int - - @usableFromInline - internal let variantNb: Int - - @usableFromInline - internal let variantNk: Int - - public static let blockSize: Int = 16 // 128 /8 - public let keySize: Int - - /// AES Variant - public let variant: Variant - - // Parameters - let key: Key - - @usableFromInline - let blockMode: BlockMode - - @usableFromInline - let padding: Padding - - // - @usableFromInline - internal lazy var expandedKey: Array> = self.expandKey(self.key, variant: self.variant) - - @usableFromInline - internal lazy var expandedKeyInv: Array> = self.expandKeyInv(self.key, variant: self.variant) - - private lazy var sBoxes: (sBox: Array, invSBox: Array) = self.calculateSBox() - private lazy var sBox: Array = self.sBoxes.sBox - private lazy var sBoxInv: Array = self.sBoxes.invSBox - - // Parameters for Linear Congruence Generators - private static let Rcon: Array = [ - 0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, - 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, - 0x72, 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a, - 0x74, 0xe8, 0xcb, 0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, - 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, - 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, - 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb, 0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, - 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, - 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, - 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb, 0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, - 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, - 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f, - 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb, 0x8d, 0x01, 0x02, 0x04, - 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, - 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd, - 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb, 0x8d - ] - - @usableFromInline static let T0: Array = [0xa56363c6, 0x847c7cf8, 0x997777ee, 0x8d7b7bf6, 0xdf2f2ff, 0xbd6b6bd6, 0xb16f6fde, 0x54c5c591, 0x50303060, 0x3010102, 0xa96767ce, 0x7d2b2b56, 0x19fefee7, 0x62d7d7b5, 0xe6abab4d, 0x9a7676ec, 0x45caca8f, 0x9d82821f, 0x40c9c989, 0x877d7dfa, 0x15fafaef, 0xeb5959b2, 0xc947478e, 0xbf0f0fb, 0xecadad41, 0x67d4d4b3, 0xfda2a25f, 0xeaafaf45, 0xbf9c9c23, 0xf7a4a453, 0x967272e4, 0x5bc0c09b, 0xc2b7b775, 0x1cfdfde1, 0xae93933d, 0x6a26264c, 0x5a36366c, 0x413f3f7e, 0x2f7f7f5, 0x4fcccc83, 0x5c343468, 0xf4a5a551, 0x34e5e5d1, 0x8f1f1f9, 0x937171e2, 0x73d8d8ab, 0x53313162, 0x3f15152a, 0xc040408, 0x52c7c795, 0x65232346, 0x5ec3c39d, 0x28181830, 0xa1969637, 0xf05050a, 0xb59a9a2f, 0x907070e, 0x36121224, 0x9b80801b, 0x3de2e2df, 0x26ebebcd, 0x6927274e, 0xcdb2b27f, 0x9f7575ea, 0x1b090912, 0x9e83831d, 0x742c2c58, 0x2e1a1a34, 0x2d1b1b36, 0xb26e6edc, 0xee5a5ab4, 0xfba0a05b, 0xf65252a4, 0x4d3b3b76, 0x61d6d6b7, 0xceb3b37d, 0x7b292952, 0x3ee3e3dd, 0x712f2f5e, 0x97848413, 0xf55353a6, 0x68d1d1b9, 0x0, 0x2cededc1, 0x60202040, 0x1ffcfce3, 0xc8b1b179, 0xed5b5bb6, 0xbe6a6ad4, 0x46cbcb8d, 0xd9bebe67, 0x4b393972, 0xde4a4a94, 0xd44c4c98, 0xe85858b0, 0x4acfcf85, 0x6bd0d0bb, 0x2aefefc5, 0xe5aaaa4f, 0x16fbfbed, 0xc5434386, 0xd74d4d9a, 0x55333366, 0x94858511, 0xcf45458a, 0x10f9f9e9, 0x6020204, 0x817f7ffe, 0xf05050a0, 0x443c3c78, 0xba9f9f25, 0xe3a8a84b, 0xf35151a2, 0xfea3a35d, 0xc0404080, 0x8a8f8f05, 0xad92923f, 0xbc9d9d21, 0x48383870, 0x4f5f5f1, 0xdfbcbc63, 0xc1b6b677, 0x75dadaaf, 0x63212142, 0x30101020, 0x1affffe5, 0xef3f3fd, 0x6dd2d2bf, 0x4ccdcd81, 0x140c0c18, 0x35131326, 0x2fececc3, 0xe15f5fbe, 0xa2979735, 0xcc444488, 0x3917172e, 0x57c4c493, 0xf2a7a755, 0x827e7efc, 0x473d3d7a, 0xac6464c8, 0xe75d5dba, 0x2b191932, 0x957373e6, 0xa06060c0, 0x98818119, 0xd14f4f9e, 0x7fdcdca3, 0x66222244, 0x7e2a2a54, 0xab90903b, 0x8388880b, 0xca46468c, 0x29eeeec7, 0xd3b8b86b, 0x3c141428, 0x79dedea7, 0xe25e5ebc, 0x1d0b0b16, 0x76dbdbad, 0x3be0e0db, 0x56323264, 0x4e3a3a74, 0x1e0a0a14, 0xdb494992, 0xa06060c, 0x6c242448, 0xe45c5cb8, 0x5dc2c29f, 0x6ed3d3bd, 0xefacac43, 0xa66262c4, 0xa8919139, 0xa4959531, 0x37e4e4d3, 0x8b7979f2, 0x32e7e7d5, 0x43c8c88b, 0x5937376e, 0xb76d6dda, 0x8c8d8d01, 0x64d5d5b1, 0xd24e4e9c, 0xe0a9a949, 0xb46c6cd8, 0xfa5656ac, 0x7f4f4f3, 0x25eaeacf, 0xaf6565ca, 0x8e7a7af4, 0xe9aeae47, 0x18080810, 0xd5baba6f, 0x887878f0, 0x6f25254a, 0x722e2e5c, 0x241c1c38, 0xf1a6a657, 0xc7b4b473, 0x51c6c697, 0x23e8e8cb, 0x7cdddda1, 0x9c7474e8, 0x211f1f3e, 0xdd4b4b96, 0xdcbdbd61, 0x868b8b0d, 0x858a8a0f, 0x907070e0, 0x423e3e7c, 0xc4b5b571, 0xaa6666cc, 0xd8484890, 0x5030306, 0x1f6f6f7, 0x120e0e1c, 0xa36161c2, 0x5f35356a, 0xf95757ae, 0xd0b9b969, 0x91868617, 0x58c1c199, 0x271d1d3a, 0xb99e9e27, 0x38e1e1d9, 0x13f8f8eb, 0xb398982b, 0x33111122, 0xbb6969d2, 0x70d9d9a9, 0x898e8e07, 0xa7949433, 0xb69b9b2d, 0x221e1e3c, 0x92878715, 0x20e9e9c9, 0x49cece87, 0xff5555aa, 0x78282850, 0x7adfdfa5, 0x8f8c8c03, 0xf8a1a159, 0x80898909, 0x170d0d1a, 0xdabfbf65, 0x31e6e6d7, 0xc6424284, 0xb86868d0, 0xc3414182, 0xb0999929, 0x772d2d5a, 0x110f0f1e, 0xcbb0b07b, 0xfc5454a8, 0xd6bbbb6d, 0x3a16162c] - @usableFromInline static let T0_INV: Array = [0x50a7f451, 0x5365417e, 0xc3a4171a, 0x965e273a, 0xcb6bab3b, 0xf1459d1f, 0xab58faac, 0x9303e34b, 0x55fa3020, 0xf66d76ad, 0x9176cc88, 0x254c02f5, 0xfcd7e54f, 0xd7cb2ac5, 0x80443526, 0x8fa362b5, 0x495ab1de, 0x671bba25, 0x980eea45, 0xe1c0fe5d, 0x2752fc3, 0x12f04c81, 0xa397468d, 0xc6f9d36b, 0xe75f8f03, 0x959c9215, 0xeb7a6dbf, 0xda595295, 0x2d83bed4, 0xd3217458, 0x2969e049, 0x44c8c98e, 0x6a89c275, 0x78798ef4, 0x6b3e5899, 0xdd71b927, 0xb64fe1be, 0x17ad88f0, 0x66ac20c9, 0xb43ace7d, 0x184adf63, 0x82311ae5, 0x60335197, 0x457f5362, 0xe07764b1, 0x84ae6bbb, 0x1ca081fe, 0x942b08f9, 0x58684870, 0x19fd458f, 0x876cde94, 0xb7f87b52, 0x23d373ab, 0xe2024b72, 0x578f1fe3, 0x2aab5566, 0x728ebb2, 0x3c2b52f, 0x9a7bc586, 0xa50837d3, 0xf2872830, 0xb2a5bf23, 0xba6a0302, 0x5c8216ed, 0x2b1ccf8a, 0x92b479a7, 0xf0f207f3, 0xa1e2694e, 0xcdf4da65, 0xd5be0506, 0x1f6234d1, 0x8afea6c4, 0x9d532e34, 0xa055f3a2, 0x32e18a05, 0x75ebf6a4, 0x39ec830b, 0xaaef6040, 0x69f715e, 0x51106ebd, 0xf98a213e, 0x3d06dd96, 0xae053edd, 0x46bde64d, 0xb58d5491, 0x55dc471, 0x6fd40604, 0xff155060, 0x24fb9819, 0x97e9bdd6, 0xcc434089, 0x779ed967, 0xbd42e8b0, 0x888b8907, 0x385b19e7, 0xdbeec879, 0x470a7ca1, 0xe90f427c, 0xc91e84f8, 0x0, 0x83868009, 0x48ed2b32, 0xac70111e, 0x4e725a6c, 0xfbff0efd, 0x5638850f, 0x1ed5ae3d, 0x27392d36, 0x64d90f0a, 0x21a65c68, 0xd1545b9b, 0x3a2e3624, 0xb1670a0c, 0xfe75793, 0xd296eeb4, 0x9e919b1b, 0x4fc5c080, 0xa220dc61, 0x694b775a, 0x161a121c, 0xaba93e2, 0xe52aa0c0, 0x43e0223c, 0x1d171b12, 0xb0d090e, 0xadc78bf2, 0xb9a8b62d, 0xc8a91e14, 0x8519f157, 0x4c0775af, 0xbbdd99ee, 0xfd607fa3, 0x9f2601f7, 0xbcf5725c, 0xc53b6644, 0x347efb5b, 0x7629438b, 0xdcc623cb, 0x68fcedb6, 0x63f1e4b8, 0xcadc31d7, 0x10856342, 0x40229713, 0x2011c684, 0x7d244a85, 0xf83dbbd2, 0x1132f9ae, 0x6da129c7, 0x4b2f9e1d, 0xf330b2dc, 0xec52860d, 0xd0e3c177, 0x6c16b32b, 0x99b970a9, 0xfa489411, 0x2264e947, 0xc48cfca8, 0x1a3ff0a0, 0xd82c7d56, 0xef903322, 0xc74e4987, 0xc1d138d9, 0xfea2ca8c, 0x360bd498, 0xcf81f5a6, 0x28de7aa5, 0x268eb7da, 0xa4bfad3f, 0xe49d3a2c, 0xd927850, 0x9bcc5f6a, 0x62467e54, 0xc2138df6, 0xe8b8d890, 0x5ef7392e, 0xf5afc382, 0xbe805d9f, 0x7c93d069, 0xa92dd56f, 0xb31225cf, 0x3b99acc8, 0xa77d1810, 0x6e639ce8, 0x7bbb3bdb, 0x97826cd, 0xf418596e, 0x1b79aec, 0xa89a4f83, 0x656e95e6, 0x7ee6ffaa, 0x8cfbc21, 0xe6e815ef, 0xd99be7ba, 0xce366f4a, 0xd4099fea, 0xd67cb029, 0xafb2a431, 0x31233f2a, 0x3094a5c6, 0xc066a235, 0x37bc4e74, 0xa6ca82fc, 0xb0d090e0, 0x15d8a733, 0x4a9804f1, 0xf7daec41, 0xe50cd7f, 0x2ff69117, 0x8dd64d76, 0x4db0ef43, 0x544daacc, 0xdf0496e4, 0xe3b5d19e, 0x1b886a4c, 0xb81f2cc1, 0x7f516546, 0x4ea5e9d, 0x5d358c01, 0x737487fa, 0x2e410bfb, 0x5a1d67b3, 0x52d2db92, 0x335610e9, 0x1347d66d, 0x8c61d79a, 0x7a0ca137, 0x8e14f859, 0x893c13eb, 0xee27a9ce, 0x35c961b7, 0xede51ce1, 0x3cb1477a, 0x59dfd29c, 0x3f73f255, 0x79ce1418, 0xbf37c773, 0xeacdf753, 0x5baafd5f, 0x146f3ddf, 0x86db4478, 0x81f3afca, 0x3ec468b9, 0x2c342438, 0x5f40a3c2, 0x72c31d16, 0xc25e2bc, 0x8b493c28, 0x41950dff, 0x7101a839, 0xdeb30c08, 0x9ce4b4d8, 0x90c15664, 0x6184cb7b, 0x70b632d5, 0x745c6c48, 0x4257b8d0] - @usableFromInline static let T1: Array = [0x6363c6a5, 0x7c7cf884, 0x7777ee99, 0x7b7bf68d, 0xf2f2ff0d, 0x6b6bd6bd, 0x6f6fdeb1, 0xc5c59154, 0x30306050, 0x1010203, 0x6767cea9, 0x2b2b567d, 0xfefee719, 0xd7d7b562, 0xabab4de6, 0x7676ec9a, 0xcaca8f45, 0x82821f9d, 0xc9c98940, 0x7d7dfa87, 0xfafaef15, 0x5959b2eb, 0x47478ec9, 0xf0f0fb0b, 0xadad41ec, 0xd4d4b367, 0xa2a25ffd, 0xafaf45ea, 0x9c9c23bf, 0xa4a453f7, 0x7272e496, 0xc0c09b5b, 0xb7b775c2, 0xfdfde11c, 0x93933dae, 0x26264c6a, 0x36366c5a, 0x3f3f7e41, 0xf7f7f502, 0xcccc834f, 0x3434685c, 0xa5a551f4, 0xe5e5d134, 0xf1f1f908, 0x7171e293, 0xd8d8ab73, 0x31316253, 0x15152a3f, 0x404080c, 0xc7c79552, 0x23234665, 0xc3c39d5e, 0x18183028, 0x969637a1, 0x5050a0f, 0x9a9a2fb5, 0x7070e09, 0x12122436, 0x80801b9b, 0xe2e2df3d, 0xebebcd26, 0x27274e69, 0xb2b27fcd, 0x7575ea9f, 0x909121b, 0x83831d9e, 0x2c2c5874, 0x1a1a342e, 0x1b1b362d, 0x6e6edcb2, 0x5a5ab4ee, 0xa0a05bfb, 0x5252a4f6, 0x3b3b764d, 0xd6d6b761, 0xb3b37dce, 0x2929527b, 0xe3e3dd3e, 0x2f2f5e71, 0x84841397, 0x5353a6f5, 0xd1d1b968, 0x0, 0xededc12c, 0x20204060, 0xfcfce31f, 0xb1b179c8, 0x5b5bb6ed, 0x6a6ad4be, 0xcbcb8d46, 0xbebe67d9, 0x3939724b, 0x4a4a94de, 0x4c4c98d4, 0x5858b0e8, 0xcfcf854a, 0xd0d0bb6b, 0xefefc52a, 0xaaaa4fe5, 0xfbfbed16, 0x434386c5, 0x4d4d9ad7, 0x33336655, 0x85851194, 0x45458acf, 0xf9f9e910, 0x2020406, 0x7f7ffe81, 0x5050a0f0, 0x3c3c7844, 0x9f9f25ba, 0xa8a84be3, 0x5151a2f3, 0xa3a35dfe, 0x404080c0, 0x8f8f058a, 0x92923fad, 0x9d9d21bc, 0x38387048, 0xf5f5f104, 0xbcbc63df, 0xb6b677c1, 0xdadaaf75, 0x21214263, 0x10102030, 0xffffe51a, 0xf3f3fd0e, 0xd2d2bf6d, 0xcdcd814c, 0xc0c1814, 0x13132635, 0xececc32f, 0x5f5fbee1, 0x979735a2, 0x444488cc, 0x17172e39, 0xc4c49357, 0xa7a755f2, 0x7e7efc82, 0x3d3d7a47, 0x6464c8ac, 0x5d5dbae7, 0x1919322b, 0x7373e695, 0x6060c0a0, 0x81811998, 0x4f4f9ed1, 0xdcdca37f, 0x22224466, 0x2a2a547e, 0x90903bab, 0x88880b83, 0x46468cca, 0xeeeec729, 0xb8b86bd3, 0x1414283c, 0xdedea779, 0x5e5ebce2, 0xb0b161d, 0xdbdbad76, 0xe0e0db3b, 0x32326456, 0x3a3a744e, 0xa0a141e, 0x494992db, 0x6060c0a, 0x2424486c, 0x5c5cb8e4, 0xc2c29f5d, 0xd3d3bd6e, 0xacac43ef, 0x6262c4a6, 0x919139a8, 0x959531a4, 0xe4e4d337, 0x7979f28b, 0xe7e7d532, 0xc8c88b43, 0x37376e59, 0x6d6ddab7, 0x8d8d018c, 0xd5d5b164, 0x4e4e9cd2, 0xa9a949e0, 0x6c6cd8b4, 0x5656acfa, 0xf4f4f307, 0xeaeacf25, 0x6565caaf, 0x7a7af48e, 0xaeae47e9, 0x8081018, 0xbaba6fd5, 0x7878f088, 0x25254a6f, 0x2e2e5c72, 0x1c1c3824, 0xa6a657f1, 0xb4b473c7, 0xc6c69751, 0xe8e8cb23, 0xdddda17c, 0x7474e89c, 0x1f1f3e21, 0x4b4b96dd, 0xbdbd61dc, 0x8b8b0d86, 0x8a8a0f85, 0x7070e090, 0x3e3e7c42, 0xb5b571c4, 0x6666ccaa, 0x484890d8, 0x3030605, 0xf6f6f701, 0xe0e1c12, 0x6161c2a3, 0x35356a5f, 0x5757aef9, 0xb9b969d0, 0x86861791, 0xc1c19958, 0x1d1d3a27, 0x9e9e27b9, 0xe1e1d938, 0xf8f8eb13, 0x98982bb3, 0x11112233, 0x6969d2bb, 0xd9d9a970, 0x8e8e0789, 0x949433a7, 0x9b9b2db6, 0x1e1e3c22, 0x87871592, 0xe9e9c920, 0xcece8749, 0x5555aaff, 0x28285078, 0xdfdfa57a, 0x8c8c038f, 0xa1a159f8, 0x89890980, 0xd0d1a17, 0xbfbf65da, 0xe6e6d731, 0x424284c6, 0x6868d0b8, 0x414182c3, 0x999929b0, 0x2d2d5a77, 0xf0f1e11, 0xb0b07bcb, 0x5454a8fc, 0xbbbb6dd6, 0x16162c3a] - @usableFromInline static let T1_INV: Array = [0xa7f45150, 0x65417e53, 0xa4171ac3, 0x5e273a96, 0x6bab3bcb, 0x459d1ff1, 0x58faacab, 0x3e34b93, 0xfa302055, 0x6d76adf6, 0x76cc8891, 0x4c02f525, 0xd7e54ffc, 0xcb2ac5d7, 0x44352680, 0xa362b58f, 0x5ab1de49, 0x1bba2567, 0xeea4598, 0xc0fe5de1, 0x752fc302, 0xf04c8112, 0x97468da3, 0xf9d36bc6, 0x5f8f03e7, 0x9c921595, 0x7a6dbfeb, 0x595295da, 0x83bed42d, 0x217458d3, 0x69e04929, 0xc8c98e44, 0x89c2756a, 0x798ef478, 0x3e58996b, 0x71b927dd, 0x4fe1beb6, 0xad88f017, 0xac20c966, 0x3ace7db4, 0x4adf6318, 0x311ae582, 0x33519760, 0x7f536245, 0x7764b1e0, 0xae6bbb84, 0xa081fe1c, 0x2b08f994, 0x68487058, 0xfd458f19, 0x6cde9487, 0xf87b52b7, 0xd373ab23, 0x24b72e2, 0x8f1fe357, 0xab55662a, 0x28ebb207, 0xc2b52f03, 0x7bc5869a, 0x837d3a5, 0x872830f2, 0xa5bf23b2, 0x6a0302ba, 0x8216ed5c, 0x1ccf8a2b, 0xb479a792, 0xf207f3f0, 0xe2694ea1, 0xf4da65cd, 0xbe0506d5, 0x6234d11f, 0xfea6c48a, 0x532e349d, 0x55f3a2a0, 0xe18a0532, 0xebf6a475, 0xec830b39, 0xef6040aa, 0x9f715e06, 0x106ebd51, 0x8a213ef9, 0x6dd963d, 0x53eddae, 0xbde64d46, 0x8d5491b5, 0x5dc47105, 0xd406046f, 0x155060ff, 0xfb981924, 0xe9bdd697, 0x434089cc, 0x9ed96777, 0x42e8b0bd, 0x8b890788, 0x5b19e738, 0xeec879db, 0xa7ca147, 0xf427ce9, 0x1e84f8c9, 0x0, 0x86800983, 0xed2b3248, 0x70111eac, 0x725a6c4e, 0xff0efdfb, 0x38850f56, 0xd5ae3d1e, 0x392d3627, 0xd90f0a64, 0xa65c6821, 0x545b9bd1, 0x2e36243a, 0x670a0cb1, 0xe757930f, 0x96eeb4d2, 0x919b1b9e, 0xc5c0804f, 0x20dc61a2, 0x4b775a69, 0x1a121c16, 0xba93e20a, 0x2aa0c0e5, 0xe0223c43, 0x171b121d, 0xd090e0b, 0xc78bf2ad, 0xa8b62db9, 0xa91e14c8, 0x19f15785, 0x775af4c, 0xdd99eebb, 0x607fa3fd, 0x2601f79f, 0xf5725cbc, 0x3b6644c5, 0x7efb5b34, 0x29438b76, 0xc623cbdc, 0xfcedb668, 0xf1e4b863, 0xdc31d7ca, 0x85634210, 0x22971340, 0x11c68420, 0x244a857d, 0x3dbbd2f8, 0x32f9ae11, 0xa129c76d, 0x2f9e1d4b, 0x30b2dcf3, 0x52860dec, 0xe3c177d0, 0x16b32b6c, 0xb970a999, 0x489411fa, 0x64e94722, 0x8cfca8c4, 0x3ff0a01a, 0x2c7d56d8, 0x903322ef, 0x4e4987c7, 0xd138d9c1, 0xa2ca8cfe, 0xbd49836, 0x81f5a6cf, 0xde7aa528, 0x8eb7da26, 0xbfad3fa4, 0x9d3a2ce4, 0x9278500d, 0xcc5f6a9b, 0x467e5462, 0x138df6c2, 0xb8d890e8, 0xf7392e5e, 0xafc382f5, 0x805d9fbe, 0x93d0697c, 0x2dd56fa9, 0x1225cfb3, 0x99acc83b, 0x7d1810a7, 0x639ce86e, 0xbb3bdb7b, 0x7826cd09, 0x18596ef4, 0xb79aec01, 0x9a4f83a8, 0x6e95e665, 0xe6ffaa7e, 0xcfbc2108, 0xe815efe6, 0x9be7bad9, 0x366f4ace, 0x99fead4, 0x7cb029d6, 0xb2a431af, 0x233f2a31, 0x94a5c630, 0x66a235c0, 0xbc4e7437, 0xca82fca6, 0xd090e0b0, 0xd8a73315, 0x9804f14a, 0xdaec41f7, 0x50cd7f0e, 0xf691172f, 0xd64d768d, 0xb0ef434d, 0x4daacc54, 0x496e4df, 0xb5d19ee3, 0x886a4c1b, 0x1f2cc1b8, 0x5165467f, 0xea5e9d04, 0x358c015d, 0x7487fa73, 0x410bfb2e, 0x1d67b35a, 0xd2db9252, 0x5610e933, 0x47d66d13, 0x61d79a8c, 0xca1377a, 0x14f8598e, 0x3c13eb89, 0x27a9ceee, 0xc961b735, 0xe51ce1ed, 0xb1477a3c, 0xdfd29c59, 0x73f2553f, 0xce141879, 0x37c773bf, 0xcdf753ea, 0xaafd5f5b, 0x6f3ddf14, 0xdb447886, 0xf3afca81, 0xc468b93e, 0x3424382c, 0x40a3c25f, 0xc31d1672, 0x25e2bc0c, 0x493c288b, 0x950dff41, 0x1a83971, 0xb30c08de, 0xe4b4d89c, 0xc1566490, 0x84cb7b61, 0xb632d570, 0x5c6c4874, 0x57b8d042] - @usableFromInline static let T2: Array = [0x63c6a563, 0x7cf8847c, 0x77ee9977, 0x7bf68d7b, 0xf2ff0df2, 0x6bd6bd6b, 0x6fdeb16f, 0xc59154c5, 0x30605030, 0x1020301, 0x67cea967, 0x2b567d2b, 0xfee719fe, 0xd7b562d7, 0xab4de6ab, 0x76ec9a76, 0xca8f45ca, 0x821f9d82, 0xc98940c9, 0x7dfa877d, 0xfaef15fa, 0x59b2eb59, 0x478ec947, 0xf0fb0bf0, 0xad41ecad, 0xd4b367d4, 0xa25ffda2, 0xaf45eaaf, 0x9c23bf9c, 0xa453f7a4, 0x72e49672, 0xc09b5bc0, 0xb775c2b7, 0xfde11cfd, 0x933dae93, 0x264c6a26, 0x366c5a36, 0x3f7e413f, 0xf7f502f7, 0xcc834fcc, 0x34685c34, 0xa551f4a5, 0xe5d134e5, 0xf1f908f1, 0x71e29371, 0xd8ab73d8, 0x31625331, 0x152a3f15, 0x4080c04, 0xc79552c7, 0x23466523, 0xc39d5ec3, 0x18302818, 0x9637a196, 0x50a0f05, 0x9a2fb59a, 0x70e0907, 0x12243612, 0x801b9b80, 0xe2df3de2, 0xebcd26eb, 0x274e6927, 0xb27fcdb2, 0x75ea9f75, 0x9121b09, 0x831d9e83, 0x2c58742c, 0x1a342e1a, 0x1b362d1b, 0x6edcb26e, 0x5ab4ee5a, 0xa05bfba0, 0x52a4f652, 0x3b764d3b, 0xd6b761d6, 0xb37dceb3, 0x29527b29, 0xe3dd3ee3, 0x2f5e712f, 0x84139784, 0x53a6f553, 0xd1b968d1, 0x0, 0xedc12ced, 0x20406020, 0xfce31ffc, 0xb179c8b1, 0x5bb6ed5b, 0x6ad4be6a, 0xcb8d46cb, 0xbe67d9be, 0x39724b39, 0x4a94de4a, 0x4c98d44c, 0x58b0e858, 0xcf854acf, 0xd0bb6bd0, 0xefc52aef, 0xaa4fe5aa, 0xfbed16fb, 0x4386c543, 0x4d9ad74d, 0x33665533, 0x85119485, 0x458acf45, 0xf9e910f9, 0x2040602, 0x7ffe817f, 0x50a0f050, 0x3c78443c, 0x9f25ba9f, 0xa84be3a8, 0x51a2f351, 0xa35dfea3, 0x4080c040, 0x8f058a8f, 0x923fad92, 0x9d21bc9d, 0x38704838, 0xf5f104f5, 0xbc63dfbc, 0xb677c1b6, 0xdaaf75da, 0x21426321, 0x10203010, 0xffe51aff, 0xf3fd0ef3, 0xd2bf6dd2, 0xcd814ccd, 0xc18140c, 0x13263513, 0xecc32fec, 0x5fbee15f, 0x9735a297, 0x4488cc44, 0x172e3917, 0xc49357c4, 0xa755f2a7, 0x7efc827e, 0x3d7a473d, 0x64c8ac64, 0x5dbae75d, 0x19322b19, 0x73e69573, 0x60c0a060, 0x81199881, 0x4f9ed14f, 0xdca37fdc, 0x22446622, 0x2a547e2a, 0x903bab90, 0x880b8388, 0x468cca46, 0xeec729ee, 0xb86bd3b8, 0x14283c14, 0xdea779de, 0x5ebce25e, 0xb161d0b, 0xdbad76db, 0xe0db3be0, 0x32645632, 0x3a744e3a, 0xa141e0a, 0x4992db49, 0x60c0a06, 0x24486c24, 0x5cb8e45c, 0xc29f5dc2, 0xd3bd6ed3, 0xac43efac, 0x62c4a662, 0x9139a891, 0x9531a495, 0xe4d337e4, 0x79f28b79, 0xe7d532e7, 0xc88b43c8, 0x376e5937, 0x6ddab76d, 0x8d018c8d, 0xd5b164d5, 0x4e9cd24e, 0xa949e0a9, 0x6cd8b46c, 0x56acfa56, 0xf4f307f4, 0xeacf25ea, 0x65caaf65, 0x7af48e7a, 0xae47e9ae, 0x8101808, 0xba6fd5ba, 0x78f08878, 0x254a6f25, 0x2e5c722e, 0x1c38241c, 0xa657f1a6, 0xb473c7b4, 0xc69751c6, 0xe8cb23e8, 0xdda17cdd, 0x74e89c74, 0x1f3e211f, 0x4b96dd4b, 0xbd61dcbd, 0x8b0d868b, 0x8a0f858a, 0x70e09070, 0x3e7c423e, 0xb571c4b5, 0x66ccaa66, 0x4890d848, 0x3060503, 0xf6f701f6, 0xe1c120e, 0x61c2a361, 0x356a5f35, 0x57aef957, 0xb969d0b9, 0x86179186, 0xc19958c1, 0x1d3a271d, 0x9e27b99e, 0xe1d938e1, 0xf8eb13f8, 0x982bb398, 0x11223311, 0x69d2bb69, 0xd9a970d9, 0x8e07898e, 0x9433a794, 0x9b2db69b, 0x1e3c221e, 0x87159287, 0xe9c920e9, 0xce8749ce, 0x55aaff55, 0x28507828, 0xdfa57adf, 0x8c038f8c, 0xa159f8a1, 0x89098089, 0xd1a170d, 0xbf65dabf, 0xe6d731e6, 0x4284c642, 0x68d0b868, 0x4182c341, 0x9929b099, 0x2d5a772d, 0xf1e110f, 0xb07bcbb0, 0x54a8fc54, 0xbb6dd6bb, 0x162c3a16] - @usableFromInline static let T2_INV: Array = [0xf45150a7, 0x417e5365, 0x171ac3a4, 0x273a965e, 0xab3bcb6b, 0x9d1ff145, 0xfaacab58, 0xe34b9303, 0x302055fa, 0x76adf66d, 0xcc889176, 0x2f5254c, 0xe54ffcd7, 0x2ac5d7cb, 0x35268044, 0x62b58fa3, 0xb1de495a, 0xba25671b, 0xea45980e, 0xfe5de1c0, 0x2fc30275, 0x4c8112f0, 0x468da397, 0xd36bc6f9, 0x8f03e75f, 0x9215959c, 0x6dbfeb7a, 0x5295da59, 0xbed42d83, 0x7458d321, 0xe0492969, 0xc98e44c8, 0xc2756a89, 0x8ef47879, 0x58996b3e, 0xb927dd71, 0xe1beb64f, 0x88f017ad, 0x20c966ac, 0xce7db43a, 0xdf63184a, 0x1ae58231, 0x51976033, 0x5362457f, 0x64b1e077, 0x6bbb84ae, 0x81fe1ca0, 0x8f9942b, 0x48705868, 0x458f19fd, 0xde94876c, 0x7b52b7f8, 0x73ab23d3, 0x4b72e202, 0x1fe3578f, 0x55662aab, 0xebb20728, 0xb52f03c2, 0xc5869a7b, 0x37d3a508, 0x2830f287, 0xbf23b2a5, 0x302ba6a, 0x16ed5c82, 0xcf8a2b1c, 0x79a792b4, 0x7f3f0f2, 0x694ea1e2, 0xda65cdf4, 0x506d5be, 0x34d11f62, 0xa6c48afe, 0x2e349d53, 0xf3a2a055, 0x8a0532e1, 0xf6a475eb, 0x830b39ec, 0x6040aaef, 0x715e069f, 0x6ebd5110, 0x213ef98a, 0xdd963d06, 0x3eddae05, 0xe64d46bd, 0x5491b58d, 0xc471055d, 0x6046fd4, 0x5060ff15, 0x981924fb, 0xbdd697e9, 0x4089cc43, 0xd967779e, 0xe8b0bd42, 0x8907888b, 0x19e7385b, 0xc879dbee, 0x7ca1470a, 0x427ce90f, 0x84f8c91e, 0x0, 0x80098386, 0x2b3248ed, 0x111eac70, 0x5a6c4e72, 0xefdfbff, 0x850f5638, 0xae3d1ed5, 0x2d362739, 0xf0a64d9, 0x5c6821a6, 0x5b9bd154, 0x36243a2e, 0xa0cb167, 0x57930fe7, 0xeeb4d296, 0x9b1b9e91, 0xc0804fc5, 0xdc61a220, 0x775a694b, 0x121c161a, 0x93e20aba, 0xa0c0e52a, 0x223c43e0, 0x1b121d17, 0x90e0b0d, 0x8bf2adc7, 0xb62db9a8, 0x1e14c8a9, 0xf1578519, 0x75af4c07, 0x99eebbdd, 0x7fa3fd60, 0x1f79f26, 0x725cbcf5, 0x6644c53b, 0xfb5b347e, 0x438b7629, 0x23cbdcc6, 0xedb668fc, 0xe4b863f1, 0x31d7cadc, 0x63421085, 0x97134022, 0xc6842011, 0x4a857d24, 0xbbd2f83d, 0xf9ae1132, 0x29c76da1, 0x9e1d4b2f, 0xb2dcf330, 0x860dec52, 0xc177d0e3, 0xb32b6c16, 0x70a999b9, 0x9411fa48, 0xe9472264, 0xfca8c48c, 0xf0a01a3f, 0x7d56d82c, 0x3322ef90, 0x4987c74e, 0x38d9c1d1, 0xca8cfea2, 0xd498360b, 0xf5a6cf81, 0x7aa528de, 0xb7da268e, 0xad3fa4bf, 0x3a2ce49d, 0x78500d92, 0x5f6a9bcc, 0x7e546246, 0x8df6c213, 0xd890e8b8, 0x392e5ef7, 0xc382f5af, 0x5d9fbe80, 0xd0697c93, 0xd56fa92d, 0x25cfb312, 0xacc83b99, 0x1810a77d, 0x9ce86e63, 0x3bdb7bbb, 0x26cd0978, 0x596ef418, 0x9aec01b7, 0x4f83a89a, 0x95e6656e, 0xffaa7ee6, 0xbc2108cf, 0x15efe6e8, 0xe7bad99b, 0x6f4ace36, 0x9fead409, 0xb029d67c, 0xa431afb2, 0x3f2a3123, 0xa5c63094, 0xa235c066, 0x4e7437bc, 0x82fca6ca, 0x90e0b0d0, 0xa73315d8, 0x4f14a98, 0xec41f7da, 0xcd7f0e50, 0x91172ff6, 0x4d768dd6, 0xef434db0, 0xaacc544d, 0x96e4df04, 0xd19ee3b5, 0x6a4c1b88, 0x2cc1b81f, 0x65467f51, 0x5e9d04ea, 0x8c015d35, 0x87fa7374, 0xbfb2e41, 0x67b35a1d, 0xdb9252d2, 0x10e93356, 0xd66d1347, 0xd79a8c61, 0xa1377a0c, 0xf8598e14, 0x13eb893c, 0xa9ceee27, 0x61b735c9, 0x1ce1ede5, 0x477a3cb1, 0xd29c59df, 0xf2553f73, 0x141879ce, 0xc773bf37, 0xf753eacd, 0xfd5f5baa, 0x3ddf146f, 0x447886db, 0xafca81f3, 0x68b93ec4, 0x24382c34, 0xa3c25f40, 0x1d1672c3, 0xe2bc0c25, 0x3c288b49, 0xdff4195, 0xa8397101, 0xc08deb3, 0xb4d89ce4, 0x566490c1, 0xcb7b6184, 0x32d570b6, 0x6c48745c, 0xb8d04257] - @usableFromInline static let T3: Array = [0xc6a56363, 0xf8847c7c, 0xee997777, 0xf68d7b7b, 0xff0df2f2, 0xd6bd6b6b, 0xdeb16f6f, 0x9154c5c5, 0x60503030, 0x2030101, 0xcea96767, 0x567d2b2b, 0xe719fefe, 0xb562d7d7, 0x4de6abab, 0xec9a7676, 0x8f45caca, 0x1f9d8282, 0x8940c9c9, 0xfa877d7d, 0xef15fafa, 0xb2eb5959, 0x8ec94747, 0xfb0bf0f0, 0x41ecadad, 0xb367d4d4, 0x5ffda2a2, 0x45eaafaf, 0x23bf9c9c, 0x53f7a4a4, 0xe4967272, 0x9b5bc0c0, 0x75c2b7b7, 0xe11cfdfd, 0x3dae9393, 0x4c6a2626, 0x6c5a3636, 0x7e413f3f, 0xf502f7f7, 0x834fcccc, 0x685c3434, 0x51f4a5a5, 0xd134e5e5, 0xf908f1f1, 0xe2937171, 0xab73d8d8, 0x62533131, 0x2a3f1515, 0x80c0404, 0x9552c7c7, 0x46652323, 0x9d5ec3c3, 0x30281818, 0x37a19696, 0xa0f0505, 0x2fb59a9a, 0xe090707, 0x24361212, 0x1b9b8080, 0xdf3de2e2, 0xcd26ebeb, 0x4e692727, 0x7fcdb2b2, 0xea9f7575, 0x121b0909, 0x1d9e8383, 0x58742c2c, 0x342e1a1a, 0x362d1b1b, 0xdcb26e6e, 0xb4ee5a5a, 0x5bfba0a0, 0xa4f65252, 0x764d3b3b, 0xb761d6d6, 0x7dceb3b3, 0x527b2929, 0xdd3ee3e3, 0x5e712f2f, 0x13978484, 0xa6f55353, 0xb968d1d1, 0x0, 0xc12ceded, 0x40602020, 0xe31ffcfc, 0x79c8b1b1, 0xb6ed5b5b, 0xd4be6a6a, 0x8d46cbcb, 0x67d9bebe, 0x724b3939, 0x94de4a4a, 0x98d44c4c, 0xb0e85858, 0x854acfcf, 0xbb6bd0d0, 0xc52aefef, 0x4fe5aaaa, 0xed16fbfb, 0x86c54343, 0x9ad74d4d, 0x66553333, 0x11948585, 0x8acf4545, 0xe910f9f9, 0x4060202, 0xfe817f7f, 0xa0f05050, 0x78443c3c, 0x25ba9f9f, 0x4be3a8a8, 0xa2f35151, 0x5dfea3a3, 0x80c04040, 0x58a8f8f, 0x3fad9292, 0x21bc9d9d, 0x70483838, 0xf104f5f5, 0x63dfbcbc, 0x77c1b6b6, 0xaf75dada, 0x42632121, 0x20301010, 0xe51affff, 0xfd0ef3f3, 0xbf6dd2d2, 0x814ccdcd, 0x18140c0c, 0x26351313, 0xc32fecec, 0xbee15f5f, 0x35a29797, 0x88cc4444, 0x2e391717, 0x9357c4c4, 0x55f2a7a7, 0xfc827e7e, 0x7a473d3d, 0xc8ac6464, 0xbae75d5d, 0x322b1919, 0xe6957373, 0xc0a06060, 0x19988181, 0x9ed14f4f, 0xa37fdcdc, 0x44662222, 0x547e2a2a, 0x3bab9090, 0xb838888, 0x8cca4646, 0xc729eeee, 0x6bd3b8b8, 0x283c1414, 0xa779dede, 0xbce25e5e, 0x161d0b0b, 0xad76dbdb, 0xdb3be0e0, 0x64563232, 0x744e3a3a, 0x141e0a0a, 0x92db4949, 0xc0a0606, 0x486c2424, 0xb8e45c5c, 0x9f5dc2c2, 0xbd6ed3d3, 0x43efacac, 0xc4a66262, 0x39a89191, 0x31a49595, 0xd337e4e4, 0xf28b7979, 0xd532e7e7, 0x8b43c8c8, 0x6e593737, 0xdab76d6d, 0x18c8d8d, 0xb164d5d5, 0x9cd24e4e, 0x49e0a9a9, 0xd8b46c6c, 0xacfa5656, 0xf307f4f4, 0xcf25eaea, 0xcaaf6565, 0xf48e7a7a, 0x47e9aeae, 0x10180808, 0x6fd5baba, 0xf0887878, 0x4a6f2525, 0x5c722e2e, 0x38241c1c, 0x57f1a6a6, 0x73c7b4b4, 0x9751c6c6, 0xcb23e8e8, 0xa17cdddd, 0xe89c7474, 0x3e211f1f, 0x96dd4b4b, 0x61dcbdbd, 0xd868b8b, 0xf858a8a, 0xe0907070, 0x7c423e3e, 0x71c4b5b5, 0xccaa6666, 0x90d84848, 0x6050303, 0xf701f6f6, 0x1c120e0e, 0xc2a36161, 0x6a5f3535, 0xaef95757, 0x69d0b9b9, 0x17918686, 0x9958c1c1, 0x3a271d1d, 0x27b99e9e, 0xd938e1e1, 0xeb13f8f8, 0x2bb39898, 0x22331111, 0xd2bb6969, 0xa970d9d9, 0x7898e8e, 0x33a79494, 0x2db69b9b, 0x3c221e1e, 0x15928787, 0xc920e9e9, 0x8749cece, 0xaaff5555, 0x50782828, 0xa57adfdf, 0x38f8c8c, 0x59f8a1a1, 0x9808989, 0x1a170d0d, 0x65dabfbf, 0xd731e6e6, 0x84c64242, 0xd0b86868, 0x82c34141, 0x29b09999, 0x5a772d2d, 0x1e110f0f, 0x7bcbb0b0, 0xa8fc5454, 0x6dd6bbbb, 0x2c3a1616] - @usableFromInline static let T3_INV: Array = [0x5150a7f4, 0x7e536541, 0x1ac3a417, 0x3a965e27, 0x3bcb6bab, 0x1ff1459d, 0xacab58fa, 0x4b9303e3, 0x2055fa30, 0xadf66d76, 0x889176cc, 0xf5254c02, 0x4ffcd7e5, 0xc5d7cb2a, 0x26804435, 0xb58fa362, 0xde495ab1, 0x25671bba, 0x45980eea, 0x5de1c0fe, 0xc302752f, 0x8112f04c, 0x8da39746, 0x6bc6f9d3, 0x3e75f8f, 0x15959c92, 0xbfeb7a6d, 0x95da5952, 0xd42d83be, 0x58d32174, 0x492969e0, 0x8e44c8c9, 0x756a89c2, 0xf478798e, 0x996b3e58, 0x27dd71b9, 0xbeb64fe1, 0xf017ad88, 0xc966ac20, 0x7db43ace, 0x63184adf, 0xe582311a, 0x97603351, 0x62457f53, 0xb1e07764, 0xbb84ae6b, 0xfe1ca081, 0xf9942b08, 0x70586848, 0x8f19fd45, 0x94876cde, 0x52b7f87b, 0xab23d373, 0x72e2024b, 0xe3578f1f, 0x662aab55, 0xb20728eb, 0x2f03c2b5, 0x869a7bc5, 0xd3a50837, 0x30f28728, 0x23b2a5bf, 0x2ba6a03, 0xed5c8216, 0x8a2b1ccf, 0xa792b479, 0xf3f0f207, 0x4ea1e269, 0x65cdf4da, 0x6d5be05, 0xd11f6234, 0xc48afea6, 0x349d532e, 0xa2a055f3, 0x532e18a, 0xa475ebf6, 0xb39ec83, 0x40aaef60, 0x5e069f71, 0xbd51106e, 0x3ef98a21, 0x963d06dd, 0xddae053e, 0x4d46bde6, 0x91b58d54, 0x71055dc4, 0x46fd406, 0x60ff1550, 0x1924fb98, 0xd697e9bd, 0x89cc4340, 0x67779ed9, 0xb0bd42e8, 0x7888b89, 0xe7385b19, 0x79dbeec8, 0xa1470a7c, 0x7ce90f42, 0xf8c91e84, 0x0, 0x9838680, 0x3248ed2b, 0x1eac7011, 0x6c4e725a, 0xfdfbff0e, 0xf563885, 0x3d1ed5ae, 0x3627392d, 0xa64d90f, 0x6821a65c, 0x9bd1545b, 0x243a2e36, 0xcb1670a, 0x930fe757, 0xb4d296ee, 0x1b9e919b, 0x804fc5c0, 0x61a220dc, 0x5a694b77, 0x1c161a12, 0xe20aba93, 0xc0e52aa0, 0x3c43e022, 0x121d171b, 0xe0b0d09, 0xf2adc78b, 0x2db9a8b6, 0x14c8a91e, 0x578519f1, 0xaf4c0775, 0xeebbdd99, 0xa3fd607f, 0xf79f2601, 0x5cbcf572, 0x44c53b66, 0x5b347efb, 0x8b762943, 0xcbdcc623, 0xb668fced, 0xb863f1e4, 0xd7cadc31, 0x42108563, 0x13402297, 0x842011c6, 0x857d244a, 0xd2f83dbb, 0xae1132f9, 0xc76da129, 0x1d4b2f9e, 0xdcf330b2, 0xdec5286, 0x77d0e3c1, 0x2b6c16b3, 0xa999b970, 0x11fa4894, 0x472264e9, 0xa8c48cfc, 0xa01a3ff0, 0x56d82c7d, 0x22ef9033, 0x87c74e49, 0xd9c1d138, 0x8cfea2ca, 0x98360bd4, 0xa6cf81f5, 0xa528de7a, 0xda268eb7, 0x3fa4bfad, 0x2ce49d3a, 0x500d9278, 0x6a9bcc5f, 0x5462467e, 0xf6c2138d, 0x90e8b8d8, 0x2e5ef739, 0x82f5afc3, 0x9fbe805d, 0x697c93d0, 0x6fa92dd5, 0xcfb31225, 0xc83b99ac, 0x10a77d18, 0xe86e639c, 0xdb7bbb3b, 0xcd097826, 0x6ef41859, 0xec01b79a, 0x83a89a4f, 0xe6656e95, 0xaa7ee6ff, 0x2108cfbc, 0xefe6e815, 0xbad99be7, 0x4ace366f, 0xead4099f, 0x29d67cb0, 0x31afb2a4, 0x2a31233f, 0xc63094a5, 0x35c066a2, 0x7437bc4e, 0xfca6ca82, 0xe0b0d090, 0x3315d8a7, 0xf14a9804, 0x41f7daec, 0x7f0e50cd, 0x172ff691, 0x768dd64d, 0x434db0ef, 0xcc544daa, 0xe4df0496, 0x9ee3b5d1, 0x4c1b886a, 0xc1b81f2c, 0x467f5165, 0x9d04ea5e, 0x15d358c, 0xfa737487, 0xfb2e410b, 0xb35a1d67, 0x9252d2db, 0xe9335610, 0x6d1347d6, 0x9a8c61d7, 0x377a0ca1, 0x598e14f8, 0xeb893c13, 0xceee27a9, 0xb735c961, 0xe1ede51c, 0x7a3cb147, 0x9c59dfd2, 0x553f73f2, 0x1879ce14, 0x73bf37c7, 0x53eacdf7, 0x5f5baafd, 0xdf146f3d, 0x7886db44, 0xca81f3af, 0xb93ec468, 0x382c3424, 0xc25f40a3, 0x1672c31d, 0xbc0c25e2, 0x288b493c, 0xff41950d, 0x397101a8, 0x8deb30c, 0xd89ce4b4, 0x6490c156, 0x7b6184cb, 0xd570b632, 0x48745c6c, 0xd04257b8] - @usableFromInline static let U1: Array = [0x0, 0xb0d090e, 0x161a121c, 0x1d171b12, 0x2c342438, 0x27392d36, 0x3a2e3624, 0x31233f2a, 0x58684870, 0x5365417e, 0x4e725a6c, 0x457f5362, 0x745c6c48, 0x7f516546, 0x62467e54, 0x694b775a, 0xb0d090e0, 0xbbdd99ee, 0xa6ca82fc, 0xadc78bf2, 0x9ce4b4d8, 0x97e9bdd6, 0x8afea6c4, 0x81f3afca, 0xe8b8d890, 0xe3b5d19e, 0xfea2ca8c, 0xf5afc382, 0xc48cfca8, 0xcf81f5a6, 0xd296eeb4, 0xd99be7ba, 0x7bbb3bdb, 0x70b632d5, 0x6da129c7, 0x66ac20c9, 0x578f1fe3, 0x5c8216ed, 0x41950dff, 0x4a9804f1, 0x23d373ab, 0x28de7aa5, 0x35c961b7, 0x3ec468b9, 0xfe75793, 0x4ea5e9d, 0x19fd458f, 0x12f04c81, 0xcb6bab3b, 0xc066a235, 0xdd71b927, 0xd67cb029, 0xe75f8f03, 0xec52860d, 0xf1459d1f, 0xfa489411, 0x9303e34b, 0x980eea45, 0x8519f157, 0x8e14f859, 0xbf37c773, 0xb43ace7d, 0xa92dd56f, 0xa220dc61, 0xf66d76ad, 0xfd607fa3, 0xe07764b1, 0xeb7a6dbf, 0xda595295, 0xd1545b9b, 0xcc434089, 0xc74e4987, 0xae053edd, 0xa50837d3, 0xb81f2cc1, 0xb31225cf, 0x82311ae5, 0x893c13eb, 0x942b08f9, 0x9f2601f7, 0x46bde64d, 0x4db0ef43, 0x50a7f451, 0x5baafd5f, 0x6a89c275, 0x6184cb7b, 0x7c93d069, 0x779ed967, 0x1ed5ae3d, 0x15d8a733, 0x8cfbc21, 0x3c2b52f, 0x32e18a05, 0x39ec830b, 0x24fb9819, 0x2ff69117, 0x8dd64d76, 0x86db4478, 0x9bcc5f6a, 0x90c15664, 0xa1e2694e, 0xaaef6040, 0xb7f87b52, 0xbcf5725c, 0xd5be0506, 0xdeb30c08, 0xc3a4171a, 0xc8a91e14, 0xf98a213e, 0xf2872830, 0xef903322, 0xe49d3a2c, 0x3d06dd96, 0x360bd498, 0x2b1ccf8a, 0x2011c684, 0x1132f9ae, 0x1a3ff0a0, 0x728ebb2, 0xc25e2bc, 0x656e95e6, 0x6e639ce8, 0x737487fa, 0x78798ef4, 0x495ab1de, 0x4257b8d0, 0x5f40a3c2, 0x544daacc, 0xf7daec41, 0xfcd7e54f, 0xe1c0fe5d, 0xeacdf753, 0xdbeec879, 0xd0e3c177, 0xcdf4da65, 0xc6f9d36b, 0xafb2a431, 0xa4bfad3f, 0xb9a8b62d, 0xb2a5bf23, 0x83868009, 0x888b8907, 0x959c9215, 0x9e919b1b, 0x470a7ca1, 0x4c0775af, 0x51106ebd, 0x5a1d67b3, 0x6b3e5899, 0x60335197, 0x7d244a85, 0x7629438b, 0x1f6234d1, 0x146f3ddf, 0x97826cd, 0x2752fc3, 0x335610e9, 0x385b19e7, 0x254c02f5, 0x2e410bfb, 0x8c61d79a, 0x876cde94, 0x9a7bc586, 0x9176cc88, 0xa055f3a2, 0xab58faac, 0xb64fe1be, 0xbd42e8b0, 0xd4099fea, 0xdf0496e4, 0xc2138df6, 0xc91e84f8, 0xf83dbbd2, 0xf330b2dc, 0xee27a9ce, 0xe52aa0c0, 0x3cb1477a, 0x37bc4e74, 0x2aab5566, 0x21a65c68, 0x10856342, 0x1b886a4c, 0x69f715e, 0xd927850, 0x64d90f0a, 0x6fd40604, 0x72c31d16, 0x79ce1418, 0x48ed2b32, 0x43e0223c, 0x5ef7392e, 0x55fa3020, 0x1b79aec, 0xaba93e2, 0x17ad88f0, 0x1ca081fe, 0x2d83bed4, 0x268eb7da, 0x3b99acc8, 0x3094a5c6, 0x59dfd29c, 0x52d2db92, 0x4fc5c080, 0x44c8c98e, 0x75ebf6a4, 0x7ee6ffaa, 0x63f1e4b8, 0x68fcedb6, 0xb1670a0c, 0xba6a0302, 0xa77d1810, 0xac70111e, 0x9d532e34, 0x965e273a, 0x8b493c28, 0x80443526, 0xe90f427c, 0xe2024b72, 0xff155060, 0xf418596e, 0xc53b6644, 0xce366f4a, 0xd3217458, 0xd82c7d56, 0x7a0ca137, 0x7101a839, 0x6c16b32b, 0x671bba25, 0x5638850f, 0x5d358c01, 0x40229713, 0x4b2f9e1d, 0x2264e947, 0x2969e049, 0x347efb5b, 0x3f73f255, 0xe50cd7f, 0x55dc471, 0x184adf63, 0x1347d66d, 0xcadc31d7, 0xc1d138d9, 0xdcc623cb, 0xd7cb2ac5, 0xe6e815ef, 0xede51ce1, 0xf0f207f3, 0xfbff0efd, 0x92b479a7, 0x99b970a9, 0x84ae6bbb, 0x8fa362b5, 0xbe805d9f, 0xb58d5491, 0xa89a4f83, 0xa397468d] - @usableFromInline static let U2: Array = [0x0, 0xd090e0b, 0x1a121c16, 0x171b121d, 0x3424382c, 0x392d3627, 0x2e36243a, 0x233f2a31, 0x68487058, 0x65417e53, 0x725a6c4e, 0x7f536245, 0x5c6c4874, 0x5165467f, 0x467e5462, 0x4b775a69, 0xd090e0b0, 0xdd99eebb, 0xca82fca6, 0xc78bf2ad, 0xe4b4d89c, 0xe9bdd697, 0xfea6c48a, 0xf3afca81, 0xb8d890e8, 0xb5d19ee3, 0xa2ca8cfe, 0xafc382f5, 0x8cfca8c4, 0x81f5a6cf, 0x96eeb4d2, 0x9be7bad9, 0xbb3bdb7b, 0xb632d570, 0xa129c76d, 0xac20c966, 0x8f1fe357, 0x8216ed5c, 0x950dff41, 0x9804f14a, 0xd373ab23, 0xde7aa528, 0xc961b735, 0xc468b93e, 0xe757930f, 0xea5e9d04, 0xfd458f19, 0xf04c8112, 0x6bab3bcb, 0x66a235c0, 0x71b927dd, 0x7cb029d6, 0x5f8f03e7, 0x52860dec, 0x459d1ff1, 0x489411fa, 0x3e34b93, 0xeea4598, 0x19f15785, 0x14f8598e, 0x37c773bf, 0x3ace7db4, 0x2dd56fa9, 0x20dc61a2, 0x6d76adf6, 0x607fa3fd, 0x7764b1e0, 0x7a6dbfeb, 0x595295da, 0x545b9bd1, 0x434089cc, 0x4e4987c7, 0x53eddae, 0x837d3a5, 0x1f2cc1b8, 0x1225cfb3, 0x311ae582, 0x3c13eb89, 0x2b08f994, 0x2601f79f, 0xbde64d46, 0xb0ef434d, 0xa7f45150, 0xaafd5f5b, 0x89c2756a, 0x84cb7b61, 0x93d0697c, 0x9ed96777, 0xd5ae3d1e, 0xd8a73315, 0xcfbc2108, 0xc2b52f03, 0xe18a0532, 0xec830b39, 0xfb981924, 0xf691172f, 0xd64d768d, 0xdb447886, 0xcc5f6a9b, 0xc1566490, 0xe2694ea1, 0xef6040aa, 0xf87b52b7, 0xf5725cbc, 0xbe0506d5, 0xb30c08de, 0xa4171ac3, 0xa91e14c8, 0x8a213ef9, 0x872830f2, 0x903322ef, 0x9d3a2ce4, 0x6dd963d, 0xbd49836, 0x1ccf8a2b, 0x11c68420, 0x32f9ae11, 0x3ff0a01a, 0x28ebb207, 0x25e2bc0c, 0x6e95e665, 0x639ce86e, 0x7487fa73, 0x798ef478, 0x5ab1de49, 0x57b8d042, 0x40a3c25f, 0x4daacc54, 0xdaec41f7, 0xd7e54ffc, 0xc0fe5de1, 0xcdf753ea, 0xeec879db, 0xe3c177d0, 0xf4da65cd, 0xf9d36bc6, 0xb2a431af, 0xbfad3fa4, 0xa8b62db9, 0xa5bf23b2, 0x86800983, 0x8b890788, 0x9c921595, 0x919b1b9e, 0xa7ca147, 0x775af4c, 0x106ebd51, 0x1d67b35a, 0x3e58996b, 0x33519760, 0x244a857d, 0x29438b76, 0x6234d11f, 0x6f3ddf14, 0x7826cd09, 0x752fc302, 0x5610e933, 0x5b19e738, 0x4c02f525, 0x410bfb2e, 0x61d79a8c, 0x6cde9487, 0x7bc5869a, 0x76cc8891, 0x55f3a2a0, 0x58faacab, 0x4fe1beb6, 0x42e8b0bd, 0x99fead4, 0x496e4df, 0x138df6c2, 0x1e84f8c9, 0x3dbbd2f8, 0x30b2dcf3, 0x27a9ceee, 0x2aa0c0e5, 0xb1477a3c, 0xbc4e7437, 0xab55662a, 0xa65c6821, 0x85634210, 0x886a4c1b, 0x9f715e06, 0x9278500d, 0xd90f0a64, 0xd406046f, 0xc31d1672, 0xce141879, 0xed2b3248, 0xe0223c43, 0xf7392e5e, 0xfa302055, 0xb79aec01, 0xba93e20a, 0xad88f017, 0xa081fe1c, 0x83bed42d, 0x8eb7da26, 0x99acc83b, 0x94a5c630, 0xdfd29c59, 0xd2db9252, 0xc5c0804f, 0xc8c98e44, 0xebf6a475, 0xe6ffaa7e, 0xf1e4b863, 0xfcedb668, 0x670a0cb1, 0x6a0302ba, 0x7d1810a7, 0x70111eac, 0x532e349d, 0x5e273a96, 0x493c288b, 0x44352680, 0xf427ce9, 0x24b72e2, 0x155060ff, 0x18596ef4, 0x3b6644c5, 0x366f4ace, 0x217458d3, 0x2c7d56d8, 0xca1377a, 0x1a83971, 0x16b32b6c, 0x1bba2567, 0x38850f56, 0x358c015d, 0x22971340, 0x2f9e1d4b, 0x64e94722, 0x69e04929, 0x7efb5b34, 0x73f2553f, 0x50cd7f0e, 0x5dc47105, 0x4adf6318, 0x47d66d13, 0xdc31d7ca, 0xd138d9c1, 0xc623cbdc, 0xcb2ac5d7, 0xe815efe6, 0xe51ce1ed, 0xf207f3f0, 0xff0efdfb, 0xb479a792, 0xb970a999, 0xae6bbb84, 0xa362b58f, 0x805d9fbe, 0x8d5491b5, 0x9a4f83a8, 0x97468da3] - @usableFromInline static let U3: Array = [0x0, 0x90e0b0d, 0x121c161a, 0x1b121d17, 0x24382c34, 0x2d362739, 0x36243a2e, 0x3f2a3123, 0x48705868, 0x417e5365, 0x5a6c4e72, 0x5362457f, 0x6c48745c, 0x65467f51, 0x7e546246, 0x775a694b, 0x90e0b0d0, 0x99eebbdd, 0x82fca6ca, 0x8bf2adc7, 0xb4d89ce4, 0xbdd697e9, 0xa6c48afe, 0xafca81f3, 0xd890e8b8, 0xd19ee3b5, 0xca8cfea2, 0xc382f5af, 0xfca8c48c, 0xf5a6cf81, 0xeeb4d296, 0xe7bad99b, 0x3bdb7bbb, 0x32d570b6, 0x29c76da1, 0x20c966ac, 0x1fe3578f, 0x16ed5c82, 0xdff4195, 0x4f14a98, 0x73ab23d3, 0x7aa528de, 0x61b735c9, 0x68b93ec4, 0x57930fe7, 0x5e9d04ea, 0x458f19fd, 0x4c8112f0, 0xab3bcb6b, 0xa235c066, 0xb927dd71, 0xb029d67c, 0x8f03e75f, 0x860dec52, 0x9d1ff145, 0x9411fa48, 0xe34b9303, 0xea45980e, 0xf1578519, 0xf8598e14, 0xc773bf37, 0xce7db43a, 0xd56fa92d, 0xdc61a220, 0x76adf66d, 0x7fa3fd60, 0x64b1e077, 0x6dbfeb7a, 0x5295da59, 0x5b9bd154, 0x4089cc43, 0x4987c74e, 0x3eddae05, 0x37d3a508, 0x2cc1b81f, 0x25cfb312, 0x1ae58231, 0x13eb893c, 0x8f9942b, 0x1f79f26, 0xe64d46bd, 0xef434db0, 0xf45150a7, 0xfd5f5baa, 0xc2756a89, 0xcb7b6184, 0xd0697c93, 0xd967779e, 0xae3d1ed5, 0xa73315d8, 0xbc2108cf, 0xb52f03c2, 0x8a0532e1, 0x830b39ec, 0x981924fb, 0x91172ff6, 0x4d768dd6, 0x447886db, 0x5f6a9bcc, 0x566490c1, 0x694ea1e2, 0x6040aaef, 0x7b52b7f8, 0x725cbcf5, 0x506d5be, 0xc08deb3, 0x171ac3a4, 0x1e14c8a9, 0x213ef98a, 0x2830f287, 0x3322ef90, 0x3a2ce49d, 0xdd963d06, 0xd498360b, 0xcf8a2b1c, 0xc6842011, 0xf9ae1132, 0xf0a01a3f, 0xebb20728, 0xe2bc0c25, 0x95e6656e, 0x9ce86e63, 0x87fa7374, 0x8ef47879, 0xb1de495a, 0xb8d04257, 0xa3c25f40, 0xaacc544d, 0xec41f7da, 0xe54ffcd7, 0xfe5de1c0, 0xf753eacd, 0xc879dbee, 0xc177d0e3, 0xda65cdf4, 0xd36bc6f9, 0xa431afb2, 0xad3fa4bf, 0xb62db9a8, 0xbf23b2a5, 0x80098386, 0x8907888b, 0x9215959c, 0x9b1b9e91, 0x7ca1470a, 0x75af4c07, 0x6ebd5110, 0x67b35a1d, 0x58996b3e, 0x51976033, 0x4a857d24, 0x438b7629, 0x34d11f62, 0x3ddf146f, 0x26cd0978, 0x2fc30275, 0x10e93356, 0x19e7385b, 0x2f5254c, 0xbfb2e41, 0xd79a8c61, 0xde94876c, 0xc5869a7b, 0xcc889176, 0xf3a2a055, 0xfaacab58, 0xe1beb64f, 0xe8b0bd42, 0x9fead409, 0x96e4df04, 0x8df6c213, 0x84f8c91e, 0xbbd2f83d, 0xb2dcf330, 0xa9ceee27, 0xa0c0e52a, 0x477a3cb1, 0x4e7437bc, 0x55662aab, 0x5c6821a6, 0x63421085, 0x6a4c1b88, 0x715e069f, 0x78500d92, 0xf0a64d9, 0x6046fd4, 0x1d1672c3, 0x141879ce, 0x2b3248ed, 0x223c43e0, 0x392e5ef7, 0x302055fa, 0x9aec01b7, 0x93e20aba, 0x88f017ad, 0x81fe1ca0, 0xbed42d83, 0xb7da268e, 0xacc83b99, 0xa5c63094, 0xd29c59df, 0xdb9252d2, 0xc0804fc5, 0xc98e44c8, 0xf6a475eb, 0xffaa7ee6, 0xe4b863f1, 0xedb668fc, 0xa0cb167, 0x302ba6a, 0x1810a77d, 0x111eac70, 0x2e349d53, 0x273a965e, 0x3c288b49, 0x35268044, 0x427ce90f, 0x4b72e202, 0x5060ff15, 0x596ef418, 0x6644c53b, 0x6f4ace36, 0x7458d321, 0x7d56d82c, 0xa1377a0c, 0xa8397101, 0xb32b6c16, 0xba25671b, 0x850f5638, 0x8c015d35, 0x97134022, 0x9e1d4b2f, 0xe9472264, 0xe0492969, 0xfb5b347e, 0xf2553f73, 0xcd7f0e50, 0xc471055d, 0xdf63184a, 0xd66d1347, 0x31d7cadc, 0x38d9c1d1, 0x23cbdcc6, 0x2ac5d7cb, 0x15efe6e8, 0x1ce1ede5, 0x7f3f0f2, 0xefdfbff, 0x79a792b4, 0x70a999b9, 0x6bbb84ae, 0x62b58fa3, 0x5d9fbe80, 0x5491b58d, 0x4f83a89a, 0x468da397] - @usableFromInline static let U4: Array = [0x0, 0xe0b0d09, 0x1c161a12, 0x121d171b, 0x382c3424, 0x3627392d, 0x243a2e36, 0x2a31233f, 0x70586848, 0x7e536541, 0x6c4e725a, 0x62457f53, 0x48745c6c, 0x467f5165, 0x5462467e, 0x5a694b77, 0xe0b0d090, 0xeebbdd99, 0xfca6ca82, 0xf2adc78b, 0xd89ce4b4, 0xd697e9bd, 0xc48afea6, 0xca81f3af, 0x90e8b8d8, 0x9ee3b5d1, 0x8cfea2ca, 0x82f5afc3, 0xa8c48cfc, 0xa6cf81f5, 0xb4d296ee, 0xbad99be7, 0xdb7bbb3b, 0xd570b632, 0xc76da129, 0xc966ac20, 0xe3578f1f, 0xed5c8216, 0xff41950d, 0xf14a9804, 0xab23d373, 0xa528de7a, 0xb735c961, 0xb93ec468, 0x930fe757, 0x9d04ea5e, 0x8f19fd45, 0x8112f04c, 0x3bcb6bab, 0x35c066a2, 0x27dd71b9, 0x29d67cb0, 0x3e75f8f, 0xdec5286, 0x1ff1459d, 0x11fa4894, 0x4b9303e3, 0x45980eea, 0x578519f1, 0x598e14f8, 0x73bf37c7, 0x7db43ace, 0x6fa92dd5, 0x61a220dc, 0xadf66d76, 0xa3fd607f, 0xb1e07764, 0xbfeb7a6d, 0x95da5952, 0x9bd1545b, 0x89cc4340, 0x87c74e49, 0xddae053e, 0xd3a50837, 0xc1b81f2c, 0xcfb31225, 0xe582311a, 0xeb893c13, 0xf9942b08, 0xf79f2601, 0x4d46bde6, 0x434db0ef, 0x5150a7f4, 0x5f5baafd, 0x756a89c2, 0x7b6184cb, 0x697c93d0, 0x67779ed9, 0x3d1ed5ae, 0x3315d8a7, 0x2108cfbc, 0x2f03c2b5, 0x532e18a, 0xb39ec83, 0x1924fb98, 0x172ff691, 0x768dd64d, 0x7886db44, 0x6a9bcc5f, 0x6490c156, 0x4ea1e269, 0x40aaef60, 0x52b7f87b, 0x5cbcf572, 0x6d5be05, 0x8deb30c, 0x1ac3a417, 0x14c8a91e, 0x3ef98a21, 0x30f28728, 0x22ef9033, 0x2ce49d3a, 0x963d06dd, 0x98360bd4, 0x8a2b1ccf, 0x842011c6, 0xae1132f9, 0xa01a3ff0, 0xb20728eb, 0xbc0c25e2, 0xe6656e95, 0xe86e639c, 0xfa737487, 0xf478798e, 0xde495ab1, 0xd04257b8, 0xc25f40a3, 0xcc544daa, 0x41f7daec, 0x4ffcd7e5, 0x5de1c0fe, 0x53eacdf7, 0x79dbeec8, 0x77d0e3c1, 0x65cdf4da, 0x6bc6f9d3, 0x31afb2a4, 0x3fa4bfad, 0x2db9a8b6, 0x23b2a5bf, 0x9838680, 0x7888b89, 0x15959c92, 0x1b9e919b, 0xa1470a7c, 0xaf4c0775, 0xbd51106e, 0xb35a1d67, 0x996b3e58, 0x97603351, 0x857d244a, 0x8b762943, 0xd11f6234, 0xdf146f3d, 0xcd097826, 0xc302752f, 0xe9335610, 0xe7385b19, 0xf5254c02, 0xfb2e410b, 0x9a8c61d7, 0x94876cde, 0x869a7bc5, 0x889176cc, 0xa2a055f3, 0xacab58fa, 0xbeb64fe1, 0xb0bd42e8, 0xead4099f, 0xe4df0496, 0xf6c2138d, 0xf8c91e84, 0xd2f83dbb, 0xdcf330b2, 0xceee27a9, 0xc0e52aa0, 0x7a3cb147, 0x7437bc4e, 0x662aab55, 0x6821a65c, 0x42108563, 0x4c1b886a, 0x5e069f71, 0x500d9278, 0xa64d90f, 0x46fd406, 0x1672c31d, 0x1879ce14, 0x3248ed2b, 0x3c43e022, 0x2e5ef739, 0x2055fa30, 0xec01b79a, 0xe20aba93, 0xf017ad88, 0xfe1ca081, 0xd42d83be, 0xda268eb7, 0xc83b99ac, 0xc63094a5, 0x9c59dfd2, 0x9252d2db, 0x804fc5c0, 0x8e44c8c9, 0xa475ebf6, 0xaa7ee6ff, 0xb863f1e4, 0xb668fced, 0xcb1670a, 0x2ba6a03, 0x10a77d18, 0x1eac7011, 0x349d532e, 0x3a965e27, 0x288b493c, 0x26804435, 0x7ce90f42, 0x72e2024b, 0x60ff1550, 0x6ef41859, 0x44c53b66, 0x4ace366f, 0x58d32174, 0x56d82c7d, 0x377a0ca1, 0x397101a8, 0x2b6c16b3, 0x25671bba, 0xf563885, 0x15d358c, 0x13402297, 0x1d4b2f9e, 0x472264e9, 0x492969e0, 0x5b347efb, 0x553f73f2, 0x7f0e50cd, 0x71055dc4, 0x63184adf, 0x6d1347d6, 0xd7cadc31, 0xd9c1d138, 0xcbdcc623, 0xc5d7cb2a, 0xefe6e815, 0xe1ede51c, 0xf3f0f207, 0xfdfbff0e, 0xa792b479, 0xa999b970, 0xbb84ae6b, 0xb58fa362, 0x9fbe805d, 0x91b58d54, 0x83a89a4f, 0x8da39746] - - /// Initialize AES with variant calculated out of key length: - /// - 16 bytes (AES-128) - /// - 24 bytes (AES-192) - /// - 32 bytes (AES-256) - /// - /// - parameter key: Key. Length of the key decides on AES variant. - /// - parameter iv: Initialization Vector (Optional for some blockMode values) - /// - parameter blockMode: Cipher mode of operation - /// - parameter padding: Padding method. .pkcs7, .noPadding, .zeroPadding, ... - /// - /// - throws: AES.Error - /// - /// - returns: Instance - public init(key: Array, blockMode: BlockMode, padding: Padding = .pkcs7) throws { - self.key = Key(bytes: key) - self.blockMode = blockMode - self.padding = padding - self.keySize = self.key.count - - // Validate key size - switch self.keySize * 8 { - case 128: - self.variant = .aes128 - case 192: - self.variant = .aes192 - case 256: - self.variant = .aes256 - default: - throw Error.invalidKeySize - } - - self.variantNb = self.variant.Nb - self.variantNk = self.variant.Nk - self.variantNr = self.variant.Nr - } - - @inlinable - internal func encrypt(block: ArraySlice) -> Array? { - if self.blockMode.options.contains(.paddingRequired) && block.count != AES.blockSize { - return Array(block) - } - - let rounds = self.variantNr - let rk = self.expandedKey - - let b00 = UInt32(block[block.startIndex.advanced(by: 0)]) - let b01 = UInt32(block[block.startIndex.advanced(by: 1)]) << 8 - let b02 = UInt32(block[block.startIndex.advanced(by: 2)]) << 16 - let b03 = UInt32(block[block.startIndex.advanced(by: 3)]) << 24 - var b0 = b00 | b01 | b02 | b03 - - let b10 = UInt32(block[block.startIndex.advanced(by: 4)]) - let b11 = UInt32(block[block.startIndex.advanced(by: 5)]) << 8 - let b12 = UInt32(block[block.startIndex.advanced(by: 6)]) << 16 - let b13 = UInt32(block[block.startIndex.advanced(by: 7)]) << 24 - var b1 = b10 | b11 | b12 | b13 - - let b20 = UInt32(block[block.startIndex.advanced(by: 8)]) - let b21 = UInt32(block[block.startIndex.advanced(by: 9)]) << 8 - let b22 = UInt32(block[block.startIndex.advanced(by: 10)]) << 16 - let b23 = UInt32(block[block.startIndex.advanced(by: 11)]) << 24 - var b2 = b20 | b21 | b22 | b23 - - let b30 = UInt32(block[block.startIndex.advanced(by: 12)]) - let b31 = UInt32(block[block.startIndex.advanced(by: 13)]) << 8 - let b32 = UInt32(block[block.startIndex.advanced(by: 14)]) << 16 - let b33 = UInt32(block[block.startIndex.advanced(by: 15)]) << 24 - var b3 = b30 | b31 | b32 | b33 - - let tLength = 4 - let t = UnsafeMutablePointer.allocate(capacity: tLength) - t.initialize(repeating: 0, count: tLength) - defer { - t.deinitialize(count: tLength) - t.deallocate() - } - - for r in 0..> 8) & 0xff)] - let lb02 = AES.T2[Int((t[2] >> 16) & 0xff)] - let lb03 = AES.T3[Int(t[3] >> 24)] - b0 = lb00 ^ lb01 ^ lb02 ^ lb03 - - let lb10 = AES.T0[Int(t[1] & 0xff)] - let lb11 = AES.T1[Int((t[2] >> 8) & 0xff)] - let lb12 = AES.T2[Int((t[3] >> 16) & 0xff)] - let lb13 = AES.T3[Int(t[0] >> 24)] - b1 = lb10 ^ lb11 ^ lb12 ^ lb13 - - let lb20 = AES.T0[Int(t[2] & 0xff)] - let lb21 = AES.T1[Int((t[3] >> 8) & 0xff)] - let lb22 = AES.T2[Int((t[0] >> 16) & 0xff)] - let lb23 = AES.T3[Int(t[1] >> 24)] - b2 = lb20 ^ lb21 ^ lb22 ^ lb23 - - let lb30 = AES.T0[Int(t[3] & 0xff)] - let lb31 = AES.T1[Int((t[0] >> 8) & 0xff)] - let lb32 = AES.T2[Int((t[1] >> 16) & 0xff)] - let lb33 = AES.T3[Int(t[2] >> 24)] - b3 = lb30 ^ lb31 ^ lb32 ^ lb33 - } - - // last round - let r = rounds - 1 - - t[0] = b0 ^ rk[r][0] - t[1] = b1 ^ rk[r][1] - t[2] = b2 ^ rk[r][2] - t[3] = b3 ^ rk[r][3] - - // rounds - b0 = F1(t[0], t[1], t[2], t[3]) ^ rk[rounds][0] - b1 = F1(t[1], t[2], t[3], t[0]) ^ rk[rounds][1] - b2 = F1(t[2], t[3], t[0], t[1]) ^ rk[rounds][2] - b3 = F1(t[3], t[0], t[1], t[2]) ^ rk[rounds][3] - - let encrypted: Array = [ - UInt8(b0 & 0xff), UInt8((b0 >> 8) & 0xff), UInt8((b0 >> 16) & 0xff), UInt8((b0 >> 24) & 0xff), - UInt8(b1 & 0xff), UInt8((b1 >> 8) & 0xff), UInt8((b1 >> 16) & 0xff), UInt8((b1 >> 24) & 0xff), - UInt8(b2 & 0xff), UInt8((b2 >> 8) & 0xff), UInt8((b2 >> 16) & 0xff), UInt8((b2 >> 24) & 0xff), - UInt8(b3 & 0xff), UInt8((b3 >> 8) & 0xff), UInt8((b3 >> 16) & 0xff), UInt8((b3 >> 24) & 0xff) - ] - return encrypted - } - - @usableFromInline - internal func decrypt(block: ArraySlice) -> Array? { - if self.blockMode.options.contains(.paddingRequired) && block.count != AES.blockSize { - return Array(block) - } - - let rounds = self.variantNr - let rk = self.expandedKeyInv - - // Save miliseconds by not using `block.toUInt32Array()` - let b00 = UInt32(block[block.startIndex.advanced(by: 0)]) - let b01 = UInt32(block[block.startIndex.advanced(by: 1)]) << 8 - let b02 = UInt32(block[block.startIndex.advanced(by: 2)]) << 16 - let b03 = UInt32(block[block.startIndex.advanced(by: 3)]) << 24 - var b0 = b00 | b01 | b02 | b03 - - let b10 = UInt32(block[block.startIndex.advanced(by: 4)]) - let b11 = UInt32(block[block.startIndex.advanced(by: 5)]) << 8 - let b12 = UInt32(block[block.startIndex.advanced(by: 6)]) << 16 - let b13 = UInt32(block[block.startIndex.advanced(by: 7)]) << 24 - var b1 = b10 | b11 | b12 | b13 - - let b20 = UInt32(block[block.startIndex.advanced(by: 8)]) - let b21 = UInt32(block[block.startIndex.advanced(by: 9)]) << 8 - let b22 = UInt32(block[block.startIndex.advanced(by: 10)]) << 16 - let b23 = UInt32(block[block.startIndex.advanced(by: 11)]) << 24 - var b2 = b20 | b21 | b22 | b23 - - let b30 = UInt32(block[block.startIndex.advanced(by: 12)]) - let b31 = UInt32(block[block.startIndex.advanced(by: 13)]) << 8 - let b32 = UInt32(block[block.startIndex.advanced(by: 14)]) << 16 - let b33 = UInt32(block[block.startIndex.advanced(by: 15)]) << 24 - var b3 = b30 | b31 | b32 | b33 - - let tLength = 4 - let t = UnsafeMutablePointer.allocate(capacity: tLength) - t.initialize(repeating: 0, count: tLength) - defer { - t.deinitialize(count: tLength) - t.deallocate() - } - - for r in (2...rounds).reversed() { - t[0] = b0 ^ rk[r][0] - t[1] = b1 ^ rk[r][1] - t[2] = b2 ^ rk[r][2] - t[3] = b3 ^ rk[r][3] - - let b00 = AES.T0_INV[Int(t[0] & 0xff)] - let b01 = AES.T1_INV[Int((t[3] >> 8) & 0xff)] - let b02 = AES.T2_INV[Int((t[2] >> 16) & 0xff)] - let b03 = AES.T3_INV[Int(t[1] >> 24)] - b0 = b00 ^ b01 ^ b02 ^ b03 - - let b10 = AES.T0_INV[Int(t[1] & 0xff)] - let b11 = AES.T1_INV[Int((t[0] >> 8) & 0xff)] - let b12 = AES.T2_INV[Int((t[3] >> 16) & 0xff)] - let b13 = AES.T3_INV[Int(t[2] >> 24)] - b1 = b10 ^ b11 ^ b12 ^ b13 - - let b20 = AES.T0_INV[Int(t[2] & 0xff)] - let b21 = AES.T1_INV[Int((t[1] >> 8) & 0xff)] - let b22 = AES.T2_INV[Int((t[0] >> 16) & 0xff)] - let b23 = AES.T3_INV[Int(t[3] >> 24)] - b2 = b20 ^ b21 ^ b22 ^ b23 - - let b30 = AES.T0_INV[Int(t[3] & 0xff)] - let b31 = AES.T1_INV[Int((t[2] >> 8) & 0xff)] - let b32 = AES.T2_INV[Int((t[1] >> 16) & 0xff)] - let b33 = AES.T3_INV[Int(t[0] >> 24)] - b3 = b30 ^ b31 ^ b32 ^ b33 - } - - // last round - t[0] = b0 ^ rk[1][0] - t[1] = b1 ^ rk[1][1] - t[2] = b2 ^ rk[1][2] - t[3] = b3 ^ rk[1][3] - - // rounds - - let lb00 = self.sBoxInv[Int(B0(t[0]))] - let lb01 = (sBoxInv[Int(B1(t[3]))] << 8) - let lb02 = (sBoxInv[Int(B2(t[2]))] << 16) - let lb03 = (sBoxInv[Int(B3(t[1]))] << 24) - b0 = lb00 | lb01 | lb02 | lb03 ^ rk[0][0] - - let lb10 = self.sBoxInv[Int(B0(t[1]))] - let lb11 = (sBoxInv[Int(B1(t[0]))] << 8) - let lb12 = (sBoxInv[Int(B2(t[3]))] << 16) - let lb13 = (sBoxInv[Int(B3(t[2]))] << 24) - b1 = lb10 | lb11 | lb12 | lb13 ^ rk[0][1] - - let lb20 = self.sBoxInv[Int(B0(t[2]))] - let lb21 = (sBoxInv[Int(B1(t[1]))] << 8) - let lb22 = (sBoxInv[Int(B2(t[0]))] << 16) - let lb23 = (sBoxInv[Int(B3(t[3]))] << 24) - b2 = lb20 | lb21 | lb22 | lb23 ^ rk[0][2] - - let lb30 = self.sBoxInv[Int(B0(t[3]))] - let lb31 = (sBoxInv[Int(B1(t[2]))] << 8) - let lb32 = (sBoxInv[Int(B2(t[1]))] << 16) - let lb33 = (sBoxInv[Int(B3(t[0]))] << 24) - b3 = lb30 | lb31 | lb32 | lb33 ^ rk[0][3] - - let result: Array = [ - UInt8(b0 & 0xff), UInt8((b0 >> 8) & 0xff), UInt8((b0 >> 16) & 0xff), UInt8((b0 >> 24) & 0xff), - UInt8(b1 & 0xff), UInt8((b1 >> 8) & 0xff), UInt8((b1 >> 16) & 0xff), UInt8((b1 >> 24) & 0xff), - UInt8(b2 & 0xff), UInt8((b2 >> 8) & 0xff), UInt8((b2 >> 16) & 0xff), UInt8((b2 >> 24) & 0xff), - UInt8(b3 & 0xff), UInt8((b3 >> 8) & 0xff), UInt8((b3 >> 16) & 0xff), UInt8((b3 >> 24) & 0xff) - ] - return result - } -} - -extension AES { - private func expandKeyInv(_ key: Key, variant: Variant) -> Array> { - let rounds = self.variantNr - var rk2: Array> = self.expandKey(key, variant: variant) - - for r in 1.. Array> { - func convertExpandedKey(_ expanded: Array) -> Array> { - expanded.batched(by: 4).map({ UInt32(bytes: $0.reversed()) }).batched(by: 4).map { Array($0) } - } - - /* - * Function used in the Key Expansion routine that takes a four-byte - * input word and applies an S-box to each of the four bytes to - * produce an output word. - */ - func subWord(_ word: Array) -> Array { - precondition(word.count == 4) - - var result = word - for i in 0..<4 { - result[i] = UInt8(self.sBox[Int(word[i])]) - } - return result - } - - @inline(__always) - func subWordInPlace(_ word: inout Array) { - precondition(word.count == 4) - word[0] = UInt8(self.sBox[Int(word[0])]) - word[1] = UInt8(self.sBox[Int(word[1])]) - word[2] = UInt8(self.sBox[Int(word[2])]) - word[3] = UInt8(self.sBox[Int(word[3])]) - } - - let wLength = self.variantNb * (self.variantNr + 1) * 4 - let w = UnsafeMutablePointer.allocate(capacity: wLength) - w.initialize(repeating: 0, count: wLength) - defer { - w.deinitialize(count: wLength) - w.deallocate() - } - - for i in 0.. - - for i in self.variantNk..(repeating: 0, count: 4) - - for wordIdx in 0..<4 { - tmp[wordIdx] = w[4 * (i - 1) + wordIdx] - } - if (i % self.variantNk) == 0 { - tmp = subWord(rotateLeft(UInt32(bytes: tmp), by: 8).bytes(totalBytes: 4)) - tmp[0] = tmp.first! ^ AES.Rcon[i / variantNk] - } else if self.variantNk > 6 && (i % self.variantNk) == 4 { - subWordInPlace(&tmp) - } - - // xor array of bytes - for wordIdx in 0..<4 { - w[4 * i + wordIdx] = w[4 * (i - variantNk) + wordIdx] ^ tmp[wordIdx] - } - } - return convertExpandedKey(Array(UnsafeBufferPointer(start: w, count: wLength))) - } - - @inline(__always) - private func B0(_ x: UInt32) -> UInt32 { - x & 0xff - } - - @inline(__always) - private func B1(_ x: UInt32) -> UInt32 { - (x >> 8) & 0xff - } - - @inline(__always) - private func B2(_ x: UInt32) -> UInt32 { - (x >> 16) & 0xff - } - - @inline(__always) - private func B3(_ x: UInt32) -> UInt32 { - (x >> 24) & 0xff - } - - @inline(__always) @usableFromInline - internal func F1(_ x0: UInt32, _ x1: UInt32, _ x2: UInt32, _ x3: UInt32) -> UInt32 { - var result: UInt32 = 0 - result |= UInt32(self.B1(AES.T0[Int(x0 & 255)])) - result |= UInt32(self.B1(AES.T0[Int((x1 >> 8) & 255)])) << 8 - result |= UInt32(self.B1(AES.T0[Int((x2 >> 16) & 255)])) << 16 - result |= UInt32(self.B1(AES.T0[Int(x3 >> 24)])) << 24 - return result - } - - private func calculateSBox() -> (sBox: Array, invSBox: Array) { - let sboxLength = 256 - let sbox = UnsafeMutablePointer.allocate(capacity: sboxLength) - let invsbox = UnsafeMutablePointer.allocate(capacity: sboxLength) - sbox.initialize(repeating: 0, count: sboxLength) - invsbox.initialize(repeating: 0, count: sboxLength) - defer { - sbox.deinitialize(count: sboxLength) - sbox.deallocate() - invsbox.deinitialize(count: sboxLength) - invsbox.deallocate() - } - - sbox[0] = 0x63 - - var p: UInt8 = 1, q: UInt8 = 1 - - repeat { - p = p ^ (UInt8(truncatingIfNeeded: Int(p) << 1) ^ ((p & 0x80) == 0x80 ? 0x1b : 0)) - q ^= q << 1 - q ^= q << 2 - q ^= q << 4 - q ^= (q & 0x80) == 0x80 ? 0x09 : 0 - - let s = 0x63 ^ q ^ rotateLeft(q, by: 1) ^ rotateLeft(q, by: 2) ^ rotateLeft(q, by: 3) ^ rotateLeft(q, by: 4) - - sbox[Int(p)] = UInt32(s) - invsbox[Int(s)] = UInt32(p) - } while p != 1 - - return (sBox: Array(UnsafeBufferPointer(start: sbox, count: sboxLength)), invSBox: Array(UnsafeBufferPointer(start: invsbox, count: sboxLength))) - } -} - -// MARK: Cipher - -extension AES: Cipher { - @inlinable - public func encrypt(_ bytes: ArraySlice) throws -> Array { - let blockSize = self.blockMode.customBlockSize ?? AES.blockSize - let chunks = bytes.batched(by: blockSize) - - var oneTimeCryptor = try makeEncryptor() - var out = Array(reserveCapacity: bytes.count) - for chunk in chunks { - out += try oneTimeCryptor.update(withBytes: chunk, isLast: false) - } - // Padding may be added at the very end - out += try oneTimeCryptor.finish() - - if self.blockMode.options.contains(.paddingRequired) && (out.count % AES.blockSize != 0) { - throw Error.dataPaddingRequired - } - - return out - } - - @inlinable - public func decrypt(_ bytes: ArraySlice) throws -> Array { - if self.blockMode.options.contains(.paddingRequired) && (bytes.count % AES.blockSize != 0) { - throw Error.dataPaddingRequired - } - - var oneTimeCryptor = try makeDecryptor() - let chunks = bytes.batched(by: AES.blockSize) - if chunks.isEmpty { - throw Error.invalidData - } - - var out = Array(reserveCapacity: bytes.count) - - var lastIdx = chunks.startIndex - chunks.indices.formIndex(&lastIdx, offsetBy: chunks.count - 1) - - // To properly remove padding, `isLast` has to be known when called with the last chunk of ciphertext - // Last chunk of ciphertext may contains padded data so next call to update(..) won't be able to remove it - for idx in chunks.indices { - out += try oneTimeCryptor.update(withBytes: chunks[idx], isLast: idx == lastIdx) - } - return out - } -} diff --git a/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/Array+Extension.swift b/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/Array+Extension.swift deleted file mode 100644 index 57fb3d9f..00000000 --- a/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/Array+Extension.swift +++ /dev/null @@ -1,150 +0,0 @@ -// -// CryptoSwift -// -// Copyright (C) 2014-2017 Marcin Krzyżanowski -// This software is provided 'as-is', without any express or implied warranty. -// -// In no event will the authors be held liable for any damages arising from the use of this software. -// -// Permission is granted to anyone to use this software for any purpose,including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: -// -// - The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation is required. -// - Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -// - This notice may not be removed or altered from any source or binary distribution. -// - -extension Array { - @inlinable - init(reserveCapacity: Int) { - self = Array() - self.reserveCapacity(reserveCapacity) - } - - @inlinable - var slice: ArraySlice { - self[self.startIndex ..< self.endIndex] - } -} - -extension Array where Element == UInt8 { - public init(hex: String) { - self.init(reserveCapacity: hex.unicodeScalars.lazy.underestimatedCount) - var buffer: UInt8? - var skip = hex.hasPrefix("0x") ? 2 : 0 - for char in hex.unicodeScalars.lazy { - guard skip == 0 else { - skip -= 1 - continue - } - guard char.value >= 48 && char.value <= 102 else { - removeAll() - return - } - let v: UInt8 - let c: UInt8 = UInt8(char.value) - switch c { - case let c where c <= 57: - v = c - 48 - case let c where c >= 65 && c <= 70: - v = c - 55 - case let c where c >= 97: - v = c - 87 - default: - removeAll() - return - } - if let b = buffer { - append(b << 4 | v) - buffer = nil - } else { - buffer = v - } - } - if let b = buffer { - append(b) - } - } - - public func toHexString() -> String { - `lazy`.reduce(into: "") { - var s = String($1, radix: 16) - if s.count == 1 { - s = "0" + s - } - $0 += s - } - } -} - -extension Array where Element == UInt8 { - /// split in chunks with given chunk size - @available(*, deprecated) - public func chunks(size chunksize: Int) -> Array> { - var words = Array>() - words.reserveCapacity(count / chunksize) - for idx in stride(from: chunksize, through: count, by: chunksize) { - words.append(Array(self[idx - chunksize ..< idx])) // slow for large table - } - let remainder = suffix(count % chunksize) - if !remainder.isEmpty { - words.append(Array(remainder)) - } - return words - } - - public func md5() -> [Element] { - Digest.md5(self) - } - - public func sha1() -> [Element] { - Digest.sha1(self) - } - - public func sha224() -> [Element] { - Digest.sha224(self) - } - - public func sha256() -> [Element] { - Digest.sha256(self) - } - - public func sha384() -> [Element] { - Digest.sha384(self) - } - - public func sha512() -> [Element] { - Digest.sha512(self) - } - - public func sha2(_ variant: SHA2.Variant) -> [Element] { - Digest.sha2(self, variant: variant) - } - - public func sha3(_ variant: SHA3.Variant) -> [Element] { - Digest.sha3(self, variant: variant) - } - - public func crc32(seed: UInt32? = nil, reflect: Bool = true) -> UInt32 { - Checksum.crc32(self, seed: seed, reflect: reflect) - } - - public func crc32c(seed: UInt32? = nil, reflect: Bool = true) -> UInt32 { - Checksum.crc32c(self, seed: seed, reflect: reflect) - } - - public func crc16(seed: UInt16? = nil) -> UInt16 { - Checksum.crc16(self, seed: seed) - } - - public func encrypt(cipher: Cipher) throws -> [Element] { - try cipher.encrypt(self.slice) - } - - public func decrypt(cipher: Cipher) throws -> [Element] { - try cipher.decrypt(self.slice) - } - - public func authenticate(with authenticator: A) throws -> [Element] { - try authenticator.authenticate(self) - } -} diff --git a/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/Authenticator.swift b/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/Authenticator.swift deleted file mode 100644 index 90b534e0..00000000 --- a/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/Authenticator.swift +++ /dev/null @@ -1,20 +0,0 @@ -// -// CryptoSwift -// -// Copyright (C) 2014-2017 Marcin Krzyżanowski -// This software is provided 'as-is', without any express or implied warranty. -// -// In no event will the authors be held liable for any damages arising from the use of this software. -// -// Permission is granted to anyone to use this software for any purpose,including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: -// -// - The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation is required. -// - Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -// - This notice may not be removed or altered from any source or binary distribution. -// - -/// Message authentication code. -public protocol Authenticator { - /// Calculate Message Authentication Code (MAC) for message. - func authenticate(_ bytes: Array) throws -> Array -} diff --git a/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/BatchedCollection.swift b/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/BatchedCollection.swift deleted file mode 100644 index 1273f238..00000000 --- a/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/BatchedCollection.swift +++ /dev/null @@ -1,81 +0,0 @@ -// -// CryptoSwift -// -// Copyright (C) 2014-2017 Marcin Krzyżanowski -// This software is provided 'as-is', without any express or implied warranty. -// -// In no event will the authors be held liable for any damages arising from the use of this software. -// -// Permission is granted to anyone to use this software for any purpose,including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: -// -// - The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation is required. -// - Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -// - This notice may not be removed or altered from any source or binary distribution. -// - -@usableFromInline -struct BatchedCollectionIndex { - let range: Range -} - -extension BatchedCollectionIndex: Comparable { - @usableFromInline - static func == (lhs: BatchedCollectionIndex, rhs: BatchedCollectionIndex) -> Bool { - lhs.range.lowerBound == rhs.range.lowerBound - } - - @usableFromInline - static func < (lhs: BatchedCollectionIndex, rhs: BatchedCollectionIndex) -> Bool { - lhs.range.lowerBound < rhs.range.lowerBound - } -} - -protocol BatchedCollectionType: Collection { - associatedtype Base: Collection -} - -@usableFromInline -struct BatchedCollection: Collection { - let base: Base - let size: Int - - @usableFromInline - init(base: Base, size: Int) { - self.base = base - self.size = size - } - - @usableFromInline - typealias Index = BatchedCollectionIndex - - private func nextBreak(after idx: Base.Index) -> Base.Index { - self.base.index(idx, offsetBy: self.size, limitedBy: self.base.endIndex) ?? self.base.endIndex - } - - @usableFromInline - var startIndex: Index { - Index(range: self.base.startIndex.. Index { - Index(range: idx.range.upperBound.. Base.SubSequence { - self.base[idx.range] - } -} - -extension Collection { - @inlinable - func batched(by size: Int) -> BatchedCollection { - BatchedCollection(base: self, size: size) - } -} diff --git a/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/Bit.swift b/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/Bit.swift deleted file mode 100644 index cac7dcdb..00000000 --- a/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/Bit.swift +++ /dev/null @@ -1,26 +0,0 @@ -// -// CryptoSwift -// -// Copyright (C) 2014-2017 Marcin Krzyżanowski -// This software is provided 'as-is', without any express or implied warranty. -// -// In no event will the authors be held liable for any damages arising from the use of this software. -// -// Permission is granted to anyone to use this software for any purpose,including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: -// -// - The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation is required. -// - Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -// - This notice may not be removed or altered from any source or binary distribution. -// - -public enum Bit: Int { - case zero - case one -} - -extension Bit { - @inlinable - func inverted() -> Bit { - self == .zero ? .one : .zero - } -} diff --git a/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/BlockCipher.swift b/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/BlockCipher.swift deleted file mode 100644 index b07f0350..00000000 --- a/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/BlockCipher.swift +++ /dev/null @@ -1,18 +0,0 @@ -// -// CryptoSwift -// -// Copyright (C) 2014-2017 Marcin Krzyżanowski -// This software is provided 'as-is', without any express or implied warranty. -// -// In no event will the authors be held liable for any damages arising from the use of this software. -// -// Permission is granted to anyone to use this software for any purpose,including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: -// -// - The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation is required. -// - Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -// - This notice may not be removed or altered from any source or binary distribution. -// - -protocol BlockCipher: Cipher { - static var blockSize: Int { get } -} diff --git a/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/BlockDecryptor.swift b/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/BlockDecryptor.swift deleted file mode 100644 index 494e512d..00000000 --- a/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/BlockDecryptor.swift +++ /dev/null @@ -1,98 +0,0 @@ -// CryptoSwift -// -// Copyright (C) 2014-2018 Marcin Krzyżanowski -// This software is provided 'as-is', without any express or implied warranty. -// -// In no event will the authors be held liable for any damages arising from the use of this software. -// -// Permission is granted to anyone to use this software for any purpose,including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: -// -// - The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation is required. -// - Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -// - This notice may not be removed or altered from any source or binary distribution. -// - -public class BlockDecryptor: Cryptor, Updatable { - @usableFromInline - let blockSize: Int - - @usableFromInline - let padding: Padding - - @usableFromInline - var worker: CipherModeWorker - - @usableFromInline - var accumulated = Array() - - @usableFromInline - init(blockSize: Int, padding: Padding, _ worker: CipherModeWorker) throws { - self.blockSize = blockSize - self.padding = padding - self.worker = worker - } - - @inlinable - public func update(withBytes bytes: ArraySlice, isLast: Bool = false) throws -> Array { - self.accumulated += bytes - - // If a worker (eg GCM) can combine ciphertext + tag - // we need to remove tag from the ciphertext. - if !isLast && self.accumulated.count < self.blockSize + self.worker.additionalBufferSize { - return [] - } - - let accumulatedWithoutSuffix: Array - if self.worker.additionalBufferSize > 0 { - // FIXME: how slow is that? - accumulatedWithoutSuffix = Array(self.accumulated.prefix(self.accumulated.count - self.worker.additionalBufferSize)) - } else { - accumulatedWithoutSuffix = self.accumulated - } - - var processedBytesCount = 0 - var plaintext = Array(reserveCapacity: accumulatedWithoutSuffix.count) - // Processing in a block-size manner. It's good for block modes, but bad for stream modes. - for var chunk in accumulatedWithoutSuffix.batched(by: self.blockSize) { - if isLast || (accumulatedWithoutSuffix.count - processedBytesCount) >= blockSize { - let isLastChunk = processedBytesCount + chunk.count == accumulatedWithoutSuffix.count - - if isLast, isLastChunk, var finalizingWorker = worker as? FinalizingDecryptModeWorker { - chunk = try finalizingWorker.willDecryptLast(bytes: chunk + accumulated.suffix(worker.additionalBufferSize)) // tag size - } - - if !chunk.isEmpty { - plaintext += worker.decrypt(block: chunk) - } - - if isLast, isLastChunk, var finalizingWorker = worker as? FinalizingDecryptModeWorker { - plaintext = Array(try finalizingWorker.didDecryptLast(bytes: plaintext.slice)) - } - - processedBytesCount += chunk.count - } - } - accumulated.removeFirst(processedBytesCount) // super-slow - - if isLast { - if accumulatedWithoutSuffix.isEmpty, var finalizingWorker = worker as? FinalizingDecryptModeWorker { - try finalizingWorker.willDecryptLast(bytes: self.accumulated.suffix(self.worker.additionalBufferSize)) - plaintext = Array(try finalizingWorker.didDecryptLast(bytes: plaintext.slice)) - } - plaintext = self.padding.remove(from: plaintext, blockSize: self.blockSize) - } - - return plaintext - } - - public func seek(to position: Int) throws { - guard var worker = self.worker as? SeekableModeWorker else { - fatalError("Not supported") - } - - try worker.seek(to: position) - self.worker = worker - - accumulated = [] - } -} diff --git a/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/BlockEncryptor.swift b/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/BlockEncryptor.swift deleted file mode 100644 index e0dccc37..00000000 --- a/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/BlockEncryptor.swift +++ /dev/null @@ -1,62 +0,0 @@ -// CryptoSwift -// -// Copyright (C) 2014-2018 Marcin Krzyżanowski -// This software is provided 'as-is', without any express or implied warranty. -// -// In no event will the authors be held liable for any damages arising from the use of this software. -// -// Permission is granted to anyone to use this software for any purpose,including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: -// -// - The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation is required. -// - Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -// - This notice may not be removed or altered from any source or binary distribution. -// - -@usableFromInline -final class BlockEncryptor: Cryptor, Updatable { - private let blockSize: Int - private var worker: CipherModeWorker - private let padding: Padding - // Accumulated bytes. Not all processed bytes. - private var accumulated = Array(reserveCapacity: 16) - - private var lastBlockRemainder = 0 - - @usableFromInline - init(blockSize: Int, padding: Padding, _ worker: CipherModeWorker) throws { - self.blockSize = blockSize - self.padding = padding - self.worker = worker - } - - // MARK: Updatable - - public func update(withBytes bytes: ArraySlice, isLast: Bool) throws -> Array { - self.accumulated += bytes - - if isLast { - self.accumulated = self.padding.add(to: self.accumulated, blockSize: self.blockSize) - } - - var encrypted = Array(reserveCapacity: accumulated.count) - for chunk in self.accumulated.batched(by: self.blockSize) { - if isLast || chunk.count == self.blockSize { - encrypted += self.worker.encrypt(block: chunk) - } - } - - // Stream encrypts all, so it removes all elements - self.accumulated.removeFirst(encrypted.count) - - if var finalizingWorker = worker as? FinalizingEncryptModeWorker, isLast == true { - encrypted = Array(try finalizingWorker.finalize(encrypt: encrypted.slice)) - } - - return encrypted - } - - @usableFromInline - func seek(to: Int) throws { - fatalError("Not supported") - } -} diff --git a/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/BlockMode.swift b/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/BlockMode.swift deleted file mode 100644 index 37933c0f..00000000 --- a/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/BlockMode.swift +++ /dev/null @@ -1,26 +0,0 @@ -// -// CryptoSwift -// -// Copyright (C) 2014-2017 Marcin Krzyżanowski -// This software is provided 'as-is', without any express or implied warranty. -// -// In no event will the authors be held liable for any damages arising from the use of this software. -// -// Permission is granted to anyone to use this software for any purpose,including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: -// -// - The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation is required. -// - Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -// - This notice may not be removed or altered from any source or binary distribution. -// - -public typealias CipherOperationOnBlock = (_ block: ArraySlice) -> Array? - -public protocol BlockMode { - var options: BlockModeOption { get } - //TODO: doesn't have to be public - @inlinable func worker(blockSize: Int, cipherOperation: @escaping CipherOperationOnBlock, encryptionOperation: @escaping CipherOperationOnBlock) throws -> CipherModeWorker - - var customBlockSize: Int? { get } -} - -typealias StreamMode = BlockMode diff --git a/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/BlockModeOptions.swift b/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/BlockModeOptions.swift deleted file mode 100644 index 81a56007..00000000 --- a/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/BlockModeOptions.swift +++ /dev/null @@ -1,34 +0,0 @@ -// -// CryptoSwift -// -// Copyright (C) 2014-2017 Marcin Krzyżanowski -// This software is provided 'as-is', without any express or implied warranty. -// -// In no event will the authors be held liable for any damages arising from the use of this software. -// -// Permission is granted to anyone to use this software for any purpose,including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: -// -// - The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation is required. -// - Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -// - This notice may not be removed or altered from any source or binary distribution. -// - -public struct BlockModeOption: OptionSet { - public let rawValue: Int - - public init(rawValue: Int) { - self.rawValue = rawValue - } - - @usableFromInline - static let none = BlockModeOption(rawValue: 1 << 0) - - @usableFromInline - static let initializationVectorRequired = BlockModeOption(rawValue: 1 << 1) - - @usableFromInline - static let paddingRequired = BlockModeOption(rawValue: 1 << 2) - - @usableFromInline - static let useEncryptToDecrypt = BlockModeOption(rawValue: 1 << 3) -} diff --git a/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/CBC.swift b/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/CBC.swift deleted file mode 100644 index 77f8b8ff..00000000 --- a/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/CBC.swift +++ /dev/null @@ -1,76 +0,0 @@ -// -// CryptoSwift -// -// Copyright (C) 2014-2017 Marcin Krzyżanowski -// This software is provided 'as-is', without any express or implied warranty. -// -// In no event will the authors be held liable for any damages arising from the use of this software. -// -// Permission is granted to anyone to use this software for any purpose,including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: -// -// - The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation is required. -// - Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -// - This notice may not be removed or altered from any source or binary distribution. -// - -// Cipher-block chaining (CBC) -// - -public struct CBC: BlockMode { - public enum Error: Swift.Error { - /// Invalid IV - case invalidInitializationVector - } - - public let options: BlockModeOption = [.initializationVectorRequired, .paddingRequired] - - private let iv: Array - - public let customBlockSize: Int? = nil - - public init(iv: Array) { - self.iv = iv - } - - public func worker(blockSize: Int, cipherOperation: @escaping CipherOperationOnBlock, encryptionOperation: @escaping CipherOperationOnBlock) throws -> CipherModeWorker { - if self.iv.count != blockSize { - throw Error.invalidInitializationVector - } - - return CBCModeWorker(blockSize: blockSize, iv: self.iv.slice, cipherOperation: cipherOperation) - } -} - -struct CBCModeWorker: BlockModeWorker { - let cipherOperation: CipherOperationOnBlock - var blockSize: Int - let additionalBufferSize: Int = 0 - private let iv: ArraySlice - private var prev: ArraySlice? - - @inlinable - init(blockSize: Int, iv: ArraySlice, cipherOperation: @escaping CipherOperationOnBlock) { - self.blockSize = blockSize - self.iv = iv - self.cipherOperation = cipherOperation - } - - @inlinable - mutating func encrypt(block plaintext: ArraySlice) -> Array { - guard let ciphertext = cipherOperation(xor(prev ?? iv, plaintext)) else { - return Array(plaintext) - } - self.prev = ciphertext.slice - return ciphertext - } - - @inlinable - mutating func decrypt(block ciphertext: ArraySlice) -> Array { - guard let plaintext = cipherOperation(ciphertext) else { - return Array(ciphertext) - } - let result: Array = xor(prev ?? self.iv, plaintext) - self.prev = ciphertext - return result - } -} diff --git a/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/CCM.swift b/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/CCM.swift deleted file mode 100644 index 6be810bb..00000000 --- a/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/CCM.swift +++ /dev/null @@ -1,364 +0,0 @@ -//// CryptoSwift -// -// Copyright (C) 2014-2018 Marcin Krzyżanowski -// This software is provided 'as-is', without any express or implied warranty. -// -// In no event will the authors be held liable for any damages arising from the use of this software. -// -// Permission is granted to anyone to use this software for any purpose,including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: -// -// - The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation is required. -// - Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -// - This notice may not be removed or altered from any source or binary distribution. -// - -// CCM mode combines the well known CBC-MAC with the well known counter mode of encryption. -// https://tools.ietf.org/html/rfc3610 -// https://csrc.nist.gov/publications/detail/sp/800-38c/final - -#if canImport(Darwin) -import Darwin -#elseif canImport(Glibc) -import Glibc -#elseif canImport(ucrt) -import ucrt -#endif - -/// Counter with Cipher Block Chaining-Message Authentication Code -public struct CCM: StreamMode { - public enum Error: Swift.Error { - /// Invalid IV - case invalidInitializationVector - case invalidParameter - case fail - } - - public let options: BlockModeOption = [.initializationVectorRequired, .useEncryptToDecrypt] - private let nonce: Array - private let additionalAuthenticatedData: Array? - private let tagLength: Int - private let messageLength: Int // total message length. need to know in advance - public let customBlockSize: Int? = nil - - // `authenticationTag` nil for encryption, known tag for decryption - /// For encryption, the value is set at the end of the encryption. - /// For decryption, this is a known Tag to validate against. - public var authenticationTag: Array? - - /// Initialize CCM - /// - /// - Parameters: - /// - iv: Initialization vector. Nonce. Valid length between 7 and 13 bytes. - /// - tagLength: Authentication tag length, in bytes. Value of {4, 6, 8, 10, 12, 14, 16}. - /// - messageLength: Plaintext message length (excluding tag if attached). Length have to be provided in advance. - /// - additionalAuthenticatedData: Additional authenticated data. - public init(iv: Array, tagLength: Int, messageLength: Int, additionalAuthenticatedData: Array? = nil) { - self.nonce = iv - self.tagLength = tagLength - self.additionalAuthenticatedData = additionalAuthenticatedData - self.messageLength = messageLength // - tagLength - } - - /// Initialize CCM - /// - /// - Parameters: - /// - iv: Initialization vector. Nonce. Valid length between 7 and 13 bytes. - /// - tagLength: Authentication tag length, in bytes. Value of {4, 6, 8, 10, 12, 14, 16}. - /// - messageLength: Plaintext message length (excluding tag if attached). Length have to be provided in advance. - /// - authenticationTag: Authentication Tag value if not concatenated to ciphertext. - /// - additionalAuthenticatedData: Additional authenticated data. - public init(iv: Array, tagLength: Int, messageLength: Int, authenticationTag: Array, additionalAuthenticatedData: Array? = nil) { - self.init(iv: iv, tagLength: tagLength, messageLength: messageLength, additionalAuthenticatedData: additionalAuthenticatedData) - self.authenticationTag = authenticationTag - } - - public func worker(blockSize: Int, cipherOperation: @escaping CipherOperationOnBlock, encryptionOperation: @escaping CipherOperationOnBlock) throws -> CipherModeWorker { - if self.nonce.isEmpty { - throw Error.invalidInitializationVector - } - - return CCMModeWorker(blockSize: blockSize, nonce: self.nonce.slice, messageLength: self.messageLength, additionalAuthenticatedData: self.additionalAuthenticatedData, tagLength: self.tagLength, cipherOperation: cipherOperation) - } -} - -class CCMModeWorker: StreamModeWorker, SeekableModeWorker, CounterModeWorker, FinalizingEncryptModeWorker, FinalizingDecryptModeWorker { - typealias Counter = Int - var counter = 0 - - let cipherOperation: CipherOperationOnBlock - let blockSize: Int - private let tagLength: Int - private let messageLength: Int // total message length. need to know in advance - private let q: UInt8 - - let additionalBufferSize: Int - private var keystreamPosIdx = 0 - private let nonce: Array - private var last_y: ArraySlice = [] - private var keystream: Array = [] - // Known Tag used to validate during decryption - private var expectedTag: Array? - - public enum Error: Swift.Error { - case invalidParameter - } - - init(blockSize: Int, nonce: ArraySlice, messageLength: Int, additionalAuthenticatedData: [UInt8]?, expectedTag: Array? = nil, tagLength: Int, cipherOperation: @escaping CipherOperationOnBlock) { - self.blockSize = 16 // CCM is defined for 128 block size - self.tagLength = tagLength - self.additionalBufferSize = tagLength - self.messageLength = messageLength - self.expectedTag = expectedTag - self.cipherOperation = cipherOperation - self.nonce = Array(nonce) - self.q = UInt8(15 - nonce.count) // n = 15-q - - let hasAssociatedData = additionalAuthenticatedData != nil && !additionalAuthenticatedData!.isEmpty - self.processControlInformation(nonce: self.nonce, tagLength: tagLength, hasAssociatedData: hasAssociatedData) - - if let aad = additionalAuthenticatedData, hasAssociatedData { - self.process(aad: aad) - } - } - - // For the very first time setup new IV (aka y0) from the block0 - private func processControlInformation(nonce: [UInt8], tagLength: Int, hasAssociatedData: Bool) { - let block0 = try! format(nonce: nonce, Q: UInt32(self.messageLength), q: self.q, t: UInt8(tagLength), hasAssociatedData: hasAssociatedData).slice - let y0 = self.cipherOperation(block0)!.slice - self.last_y = y0 - } - - private func process(aad: [UInt8]) { - let encodedAAD = format(aad: aad) - - for block_i in encodedAAD.batched(by: 16) { - let y_i = self.cipherOperation(xor(block_i, self.last_y))!.slice - self.last_y = y_i - } - } - - private func S(i: Int) throws -> [UInt8] { - let ctr = try format(counter: i, nonce: nonce, q: q) - return self.cipherOperation(ctr.slice)! - } - - @inlinable - func seek(to position: Int) throws { - self.counter = position - self.keystream = try self.S(i: position) - let offset = position % self.blockSize - self.keystreamPosIdx = offset - } - - func encrypt(block plaintext: ArraySlice) -> Array { - var result = Array(reserveCapacity: plaintext.count) - - var processed = 0 - while processed < plaintext.count { - // Need a full block here to update keystream and do CBC - if self.keystream.isEmpty || self.keystreamPosIdx == self.blockSize { - // y[i], where i is the counter. Can encrypt 1 block at a time - self.counter += 1 - guard let S = try? S(i: counter) else { return Array(plaintext) } - let plaintextP = addPadding(Array(plaintext), blockSize: blockSize) - guard let y = cipherOperation(xor(last_y, plaintextP)) else { return Array(plaintext) } - self.last_y = y.slice - - self.keystream = S - self.keystreamPosIdx = 0 - } - - let xored: Array = xor(plaintext[plaintext.startIndex.advanced(by: processed)...], keystream[keystreamPosIdx...]) - keystreamPosIdx += xored.count - processed += xored.count - result += xored - } - return result - } - - @inlinable - func finalize(encrypt ciphertext: ArraySlice) throws -> ArraySlice { - // concatenate T at the end - guard let S0 = try? S(i: 0) else { return ciphertext } - - let computedTag = xor(last_y.prefix(self.tagLength), S0) as ArraySlice - return ciphertext + computedTag - } - - // Decryption is stream - // CBC is block - private var accumulatedPlaintext: [UInt8] = [] - - func decrypt(block ciphertext: ArraySlice) -> Array { - var output = Array(reserveCapacity: ciphertext.count) - - do { - var currentCounter = self.counter - var processed = 0 - while processed < ciphertext.count { - // Need a full block here to update keystream and do CBC - // New keystream for a new block - if self.keystream.isEmpty || self.keystreamPosIdx == self.blockSize { - currentCounter += 1 - guard let S = try? S(i: currentCounter) else { return Array(ciphertext) } - self.keystream = S - self.keystreamPosIdx = 0 - } - - let xored: Array = xor(ciphertext[ciphertext.startIndex.advanced(by: processed)...], keystream[keystreamPosIdx...]) // plaintext - keystreamPosIdx += xored.count - processed += xored.count - output += xored - self.counter = currentCounter - } - } - - // Accumulate plaintext for the MAC calculations at the end. - // It would be good to process it together though, here. - self.accumulatedPlaintext += output - - // Shouldn't return plaintext until validate tag. - // With incremental update, can't validate tag until all block are processed. - return output - } - - @inlinable - func finalize(decrypt plaintext: ArraySlice) throws -> ArraySlice { - // concatenate T at the end - let computedTag = Array(last_y.prefix(self.tagLength)) - guard let expectedTag = self.expectedTag, expectedTag == computedTag else { - throw CCM.Error.fail - } - - return plaintext - } - - @discardableResult - func willDecryptLast(bytes ciphertext: ArraySlice) throws -> ArraySlice { - // get tag of additionalBufferSize size - // `ciphertext` contains at least additionalBufferSize bytes - // overwrite expectedTag property used later for verification - guard let S0 = try? S(i: 0) else { return ciphertext } - self.expectedTag = xor(ciphertext.suffix(self.tagLength), S0) as [UInt8] - return ciphertext[ciphertext.startIndex..) throws -> ArraySlice { - - // Calculate Tag, from the last CBC block, for accumulated plaintext. - var processed = 0 - for block in self.accumulatedPlaintext.batched(by: self.blockSize) { - let blockP = addPadding(Array(block), blockSize: blockSize) - guard let y = cipherOperation(xor(last_y, blockP)) else { return plaintext } - self.last_y = y.slice - processed += block.count - } - self.accumulatedPlaintext.removeFirst(processed) - return plaintext - } -} - -// Q - octet length of P -// q - octet length of Q. Maximum length (in octets) of payload. An element of {2,3,4,5,6,7,8} -// t - octet length of T (MAC length). An element of {4,6,8,10,12,14,16} -private func format(nonce N: [UInt8], Q: UInt32, q: UInt8, t: UInt8, hasAssociatedData: Bool) throws -> [UInt8] { - var flags0: UInt8 = 0 - - if hasAssociatedData { - // 7 bit - flags0 |= (1 << 6) - } - - // 6,5,4 bit is t in 3 bits - flags0 |= (((t - 2) / 2) & 0x07) << 3 - - // 3,2,1 bit is q in 3 bits - flags0 |= ((q - 1) & 0x07) << 0 - - var block0: [UInt8] = Array(repeating: 0, count: 16) - block0[0] = flags0 - - // N in 1...(15-q) octets, n = 15-q - // n is an element of {7,8,9,10,11,12,13} - let n = 15 - Int(q) - guard (n + Int(q)) == 15 else { - // n+q == 15 - throw CCMModeWorker.Error.invalidParameter - } - block0[1...n] = N[0...(n - 1)] - - // Q in (16-q)...15 octets - block0[(16 - Int(q))...15] = Q.bytes(totalBytes: Int(q)).slice - - return block0 -} - -/// Formatting of the Counter Blocks. Ctr[i] -/// The counter generation function. -/// Q - octet length of P -/// q - octet length of Q. Maximum length (in octets) of payload. An element of {2,3,4,5,6,7,8} -private func format(counter i: Int, nonce N: [UInt8], q: UInt8) throws -> [UInt8] { - var flags0: UInt8 = 0 - - // bit 8,7 is Reserved - // bit 4,5,6 shall be set to 0 - // 3,2,1 bit is q in 3 bits - flags0 |= ((q - 1) & 0x07) << 0 - - var block = Array(repeating: 0, count: 16) // block[0] - block[0] = flags0 - - // N in 1...(15-q) octets, n = 15-q - // n is an element of {7,8,9,10,11,12,13} - let n = 15 - Int(q) - guard (n + Int(q)) == 15 else { - // n+q == 15 - throw CCMModeWorker.Error.invalidParameter - } - block[1...n] = N[0...(n - 1)] - - // [i]8q in (16-q)...15 octets - block[(16 - Int(q))...15] = i.bytes(totalBytes: Int(q)).slice - - return block -} - -/// Resulting can be partitioned into 16-octet blocks -private func format(aad: [UInt8]) -> [UInt8] { - let a = aad.count - - switch Double(a) { - case 0..<65280: // 2^16-2^8 - // [a]16 - return addPadding(a.bytes(totalBytes: 2) + aad, blockSize: 16) - case 65280..<4_294_967_296: // 2^32 - // [a]32 - return addPadding([0xFF, 0xFE] + a.bytes(totalBytes: 4) + aad, blockSize: 16) - case 4_294_967_296.., blockSize: Int) -> Array { - if bytes.isEmpty { - return Array(repeating: 0, count: blockSize) - } - - let remainder = bytes.count % blockSize - if remainder == 0 { - return bytes - } - - let paddingCount = blockSize - remainder - if paddingCount > 0 { - return bytes + Array(repeating: 0, count: paddingCount) - } - return bytes -} diff --git a/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/CFB.swift b/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/CFB.swift deleted file mode 100644 index e2f2c4cf..00000000 --- a/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/CFB.swift +++ /dev/null @@ -1,102 +0,0 @@ -// -// CryptoSwift -// -// Copyright (C) 2014-2017 Marcin Krzyżanowski -// This software is provided 'as-is', without any express or implied warranty. -// -// In no event will the authors be held liable for any damages arising from the use of this software. -// -// Permission is granted to anyone to use this software for any purpose,including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: -// -// - The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation is required. -// - Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -// - This notice may not be removed or altered from any source or binary distribution. -// - -// Cipher feedback (CFB) -// - -public struct CFB: BlockMode { - public enum Error: Swift.Error { - /// Invalid IV - case invalidInitializationVector - } - - public enum SegmentSize: Int { - case cfb8 = 1 // Encrypt byte per byte - case cfb128 = 16 // Encrypt 16 bytes per 16 bytes (default) - } - - public let options: BlockModeOption = [.initializationVectorRequired, .useEncryptToDecrypt] - private let iv: Array - private let segmentSize: SegmentSize - public let customBlockSize: Int? - - public init(iv: Array, segmentSize: SegmentSize = .cfb128) { - self.iv = iv - self.segmentSize = segmentSize - self.customBlockSize = segmentSize.rawValue - } - - public func worker(blockSize: Int, cipherOperation: @escaping CipherOperationOnBlock, encryptionOperation: @escaping CipherOperationOnBlock) throws -> CipherModeWorker { - if !(self.iv.count == blockSize || (segmentSize == .cfb8 && self.iv.count == AES.blockSize)) { - throw Error.invalidInitializationVector - } - - return CFBModeWorker(blockSize: blockSize, iv: self.iv.slice, segmentSize: segmentSize, cipherOperation: cipherOperation) - } -} - -struct CFBModeWorker: BlockModeWorker { - let cipherOperation: CipherOperationOnBlock - let blockSize: Int - let additionalBufferSize: Int = 0 - private let iv: ArraySlice - private let segmentSize: CFB.SegmentSize - private var prev: ArraySlice? - - init(blockSize: Int, iv: ArraySlice, segmentSize: CFB.SegmentSize, cipherOperation: @escaping CipherOperationOnBlock) { - self.blockSize = blockSize - self.iv = iv - self.segmentSize = segmentSize - self.cipherOperation = cipherOperation - } - - @inlinable - mutating func encrypt(block plaintext: ArraySlice) -> Array { - switch segmentSize { - case .cfb128: - guard let ciphertext = cipherOperation(prev ?? iv) else { - return Array(plaintext) - } - self.prev = xor(plaintext, ciphertext.slice) - return Array(self.prev ?? []) - case .cfb8: - guard let ciphertext = cipherOperation(prev ?? iv) else { - return Array(plaintext) - } - let result = [Array(plaintext)[0] ^ Array(ciphertext)[0]] - self.prev = Array((prev ?? iv).dropFirst()) + [result[0]] - return result - } - } - - @inlinable - mutating func decrypt(block ciphertext: ArraySlice) -> Array { - switch segmentSize { - case .cfb128: - guard let plaintext = cipherOperation(prev ?? iv) else { - return Array(ciphertext) - } - let result: Array = xor(plaintext, ciphertext) - prev = ciphertext - return result - case .cfb8: - guard let plaintext = cipherOperation(prev ?? iv) else { - return Array(ciphertext) - } - self.prev = Array((prev ?? iv).dropFirst()) + [Array(ciphertext)[0]] - return [Array(ciphertext)[0] ^ Array(plaintext)[0]] - } - } -} diff --git a/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/CTR.swift b/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/CTR.swift deleted file mode 100644 index 0fd41d74..00000000 --- a/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/CTR.swift +++ /dev/null @@ -1,138 +0,0 @@ -// -// CryptoSwift -// -// Copyright (C) 2014-2017 Marcin Krzyżanowski -// This software is provided 'as-is', without any express or implied warranty. -// -// In no event will the authors be held liable for any damages arising from the use of this software. -// -// Permission is granted to anyone to use this software for any purpose,including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: -// -// - The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation is required. -// - Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -// - This notice may not be removed or altered from any source or binary distribution. -// - -// Counter (CTR) - -public struct CTR: StreamMode { - public enum Error: Swift.Error { - /// Invalid IV - case invalidInitializationVector - } - - public let options: BlockModeOption = [.initializationVectorRequired, .useEncryptToDecrypt] - private let iv: Array - private let counter: Int - public let customBlockSize: Int? = nil - - public init(iv: Array, counter: Int = 0) { - self.iv = iv - self.counter = counter - } - - public func worker(blockSize: Int, cipherOperation: @escaping CipherOperationOnBlock, encryptionOperation: @escaping CipherOperationOnBlock) throws -> CipherModeWorker { - if self.iv.count != blockSize { - throw Error.invalidInitializationVector - } - - return CTRModeWorker(blockSize: blockSize, iv: self.iv.slice, counter: self.counter, cipherOperation: cipherOperation) - } -} - -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - -struct CTRModeWorker: StreamModeWorker, SeekableModeWorker, CounterModeWorker { - typealias Counter = CTRCounter - - final class CTRCounter { - private let constPrefix: Array - private var value: UInt64 - //TODO: make it an updatable value, computing is too slow - var bytes: Array { - self.constPrefix + self.value.bytes() - } - - @inlinable - init(_ initialValue: Array) { - let halfIndex = initialValue.startIndex.advanced(by: initialValue.count / 2) - self.constPrefix = Array(initialValue[initialValue.startIndex.., startAt index: Int) { - self.init(buildCounterValue(nonce, counter: UInt64(index))) - } - - static func += (lhs: CTRCounter, rhs: Int) { - lhs.value += UInt64(rhs) - } - } - - let cipherOperation: CipherOperationOnBlock - let additionalBufferSize: Int = 0 - let iv: Array - var counter: CTRCounter - - private let blockSize: Int - - // The same keystream is used for the block length plaintext - // As new data is added, keystream suffix is used to xor operation. - private var keystream: Array - private var keystreamPosIdx = 0 - - init(blockSize: Int, iv: ArraySlice, counter: Int, cipherOperation: @escaping CipherOperationOnBlock) { - self.cipherOperation = cipherOperation - self.blockSize = blockSize - self.iv = Array(iv) - - // the first keystream is calculated from the nonce = initial value of counter - self.counter = CTRCounter(nonce: Array(iv), startAt: counter) - self.keystream = Array(cipherOperation(self.counter.bytes.slice)!) - } - - @inlinable - mutating func seek(to position: Int) throws { - let offset = position % self.blockSize - self.counter = CTRCounter(nonce: self.iv, startAt: position / self.blockSize) - self.keystream = Array(self.cipherOperation(self.counter.bytes.slice)!) - self.keystreamPosIdx = offset - } - - // plaintext is at most blockSize long - @inlinable - mutating func encrypt(block plaintext: ArraySlice) -> Array { - var result = Array(reserveCapacity: plaintext.count) - - var processed = 0 - while processed < plaintext.count { - // Update keystream - if self.keystreamPosIdx == self.blockSize { - self.counter += 1 - self.keystream = Array(self.cipherOperation(self.counter.bytes.slice)!) - self.keystreamPosIdx = 0 - } - - let xored: Array = xor(plaintext[plaintext.startIndex.advanced(by: processed)...], keystream[keystreamPosIdx...]) - keystreamPosIdx += xored.count - processed += xored.count - result += xored - } - - return result - } - - mutating func decrypt(block ciphertext: ArraySlice) -> Array { - self.encrypt(block: ciphertext) - } -} - -private func buildCounterValue(_ iv: Array, counter: UInt64) -> Array { - let noncePartLen = iv.count / 2 - let noncePrefix = iv[iv.startIndex.. -// This software is provided 'as-is', without any express or implied warranty. -// -// In no event will the authors be held liable for any damages arising from the use of this software. -// -// Permission is granted to anyone to use this software for any purpose,including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: -// -// - The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation is required. -// - Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -// - This notice may not be removed or altered from any source or binary distribution. -// - -public protocol CipherModeWorker { - var cipherOperation: CipherOperationOnBlock { get } - - // Additional space needed when incrementally process data - // eg. for GCM combined mode - var additionalBufferSize: Int { get } - - @inlinable - mutating func encrypt(block plaintext: ArraySlice) -> Array - - @inlinable - mutating func decrypt(block ciphertext: ArraySlice) -> Array -} - -/// Block workers use `BlockEncryptor` -public protocol BlockModeWorker: CipherModeWorker { - var blockSize: Int { get } -} - -public protocol CounterModeWorker: CipherModeWorker { - associatedtype Counter - var counter: Counter { get set } -} - -public protocol SeekableModeWorker: CipherModeWorker { - mutating func seek(to position: Int) throws -} - -/// Stream workers use `StreamEncryptor` -public protocol StreamModeWorker: CipherModeWorker { -} - -public protocol FinalizingEncryptModeWorker: CipherModeWorker { - // Any final calculations, eg. calculate tag - // Called after the last block is encrypted - mutating func finalize(encrypt ciphertext: ArraySlice) throws -> ArraySlice -} - -public protocol FinalizingDecryptModeWorker: CipherModeWorker { - // Called before decryption, hence input is ciphertext. - // ciphertext is either a last block, or a tag (for stream workers) - @discardableResult - mutating func willDecryptLast(bytes ciphertext: ArraySlice) throws -> ArraySlice - // Called after decryption, hence input is ciphertext - mutating func didDecryptLast(bytes plaintext: ArraySlice) throws -> ArraySlice - // Any final calculations, eg. calculate tag - // Called after the last block is encrypted - mutating func finalize(decrypt plaintext: ArraySlice) throws -> ArraySlice -} diff --git a/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/ECB.swift b/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/ECB.swift deleted file mode 100644 index 07d8df4d..00000000 --- a/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/ECB.swift +++ /dev/null @@ -1,53 +0,0 @@ -// -// CryptoSwift -// -// Copyright (C) 2014-2017 Marcin Krzyżanowski -// This software is provided 'as-is', without any express or implied warranty. -// -// In no event will the authors be held liable for any damages arising from the use of this software. -// -// Permission is granted to anyone to use this software for any purpose,including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: -// -// - The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation is required. -// - Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -// - This notice may not be removed or altered from any source or binary distribution. -// - -// Electronic codebook (ECB) -// - -public struct ECB: BlockMode { - public let options: BlockModeOption = .paddingRequired - public let customBlockSize: Int? = nil - - public init() { - } - - public func worker(blockSize: Int, cipherOperation: @escaping CipherOperationOnBlock, encryptionOperation: @escaping CipherOperationOnBlock) throws -> CipherModeWorker { - ECBModeWorker(blockSize: blockSize, cipherOperation: cipherOperation) - } -} - -struct ECBModeWorker: BlockModeWorker { - typealias Element = Array - let cipherOperation: CipherOperationOnBlock - let blockSize: Int - let additionalBufferSize: Int = 0 - - init(blockSize: Int, cipherOperation: @escaping CipherOperationOnBlock) { - self.blockSize = blockSize - self.cipherOperation = cipherOperation - } - - @inlinable - mutating func encrypt(block plaintext: ArraySlice) -> Array { - guard let ciphertext = cipherOperation(plaintext) else { - return Array(plaintext) - } - return ciphertext - } - - mutating func decrypt(block ciphertext: ArraySlice) -> Array { - self.encrypt(block: ciphertext) - } -} diff --git a/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/GCM.swift b/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/GCM.swift deleted file mode 100644 index d188017f..00000000 --- a/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/GCM.swift +++ /dev/null @@ -1,374 +0,0 @@ -// -// CryptoSwift -// -// Copyright (C) 2014-2017 Marcin Krzyżanowski -// This software is provided 'as-is', without any express or implied warranty. -// -// In no event will the authors be held liable for any damages arising from the use of this software. -// -// Permission is granted to anyone to use this software for any purpose,including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: -// -// - The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation is required. -// - Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -// - This notice may not be removed or altered from any source or binary distribution. -// - -// Galois/Counter Mode (GCM) -// https://csrc.nist.gov/publications/detail/sp/800-38d/final -// ref: http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.694.695&rep=rep1&type=pdf -// - -public final class GCM: BlockMode { - public enum Mode { - /// In combined mode, the authentication tag is directly appended to the encrypted message. This is usually what you want. - case combined - /// Some applications may need to store the authentication tag and the encrypted message at different locations. - case detached - } - - public let options: BlockModeOption = [.initializationVectorRequired, .useEncryptToDecrypt] - - public enum Error: Swift.Error { - /// Invalid IV - case invalidInitializationVector - /// Special symbol FAIL that indicates that the inputs are not authentic. - case fail - } - - private let iv: Array - private let additionalAuthenticatedData: Array? - private let mode: Mode - public let customBlockSize: Int? = nil - - /// Length of authentication tag, in bytes. - /// For encryption, the value is given as init parameter. - /// For decryption, the length of given authentication tag is used. - private let tagLength: Int - - // `authenticationTag` nil for encryption, known tag for decryption - /// For encryption, the value is set at the end of the encryption. - /// For decryption, this is a known Tag to validate against. - public var authenticationTag: Array? - - // encrypt - /// Possible tag lengths: 4,8,12,13,14,15,16 - public init(iv: Array, additionalAuthenticatedData: Array? = nil, tagLength: Int = 16, mode: Mode = .detached) { - self.iv = iv - self.additionalAuthenticatedData = additionalAuthenticatedData - self.mode = mode - self.tagLength = tagLength - } - - // decrypt - public convenience init(iv: Array, authenticationTag: Array, additionalAuthenticatedData: Array? = nil, mode: Mode = .detached) { - self.init(iv: iv, additionalAuthenticatedData: additionalAuthenticatedData, tagLength: authenticationTag.count, mode: mode) - self.authenticationTag = authenticationTag - } - - public func worker(blockSize: Int, cipherOperation: @escaping CipherOperationOnBlock, encryptionOperation: @escaping CipherOperationOnBlock) throws -> CipherModeWorker { - if self.iv.isEmpty { - throw Error.invalidInitializationVector - } - - let worker = GCMModeWorker(iv: iv.slice, aad: self.additionalAuthenticatedData?.slice, expectedTag: self.authenticationTag, tagLength: self.tagLength, mode: self.mode, cipherOperation: cipherOperation) - worker.didCalculateTag = { [weak self] tag in - self?.authenticationTag = tag - } - return worker - } -} - -// MARK: - Worker - -final class GCMModeWorker: BlockModeWorker, FinalizingEncryptModeWorker, FinalizingDecryptModeWorker { - let cipherOperation: CipherOperationOnBlock - - // Callback called when authenticationTag is ready - var didCalculateTag: ((Array) -> Void)? - - private let tagLength: Int - // GCM nonce is 96-bits by default. It's the most effective length for the IV - private static let nonceSize = 12 - - // GCM is designed for 128-bit ciphers like AES (but not really for Blowfish). 64-bit mode is not implemented. - let blockSize = 16 // 128 bit - let additionalBufferSize: Int - private let iv: ArraySlice - private let mode: GCM.Mode - private var counter: UInt128 - private let eky0: UInt128 // move to GF? - private let h: UInt128 - - // Additional authenticated data - private let aad: ArraySlice? - // Known Tag used to validate during decryption - private var expectedTag: Array? - - // Note: need new worker to reset instance - // Use empty aad if not specified. AAD is optional. - private lazy var gf: GF = { - if let aad = aad { - return GF(aad: Array(aad), h: h, blockSize: blockSize) - } - return GF(aad: [UInt8](), h: h, blockSize: blockSize) - }() - - init(iv: ArraySlice, aad: ArraySlice? = nil, expectedTag: Array? = nil, tagLength: Int, mode: GCM.Mode, cipherOperation: @escaping CipherOperationOnBlock) { - self.cipherOperation = cipherOperation - self.iv = iv - self.mode = mode - self.aad = aad - self.expectedTag = expectedTag - self.tagLength = tagLength - self.h = UInt128(cipherOperation(Array(repeating: 0, count: self.blockSize).slice)!) // empty block - - if mode == .combined { - self.additionalBufferSize = tagLength - } else { - self.additionalBufferSize = 0 - } - - // Assume nonce is 12 bytes long, otherwise initial counter would be calulated from GHASH - // counter = GF.ghash(aad: [UInt8](), ciphertext: nonce) - if iv.count == GCMModeWorker.nonceSize { - self.counter = makeCounter(nonce: Array(self.iv)) - } else { - self.counter = GF.ghash(h: self.h, aad: [UInt8](), ciphertext: Array(iv), blockSize: self.blockSize) - } - - // Set constants - self.eky0 = UInt128(cipherOperation(self.counter.bytes.slice)!) - } - - func encrypt(block plaintext: ArraySlice) -> Array { - self.counter = incrementCounter(self.counter) - - guard let ekyN = cipherOperation(counter.bytes.slice) else { - return Array(plaintext) - } - - // plaintext block ^ ek1 - let ciphertext = xor(plaintext, ekyN) as Array - - // update ghash incrementally - gf.ghashUpdate(block: ciphertext) - - return Array(ciphertext) - } - - @inlinable - func finalize(encrypt ciphertext: ArraySlice) throws -> ArraySlice { - // Calculate MAC tag. - let ghash = self.gf.ghashFinish() - let tag = Array((ghash ^ self.eky0).bytes.prefix(self.tagLength)) - - // Notify handler - self.didCalculateTag?(tag) - - switch self.mode { - case .combined: - return (ciphertext + tag).slice - case .detached: - return ciphertext - } - } - - @inlinable - func decrypt(block ciphertext: ArraySlice) -> Array { - self.counter = incrementCounter(self.counter) - - // update ghash incrementally - self.gf.ghashUpdate(block: Array(ciphertext)) - - guard let ekN = cipherOperation(counter.bytes.slice) else { - return Array(ciphertext) - } - - // ciphertext block ^ ek1 - let plaintext = xor(ciphertext, ekN) as Array - return plaintext - } - - // The authenticated decryption operation has five inputs: K, IV , C, A, and T. It has only a single - // output, either the plaintext value P or a special symbol FAIL that indicates that the inputs are not - // authentic. - @discardableResult - func willDecryptLast(bytes ciphertext: ArraySlice) throws -> ArraySlice { - // Validate tag - switch self.mode { - case .combined: - // overwrite expectedTag property used later for verification - self.expectedTag = Array(ciphertext.suffix(self.tagLength)) - return ciphertext[ciphertext.startIndex..) throws -> ArraySlice { - // Calculate MAC tag. - let ghash = self.gf.ghashFinish() - let computedTag = Array((ghash ^ self.eky0).bytes.prefix(self.tagLength)) - - // Validate tag - guard let expectedTag = self.expectedTag, computedTag == expectedTag else { - throw GCM.Error.fail - } - - return plaintext - } - - func finalize(decrypt plaintext: ArraySlice) throws -> ArraySlice { - // do nothing - plaintext - } -} - -// MARK: - Local utils - -private func makeCounter(nonce: Array) -> UInt128 { - UInt128(nonce + [0, 0, 0, 1]) -} - -// Successive counter values are generated using the function incr(), which treats the rightmost 32 -// bits of its argument as a nonnegative integer with the least significant bit on the right -private func incrementCounter(_ counter: UInt128) -> UInt128 { - let b = counter.i.b + 1 - let a = (b == 0 ? counter.i.a + 1 : counter.i.a) - return UInt128((a, b)) -} - -// If data is not a multiple of block size bytes long then the remainder is zero padded -// Note: It's similar to ZeroPadding, but it's not the same. -private func addPadding(_ bytes: Array, blockSize: Int) -> Array { - if bytes.isEmpty { - return Array(repeating: 0, count: blockSize) - } - - let remainder = bytes.count % blockSize - if remainder == 0 { - return bytes - } - - let paddingCount = blockSize - remainder - if paddingCount > 0 { - return bytes + Array(repeating: 0, count: paddingCount) - } - return bytes -} - -// MARK: - GF - -/// The Field GF(2^128) -private final class GF { - static let r = UInt128(a: 0xE100000000000000, b: 0) - - let blockSize: Int - let h: UInt128 - - // AAD won't change - let aadLength: Int - - // Updated for every consumed block - var ciphertextLength: Int - - // Start with 0 - var x: UInt128 - - init(aad: [UInt8], h: UInt128, blockSize: Int) { - self.blockSize = blockSize - self.aadLength = aad.count - self.ciphertextLength = 0 - self.h = h - self.x = 0 - - // Calculate for AAD at the begining - self.x = GF.calculateX(aad: aad, x: self.x, h: h, blockSize: blockSize) - } - - @discardableResult - func ghashUpdate(block ciphertextBlock: Array) -> UInt128 { - self.ciphertextLength += ciphertextBlock.count - self.x = GF.calculateX(block: addPadding(ciphertextBlock, blockSize: self.blockSize), x: self.x, h: self.h, blockSize: self.blockSize) - return self.x - } - - func ghashFinish() -> UInt128 { - // len(A) || len(C) - let len = UInt128(a: UInt64(aadLength * 8), b: UInt64(ciphertextLength * 8)) - x = GF.multiply(self.x ^ len, self.h) - return self.x - } - - // GHASH. One-time calculation - static func ghash(x startx: UInt128 = 0, h: UInt128, aad: Array, ciphertext: Array, blockSize: Int) -> UInt128 { - var x = self.calculateX(aad: aad, x: startx, h: h, blockSize: blockSize) - x = self.calculateX(ciphertext: ciphertext, x: x, h: h, blockSize: blockSize) - - // len(aad) || len(ciphertext) - let len = UInt128(a: UInt64(aad.count * 8), b: UInt64(ciphertext.count * 8)) - x = self.multiply(x ^ len, h) - - return x - } - - // Calculate Ciphertext part, for all blocks - // Not used with incremental calculation. - private static func calculateX(ciphertext: [UInt8], x startx: UInt128, h: UInt128, blockSize: Int) -> UInt128 { - let pciphertext = addPadding(ciphertext, blockSize: blockSize) - let blocksCount = pciphertext.count / blockSize - - var x = startx - for i in 0.., x: UInt128, h: UInt128, blockSize: Int) -> UInt128 { - let k = x ^ UInt128(ciphertextBlock) - return self.multiply(k, h) - } - - // Calculate AAD part, for all blocks - private static func calculateX(aad: [UInt8], x startx: UInt128, h: UInt128, blockSize: Int) -> UInt128 { - let paad = addPadding(aad, blockSize: blockSize) - let blocksCount = paad.count / blockSize - - var x = startx - for i in 0.. UInt128 { - var z: UInt128 = 0 - var v = x - var k = UInt128(a: 1 << 63, b: 0) - - for _ in 0..<128 { - if y & k == k { - z = z ^ v - } - - if v & 1 != 1 { - v = v >> 1 - } else { - v = (v >> 1) ^ self.r - } - - k = k >> 1 - } - - return z - } -} diff --git a/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/OFB.swift b/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/OFB.swift deleted file mode 100644 index 5fc9f228..00000000 --- a/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/OFB.swift +++ /dev/null @@ -1,73 +0,0 @@ -// -// CryptoSwift -// -// Copyright (C) 2014-2017 Marcin Krzyżanowski -// This software is provided 'as-is', without any express or implied warranty. -// -// In no event will the authors be held liable for any damages arising from the use of this software. -// -// Permission is granted to anyone to use this software for any purpose,including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: -// -// - The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation is required. -// - Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -// - This notice may not be removed or altered from any source or binary distribution. -// - -// Output Feedback (OFB) -// - -public struct OFB: BlockMode { - public enum Error: Swift.Error { - /// Invalid IV - case invalidInitializationVector - } - - public let options: BlockModeOption = [.initializationVectorRequired, .useEncryptToDecrypt] - private let iv: Array - public let customBlockSize: Int? = nil - - public init(iv: Array) { - self.iv = iv - } - - public func worker(blockSize: Int, cipherOperation: @escaping CipherOperationOnBlock, encryptionOperation: @escaping CipherOperationOnBlock) throws -> CipherModeWorker { - if self.iv.count != blockSize { - throw Error.invalidInitializationVector - } - - return OFBModeWorker(blockSize: blockSize, iv: self.iv.slice, cipherOperation: cipherOperation) - } -} - -struct OFBModeWorker: BlockModeWorker { - let cipherOperation: CipherOperationOnBlock - let blockSize: Int - let additionalBufferSize: Int = 0 - private let iv: ArraySlice - private var prev: ArraySlice? - - init(blockSize: Int, iv: ArraySlice, cipherOperation: @escaping CipherOperationOnBlock) { - self.blockSize = blockSize - self.iv = iv - self.cipherOperation = cipherOperation - } - - @inlinable - mutating func encrypt(block plaintext: ArraySlice) -> Array { - guard let ciphertext = cipherOperation(prev ?? iv) else { - return Array(plaintext) - } - self.prev = ciphertext.slice - return xor(plaintext, ciphertext) - } - - @inlinable - mutating func decrypt(block ciphertext: ArraySlice) -> Array { - guard let decrypted = cipherOperation(prev ?? iv) else { - return Array(ciphertext) - } - let plaintext: Array = xor(decrypted, ciphertext) - prev = decrypted.slice - return plaintext - } -} diff --git a/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/PCBC.swift b/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/PCBC.swift deleted file mode 100644 index d3790a19..00000000 --- a/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/PCBC.swift +++ /dev/null @@ -1,74 +0,0 @@ -// -// CryptoSwift -// -// Copyright (C) 2014-2017 Marcin Krzyżanowski -// This software is provided 'as-is', without any express or implied warranty. -// -// In no event will the authors be held liable for any damages arising from the use of this software. -// -// Permission is granted to anyone to use this software for any purpose,including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: -// -// - The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation is required. -// - Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -// - This notice may not be removed or altered from any source or binary distribution. -// - -// Propagating Cipher Block Chaining (PCBC) -// - -public struct PCBC: BlockMode { - public enum Error: Swift.Error { - /// Invalid IV - case invalidInitializationVector - } - - public let options: BlockModeOption = [.initializationVectorRequired, .paddingRequired] - private let iv: Array - public let customBlockSize: Int? = nil - - public init(iv: Array) { - self.iv = iv - } - - public func worker(blockSize: Int, cipherOperation: @escaping CipherOperationOnBlock, encryptionOperation: @escaping CipherOperationOnBlock) throws -> CipherModeWorker { - if self.iv.count != blockSize { - throw Error.invalidInitializationVector - } - - return PCBCModeWorker(blockSize: blockSize, iv: self.iv.slice, cipherOperation: cipherOperation) - } -} - -struct PCBCModeWorker: BlockModeWorker { - let cipherOperation: CipherOperationOnBlock - var blockSize: Int - let additionalBufferSize: Int = 0 - private let iv: ArraySlice - private var prev: ArraySlice? - - @inlinable - init(blockSize: Int, iv: ArraySlice, cipherOperation: @escaping CipherOperationOnBlock) { - self.blockSize = blockSize - self.iv = iv - self.cipherOperation = cipherOperation - } - - @inlinable - mutating func encrypt(block plaintext: ArraySlice) -> Array { - guard let ciphertext = cipherOperation(xor(prev ?? iv, plaintext)) else { - return Array(plaintext) - } - self.prev = xor(plaintext, ciphertext.slice) - return ciphertext - } - - @inlinable - mutating func decrypt(block ciphertext: ArraySlice) -> Array { - guard let plaintext = cipherOperation(ciphertext) else { - return Array(ciphertext) - } - let result: Array = xor(prev ?? self.iv, plaintext) - self.prev = xor(plaintext.slice, ciphertext) - return result - } -} diff --git a/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/Blowfish.swift b/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/Blowfish.swift deleted file mode 100644 index 3c9b958e..00000000 --- a/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/Blowfish.swift +++ /dev/null @@ -1,537 +0,0 @@ -// -// CryptoSwift -// -// Copyright (C) 2014-2017 Marcin Krzyżanowski -// This software is provided 'as-is', without any express or implied warranty. -// -// In no event will the authors be held liable for any damages arising from the use of this software. -// -// Permission is granted to anyone to use this software for any purpose,including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: -// -// - The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation is required. -// - Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -// - This notice may not be removed or altered from any source or binary distribution. -// - -// https://en.wikipedia.org/wiki/Blowfish_(cipher) -// Based on Paul Kocher implementation -// - -public final class Blowfish { - public enum Error: Swift.Error { - /// Data padding is required - case dataPaddingRequired - /// Invalid key or IV - case invalidKeyOrInitializationVector - /// Invalid IV - case invalidInitializationVector - /// Invalid block mode - case invalidBlockMode - } - - public static let blockSize: Int = 8 // 64 bit - public let keySize: Int - - private let blockMode: BlockMode - private let padding: Padding - private var decryptWorker: CipherModeWorker! - private var encryptWorker: CipherModeWorker! - - private let N = 16 // rounds - private var P: Array - private var S: Array> - private let origP: Array = [ - 0x243f6a88, 0x85a308d3, 0x13198a2e, 0x03707344, 0xa4093822, - 0x299f31d0, 0x082efa98, 0xec4e6c89, 0x452821e6, 0x38d01377, - 0xbe5466cf, 0x34e90c6c, 0xc0ac29b7, 0xc97c50dd, 0x3f84d5b5, - 0xb5470917, 0x9216d5d9, 0x8979fb1b - ] - - private let origS: Array> = [ - [ - 0xd1310ba6, 0x98dfb5ac, 0x2ffd72db, 0xd01adfb7, - 0xb8e1afed, 0x6a267e96, 0xba7c9045, 0xf12c7f99, - 0x24a19947, 0xb3916cf7, 0x0801f2e2, 0x858efc16, - 0x636920d8, 0x71574e69, 0xa458fea3, 0xf4933d7e, - 0x0d95748f, 0x728eb658, 0x718bcd58, 0x82154aee, - 0x7b54a41d, 0xc25a59b5, 0x9c30d539, 0x2af26013, - 0xc5d1b023, 0x286085f0, 0xca417918, 0xb8db38ef, - 0x8e79dcb0, 0x603a180e, 0x6c9e0e8b, 0xb01e8a3e, - 0xd71577c1, 0xbd314b27, 0x78af2fda, 0x55605c60, - 0xe65525f3, 0xaa55ab94, 0x57489862, 0x63e81440, - 0x55ca396a, 0x2aab10b6, 0xb4cc5c34, 0x1141e8ce, - 0xa15486af, 0x7c72e993, 0xb3ee1411, 0x636fbc2a, - 0x2ba9c55d, 0x741831f6, 0xce5c3e16, 0x9b87931e, - 0xafd6ba33, 0x6c24cf5c, 0x7a325381, 0x28958677, - 0x3b8f4898, 0x6b4bb9af, 0xc4bfe81b, 0x66282193, - 0x61d809cc, 0xfb21a991, 0x487cac60, 0x5dec8032, - 0xef845d5d, 0xe98575b1, 0xdc262302, 0xeb651b88, - 0x23893e81, 0xd396acc5, 0x0f6d6ff3, 0x83f44239, - 0x2e0b4482, 0xa4842004, 0x69c8f04a, 0x9e1f9b5e, - 0x21c66842, 0xf6e96c9a, 0x670c9c61, 0xabd388f0, - 0x6a51a0d2, 0xd8542f68, 0x960fa728, 0xab5133a3, - 0x6eef0b6c, 0x137a3be4, 0xba3bf050, 0x7efb2a98, - 0xa1f1651d, 0x39af0176, 0x66ca593e, 0x82430e88, - 0x8cee8619, 0x456f9fb4, 0x7d84a5c3, 0x3b8b5ebe, - 0xe06f75d8, 0x85c12073, 0x401a449f, 0x56c16aa6, - 0x4ed3aa62, 0x363f7706, 0x1bfedf72, 0x429b023d, - 0x37d0d724, 0xd00a1248, 0xdb0fead3, 0x49f1c09b, - 0x075372c9, 0x80991b7b, 0x25d479d8, 0xf6e8def7, - 0xe3fe501a, 0xb6794c3b, 0x976ce0bd, 0x04c006ba, - 0xc1a94fb6, 0x409f60c4, 0x5e5c9ec2, 0x196a2463, - 0x68fb6faf, 0x3e6c53b5, 0x1339b2eb, 0x3b52ec6f, - 0x6dfc511f, 0x9b30952c, 0xcc814544, 0xaf5ebd09, - 0xbee3d004, 0xde334afd, 0x660f2807, 0x192e4bb3, - 0xc0cba857, 0x45c8740f, 0xd20b5f39, 0xb9d3fbdb, - 0x5579c0bd, 0x1a60320a, 0xd6a100c6, 0x402c7279, - 0x679f25fe, 0xfb1fa3cc, 0x8ea5e9f8, 0xdb3222f8, - 0x3c7516df, 0xfd616b15, 0x2f501ec8, 0xad0552ab, - 0x323db5fa, 0xfd238760, 0x53317b48, 0x3e00df82, - 0x9e5c57bb, 0xca6f8ca0, 0x1a87562e, 0xdf1769db, - 0xd542a8f6, 0x287effc3, 0xac6732c6, 0x8c4f5573, - 0x695b27b0, 0xbbca58c8, 0xe1ffa35d, 0xb8f011a0, - 0x10fa3d98, 0xfd2183b8, 0x4afcb56c, 0x2dd1d35b, - 0x9a53e479, 0xb6f84565, 0xd28e49bc, 0x4bfb9790, - 0xe1ddf2da, 0xa4cb7e33, 0x62fb1341, 0xcee4c6e8, - 0xef20cada, 0x36774c01, 0xd07e9efe, 0x2bf11fb4, - 0x95dbda4d, 0xae909198, 0xeaad8e71, 0x6b93d5a0, - 0xd08ed1d0, 0xafc725e0, 0x8e3c5b2f, 0x8e7594b7, - 0x8ff6e2fb, 0xf2122b64, 0x8888b812, 0x900df01c, - 0x4fad5ea0, 0x688fc31c, 0xd1cff191, 0xb3a8c1ad, - 0x2f2f2218, 0xbe0e1777, 0xea752dfe, 0x8b021fa1, - 0xe5a0cc0f, 0xb56f74e8, 0x18acf3d6, 0xce89e299, - 0xb4a84fe0, 0xfd13e0b7, 0x7cc43b81, 0xd2ada8d9, - 0x165fa266, 0x80957705, 0x93cc7314, 0x211a1477, - 0xe6ad2065, 0x77b5fa86, 0xc75442f5, 0xfb9d35cf, - 0xebcdaf0c, 0x7b3e89a0, 0xd6411bd3, 0xae1e7e49, - 0x00250e2d, 0x2071b35e, 0x226800bb, 0x57b8e0af, - 0x2464369b, 0xf009b91e, 0x5563911d, 0x59dfa6aa, - 0x78c14389, 0xd95a537f, 0x207d5ba2, 0x02e5b9c5, - 0x83260376, 0x6295cfa9, 0x11c81968, 0x4e734a41, - 0xb3472dca, 0x7b14a94a, 0x1b510052, 0x9a532915, - 0xd60f573f, 0xbc9bc6e4, 0x2b60a476, 0x81e67400, - 0x08ba6fb5, 0x571be91f, 0xf296ec6b, 0x2a0dd915, - 0xb6636521, 0xe7b9f9b6, 0xff34052e, 0xc5855664, - 0x53b02d5d, 0xa99f8fa1, 0x08ba4799, 0x6e85076a - ], - [ - 0x4b7a70e9, 0xb5b32944, 0xdb75092e, 0xc4192623, - 0xad6ea6b0, 0x49a7df7d, 0x9cee60b8, 0x8fedb266, - 0xecaa8c71, 0x699a17ff, 0x5664526c, 0xc2b19ee1, - 0x193602a5, 0x75094c29, 0xa0591340, 0xe4183a3e, - 0x3f54989a, 0x5b429d65, 0x6b8fe4d6, 0x99f73fd6, - 0xa1d29c07, 0xefe830f5, 0x4d2d38e6, 0xf0255dc1, - 0x4cdd2086, 0x8470eb26, 0x6382e9c6, 0x021ecc5e, - 0x09686b3f, 0x3ebaefc9, 0x3c971814, 0x6b6a70a1, - 0x687f3584, 0x52a0e286, 0xb79c5305, 0xaa500737, - 0x3e07841c, 0x7fdeae5c, 0x8e7d44ec, 0x5716f2b8, - 0xb03ada37, 0xf0500c0d, 0xf01c1f04, 0x0200b3ff, - 0xae0cf51a, 0x3cb574b2, 0x25837a58, 0xdc0921bd, - 0xd19113f9, 0x7ca92ff6, 0x94324773, 0x22f54701, - 0x3ae5e581, 0x37c2dadc, 0xc8b57634, 0x9af3dda7, - 0xa9446146, 0x0fd0030e, 0xecc8c73e, 0xa4751e41, - 0xe238cd99, 0x3bea0e2f, 0x3280bba1, 0x183eb331, - 0x4e548b38, 0x4f6db908, 0x6f420d03, 0xf60a04bf, - 0x2cb81290, 0x24977c79, 0x5679b072, 0xbcaf89af, - 0xde9a771f, 0xd9930810, 0xb38bae12, 0xdccf3f2e, - 0x5512721f, 0x2e6b7124, 0x501adde6, 0x9f84cd87, - 0x7a584718, 0x7408da17, 0xbc9f9abc, 0xe94b7d8c, - 0xec7aec3a, 0xdb851dfa, 0x63094366, 0xc464c3d2, - 0xef1c1847, 0x3215d908, 0xdd433b37, 0x24c2ba16, - 0x12a14d43, 0x2a65c451, 0x50940002, 0x133ae4dd, - 0x71dff89e, 0x10314e55, 0x81ac77d6, 0x5f11199b, - 0x043556f1, 0xd7a3c76b, 0x3c11183b, 0x5924a509, - 0xf28fe6ed, 0x97f1fbfa, 0x9ebabf2c, 0x1e153c6e, - 0x86e34570, 0xeae96fb1, 0x860e5e0a, 0x5a3e2ab3, - 0x771fe71c, 0x4e3d06fa, 0x2965dcb9, 0x99e71d0f, - 0x803e89d6, 0x5266c825, 0x2e4cc978, 0x9c10b36a, - 0xc6150eba, 0x94e2ea78, 0xa5fc3c53, 0x1e0a2df4, - 0xf2f74ea7, 0x361d2b3d, 0x1939260f, 0x19c27960, - 0x5223a708, 0xf71312b6, 0xebadfe6e, 0xeac31f66, - 0xe3bc4595, 0xa67bc883, 0xb17f37d1, 0x018cff28, - 0xc332ddef, 0xbe6c5aa5, 0x65582185, 0x68ab9802, - 0xeecea50f, 0xdb2f953b, 0x2aef7dad, 0x5b6e2f84, - 0x1521b628, 0x29076170, 0xecdd4775, 0x619f1510, - 0x13cca830, 0xeb61bd96, 0x0334fe1e, 0xaa0363cf, - 0xb5735c90, 0x4c70a239, 0xd59e9e0b, 0xcbaade14, - 0xeecc86bc, 0x60622ca7, 0x9cab5cab, 0xb2f3846e, - 0x648b1eaf, 0x19bdf0ca, 0xa02369b9, 0x655abb50, - 0x40685a32, 0x3c2ab4b3, 0x319ee9d5, 0xc021b8f7, - 0x9b540b19, 0x875fa099, 0x95f7997e, 0x623d7da8, - 0xf837889a, 0x97e32d77, 0x11ed935f, 0x16681281, - 0x0e358829, 0xc7e61fd6, 0x96dedfa1, 0x7858ba99, - 0x57f584a5, 0x1b227263, 0x9b83c3ff, 0x1ac24696, - 0xcdb30aeb, 0x532e3054, 0x8fd948e4, 0x6dbc3128, - 0x58ebf2ef, 0x34c6ffea, 0xfe28ed61, 0xee7c3c73, - 0x5d4a14d9, 0xe864b7e3, 0x42105d14, 0x203e13e0, - 0x45eee2b6, 0xa3aaabea, 0xdb6c4f15, 0xfacb4fd0, - 0xc742f442, 0xef6abbb5, 0x654f3b1d, 0x41cd2105, - 0xd81e799e, 0x86854dc7, 0xe44b476a, 0x3d816250, - 0xcf62a1f2, 0x5b8d2646, 0xfc8883a0, 0xc1c7b6a3, - 0x7f1524c3, 0x69cb7492, 0x47848a0b, 0x5692b285, - 0x095bbf00, 0xad19489d, 0x1462b174, 0x23820e00, - 0x58428d2a, 0x0c55f5ea, 0x1dadf43e, 0x233f7061, - 0x3372f092, 0x8d937e41, 0xd65fecf1, 0x6c223bdb, - 0x7cde3759, 0xcbee7460, 0x4085f2a7, 0xce77326e, - 0xa6078084, 0x19f8509e, 0xe8efd855, 0x61d99735, - 0xa969a7aa, 0xc50c06c2, 0x5a04abfc, 0x800bcadc, - 0x9e447a2e, 0xc3453484, 0xfdd56705, 0x0e1e9ec9, - 0xdb73dbd3, 0x105588cd, 0x675fda79, 0xe3674340, - 0xc5c43465, 0x713e38d8, 0x3d28f89e, 0xf16dff20, - 0x153e21e7, 0x8fb03d4a, 0xe6e39f2b, 0xdb83adf7 - ], - [ - 0xe93d5a68, 0x948140f7, 0xf64c261c, 0x94692934, - 0x411520f7, 0x7602d4f7, 0xbcf46b2e, 0xd4a20068, - 0xd4082471, 0x3320f46a, 0x43b7d4b7, 0x500061af, - 0x1e39f62e, 0x97244546, 0x14214f74, 0xbf8b8840, - 0x4d95fc1d, 0x96b591af, 0x70f4ddd3, 0x66a02f45, - 0xbfbc09ec, 0x03bd9785, 0x7fac6dd0, 0x31cb8504, - 0x96eb27b3, 0x55fd3941, 0xda2547e6, 0xabca0a9a, - 0x28507825, 0x530429f4, 0x0a2c86da, 0xe9b66dfb, - 0x68dc1462, 0xd7486900, 0x680ec0a4, 0x27a18dee, - 0x4f3ffea2, 0xe887ad8c, 0xb58ce006, 0x7af4d6b6, - 0xaace1e7c, 0xd3375fec, 0xce78a399, 0x406b2a42, - 0x20fe9e35, 0xd9f385b9, 0xee39d7ab, 0x3b124e8b, - 0x1dc9faf7, 0x4b6d1856, 0x26a36631, 0xeae397b2, - 0x3a6efa74, 0xdd5b4332, 0x6841e7f7, 0xca7820fb, - 0xfb0af54e, 0xd8feb397, 0x454056ac, 0xba489527, - 0x55533a3a, 0x20838d87, 0xfe6ba9b7, 0xd096954b, - 0x55a867bc, 0xa1159a58, 0xcca92963, 0x99e1db33, - 0xa62a4a56, 0x3f3125f9, 0x5ef47e1c, 0x9029317c, - 0xfdf8e802, 0x04272f70, 0x80bb155c, 0x05282ce3, - 0x95c11548, 0xe4c66d22, 0x48c1133f, 0xc70f86dc, - 0x07f9c9ee, 0x41041f0f, 0x404779a4, 0x5d886e17, - 0x325f51eb, 0xd59bc0d1, 0xf2bcc18f, 0x41113564, - 0x257b7834, 0x602a9c60, 0xdff8e8a3, 0x1f636c1b, - 0x0e12b4c2, 0x02e1329e, 0xaf664fd1, 0xcad18115, - 0x6b2395e0, 0x333e92e1, 0x3b240b62, 0xeebeb922, - 0x85b2a20e, 0xe6ba0d99, 0xde720c8c, 0x2da2f728, - 0xd0127845, 0x95b794fd, 0x647d0862, 0xe7ccf5f0, - 0x5449a36f, 0x877d48fa, 0xc39dfd27, 0xf33e8d1e, - 0x0a476341, 0x992eff74, 0x3a6f6eab, 0xf4f8fd37, - 0xa812dc60, 0xa1ebddf8, 0x991be14c, 0xdb6e6b0d, - 0xc67b5510, 0x6d672c37, 0x2765d43b, 0xdcd0e804, - 0xf1290dc7, 0xcc00ffa3, 0xb5390f92, 0x690fed0b, - 0x667b9ffb, 0xcedb7d9c, 0xa091cf0b, 0xd9155ea3, - 0xbb132f88, 0x515bad24, 0x7b9479bf, 0x763bd6eb, - 0x37392eb3, 0xcc115979, 0x8026e297, 0xf42e312d, - 0x6842ada7, 0xc66a2b3b, 0x12754ccc, 0x782ef11c, - 0x6a124237, 0xb79251e7, 0x06a1bbe6, 0x4bfb6350, - 0x1a6b1018, 0x11caedfa, 0x3d25bdd8, 0xe2e1c3c9, - 0x44421659, 0x0a121386, 0xd90cec6e, 0xd5abea2a, - 0x64af674e, 0xda86a85f, 0xbebfe988, 0x64e4c3fe, - 0x9dbc8057, 0xf0f7c086, 0x60787bf8, 0x6003604d, - 0xd1fd8346, 0xf6381fb0, 0x7745ae04, 0xd736fccc, - 0x83426b33, 0xf01eab71, 0xb0804187, 0x3c005e5f, - 0x77a057be, 0xbde8ae24, 0x55464299, 0xbf582e61, - 0x4e58f48f, 0xf2ddfda2, 0xf474ef38, 0x8789bdc2, - 0x5366f9c3, 0xc8b38e74, 0xb475f255, 0x46fcd9b9, - 0x7aeb2661, 0x8b1ddf84, 0x846a0e79, 0x915f95e2, - 0x466e598e, 0x20b45770, 0x8cd55591, 0xc902de4c, - 0xb90bace1, 0xbb8205d0, 0x11a86248, 0x7574a99e, - 0xb77f19b6, 0xe0a9dc09, 0x662d09a1, 0xc4324633, - 0xe85a1f02, 0x09f0be8c, 0x4a99a025, 0x1d6efe10, - 0x1ab93d1d, 0x0ba5a4df, 0xa186f20f, 0x2868f169, - 0xdcb7da83, 0x573906fe, 0xa1e2ce9b, 0x4fcd7f52, - 0x50115e01, 0xa70683fa, 0xa002b5c4, 0x0de6d027, - 0x9af88c27, 0x773f8641, 0xc3604c06, 0x61a806b5, - 0xf0177a28, 0xc0f586e0, 0x006058aa, 0x30dc7d62, - 0x11e69ed7, 0x2338ea63, 0x53c2dd94, 0xc2c21634, - 0xbbcbee56, 0x90bcb6de, 0xebfc7da1, 0xce591d76, - 0x6f05e409, 0x4b7c0188, 0x39720a3d, 0x7c927c24, - 0x86e3725f, 0x724d9db9, 0x1ac15bb4, 0xd39eb8fc, - 0xed545578, 0x08fca5b5, 0xd83d7cd3, 0x4dad0fc4, - 0x1e50ef5e, 0xb161e6f8, 0xa28514d9, 0x6c51133c, - 0x6fd5c7e7, 0x56e14ec4, 0x362abfce, 0xddc6c837, - 0xd79a3234, 0x92638212, 0x670efa8e, 0x406000e0 - ], - [ - 0x3a39ce37, 0xd3faf5cf, 0xabc27737, 0x5ac52d1b, - 0x5cb0679e, 0x4fa33742, 0xd3822740, 0x99bc9bbe, - 0xd5118e9d, 0xbf0f7315, 0xd62d1c7e, 0xc700c47b, - 0xb78c1b6b, 0x21a19045, 0xb26eb1be, 0x6a366eb4, - 0x5748ab2f, 0xbc946e79, 0xc6a376d2, 0x6549c2c8, - 0x530ff8ee, 0x468dde7d, 0xd5730a1d, 0x4cd04dc6, - 0x2939bbdb, 0xa9ba4650, 0xac9526e8, 0xbe5ee304, - 0xa1fad5f0, 0x6a2d519a, 0x63ef8ce2, 0x9a86ee22, - 0xc089c2b8, 0x43242ef6, 0xa51e03aa, 0x9cf2d0a4, - 0x83c061ba, 0x9be96a4d, 0x8fe51550, 0xba645bd6, - 0x2826a2f9, 0xa73a3ae1, 0x4ba99586, 0xef5562e9, - 0xc72fefd3, 0xf752f7da, 0x3f046f69, 0x77fa0a59, - 0x80e4a915, 0x87b08601, 0x9b09e6ad, 0x3b3ee593, - 0xe990fd5a, 0x9e34d797, 0x2cf0b7d9, 0x022b8b51, - 0x96d5ac3a, 0x017da67d, 0xd1cf3ed6, 0x7c7d2d28, - 0x1f9f25cf, 0xadf2b89b, 0x5ad6b472, 0x5a88f54c, - 0xe029ac71, 0xe019a5e6, 0x47b0acfd, 0xed93fa9b, - 0xe8d3c48d, 0x283b57cc, 0xf8d56629, 0x79132e28, - 0x785f0191, 0xed756055, 0xf7960e44, 0xe3d35e8c, - 0x15056dd4, 0x88f46dba, 0x03a16125, 0x0564f0bd, - 0xc3eb9e15, 0x3c9057a2, 0x97271aec, 0xa93a072a, - 0x1b3f6d9b, 0x1e6321f5, 0xf59c66fb, 0x26dcf319, - 0x7533d928, 0xb155fdf5, 0x03563482, 0x8aba3cbb, - 0x28517711, 0xc20ad9f8, 0xabcc5167, 0xccad925f, - 0x4de81751, 0x3830dc8e, 0x379d5862, 0x9320f991, - 0xea7a90c2, 0xfb3e7bce, 0x5121ce64, 0x774fbe32, - 0xa8b6e37e, 0xc3293d46, 0x48de5369, 0x6413e680, - 0xa2ae0810, 0xdd6db224, 0x69852dfd, 0x09072166, - 0xb39a460a, 0x6445c0dd, 0x586cdecf, 0x1c20c8ae, - 0x5bbef7dd, 0x1b588d40, 0xccd2017f, 0x6bb4e3bb, - 0xdda26a7e, 0x3a59ff45, 0x3e350a44, 0xbcb4cdd5, - 0x72eacea8, 0xfa6484bb, 0x8d6612ae, 0xbf3c6f47, - 0xd29be463, 0x542f5d9e, 0xaec2771b, 0xf64e6370, - 0x740e0d8d, 0xe75b1357, 0xf8721671, 0xaf537d5d, - 0x4040cb08, 0x4eb4e2cc, 0x34d2466a, 0x0115af84, - 0xe1b00428, 0x95983a1d, 0x06b89fb4, 0xce6ea048, - 0x6f3f3b82, 0x3520ab82, 0x011a1d4b, 0x277227f8, - 0x611560b1, 0xe7933fdc, 0xbb3a792b, 0x344525bd, - 0xa08839e1, 0x51ce794b, 0x2f32c9b7, 0xa01fbac9, - 0xe01cc87e, 0xbcc7d1f6, 0xcf0111c3, 0xa1e8aac7, - 0x1a908749, 0xd44fbd9a, 0xd0dadecb, 0xd50ada38, - 0x0339c32a, 0xc6913667, 0x8df9317c, 0xe0b12b4f, - 0xf79e59b7, 0x43f5bb3a, 0xf2d519ff, 0x27d9459c, - 0xbf97222c, 0x15e6fc2a, 0x0f91fc71, 0x9b941525, - 0xfae59361, 0xceb69ceb, 0xc2a86459, 0x12baa8d1, - 0xb6c1075e, 0xe3056a0c, 0x10d25065, 0xcb03a442, - 0xe0ec6e0e, 0x1698db3b, 0x4c98a0be, 0x3278e964, - 0x9f1f9532, 0xe0d392df, 0xd3a0342b, 0x8971f21e, - 0x1b0a7441, 0x4ba3348c, 0xc5be7120, 0xc37632d8, - 0xdf359f8d, 0x9b992f2e, 0xe60b6f47, 0x0fe3f11d, - 0xe54cda54, 0x1edad891, 0xce6279cf, 0xcd3e7e6f, - 0x1618b166, 0xfd2c1d05, 0x848fd2c5, 0xf6fb2299, - 0xf523f357, 0xa6327623, 0x93a83531, 0x56cccd02, - 0xacf08162, 0x5a75ebb5, 0x6e163697, 0x88d273cc, - 0xde966292, 0x81b949d0, 0x4c50901b, 0x71c65614, - 0xe6c6c7bd, 0x327a140a, 0x45e1d006, 0xc3f27b9a, - 0xc9aa53fd, 0x62a80f00, 0xbb25bfe2, 0x35bdd2f6, - 0x71126905, 0xb2040222, 0xb6cbcf7c, 0xcd769c2b, - 0x53113ec0, 0x1640e3d3, 0x38abbd60, 0x2547adf0, - 0xba38209c, 0xf746ce76, 0x77afa1c5, 0x20756060, - 0x85cbfe4e, 0x8ae88dd8, 0x7aaaf9b0, 0x4cf9aa7e, - 0x1948c25c, 0x02fb8a8c, 0x01c36ae4, 0xd6ebe1f9, - 0x90d4f869, 0xa65cdea0, 0x3f09252d, 0xc208e69f, - 0xb74e6132, 0xce77e25b, 0x578fdfe3, 0x3ac372e6 - ] - ] - - public init(key: Array, blockMode: BlockMode = CBC(iv: Array(repeating: 0, count: Blowfish.blockSize)), padding: Padding) throws { - precondition(key.count >= 5 && key.count <= 56) - - self.blockMode = blockMode - self.padding = padding - self.keySize = key.count - - self.S = self.origS - self.P = self.origP - - self.expandKey(key: key) - try self.setupBlockModeWorkers() - } - - private func setupBlockModeWorkers() throws { - self.encryptWorker = try self.blockMode.worker(blockSize: Blowfish.blockSize, cipherOperation: self.encrypt, encryptionOperation: self.encrypt) - - if self.blockMode.options.contains(.useEncryptToDecrypt) { - self.decryptWorker = try self.blockMode.worker(blockSize: Blowfish.blockSize, cipherOperation: self.encrypt, encryptionOperation: self.encrypt) - } else { - self.decryptWorker = try self.blockMode.worker(blockSize: Blowfish.blockSize, cipherOperation: self.decrypt, encryptionOperation: self.encrypt) - } - } - - private func reset() { - self.S = self.origS - self.P = self.origP - // todo expand key - } - - private func expandKey(key: Array) { - var j = 0 - for i in 0..<(self.N + 2) { - var data: UInt32 = 0x0 - for _ in 0..<4 { - data = (data << 8) | UInt32(key[j]) - j += 1 - if j >= key.count { - j = 0 - } - } - self.P[i] ^= data - } - - var datal: UInt32 = 0 - var datar: UInt32 = 0 - - for i in stride(from: 0, to: self.N + 2, by: 2) { - self.encryptBlowfishBlock(l: &datal, r: &datar) - self.P[i] = datal - self.P[i + 1] = datar - } - - for i in 0..<4 { - for j in stride(from: 0, to: 256, by: 2) { - self.encryptBlowfishBlock(l: &datal, r: &datar) - self.S[i][j] = datal - self.S[i][j + 1] = datar - } - } - } - - fileprivate func encrypt(block: ArraySlice) -> Array? { - var result = Array() - - var l = UInt32(bytes: block[block.startIndex..> 24) & 0xff), - UInt8((l >> 16) & 0xff) - ] - result += [ - UInt8((l >> 8) & 0xff), - UInt8((l >> 0) & 0xff) - ] - result += [ - UInt8((r >> 24) & 0xff), - UInt8((r >> 16) & 0xff) - ] - result += [ - UInt8((r >> 8) & 0xff), - UInt8((r >> 0) & 0xff) - ] - - return result - } - - fileprivate func decrypt(block: ArraySlice) -> Array? { - var result = Array() - - var l = UInt32(bytes: block[block.startIndex..> 24) & 0xff), - UInt8((l >> 16) & 0xff) - ] - result += [ - UInt8((l >> 8) & 0xff), - UInt8((l >> 0) & 0xff) - ] - result += [ - UInt8((r >> 24) & 0xff), - UInt8((r >> 16) & 0xff) - ] - result += [ - UInt8((r >> 8) & 0xff), - UInt8((r >> 0) & 0xff) - ] - return result - } - - /// Encrypts the 8-byte padded buffer - /// - /// - Parameters: - /// - l: left half - /// - r: right half - private func encryptBlowfishBlock(l: inout UInt32, r: inout UInt32) { - var Xl = l - var Xr = r - - for i in 0.. UInt32 { - let f1 = self.S[0][Int(x >> 24) & 0xff] - let f2 = self.S[1][Int(x >> 16) & 0xff] - let f3 = self.S[2][Int(x >> 8) & 0xff] - let f4 = self.S[3][Int(x & 0xff)] - return ((f1 &+ f2) ^ f3) &+ f4 - } -} - -extension Blowfish: Cipher { - /// Encrypt the 8-byte padded buffer, block by block. Note that for amounts of data larger than a block, it is not safe to just call encrypt() on successive blocks. - /// - /// - Parameter bytes: Plaintext data - /// - Returns: Encrypted data - public func encrypt(_ bytes: C) throws -> Array where C.Element == UInt8, C.Index == Int { - let bytes = self.padding.add(to: Array(bytes), blockSize: Blowfish.blockSize) // FIXME: Array(bytes) copies - - var out = Array() - out.reserveCapacity(bytes.count) - - for chunk in bytes.batched(by: Blowfish.blockSize) { - out += self.encryptWorker.encrypt(block: chunk) - } - - if self.blockMode.options.contains(.paddingRequired) && (out.count % Blowfish.blockSize != 0) { - throw Error.dataPaddingRequired - } - - return out - } - - /// Decrypt the 8-byte padded buffer - /// - /// - Parameter bytes: Ciphertext data - /// - Returns: Plaintext data - public func decrypt(_ bytes: C) throws -> Array where C.Element == UInt8, C.Index == Int { - if self.blockMode.options.contains(.paddingRequired) && (bytes.count % Blowfish.blockSize != 0) { - throw Error.dataPaddingRequired - } - - var out = Array() - out.reserveCapacity(bytes.count) - - for chunk in Array(bytes).batched(by: Blowfish.blockSize) { - out += self.decryptWorker.decrypt(block: chunk) // FIXME: copying here is innefective - } - - out = self.padding.remove(from: out, blockSize: Blowfish.blockSize) - - return out - } -} diff --git a/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/CBCMAC.swift b/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/CBCMAC.swift deleted file mode 100644 index 0cd6029e..00000000 --- a/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/CBCMAC.swift +++ /dev/null @@ -1,30 +0,0 @@ -// -// CryptoSwift -// -// Copyright (C) 2014-2017 Marcin Krzyżanowski -// This software is provided 'as-is', without any express or implied warranty. -// -// In no event will the authors be held liable for any damages arising from the use of this software. -// -// Permission is granted to anyone to use this software for any purpose,including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: -// -// - The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation is required. -// - Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -// - This notice may not be removed or altered from any source or binary distribution. -// - -public final class CBCMAC: CMAC { - public override func authenticate(_ bytes: Array) throws -> Array { - var inBytes = bytes - bitPadding(to: &inBytes, blockSize: CMAC.BlockSize) - let blocks = inBytes.batched(by: CMAC.BlockSize) - - var lastBlockEncryptionResult: [UInt8] = CBCMAC.Zero - try blocks.forEach { block in - let aes = try AES(key: Array(key), blockMode: CBC(iv: lastBlockEncryptionResult), padding: .noPadding) - lastBlockEncryptionResult = try aes.encrypt(block) - } - - return lastBlockEncryptionResult - } -} diff --git a/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/CMAC.swift b/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/CMAC.swift deleted file mode 100644 index c4e366d6..00000000 --- a/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/CMAC.swift +++ /dev/null @@ -1,106 +0,0 @@ -// -// CryptoSwift -// -// Copyright (C) 2014-2017 Marcin Krzyżanowski -// This software is provided 'as-is', without any express or implied warranty. -// -// In no event will the authors be held liable for any damages arising from the use of this software. -// -// Permission is granted to anyone to use this software for any purpose,including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: -// -// - The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation is required. -// - Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -// - This notice may not be removed or altered from any source or binary distribution. -// - -public class CMAC: Authenticator { - public enum Error: Swift.Error { - case wrongKeyLength - } - - internal let key: SecureBytes - - internal static let BlockSize: Int = 16 - internal static let Zero: Array = [0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00] - private static let Rb: Array = [0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x87] - - public init(key: Array) throws { - self.key = SecureBytes(bytes: key) - } - - // MARK: Authenticator - - // AES-CMAC - public func authenticate(_ bytes: Array) throws -> Array { - let cipher = try AES(key: Array(key), blockMode: CBC(iv: CMAC.Zero), padding: .noPadding) - return try self.authenticate(bytes, cipher: cipher) - } - - // CMAC using a Cipher - public func authenticate(_ bytes: Array, cipher: Cipher) throws -> Array { - let l = try cipher.encrypt(CMAC.Zero) - var subKey1 = self.leftShiftOneBit(l) - if (l[0] & 0x80) != 0 { - subKey1 = xor(CMAC.Rb, subKey1) - } - var subKey2 = self.leftShiftOneBit(subKey1) - if (subKey1[0] & 0x80) != 0 { - subKey2 = xor(CMAC.Rb, subKey2) - } - - let lastBlockComplete: Bool - let blockCount = (bytes.count + CMAC.BlockSize - 1) / CMAC.BlockSize - if blockCount == 0 { - lastBlockComplete = false - } else { - lastBlockComplete = bytes.count % CMAC.BlockSize == 0 - } - var paddedBytes = bytes - if !lastBlockComplete { - bitPadding(to: &paddedBytes, blockSize: CMAC.BlockSize) - } - - var blocks = Array(paddedBytes.batched(by: CMAC.BlockSize)) - var lastBlock = blocks.popLast()! - if lastBlockComplete { - lastBlock = xor(lastBlock, subKey1) - } else { - lastBlock = xor(lastBlock, subKey2) - } - - var x = Array(repeating: 0x00, count: CMAC.BlockSize) - var y = Array(repeating: 0x00, count: CMAC.BlockSize) - for block in blocks { - y = xor(block, x) - x = try cipher.encrypt(y) - } - // the difference between CMAC and CBC-MAC is that CMAC xors the final block with a secret value - y = self.process(lastBlock: lastBlock, with: x) - return try cipher.encrypt(y) - } - - func process(lastBlock: ArraySlice, with x: [UInt8]) -> [UInt8] { - xor(lastBlock, x) - } - - // MARK: Helper methods - - /** - Performs left shift by one bit to the bit string aquired after concatenating al bytes in the byte array - - parameters: - - bytes: byte array - - returns: bit shifted bit string split again in array of bytes - */ - private func leftShiftOneBit(_ bytes: Array) -> Array { - var shifted = Array(repeating: 0x00, count: bytes.count) - let last = bytes.count - 1 - for index in 0.. -// This software is provided 'as-is', without any express or implied warranty. -// -// In no event will the authors be held liable for any damages arising from the use of this software. -// -// Permission is granted to anyone to use this software for any purpose,including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: -// -// - The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation is required. -// - Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -// - This notice may not be removed or altered from any source or binary distribution. -// - -// https://tools.ietf.org/html/rfc7539 -// - -public final class ChaCha20: BlockCipher { - public enum Error: Swift.Error { - case invalidKeyOrInitializationVector - case notSupported - } - - public static let blockSize = 64 // 512 / 8 - public let keySize: Int - - fileprivate let key: Key - fileprivate var counter: Array - - public init(key: Array, iv nonce: Array) throws { - precondition(nonce.count == 12 || nonce.count == 8) - - if key.count != 32 { - throw Error.invalidKeyOrInitializationVector - } - - self.key = Key(bytes: key) - self.keySize = self.key.count - - if nonce.count == 8 { - self.counter = [0, 0, 0, 0, 0, 0, 0, 0] + nonce - } else { - self.counter = [0, 0, 0, 0] + nonce - } - - assert(self.counter.count == 16) - } - - /// https://tools.ietf.org/html/rfc7539#section-2.3. - fileprivate func core(block: inout Array, counter: Array, key: Array) { - precondition(block.count == ChaCha20.blockSize) - precondition(counter.count == 16) - precondition(key.count == 32) - - let j0: UInt32 = 0x61707865 - let j1: UInt32 = 0x3320646e // 0x3620646e sigma/tau - let j2: UInt32 = 0x79622d32 - let j3: UInt32 = 0x6b206574 - let j4: UInt32 = UInt32(bytes: key[0..<4]).bigEndian - let j5: UInt32 = UInt32(bytes: key[4..<8]).bigEndian - let j6: UInt32 = UInt32(bytes: key[8..<12]).bigEndian - let j7: UInt32 = UInt32(bytes: key[12..<16]).bigEndian - let j8: UInt32 = UInt32(bytes: key[16..<20]).bigEndian - let j9: UInt32 = UInt32(bytes: key[20..<24]).bigEndian - let j10: UInt32 = UInt32(bytes: key[24..<28]).bigEndian - let j11: UInt32 = UInt32(bytes: key[28..<32]).bigEndian - let j12: UInt32 = UInt32(bytes: counter[0..<4]).bigEndian - let j13: UInt32 = UInt32(bytes: counter[4..<8]).bigEndian - let j14: UInt32 = UInt32(bytes: counter[8..<12]).bigEndian - let j15: UInt32 = UInt32(bytes: counter[12..<16]).bigEndian - - var (x0, x1, x2, x3, x4, x5, x6, x7) = (j0, j1, j2, j3, j4, j5, j6, j7) - var (x8, x9, x10, x11, x12, x13, x14, x15) = (j8, j9, j10, j11, j12, j13, j14, j15) - - for _ in 0..<10 { // 20 rounds - x0 = x0 &+ x4 - x12 ^= x0 - x12 = (x12 << 16) | (x12 >> 16) - x8 = x8 &+ x12 - x4 ^= x8 - x4 = (x4 << 12) | (x4 >> 20) - x0 = x0 &+ x4 - x12 ^= x0 - x12 = (x12 << 8) | (x12 >> 24) - x8 = x8 &+ x12 - x4 ^= x8 - x4 = (x4 << 7) | (x4 >> 25) - x1 = x1 &+ x5 - x13 ^= x1 - x13 = (x13 << 16) | (x13 >> 16) - x9 = x9 &+ x13 - x5 ^= x9 - x5 = (x5 << 12) | (x5 >> 20) - x1 = x1 &+ x5 - x13 ^= x1 - x13 = (x13 << 8) | (x13 >> 24) - x9 = x9 &+ x13 - x5 ^= x9 - x5 = (x5 << 7) | (x5 >> 25) - x2 = x2 &+ x6 - x14 ^= x2 - x14 = (x14 << 16) | (x14 >> 16) - x10 = x10 &+ x14 - x6 ^= x10 - x6 = (x6 << 12) | (x6 >> 20) - x2 = x2 &+ x6 - x14 ^= x2 - x14 = (x14 << 8) | (x14 >> 24) - x10 = x10 &+ x14 - x6 ^= x10 - x6 = (x6 << 7) | (x6 >> 25) - x3 = x3 &+ x7 - x15 ^= x3 - x15 = (x15 << 16) | (x15 >> 16) - x11 = x11 &+ x15 - x7 ^= x11 - x7 = (x7 << 12) | (x7 >> 20) - x3 = x3 &+ x7 - x15 ^= x3 - x15 = (x15 << 8) | (x15 >> 24) - x11 = x11 &+ x15 - x7 ^= x11 - x7 = (x7 << 7) | (x7 >> 25) - x0 = x0 &+ x5 - x15 ^= x0 - x15 = (x15 << 16) | (x15 >> 16) - x10 = x10 &+ x15 - x5 ^= x10 - x5 = (x5 << 12) | (x5 >> 20) - x0 = x0 &+ x5 - x15 ^= x0 - x15 = (x15 << 8) | (x15 >> 24) - x10 = x10 &+ x15 - x5 ^= x10 - x5 = (x5 << 7) | (x5 >> 25) - x1 = x1 &+ x6 - x12 ^= x1 - x12 = (x12 << 16) | (x12 >> 16) - x11 = x11 &+ x12 - x6 ^= x11 - x6 = (x6 << 12) | (x6 >> 20) - x1 = x1 &+ x6 - x12 ^= x1 - x12 = (x12 << 8) | (x12 >> 24) - x11 = x11 &+ x12 - x6 ^= x11 - x6 = (x6 << 7) | (x6 >> 25) - x2 = x2 &+ x7 - x13 ^= x2 - x13 = (x13 << 16) | (x13 >> 16) - x8 = x8 &+ x13 - x7 ^= x8 - x7 = (x7 << 12) | (x7 >> 20) - x2 = x2 &+ x7 - x13 ^= x2 - x13 = (x13 << 8) | (x13 >> 24) - x8 = x8 &+ x13 - x7 ^= x8 - x7 = (x7 << 7) | (x7 >> 25) - x3 = x3 &+ x4 - x14 ^= x3 - x14 = (x14 << 16) | (x14 >> 16) - x9 = x9 &+ x14 - x4 ^= x9 - x4 = (x4 << 12) | (x4 >> 20) - x3 = x3 &+ x4 - x14 ^= x3 - x14 = (x14 << 8) | (x14 >> 24) - x9 = x9 &+ x14 - x4 ^= x9 - x4 = (x4 << 7) | (x4 >> 25) - } - - x0 = x0 &+ j0 - x1 = x1 &+ j1 - x2 = x2 &+ j2 - x3 = x3 &+ j3 - x4 = x4 &+ j4 - x5 = x5 &+ j5 - x6 = x6 &+ j6 - x7 = x7 &+ j7 - x8 = x8 &+ j8 - x9 = x9 &+ j9 - x10 = x10 &+ j10 - x11 = x11 &+ j11 - x12 = x12 &+ j12 - x13 = x13 &+ j13 - x14 = x14 &+ j14 - x15 = x15 &+ j15 - - block.replaceSubrange(0..<4, with: x0.bigEndian.bytes()) - block.replaceSubrange(4..<8, with: x1.bigEndian.bytes()) - block.replaceSubrange(8..<12, with: x2.bigEndian.bytes()) - block.replaceSubrange(12..<16, with: x3.bigEndian.bytes()) - block.replaceSubrange(16..<20, with: x4.bigEndian.bytes()) - block.replaceSubrange(20..<24, with: x5.bigEndian.bytes()) - block.replaceSubrange(24..<28, with: x6.bigEndian.bytes()) - block.replaceSubrange(28..<32, with: x7.bigEndian.bytes()) - block.replaceSubrange(32..<36, with: x8.bigEndian.bytes()) - block.replaceSubrange(36..<40, with: x9.bigEndian.bytes()) - block.replaceSubrange(40..<44, with: x10.bigEndian.bytes()) - block.replaceSubrange(44..<48, with: x11.bigEndian.bytes()) - block.replaceSubrange(48..<52, with: x12.bigEndian.bytes()) - block.replaceSubrange(52..<56, with: x13.bigEndian.bytes()) - block.replaceSubrange(56..<60, with: x14.bigEndian.bytes()) - block.replaceSubrange(60..<64, with: x15.bigEndian.bytes()) - } - - // XORKeyStream - func process(bytes: ArraySlice, counter: inout Array, key: Array) -> Array { - precondition(counter.count == 16) - precondition(key.count == 32) - - var block = Array(repeating: 0, count: ChaCha20.blockSize) - var bytesSlice = bytes - var out = Array(reserveCapacity: bytesSlice.count) - - while bytesSlice.count >= ChaCha20.blockSize { - self.core(block: &block, counter: counter, key: key) - for (i, x) in block.enumerated() { - out.append(bytesSlice[bytesSlice.startIndex + i] ^ x) - } - var u: UInt32 = 1 - for i in 0..<4 { - u += UInt32(counter[i]) - counter[i] = UInt8(u & 0xff) - u >>= 8 - } - bytesSlice = bytesSlice[bytesSlice.startIndex + ChaCha20.blockSize..) throws -> Array { - self.process(bytes: bytes, counter: &self.counter, key: Array(self.key)) - } - - public func decrypt(_ bytes: ArraySlice) throws -> Array { - try self.encrypt(bytes) - } -} - -// MARK: Encryptor - -extension ChaCha20 { - public struct ChaChaEncryptor: Cryptor, Updatable { - private var accumulated = Array() - private let chacha: ChaCha20 - - init(chacha: ChaCha20) { - self.chacha = chacha - } - - public mutating func update(withBytes bytes: ArraySlice, isLast: Bool = false) throws -> Array { - self.accumulated += bytes - - var encrypted = Array() - encrypted.reserveCapacity(self.accumulated.count) - for chunk in self.accumulated.batched(by: ChaCha20.blockSize) { - if isLast || self.accumulated.count >= ChaCha20.blockSize { - encrypted += try self.chacha.encrypt(chunk) - self.accumulated.removeFirst(chunk.count) // TODO: improve performance - } - } - return encrypted - } - - public func seek(to: Int) throws { - throw Error.notSupported - } - } -} - -// MARK: Decryptor - -extension ChaCha20 { - public struct ChaChaDecryptor: Cryptor, Updatable { - private var accumulated = Array() - - private var offset: Int = 0 - private var offsetToRemove: Int = 0 - private let chacha: ChaCha20 - - init(chacha: ChaCha20) { - self.chacha = chacha - } - - public mutating func update(withBytes bytes: ArraySlice, isLast: Bool = true) throws -> Array { - // prepend "offset" number of bytes at the beginning - if self.offset > 0 { - self.accumulated += Array(repeating: 0, count: self.offset) + bytes - self.offsetToRemove = self.offset - self.offset = 0 - } else { - self.accumulated += bytes - } - - var plaintext = Array() - plaintext.reserveCapacity(self.accumulated.count) - for chunk in self.accumulated.batched(by: ChaCha20.blockSize) { - if isLast || self.accumulated.count >= ChaCha20.blockSize { - plaintext += try self.chacha.decrypt(chunk) - - // remove "offset" from the beginning of first chunk - if self.offsetToRemove > 0 { - plaintext.removeFirst(self.offsetToRemove) // TODO: improve performance - self.offsetToRemove = 0 - } - - self.accumulated.removeFirst(chunk.count) - } - } - - return plaintext - } - - public func seek(to: Int) throws { - throw Error.notSupported - } - } -} - -// MARK: Cryptors - -extension ChaCha20: Cryptors { - //TODO: Use BlockEncryptor/BlockDecryptor - - public func makeEncryptor() -> Cryptor & Updatable { - ChaCha20.ChaChaEncryptor(chacha: self) - } - - public func makeDecryptor() -> Cryptor & Updatable { - ChaCha20.ChaChaDecryptor(chacha: self) - } -} diff --git a/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/Checksum.swift b/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/Checksum.swift deleted file mode 100644 index ee48e93c..00000000 --- a/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/Checksum.swift +++ /dev/null @@ -1,208 +0,0 @@ -// -// CryptoSwift -// -// Copyright (C) 2014-2017 Marcin Krzyżanowski -// This software is provided 'as-is', without any express or implied warranty. -// -// In no event will the authors be held liable for any damages arising from the use of this software. -// -// Permission is granted to anyone to use this software for any purpose,including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: -// -// - The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation is required. -// - Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -// - This notice may not be removed or altered from any source or binary distribution. -// - -/// CRC - cyclic redundancy check code. -public final class Checksum { - - @usableFromInline - static let table32: Array = [ - 0x0000_0000, 0x7707_3096, 0xEE0E_612C, 0x9909_51BA, 0x076D_C419, 0x706A_F48F, 0xE963_A535, 0x9E64_95A3, - 0x0EDB_8832, 0x79DC_B8A4, 0xE0D5_E91E, 0x97D2_D988, 0x09B6_4C2B, 0x7EB1_7CBD, 0xE7B8_2D07, 0x90BF_1D91, - 0x1DB7_1064, 0x6AB0_20F2, 0xF3B9_7148, 0x84BE_41DE, 0x1ADA_D47D, 0x6DDD_E4EB, 0xF4D4_B551, 0x83D3_85C7, - 0x136C_9856, 0x646B_A8C0, 0xFD62_F97A, 0x8A65_C9EC, 0x1401_5C4F, 0x6306_6CD9, 0xFA0F_3D63, 0x8D08_0DF5, - 0x3B6E_20C8, 0x4C69_105E, 0xD560_41E4, 0xA267_7172, 0x3C03_E4D1, 0x4B04_D447, 0xD20D_85FD, 0xA50A_B56B, - 0x35B5_A8FA, 0x42B2_986C, 0xDBBB_C9D6, 0xACBC_F940, 0x32D8_6CE3, 0x45DF_5C75, 0xDCD6_0DCF, 0xABD1_3D59, - 0x26D9_30AC, 0x51DE_003A, 0xC8D7_5180, 0xBFD0_6116, 0x21B4_F4B5, 0x56B3_C423, 0xCFBA_9599, 0xB8BD_A50F, - 0x2802_B89E, 0x5F05_8808, 0xC60C_D9B2, 0xB10B_E924, 0x2F6F_7C87, 0x5868_4C11, 0xC161_1DAB, 0xB666_2D3D, - 0x76DC_4190, 0x01DB_7106, 0x98D2_20BC, 0xEFD5_102A, 0x71B1_8589, 0x06B6_B51F, 0x9FBF_E4A5, 0xE8B8_D433, - 0x7807_C9A2, 0x0F00_F934, 0x9609_A88E, 0xE10E_9818, 0x7F6A_0DBB, 0x086D_3D2D, 0x9164_6C97, 0xE663_5C01, - 0x6B6B_51F4, 0x1C6C_6162, 0x8565_30D8, 0xF262_004E, 0x6C06_95ED, 0x1B01_A57B, 0x8208_F4C1, 0xF50F_C457, - 0x65B0_D9C6, 0x12B7_E950, 0x8BBE_B8EA, 0xFCB9_887C, 0x62DD_1DDF, 0x15DA_2D49, 0x8CD3_7CF3, 0xFBD4_4C65, - 0x4DB2_6158, 0x3AB5_51CE, 0xA3BC_0074, 0xD4BB_30E2, 0x4ADF_A541, 0x3DD8_95D7, 0xA4D1_C46D, 0xD3D6_F4FB, - 0x4369_E96A, 0x346E_D9FC, 0xAD67_8846, 0xDA60_B8D0, 0x4404_2D73, 0x3303_1DE5, 0xAA0A_4C5F, 0xDD0D_7CC9, - 0x5005_713C, 0x2702_41AA, 0xBE0B_1010, 0xC90C_2086, 0x5768_B525, 0x206F_85B3, 0xB966_D409, 0xCE61_E49F, - 0x5EDE_F90E, 0x29D9_C998, 0xB0D0_9822, 0xC7D7_A8B4, 0x59B3_3D17, 0x2EB4_0D81, 0xB7BD_5C3B, 0xC0BA_6CAD, - 0xEDB8_8320, 0x9ABF_B3B6, 0x03B6_E20C, 0x74B1_D29A, 0xEAD5_4739, 0x9DD2_77AF, 0x04DB_2615, 0x73DC_1683, - 0xE363_0B12, 0x9464_3B84, 0x0D6D_6A3E, 0x7A6A_5AA8, 0xE40E_CF0B, 0x9309_FF9D, 0x0A00_AE27, 0x7D07_9EB1, - 0xF00F_9344, 0x8708_A3D2, 0x1E01_F268, 0x6906_C2FE, 0xF762_575D, 0x8065_67CB, 0x196C_3671, 0x6E6B_06E7, - 0xFED4_1B76, 0x89D3_2BE0, 0x10DA_7A5A, 0x67DD_4ACC, 0xF9B9_DF6F, 0x8EBE_EFF9, 0x17B7_BE43, 0x60B0_8ED5, - 0xD6D6_A3E8, 0xA1D1_937E, 0x38D8_C2C4, 0x4FDF_F252, 0xD1BB_67F1, 0xA6BC_5767, 0x3FB5_06DD, 0x48B2_364B, - 0xD80D_2BDA, 0xAF0A_1B4C, 0x3603_4AF6, 0x4104_7A60, 0xDF60_EFC3, 0xA867_DF55, 0x316E_8EEF, 0x4669_BE79, - 0xCB61_B38C, 0xBC66_831A, 0x256F_D2A0, 0x5268_E236, 0xCC0C_7795, 0xBB0B_4703, 0x2202_16B9, 0x5505_262F, - 0xC5BA_3BBE, 0xB2BD_0B28, 0x2BB4_5A92, 0x5CB3_6A04, 0xC2D7_FFA7, 0xB5D0_CF31, 0x2CD9_9E8B, 0x5BDE_AE1D, - 0x9B64_C2B0, 0xEC63_F226, 0x756A_A39C, 0x026D_930A, 0x9C09_06A9, 0xEB0E_363F, 0x7207_6785, 0x0500_5713, - 0x95BF_4A82, 0xE2B8_7A14, 0x7BB1_2BAE, 0x0CB6_1B38, 0x92D2_8E9B, 0xE5D5_BE0D, 0x7CDC_EFB7, 0x0BDB_DF21, - 0x86D3_D2D4, 0xF1D4_E242, 0x68DD_B3F8, 0x1FDA_836E, 0x81BE_16CD, 0xF6B9_265B, 0x6FB0_77E1, 0x18B7_4777, - 0x8808_5AE6, 0xFF0F_6A70, 0x6606_3BCA, 0x1101_0B5C, 0x8F65_9EFF, 0xF862_AE69, 0x616B_FFD3, 0x166C_CF45, - 0xA00A_E278, 0xD70D_D2EE, 0x4E04_8354, 0x3903_B3C2, 0xA767_2661, 0xD060_16F7, 0x4969_474D, 0x3E6E_77DB, - 0xAED1_6A4A, 0xD9D6_5ADC, 0x40DF_0B66, 0x37D8_3BF0, 0xA9BC_AE53, 0xDEBB_9EC5, 0x47B2_CF7F, 0x30B5_FFE9, - 0xBDBD_F21C, 0xCABA_C28A, 0x53B3_9330, 0x24B4_A3A6, 0xBAD0_3605, 0xCDD7_0693, 0x54DE_5729, 0x23D9_67BF, - 0xB366_7A2E, 0xC461_4AB8, 0x5D68_1B02, 0x2A6F_2B94, 0xB40B_BE37, 0xC30C_8EA1, 0x5A05_DF1B, 0x2D02_EF8D - ] - - @usableFromInline - static let table32c: Array = [ - 0x0000_0000, 0xF26B_8303, 0xE13B_70F7, 0x1350_F3F4, 0xC79A_971F, 0x35F1_141C, 0x26A1_E7E8, 0xD4CA_64EB, - 0x8AD9_58CF, 0x78B2_DBCC, 0x6BE2_2838, 0x9989_AB3B, 0x4D43_CFD0, 0xBF28_4CD3, 0xAC78_BF27, 0x5E13_3C24, - 0x105E_C76F, 0xE235_446C, 0xF165_B798, 0x030E_349B, 0xD7C4_5070, 0x25AF_D373, 0x36FF_2087, 0xC494_A384, - 0x9A87_9FA0, 0x68EC_1CA3, 0x7BBC_EF57, 0x89D7_6C54, 0x5D1D_08BF, 0xAF76_8BBC, 0xBC26_7848, 0x4E4D_FB4B, - 0x20BD_8EDE, 0xD2D6_0DDD, 0xC186_FE29, 0x33ED_7D2A, 0xE727_19C1, 0x154C_9AC2, 0x061C_6936, 0xF477_EA35, - 0xAA64_D611, 0x580F_5512, 0x4B5F_A6E6, 0xB934_25E5, 0x6DFE_410E, 0x9F95_C20D, 0x8CC5_31F9, 0x7EAE_B2FA, - 0x30E3_49B1, 0xC288_CAB2, 0xD1D8_3946, 0x23B3_BA45, 0xF779_DEAE, 0x0512_5DAD, 0x1642_AE59, 0xE429_2D5A, - 0xBA3A_117E, 0x4851_927D, 0x5B01_6189, 0xA96A_E28A, 0x7DA0_8661, 0x8FCB_0562, 0x9C9B_F696, 0x6EF0_7595, - 0x417B_1DBC, 0xB310_9EBF, 0xA040_6D4B, 0x522B_EE48, 0x86E1_8AA3, 0x748A_09A0, 0x67DA_FA54, 0x95B1_7957, - 0xCBA2_4573, 0x39C9_C670, 0x2A99_3584, 0xD8F2_B687, 0x0C38_D26C, 0xFE53_516F, 0xED03_A29B, 0x1F68_2198, - 0x5125_DAD3, 0xA34E_59D0, 0xB01E_AA24, 0x4275_2927, 0x96BF_4DCC, 0x64D4_CECF, 0x7784_3D3B, 0x85EF_BE38, - 0xDBFC_821C, 0x2997_011F, 0x3AC7_F2EB, 0xC8AC_71E8, 0x1C66_1503, 0xEE0D_9600, 0xFD5D_65F4, 0x0F36_E6F7, - 0x61C6_9362, 0x93AD_1061, 0x80FD_E395, 0x7296_6096, 0xA65C_047D, 0x5437_877E, 0x4767_748A, 0xB50C_F789, - 0xEB1F_CBAD, 0x1974_48AE, 0x0A24_BB5A, 0xF84F_3859, 0x2C85_5CB2, 0xDEEE_DFB1, 0xCDBE_2C45, 0x3FD5_AF46, - 0x7198_540D, 0x83F3_D70E, 0x90A3_24FA, 0x62C8_A7F9, 0xB602_C312, 0x4469_4011, 0x5739_B3E5, 0xA552_30E6, - 0xFB41_0CC2, 0x092A_8FC1, 0x1A7A_7C35, 0xE811_FF36, 0x3CDB_9BDD, 0xCEB0_18DE, 0xDDE0_EB2A, 0x2F8B_6829, - 0x82F6_3B78, 0x709D_B87B, 0x63CD_4B8F, 0x91A6_C88C, 0x456C_AC67, 0xB707_2F64, 0xA457_DC90, 0x563C_5F93, - 0x082F_63B7, 0xFA44_E0B4, 0xE914_1340, 0x1B7F_9043, 0xCFB5_F4A8, 0x3DDE_77AB, 0x2E8E_845F, 0xDCE5_075C, - 0x92A8_FC17, 0x60C3_7F14, 0x7393_8CE0, 0x81F8_0FE3, 0x5532_6B08, 0xA759_E80B, 0xB409_1BFF, 0x4662_98FC, - 0x1871_A4D8, 0xEA1A_27DB, 0xF94A_D42F, 0x0B21_572C, 0xDFEB_33C7, 0x2D80_B0C4, 0x3ED0_4330, 0xCCBB_C033, - 0xA24B_B5A6, 0x5020_36A5, 0x4370_C551, 0xB11B_4652, 0x65D1_22B9, 0x97BA_A1BA, 0x84EA_524E, 0x7681_D14D, - 0x2892_ED69, 0xDAF9_6E6A, 0xC9A9_9D9E, 0x3BC2_1E9D, 0xEF08_7A76, 0x1D63_F975, 0x0E33_0A81, 0xFC58_8982, - 0xB215_72C9, 0x407E_F1CA, 0x532E_023E, 0xA145_813D, 0x758F_E5D6, 0x87E4_66D5, 0x94B4_9521, 0x66DF_1622, - 0x38CC_2A06, 0xCAA7_A905, 0xD9F7_5AF1, 0x2B9C_D9F2, 0xFF56_BD19, 0x0D3D_3E1A, 0x1E6D_CDEE, 0xEC06_4EED, - 0xC38D_26C4, 0x31E6_A5C7, 0x22B6_5633, 0xD0DD_D530, 0x0417_B1DB, 0xF67C_32D8, 0xE52C_C12C, 0x1747_422F, - 0x4954_7E0B, 0xBB3F_FD08, 0xA86F_0EFC, 0x5A04_8DFF, 0x8ECE_E914, 0x7CA5_6A17, 0x6FF5_99E3, 0x9D9E_1AE0, - 0xD3D3_E1AB, 0x21B8_62A8, 0x32E8_915C, 0xC083_125F, 0x1449_76B4, 0xE622_F5B7, 0xF572_0643, 0x0719_8540, - 0x590A_B964, 0xAB61_3A67, 0xB831_C993, 0x4A5A_4A90, 0x9E90_2E7B, 0x6CFB_AD78, 0x7FAB_5E8C, 0x8DC0_DD8F, - 0xE330_A81A, 0x115B_2B19, 0x020B_D8ED, 0xF060_5BEE, 0x24AA_3F05, 0xD6C1_BC06, 0xC591_4FF2, 0x37FA_CCF1, - 0x69E9_F0D5, 0x9B82_73D6, 0x88D2_8022, 0x7AB9_0321, 0xAE73_67CA, 0x5C18_E4C9, 0x4F48_173D, 0xBD23_943E, - 0xF36E_6F75, 0x0105_EC76, 0x1255_1F82, 0xE03E_9C81, 0x34F4_F86A, 0xC69F_7B69, 0xD5CF_889D, 0x27A4_0B9E, - 0x79B7_37BA, 0x8BDC_B4B9, 0x988C_474D, 0x6AE7_C44E, 0xBE2D_A0A5, 0x4C46_23A6, 0x5F16_D052, 0xAD7D_5351 - ] - - @usableFromInline - static let table16: Array = [ - 0x0000, 0xC0C1, 0xC181, 0x0140, 0xC301, 0x03C0, 0x0280, 0xC241, - 0xC601, 0x06C0, 0x0780, 0xC741, 0x0500, 0xC5C1, 0xC481, 0x0440, - 0xCC01, 0x0CC0, 0x0D80, 0xCD41, 0x0F00, 0xCFC1, 0xCE81, 0x0E40, - 0x0A00, 0xCAC1, 0xCB81, 0x0B40, 0xC901, 0x09C0, 0x0880, 0xC841, - 0xD801, 0x18C0, 0x1980, 0xD941, 0x1B00, 0xDBC1, 0xDA81, 0x1A40, - 0x1E00, 0xDEC1, 0xDF81, 0x1F40, 0xDD01, 0x1DC0, 0x1C80, 0xDC41, - 0x1400, 0xD4C1, 0xD581, 0x1540, 0xD701, 0x17C0, 0x1680, 0xD641, - 0xD201, 0x12C0, 0x1380, 0xD341, 0x1100, 0xD1C1, 0xD081, 0x1040, - 0xF001, 0x30C0, 0x3180, 0xF141, 0x3300, 0xF3C1, 0xF281, 0x3240, - 0x3600, 0xF6C1, 0xF781, 0x3740, 0xF501, 0x35C0, 0x3480, 0xF441, - 0x3C00, 0xFCC1, 0xFD81, 0x3D40, 0xFF01, 0x3FC0, 0x3E80, 0xFE41, - 0xFA01, 0x3AC0, 0x3B80, 0xFB41, 0x3900, 0xF9C1, 0xF881, 0x3840, - 0x2800, 0xE8C1, 0xE981, 0x2940, 0xEB01, 0x2BC0, 0x2A80, 0xEA41, - 0xEE01, 0x2EC0, 0x2F80, 0xEF41, 0x2D00, 0xEDC1, 0xEC81, 0x2C40, - 0xE401, 0x24C0, 0x2580, 0xE541, 0x2700, 0xE7C1, 0xE681, 0x2640, - 0x2200, 0xE2C1, 0xE381, 0x2340, 0xE101, 0x21C0, 0x2080, 0xE041, - 0xA001, 0x60C0, 0x6180, 0xA141, 0x6300, 0xA3C1, 0xA281, 0x6240, - 0x6600, 0xA6C1, 0xA781, 0x6740, 0xA501, 0x65C0, 0x6480, 0xA441, - 0x6C00, 0xACC1, 0xAD81, 0x6D40, 0xAF01, 0x6FC0, 0x6E80, 0xAE41, - 0xAA01, 0x6AC0, 0x6B80, 0xAB41, 0x6900, 0xA9C1, 0xA881, 0x6840, - 0x7800, 0xB8C1, 0xB981, 0x7940, 0xBB01, 0x7BC0, 0x7A80, 0xBA41, - 0xBE01, 0x7EC0, 0x7F80, 0xBF41, 0x7D00, 0xBDC1, 0xBC81, 0x7C40, - 0xB401, 0x74C0, 0x7580, 0xB541, 0x7700, 0xB7C1, 0xB681, 0x7640, - 0x7200, 0xB2C1, 0xB381, 0x7340, 0xB101, 0x71C0, 0x7080, 0xB041, - 0x5000, 0x90C1, 0x9181, 0x5140, 0x9301, 0x53C0, 0x5280, 0x9241, - 0x9601, 0x56C0, 0x5780, 0x9741, 0x5500, 0x95C1, 0x9481, 0x5440, - 0x9C01, 0x5CC0, 0x5D80, 0x9D41, 0x5F00, 0x9FC1, 0x9E81, 0x5E40, - 0x5A00, 0x9AC1, 0x9B81, 0x5B40, 0x9901, 0x59C0, 0x5880, 0x9841, - 0x8801, 0x48C0, 0x4980, 0x8941, 0x4B00, 0x8BC1, 0x8A81, 0x4A40, - 0x4E00, 0x8EC1, 0x8F81, 0x4F40, 0x8D01, 0x4DC0, 0x4C80, 0x8C41, - 0x4400, 0x84C1, 0x8581, 0x4540, 0x8701, 0x47C0, 0x4680, 0x8641, - 0x8201, 0x42C0, 0x4380, 0x8341, 0x4100, 0x81C1, 0x8081, 0x4040 - ] - - @usableFromInline - init() { - // - } - - /// Polynomial: 0xEDB88320 (Reversed) - IEEE - @inlinable - func crc32(_ message: Array, seed: UInt32? = nil, reflect: Bool = true) -> UInt32 { - var crc: UInt32 = seed != nil ? seed! : 0xFFFF_FFFF - for chunk in message.batched(by: 256) { - for b in chunk { - let idx = Int((crc ^ UInt32(reflect ? b : reversed(b))) & 0xFF) - crc = (crc >> 8) ^ Checksum.table32[idx] - } - } - return (reflect ? crc : reversed(crc)) ^ 0xFFFF_FFFF - } - - /// Polynomial: 0x82F63B78 (Reversed) - Castagnoli - @inlinable - func crc32c(_ message: Array, seed: UInt32? = nil, reflect: Bool = true) -> UInt32 { - var crc: UInt32 = seed != nil ? seed! : 0xFFFF_FFFF - for chunk in message.batched(by: 256) { - for b in chunk { - let idx = Int((crc ^ UInt32(reflect ? b : reversed(b))) & 0xFF) - crc = (crc >> 8) ^ Checksum.table32c[idx] - } - } - return (reflect ? crc : reversed(crc)) ^ 0xFFFF_FFFF - } - - /// Polynomial: 0xA001 (Reversed) - IBM - @inlinable - func crc16(_ message: Array, seed: UInt16? = nil) -> UInt16 { - var crc: UInt16 = seed != nil ? seed! : 0x0000 - for chunk in message.batched(by: 256) { - for b in chunk { - crc = (crc >> 8) ^ Checksum.table16[Int((crc ^ UInt16(b)) & 0xFF)] - } - } - return crc - } -} - -// MARK: Public interface - -public extension Checksum { - /// Calculate CRC32. - /// - /// - parameter message: Message - /// - parameter seed: Seed value (Optional) - /// - parameter reflect: is reflect (default true) - /// - /// - returns: Calculated code - @inlinable - static func crc32(_ message: Array, seed: UInt32? = nil, reflect: Bool = true) -> UInt32 { - Checksum().crc32(message, seed: seed, reflect: reflect) - } - - /// Calculate CRC32C - /// - /// - parameter message: Message - /// - parameter seed: Seed value (Optional) - /// - parameter reflect: is reflect (default true) - /// - /// - returns: Calculated code - @inlinable - static func crc32c(_ message: Array, seed: UInt32? = nil, reflect: Bool = true) -> UInt32 { - Checksum().crc32c(message, seed: seed, reflect: reflect) - } - - /// Calculate CRC16 - /// - /// - parameter message: Message - /// - parameter seed: Seed value (Optional) - /// - /// - returns: Calculated code - @inlinable - static func crc16(_ message: Array, seed: UInt16? = nil) -> UInt16 { - Checksum().crc16(message, seed: seed) - } -} diff --git a/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/Cipher.swift b/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/Cipher.swift deleted file mode 100644 index b7ffd4ee..00000000 --- a/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/Cipher.swift +++ /dev/null @@ -1,47 +0,0 @@ -// -// CryptoSwift -// -// Copyright (C) 2014-2017 Marcin Krzyżanowski -// This software is provided 'as-is', without any express or implied warranty. -// -// In no event will the authors be held liable for any damages arising from the use of this software. -// -// Permission is granted to anyone to use this software for any purpose,including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: -// -// - The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation is required. -// - Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -// - This notice may not be removed or altered from any source or binary distribution. -// - -public enum CipherError: Error { - case encrypt - case decrypt -} - -public protocol Cipher: AnyObject { - var keySize: Int { get } - - /// Encrypt given bytes at once - /// - /// - parameter bytes: Plaintext data - /// - returns: Encrypted data - func encrypt(_ bytes: ArraySlice) throws -> Array - func encrypt(_ bytes: Array) throws -> Array - - /// Decrypt given bytes at once - /// - /// - parameter bytes: Ciphertext data - /// - returns: Plaintext data - func decrypt(_ bytes: ArraySlice) throws -> Array - func decrypt(_ bytes: Array) throws -> Array -} - -extension Cipher { - public func encrypt(_ bytes: Array) throws -> Array { - try self.encrypt(bytes.slice) - } - - public func decrypt(_ bytes: Array) throws -> Array { - try self.decrypt(bytes.slice) - } -} diff --git a/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/Collection+Extension.swift b/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/Collection+Extension.swift deleted file mode 100644 index 7a917b4d..00000000 --- a/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/Collection+Extension.swift +++ /dev/null @@ -1,61 +0,0 @@ -// -// CryptoSwift -// -// Copyright (C) 2014-2017 Marcin Krzyżanowski -// This software is provided 'as-is', without any express or implied warranty. -// -// In no event will the authors be held liable for any damages arising from the use of this software. -// -// Permission is granted to anyone to use this software for any purpose,including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: -// -// - The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation is required. -// - Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -// - This notice may not be removed or altered from any source or binary distribution. -// -extension Collection where Self.Element == UInt8, Self.Index == Int { - // Big endian order - @inlinable - func toUInt32Array() -> Array { - guard !isEmpty else { - return [] - } - - let c = strideCount(from: startIndex, to: endIndex, by: 4) - return Array(unsafeUninitializedCapacity: c) { buf, count in - var counter = 0 - for idx in stride(from: startIndex, to: endIndex, by: 4) { - let val = UInt32(bytes: self, fromIndex: idx).bigEndian - buf[counter] = val - counter += 1 - } - count = counter - assert(counter == c) - } - } - - // Big endian order - @inlinable - func toUInt64Array() -> Array { - guard !isEmpty else { - return [] - } - - let c = strideCount(from: startIndex, to: endIndex, by: 8) - return Array(unsafeUninitializedCapacity: c) { buf, count in - var counter = 0 - for idx in stride(from: startIndex, to: endIndex, by: 8) { - let val = UInt64(bytes: self, fromIndex: idx).bigEndian - buf[counter] = val - counter += 1 - } - count = counter - assert(counter == c) - } - } -} - -@usableFromInline -func strideCount(from: Int, to: Int, by: Int) -> Int { - let count = to - from - return count / by + (count % by > 0 ? 1 : 0) -} diff --git a/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/CompactMap.swift b/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/CompactMap.swift deleted file mode 100644 index 7c360ff6..00000000 --- a/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/CompactMap.swift +++ /dev/null @@ -1,24 +0,0 @@ -//// CryptoSwift -// -// Copyright (C) 2014-2018 Marcin Krzyżanowski -// This software is provided 'as-is', without any express or implied warranty. -// -// In no event will the authors be held liable for any damages arising from the use of this software. -// -// Permission is granted to anyone to use this software for any purpose,including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: -// -// - The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation is required. -// - Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -// - This notice may not be removed or altered from any source or binary distribution. -// - -#if swift(>=4.1) -// TODO: remove this file when Xcode 9.2 is no longer used -#else - extension Sequence { - @inlinable - public func compactMap(_ transform: (Element) throws -> ElementOfResult?) rethrows -> [ElementOfResult] { - try flatMap(transform) - } - } -#endif diff --git a/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/Cryptor.swift b/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/Cryptor.swift deleted file mode 100644 index 34cd275b..00000000 --- a/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/Cryptor.swift +++ /dev/null @@ -1,22 +0,0 @@ -// -// CryptoSwift -// -// Copyright (C) 2014-2017 Marcin Krzyżanowski -// This software is provided 'as-is', without any express or implied warranty. -// -// In no event will the authors be held liable for any damages arising from the use of this software. -// -// Permission is granted to anyone to use this software for any purpose,including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: -// -// - The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation is required. -// - Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -// - This notice may not be removed or altered from any source or binary distribution. -// - -/// Cryptor (Encryptor or Decryptor) -public protocol Cryptor { - /// Seek to position in file, if block mode allows random access. - /// - /// - parameter to: new value of counter - mutating func seek(to: Int) throws -} diff --git a/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/Cryptors.swift b/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/Cryptors.swift deleted file mode 100644 index 97bae197..00000000 --- a/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/Cryptors.swift +++ /dev/null @@ -1,44 +0,0 @@ -// -// CryptoSwift -// -// Copyright (C) 2014-2017 Marcin Krzyżanowski -// This software is provided 'as-is', without any express or implied warranty. -// -// In no event will the authors be held liable for any damages arising from the use of this software. -// -// Permission is granted to anyone to use this software for any purpose,including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: -// -// - The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation is required. -// - Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -// - This notice may not be removed or altered from any source or binary distribution. -// - -#if canImport(Darwin) -import Darwin -#elseif canImport(Glibc) -import Glibc -#elseif canImport(ucrt) -import ucrt -#endif - -/// Worker cryptor/decryptor of `Updatable` types -public protocol Cryptors: AnyObject { - - /// Cryptor suitable for encryption - func makeEncryptor() throws -> Cryptor & Updatable - - /// Cryptor suitable for decryption - func makeDecryptor() throws -> Cryptor & Updatable - - /// Generate array of random bytes. Helper function. - static func randomIV(_ blockSize: Int) -> Array -} - -extension Cryptors { - /// Generate array of random values. - /// Convenience helper that uses `Swift.RandomNumberGenerator`. - /// - Parameter count: Length of array - public static func randomIV(_ count: Int) -> Array { - (0.. -// This software is provided 'as-is', without any express or implied warranty. -// -// In no event will the authors be held liable for any damages arising from the use of this software. -// -// Permission is granted to anyone to use this software for any purpose,including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: -// -// - The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation is required. -// - Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -// - This notice may not be removed or altered from any source or binary distribution. -// - -@available(*, renamed: "Digest") -public typealias Hash = Digest - -/// Hash functions to calculate Digest. -public struct Digest { - /// Calculate MD5 Digest - /// - parameter bytes: input message - /// - returns: Digest bytes - public static func md5(_ bytes: Array) -> Array { - MD5().calculate(for: bytes) - } - - /// Calculate SHA1 Digest - /// - parameter bytes: input message - /// - returns: Digest bytes - public static func sha1(_ bytes: Array) -> Array { - SHA1().calculate(for: bytes) - } - - /// Calculate SHA2-224 Digest - /// - parameter bytes: input message - /// - returns: Digest bytes - public static func sha224(_ bytes: Array) -> Array { - self.sha2(bytes, variant: .sha224) - } - - /// Calculate SHA2-256 Digest - /// - parameter bytes: input message - /// - returns: Digest bytes - public static func sha256(_ bytes: Array) -> Array { - self.sha2(bytes, variant: .sha256) - } - - /// Calculate SHA2-384 Digest - /// - parameter bytes: input message - /// - returns: Digest bytes - public static func sha384(_ bytes: Array) -> Array { - self.sha2(bytes, variant: .sha384) - } - - /// Calculate SHA2-512 Digest - /// - parameter bytes: input message - /// - returns: Digest bytes - public static func sha512(_ bytes: Array) -> Array { - self.sha2(bytes, variant: .sha512) - } - - /// Calculate SHA2 Digest - /// - parameter bytes: input message - /// - parameter variant: SHA-2 variant - /// - returns: Digest bytes - public static func sha2(_ bytes: Array, variant: SHA2.Variant) -> Array { - SHA2(variant: variant).calculate(for: bytes) - } - - /// Calculate SHA3 Digest - /// - parameter bytes: input message - /// - parameter variant: SHA-3 variant - /// - returns: Digest bytes - public static func sha3(_ bytes: Array, variant: SHA3.Variant) -> Array { - SHA3(variant: variant).calculate(for: bytes) - } -} diff --git a/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/DigestType.swift b/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/DigestType.swift deleted file mode 100644 index a635c1e6..00000000 --- a/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/DigestType.swift +++ /dev/null @@ -1,18 +0,0 @@ -// -// CryptoSwift -// -// Copyright (C) 2014-2017 Marcin Krzyżanowski -// This software is provided 'as-is', without any express or implied warranty. -// -// In no event will the authors be held liable for any damages arising from the use of this software. -// -// Permission is granted to anyone to use this software for any purpose,including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: -// -// - The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation is required. -// - Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -// - This notice may not be removed or altered from any source or binary distribution. -// - -internal protocol DigestType { - func calculate(for bytes: Array) -> Array -} diff --git a/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/Foundation/AES+Foundation.swift b/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/Foundation/AES+Foundation.swift deleted file mode 100644 index 00856e70..00000000 --- a/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/Foundation/AES+Foundation.swift +++ /dev/null @@ -1,32 +0,0 @@ -// -// CryptoSwift -// -// Copyright (C) 2014-2017 Marcin Krzyżanowski -// This software is provided 'as-is', without any express or implied warranty. -// -// In no event will the authors be held liable for any damages arising from the use of this software. -// -// Permission is granted to anyone to use this software for any purpose,including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: -// -// - The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation is required. -// - Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -// - This notice may not be removed or altered from any source or binary distribution. -// - -import Foundation - -extension AES { - /// Initialize with CBC block mode. - /// - /// - Parameters: - /// - key: Key as a String. - /// - iv: IV as a String. - /// - padding: Padding - /// - Throws: Error - /// - /// The input is a String, that is treat as sequence of bytes made directly out of String. - /// If input is Base64 encoded data (which is a String technically) it is not decoded automatically for you. - public convenience init(key: String, iv: String, padding: Padding = .pkcs7) throws { - try self.init(key: key.bytes, blockMode: CBC(iv: iv.bytes), padding: padding) - } -} diff --git a/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/Foundation/Array+Foundation.swift b/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/Foundation/Array+Foundation.swift deleted file mode 100644 index cb68cdaa..00000000 --- a/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/Foundation/Array+Foundation.swift +++ /dev/null @@ -1,32 +0,0 @@ -// -// CryptoSwift -// -// Copyright (C) 2014-2017 Marcin Krzyżanowski -// This software is provided 'as-is', without any express or implied warranty. -// -// In no event will the authors be held liable for any damages arising from the use of this software. -// -// Permission is granted to anyone to use this software for any purpose,including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: -// -// - The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation is required. -// - Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -// - This notice may not be removed or altered from any source or binary distribution. -// - -import Foundation - -public extension Array where Element == UInt8 { - func toBase64() -> String { - Data(self).base64EncodedString() - } - - init(base64: String) { - self.init() - - guard let decodedData = Data(base64Encoded: base64) else { - return - } - - append(contentsOf: decodedData.bytes) - } -} diff --git a/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/Foundation/Blowfish+Foundation.swift b/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/Foundation/Blowfish+Foundation.swift deleted file mode 100644 index 244c466d..00000000 --- a/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/Foundation/Blowfish+Foundation.swift +++ /dev/null @@ -1,23 +0,0 @@ -// -// CryptoSwift -// -// Copyright (C) 2014-2017 Marcin Krzyżanowski -// This software is provided 'as-is', without any express or implied warranty. -// -// In no event will the authors be held liable for any damages arising from the use of this software. -// -// Permission is granted to anyone to use this software for any purpose,including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: -// -// - The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation is required. -// - Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -// - This notice may not be removed or altered from any source or binary distribution. -// - -import Foundation - -extension Blowfish { - /// Initialize with CBC block mode. - public convenience init(key: String, iv: String, padding: Padding = .pkcs7) throws { - try self.init(key: key.bytes, blockMode: CBC(iv: iv.bytes), padding: padding) - } -} diff --git a/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/Foundation/ChaCha20+Foundation.swift b/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/Foundation/ChaCha20+Foundation.swift deleted file mode 100644 index f4b7e7e1..00000000 --- a/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/Foundation/ChaCha20+Foundation.swift +++ /dev/null @@ -1,22 +0,0 @@ -// -// CryptoSwift -// -// Copyright (C) 2014-2017 Marcin Krzyżanowski -// This software is provided 'as-is', without any express or implied warranty. -// -// In no event will the authors be held liable for any damages arising from the use of this software. -// -// Permission is granted to anyone to use this software for any purpose,including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: -// -// - The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation is required. -// - Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -// - This notice may not be removed or altered from any source or binary distribution. -// - -import Foundation - -extension ChaCha20 { - public convenience init(key: String, iv: String) throws { - try self.init(key: key.bytes, iv: iv.bytes) - } -} diff --git a/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/Foundation/Data+Extension.swift b/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/Foundation/Data+Extension.swift deleted file mode 100644 index ab260b24..00000000 --- a/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/Foundation/Data+Extension.swift +++ /dev/null @@ -1,92 +0,0 @@ -// -// CryptoSwift -// -// Copyright (C) 2014-2017 Marcin Krzyżanowski -// This software is provided 'as-is', without any express or implied warranty. -// -// In no event will the authors be held liable for any damages arising from the use of this software. -// -// Permission is granted to anyone to use this software for any purpose,including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: -// -// - The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation is required. -// - Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -// - This notice may not be removed or altered from any source or binary distribution. -// - -import Foundation - -extension Data { - /// Two octet checksum as defined in RFC-4880. Sum of all octets, mod 65536 - public func checksum() -> UInt16 { - let s = self.withUnsafeBytes { buf in - return buf.lazy.map(UInt32.init).reduce(UInt32(0), +) - } - return UInt16(s % 65535) - } - - public func md5() -> Data { - Data( Digest.md5(bytes)) - } - - public func sha1() -> Data { - Data( Digest.sha1(bytes)) - } - - public func sha224() -> Data { - Data( Digest.sha224(bytes)) - } - - public func sha256() -> Data { - Data( Digest.sha256(bytes)) - } - - public func sha384() -> Data { - Data( Digest.sha384(bytes)) - } - - public func sha512() -> Data { - Data( Digest.sha512(bytes)) - } - - public func sha3(_ variant: SHA3.Variant) -> Data { - Data( Digest.sha3(bytes, variant: variant)) - } - - public func crc32(seed: UInt32? = nil, reflect: Bool = true) -> Data { - Data( Checksum.crc32(bytes, seed: seed, reflect: reflect).bytes()) - } - - public func crc32c(seed: UInt32? = nil, reflect: Bool = true) -> Data { - Data( Checksum.crc32c(bytes, seed: seed, reflect: reflect).bytes()) - } - - public func crc16(seed: UInt16? = nil) -> Data { - Data( Checksum.crc16(bytes, seed: seed).bytes()) - } - - public func encrypt(cipher: Cipher) throws -> Data { - Data( try cipher.encrypt(bytes.slice)) - } - - public func decrypt(cipher: Cipher) throws -> Data { - Data( try cipher.decrypt(bytes.slice)) - } - - public func authenticate(with authenticator: Authenticator) throws -> Data { - Data( try authenticator.authenticate(bytes)) - } -} - -extension Data { - public init(hex: String) { - self.init(Array(hex: hex)) - } - - public var bytes: Array { - Array(self) - } - - public func toHexString() -> String { - self.bytes.toHexString() - } -} diff --git a/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/Foundation/HMAC+Foundation.swift b/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/Foundation/HMAC+Foundation.swift deleted file mode 100644 index 77ee8902..00000000 --- a/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/Foundation/HMAC+Foundation.swift +++ /dev/null @@ -1,22 +0,0 @@ -// -// CryptoSwift -// -// Copyright (C) 2014-2017 Marcin Krzyżanowski -// This software is provided 'as-is', without any express or implied warranty. -// -// In no event will the authors be held liable for any damages arising from the use of this software. -// -// Permission is granted to anyone to use this software for any purpose,including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: -// -// - The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation is required. -// - Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -// - This notice may not be removed or altered from any source or binary distribution. -// - -import Foundation - -extension HMAC { - public convenience init(key: String, variant: HMAC.Variant = .md5) throws { - self.init(key: key.bytes, variant: variant) - } -} diff --git a/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/Foundation/Rabbit+Foundation.swift b/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/Foundation/Rabbit+Foundation.swift deleted file mode 100644 index ff18c36f..00000000 --- a/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/Foundation/Rabbit+Foundation.swift +++ /dev/null @@ -1,26 +0,0 @@ -// -// CryptoSwift -// -// Copyright (C) 2014-2017 Marcin Krzyżanowski -// This software is provided 'as-is', without any express or implied warranty. -// -// In no event will the authors be held liable for any damages arising from the use of this software. -// -// Permission is granted to anyone to use this software for any purpose,including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: -// -// - The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation is required. -// - Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -// - This notice may not be removed or altered from any source or binary distribution. -// - -import Foundation - -extension Rabbit { - public convenience init(key: String) throws { - try self.init(key: key.bytes) - } - - public convenience init(key: String, iv: String) throws { - try self.init(key: key.bytes, iv: iv.bytes) - } -} diff --git a/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/Foundation/String+FoundationExtension.swift b/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/Foundation/String+FoundationExtension.swift deleted file mode 100644 index b19014d8..00000000 --- a/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/Foundation/String+FoundationExtension.swift +++ /dev/null @@ -1,41 +0,0 @@ -// -// CryptoSwift -// -// Copyright (C) 2014-2017 Marcin Krzyżanowski -// This software is provided 'as-is', without any express or implied warranty. -// -// In no event will the authors be held liable for any damages arising from the use of this software. -// -// Permission is granted to anyone to use this software for any purpose,including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: -// -// - The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation is required. -// - Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -// - This notice may not be removed or altered from any source or binary distribution. -// - -import Foundation - -extension String { - /// Return Base64 back to String - public func decryptBase64ToString(cipher: Cipher) throws -> String { - guard let decodedData = Data(base64Encoded: self, options: []) else { - throw CipherError.decrypt - } - - let decrypted = try decodedData.decrypt(cipher: cipher) - - if let decryptedString = String(data: decrypted, encoding: String.Encoding.utf8) { - return decryptedString - } - - throw CipherError.decrypt - } - - public func decryptBase64(cipher: Cipher) throws -> Array { - guard let decodedData = Data(base64Encoded: self, options: []) else { - throw CipherError.decrypt - } - - return try decodedData.decrypt(cipher: cipher).bytes - } -} diff --git a/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/Foundation/Utils+Foundation.swift b/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/Foundation/Utils+Foundation.swift deleted file mode 100644 index e5c0057d..00000000 --- a/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/Foundation/Utils+Foundation.swift +++ /dev/null @@ -1,27 +0,0 @@ -// -// CryptoSwift -// -// Copyright (C) 2014-2017 Marcin Krzyżanowski -// This software is provided 'as-is', without any express or implied warranty. -// -// In no event will the authors be held liable for any damages arising from the use of this software. -// -// Permission is granted to anyone to use this software for any purpose,including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: -// -// - The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation is required. -// - Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -// - This notice may not be removed or altered from any source or binary distribution. -// - -import Foundation - -func perf(_ text: String, closure: () -> Void) { - let measurementStart = Date() - - closure() - - let measurementStop = Date() - let executionTime = measurementStop.timeIntervalSince(measurementStart) - - print("\(text) \(executionTime)") -} diff --git a/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/Generics.swift b/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/Generics.swift deleted file mode 100644 index 14c6c7cc..00000000 --- a/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/Generics.swift +++ /dev/null @@ -1,43 +0,0 @@ -// -// CryptoSwift -// -// Copyright (C) 2014-2017 Marcin Krzyżanowski -// This software is provided 'as-is', without any express or implied warranty. -// -// In no event will the authors be held liable for any damages arising from the use of this software. -// -// Permission is granted to anyone to use this software for any purpose,including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: -// -// - The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation is required. -// - Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -// - This notice may not be removed or altered from any source or binary distribution. -// - -/// Array of bytes. Caution: don't use directly because generic is slow. -/// -/// - parameter value: integer value -/// - parameter length: length of output array. By default size of value type -/// -/// - returns: Array of bytes -@_specialize(where T == Int) -@_specialize(where T == UInt) -@_specialize(where T == UInt8) -@_specialize(where T == UInt16) -@_specialize(where T == UInt32) -@_specialize(where T == UInt64) -@inlinable -func arrayOfBytes(value: T, length totalBytes: Int = MemoryLayout.size) -> Array { - let valuePointer = UnsafeMutablePointer.allocate(capacity: 1) - valuePointer.pointee = value - - let bytesPointer = UnsafeMutablePointer(OpaquePointer(valuePointer)) - var bytes = Array(repeating: 0, count: totalBytes) - for j in 0...size, totalBytes) { - bytes[totalBytes - 1 - j] = (bytesPointer + j).pointee - } - - valuePointer.deinitialize(count: 1) - valuePointer.deallocate() - - return bytes -} diff --git a/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/HKDF.swift b/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/HKDF.swift deleted file mode 100644 index fc1cd5c5..00000000 --- a/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/HKDF.swift +++ /dev/null @@ -1,86 +0,0 @@ -// -// CryptoSwift -// -// Copyright (C) 2014-2017 Marcin Krzyżanowski -// This software is provided 'as-is', without any express or implied warranty. -// -// In no event will the authors be held liable for any damages arising from the use of this software. -// -// Permission is granted to anyone to use this software for any purpose,including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: -// -// - The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation is required. -// - Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -// - This notice may not be removed or altered from any source or binary distribution. -// - -// https://www.ietf.org/rfc/rfc5869.txt -// - -#if canImport(Darwin) -import Darwin -#elseif canImport(Glibc) -import Glibc -#elseif canImport(ucrt) -import ucrt -#endif - -/// A key derivation function. -/// -/// HKDF - HMAC-based Extract-and-Expand Key Derivation Function. -public struct HKDF { - public enum Error: Swift.Error { - case invalidInput - case derivedKeyTooLong - } - - private let numBlocks: Int // l - private let dkLen: Int - private let info: Array - private let prk: Array - private let variant: HMAC.Variant - - /// - parameters: - /// - variant: hash variant - /// - salt: optional salt (if not provided, it is set to a sequence of variant.digestLength zeros) - /// - info: optional context and application specific information - /// - keyLength: intended length of derived key - public init(password: Array, salt: Array? = nil, info: Array? = nil, keyLength: Int? = nil /* dkLen */, variant: HMAC.Variant = .sha256) throws { - guard !password.isEmpty else { - throw Error.invalidInput - } - - let dkLen = keyLength ?? variant.digestLength - let keyLengthFinal = Double(dkLen) - let hLen = Double(variant.digestLength) - let numBlocks = Int(ceil(keyLengthFinal / hLen)) // l = ceil(keyLength / hLen) - guard numBlocks <= 255 else { - throw Error.derivedKeyTooLong - } - - /// HKDF-Extract(salt, password) -> PRK - /// - PRK - a pseudo-random key; it is used by calculate() - self.prk = try HMAC(key: salt ?? [], variant: variant).authenticate(password) - self.info = info ?? [] - self.variant = variant - self.dkLen = dkLen - self.numBlocks = numBlocks - } - - public func calculate() throws -> Array { - let hmac = HMAC(key: prk, variant: variant) - var ret = Array() - ret.reserveCapacity(self.numBlocks * self.variant.digestLength) - var value = Array() - for i in 1...self.numBlocks { - value.append(contentsOf: self.info) - value.append(UInt8(i)) - - let bytes = try hmac.authenticate(value) - ret.append(contentsOf: bytes) - - /// update value to use it as input for next iteration - value = bytes - } - return Array(ret.prefix(self.dkLen)) - } -} diff --git a/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/HMAC.swift b/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/HMAC.swift deleted file mode 100644 index 4d137490..00000000 --- a/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/HMAC.swift +++ /dev/null @@ -1,102 +0,0 @@ -// -// CryptoSwift -// -// Copyright (C) 2014-2017 Marcin Krzyżanowski -// This software is provided 'as-is', without any express or implied warranty. -// -// In no event will the authors be held liable for any damages arising from the use of this software. -// -// Permission is granted to anyone to use this software for any purpose,including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: -// -// - The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation is required. -// - Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -// - This notice may not be removed or altered from any source or binary distribution. -// - -public final class HMAC: Authenticator { - public enum Error: Swift.Error { - case authenticateError - case invalidInput - } - - public enum Variant { - case sha1, sha256, sha384, sha512, md5 - - var digestLength: Int { - switch self { - case .sha1: - return SHA1.digestLength - case .sha256: - return SHA2.Variant.sha256.digestLength - case .sha384: - return SHA2.Variant.sha384.digestLength - case .sha512: - return SHA2.Variant.sha512.digestLength - case .md5: - return MD5.digestLength - } - } - - func calculateHash(_ bytes: Array) -> Array { - switch self { - case .sha1: - return Digest.sha1(bytes) - case .sha256: - return Digest.sha256(bytes) - case .sha384: - return Digest.sha384(bytes) - case .sha512: - return Digest.sha512(bytes) - case .md5: - return Digest.md5(bytes) - } - } - - func blockSize() -> Int { - switch self { - case .md5: - return MD5.blockSize - case .sha1, .sha256: - return 64 - case .sha384, .sha512: - return 128 - } - } - } - - var key: Array - let variant: Variant - - public init(key: Array, variant: HMAC.Variant = .md5) { - self.variant = variant - self.key = key - - if key.count > variant.blockSize() { - let hash = variant.calculateHash(key) - self.key = hash - } - - if key.count < variant.blockSize() { - self.key = ZeroPadding().add(to: key, blockSize: variant.blockSize()) - } - } - - // MARK: Authenticator - - public func authenticate(_ bytes: Array) throws -> Array { - var opad = Array(repeating: 0x5c, count: variant.blockSize()) - for idx in self.key.indices { - opad[idx] = self.key[idx] ^ opad[idx] - } - var ipad = Array(repeating: 0x36, count: variant.blockSize()) - for idx in self.key.indices { - ipad[idx] = self.key[idx] ^ ipad[idx] - } - - let ipadAndMessageHash = self.variant.calculateHash(ipad + bytes) - let result = self.variant.calculateHash(opad + ipadAndMessageHash) - - // return Array(result[0..<10]) // 80 bits - return result - } -} diff --git a/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/Int+Extension.swift b/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/Int+Extension.swift deleted file mode 100644 index 2af1b820..00000000 --- a/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/Int+Extension.swift +++ /dev/null @@ -1,33 +0,0 @@ -// -// CryptoSwift -// -// Created by Marcin Krzyzanowski on 12/08/14. -// Copyright (C) 2014-2017 Marcin Krzyżanowski -// This software is provided 'as-is', without any express or implied warranty. -// -// In no event will the authors be held liable for any damages arising from the use of this software. -// -// Permission is granted to anyone to use this software for any purpose,including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: -// -// - The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation is required. -// - Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -// - This notice may not be removed or altered from any source or binary distribution. -// - -#if canImport(Darwin) -import Darwin -#elseif canImport(Glibc) -import Glibc -#elseif canImport(ucrt) -import ucrt -#endif - -extension FixedWidthInteger { - @inlinable - func bytes(totalBytes: Int = MemoryLayout.size) -> Array { - arrayOfBytes(value: self.littleEndian, length: totalBytes) - // TODO: adjust bytes order - // var value = self.littleEndian - // return withUnsafeBytes(of: &value, Array.init).reversed() - } -} diff --git a/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/MD5.swift b/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/MD5.swift deleted file mode 100644 index 217a708a..00000000 --- a/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/MD5.swift +++ /dev/null @@ -1,161 +0,0 @@ -// -// CryptoSwift -// -// Copyright (C) 2014-2017 Marcin Krzyżanowski -// This software is provided 'as-is', without any express or implied warranty. -// -// In no event will the authors be held liable for any damages arising from the use of this software. -// -// Permission is granted to anyone to use this software for any purpose,including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: -// -// - The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation is required. -// - Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -// - This notice may not be removed or altered from any source or binary distribution. -// - -public final class MD5: DigestType { - static let blockSize: Int = 64 - static let digestLength: Int = 16 // 128 / 8 - fileprivate static let hashInitialValue: Array = [0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476] - - fileprivate var accumulated = Array() - fileprivate var processedBytesTotalCount: Int = 0 - fileprivate var accumulatedHash: Array = MD5.hashInitialValue - - /** specifies the per-round shift amounts */ - private let s: Array = [ - 7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, - 5, 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20, - 4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23, - 6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21 - ] - - /** binary integer part of the sines of integers (Radians) */ - private let k: Array = [ - 0xd76aa478, 0xe8c7b756, 0x242070db, 0xc1bdceee, - 0xf57c0faf, 0x4787c62a, 0xa8304613, 0xfd469501, - 0x698098d8, 0x8b44f7af, 0xffff5bb1, 0x895cd7be, - 0x6b901122, 0xfd987193, 0xa679438e, 0x49b40821, - 0xf61e2562, 0xc040b340, 0x265e5a51, 0xe9b6c7aa, - 0xd62f105d, 0x2441453, 0xd8a1e681, 0xe7d3fbc8, - 0x21e1cde6, 0xc33707d6, 0xf4d50d87, 0x455a14ed, - 0xa9e3e905, 0xfcefa3f8, 0x676f02d9, 0x8d2a4c8a, - 0xfffa3942, 0x8771f681, 0x6d9d6122, 0xfde5380c, - 0xa4beea44, 0x4bdecfa9, 0xf6bb4b60, 0xbebfbc70, - 0x289b7ec6, 0xeaa127fa, 0xd4ef3085, 0x4881d05, - 0xd9d4d039, 0xe6db99e5, 0x1fa27cf8, 0xc4ac5665, - 0xf4292244, 0x432aff97, 0xab9423a7, 0xfc93a039, - 0x655b59c3, 0x8f0ccc92, 0xffeff47d, 0x85845dd1, - 0x6fa87e4f, 0xfe2ce6e0, 0xa3014314, 0x4e0811a1, - 0xf7537e82, 0xbd3af235, 0x2ad7d2bb, 0xeb86d391 - ] - - public init() { - } - - public func calculate(for bytes: Array) -> Array { - do { - return try update(withBytes: bytes.slice, isLast: true) - } catch { - fatalError() - } - } - - // mutating currentHash in place is way faster than returning new result - fileprivate func process(block chunk: ArraySlice, currentHash: inout Array) { - assert(chunk.count == 16 * 4) - - // Initialize hash value for this chunk: - var A: UInt32 = currentHash[0] - var B: UInt32 = currentHash[1] - var C: UInt32 = currentHash[2] - var D: UInt32 = currentHash[3] - - var dTemp: UInt32 = 0 - - // Main loop - for j in 0.., isLast: Bool = false) throws -> Array { - self.accumulated += bytes - - if isLast { - let lengthInBits = (processedBytesTotalCount + self.accumulated.count) * 8 - let lengthBytes = lengthInBits.bytes(totalBytes: 64 / 8) // A 64-bit representation of b - - // Step 1. Append padding - bitPadding(to: &self.accumulated, blockSize: MD5.blockSize, allowance: 64 / 8) - - // Step 2. Append Length a 64-bit representation of lengthInBits - self.accumulated += lengthBytes.reversed() - } - - var processedBytes = 0 - for chunk in self.accumulated.batched(by: MD5.blockSize) { - if isLast || (self.accumulated.count - processedBytes) >= MD5.blockSize { - self.process(block: chunk, currentHash: &self.accumulatedHash) - processedBytes += chunk.count - } - } - self.accumulated.removeFirst(processedBytes) - self.processedBytesTotalCount += processedBytes - - // output current hash - var result = Array() - result.reserveCapacity(MD5.digestLength) - - for hElement in self.accumulatedHash { - let hLE = hElement.littleEndian - result += Array(arrayLiteral: UInt8(hLE & 0xff), UInt8((hLE >> 8) & 0xff), UInt8((hLE >> 16) & 0xff), UInt8((hLE >> 24) & 0xff)) - } - - // reset hash value for instance - if isLast { - self.accumulatedHash = MD5.hashInitialValue - } - - return result - } -} diff --git a/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/NoPadding.swift b/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/NoPadding.swift deleted file mode 100644 index f2a1c467..00000000 --- a/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/NoPadding.swift +++ /dev/null @@ -1,27 +0,0 @@ -// -// CryptoSwift -// -// Copyright (C) 2014-2017 Marcin Krzyżanowski -// This software is provided 'as-is', without any express or implied warranty. -// -// In no event will the authors be held liable for any damages arising from the use of this software. -// -// Permission is granted to anyone to use this software for any purpose,including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: -// -// - The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation is required. -// - Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -// - This notice may not be removed or altered from any source or binary distribution. -// - -struct NoPadding: PaddingProtocol { - init() { - } - - func add(to data: Array, blockSize _: Int) -> Array { - data - } - - func remove(from data: Array, blockSize _: Int?) -> Array { - data - } -} diff --git a/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/Operators.swift b/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/Operators.swift deleted file mode 100644 index a15fe3c9..00000000 --- a/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/Operators.swift +++ /dev/null @@ -1,32 +0,0 @@ -// -// CryptoSwift -// -// Copyright (C) 2014-2017 Marcin Krzyżanowski -// This software is provided 'as-is', without any express or implied warranty. -// -// In no event will the authors be held liable for any damages arising from the use of this software. -// -// Permission is granted to anyone to use this software for any purpose,including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: -// -// - The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation is required. -// - Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -// - This notice may not be removed or altered from any source or binary distribution. -// - -/* - Bit shifting with overflow protection using overflow operator "&". - Approach is consistent with standard overflow operators &+, &-, &*, &/ - and introduce new overflow operators for shifting: &<<, &>> - - Note: Works with unsigned integers values only - - Usage - - var i = 1 // init - var j = i &<< 2 //shift left - j &<<= 2 //shift left and assign - - @see: https://medium.com/@krzyzanowskim/swiftly-shift-bits-and-protect-yourself-be33016ce071 - - This fuctonality is now implemented as part of Swift 3, SE-0104 https://github.com/apple/swift-evolution/blob/master/proposals/0104-improved-integers.md - */ diff --git a/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/PKCS/PBKDF1.swift b/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/PKCS/PBKDF1.swift deleted file mode 100644 index a3a9dee6..00000000 --- a/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/PKCS/PBKDF1.swift +++ /dev/null @@ -1,97 +0,0 @@ -// -// CryptoSwift -// -// Copyright (C) 2014-2017 Marcin Krzyżanowski -// This software is provided 'as-is', without any express or implied warranty. -// -// In no event will the authors be held liable for any damages arising from the use of this software. -// -// Permission is granted to anyone to use this software for any purpose,including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: -// -// - The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation is required. -// - Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -// - This notice may not be removed or altered from any source or binary distribution. -// - -public extension PKCS5 { - /// A key derivation function. - /// - /// PBKDF1 is recommended only for compatibility with existing - /// applications since the keys it produces may not be large enough for - /// some applications. - struct PBKDF1 { - public enum Error: Swift.Error { - case invalidInput - case derivedKeyTooLong - } - - public enum Variant { - case md5, sha1 - - @usableFromInline - var size: Int { - switch self { - case .md5: - return MD5.digestLength - case .sha1: - return SHA1.digestLength - } - } - - @usableFromInline - func calculateHash(_ bytes: Array) -> Array { - switch self { - case .sha1: - return Digest.sha1(bytes) - case .md5: - return Digest.md5(bytes) - } - } - } - - @usableFromInline - let iterations: Int // c - - @usableFromInline - let variant: Variant - - @usableFromInline - let keyLength: Int - - @usableFromInline - let t1: Array - - /// - parameters: - /// - salt: salt, an eight-bytes - /// - variant: hash variant - /// - iterations: iteration count, a positive integer - /// - keyLength: intended length of derived key - public init(password: Array, salt: Array, variant: Variant = .sha1, iterations: Int = 4096 /* c */, keyLength: Int? = nil /* dkLen */ ) throws { - precondition(iterations > 0) - precondition(salt.count == 8) - - let keyLength = keyLength ?? variant.size - - if keyLength > variant.size { - throw Error.derivedKeyTooLong - } - - let t1 = variant.calculateHash(password + salt) - - self.iterations = iterations - self.variant = variant - self.keyLength = keyLength - self.t1 = t1 - } - - /// Apply the underlying hash function Hash for c iterations - @inlinable - public func calculate() -> Array { - var t = self.t1 - for _ in 2...self.iterations { - t = self.variant.calculateHash(t) - } - return Array(t[0.. -// This software is provided 'as-is', without any express or implied warranty. -// -// In no event will the authors be held liable for any damages arising from the use of this software. -// -// Permission is granted to anyone to use this software for any purpose,including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: -// -// - The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation is required. -// - Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -// - This notice may not be removed or altered from any source or binary distribution. -// - -// https://www.ietf.org/rfc/rfc2898.txt -// - -#if canImport(Darwin) -import Darwin -#elseif canImport(Glibc) -import Glibc -#elseif canImport(ucrt) -import ucrt -#endif - -public extension PKCS5 { - /// A key derivation function. - /// - /// PBKDF2 - Password-Based Key Derivation Function 2. Key stretching technique. - /// DK = PBKDF2(PRF, Password, Salt, c, dkLen) - struct PBKDF2 { - public enum Error: Swift.Error { - case invalidInput - case derivedKeyTooLong - } - - private let salt: Array // S - fileprivate let iterations: Int // c - private let numBlocks: Int // l - private let dkLen: Int - fileprivate let prf: HMAC - - /// - parameters: - /// - salt: salt - /// - variant: hash variant - /// - iterations: iteration count, a positive integer - /// - keyLength: intended length of derived key - /// - variant: MAC variant. Defaults to SHA256 - public init(password: Array, salt: Array, iterations: Int = 4096 /* c */, keyLength: Int? = nil /* dkLen */, variant: HMAC.Variant = .sha256) throws { - precondition(iterations > 0) - - let prf = HMAC(key: password, variant: variant) - - guard iterations > 0 && !salt.isEmpty else { - throw Error.invalidInput - } - - self.dkLen = keyLength ?? variant.digestLength - let keyLengthFinal = Double(dkLen) - let hLen = Double(prf.variant.digestLength) - if keyLengthFinal > (pow(2, 32) - 1) * hLen { - throw Error.derivedKeyTooLong - } - - self.salt = salt - self.iterations = iterations - self.prf = prf - - self.numBlocks = Int(ceil(Double(keyLengthFinal) / hLen)) // l = ceil(keyLength / hLen) - } - - public func calculate() throws -> Array { - var ret = Array() - ret.reserveCapacity(self.numBlocks * self.prf.variant.digestLength) - for i in 1...self.numBlocks { - // for each block T_i = U_1 ^ U_2 ^ ... ^ U_iter - if let value = try calculateBlock(self.salt, blockNum: i) { - ret.append(contentsOf: value) - } - } - return Array(ret.prefix(self.dkLen)) - } - } -} - -private extension PKCS5.PBKDF2 { - func ARR(_ i: Int) -> Array { - var inti = Array(repeating: 0, count: 4) - inti[0] = UInt8((i >> 24) & 0xff) - inti[1] = UInt8((i >> 16) & 0xff) - inti[2] = UInt8((i >> 8) & 0xff) - inti[3] = UInt8(i & 0xff) - return inti - } - - // F (P, S, c, i) = U_1 \xor U_2 \xor ... \xor U_c - // U_1 = PRF (P, S || INT (i)) - func calculateBlock(_ salt: Array, blockNum: Int) throws -> Array? { - guard let u1 = try? prf.authenticate(salt + ARR(blockNum)) else { // blockNum.bytes() is slower - return nil - } - - var u = u1 - var ret = u - if iterations > 1 { - // U_2 = PRF (P, U_1) , - // U_c = PRF (P, U_{c-1}) . - for _ in 2...iterations { - u = try prf.authenticate(u) - for x in 0.. -// This software is provided 'as-is', without any express or implied warranty. -// -// In no event will the authors be held liable for any damages arising from the use of this software. -// -// Permission is granted to anyone to use this software for any purpose,including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: -// -// - The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation is required. -// - Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -// - This notice may not be removed or altered from any source or binary distribution. -// - -// PKCS is a group of public-key cryptography standards devised -// and published by RSA Security Inc, starting in the early 1990s. -// - -public enum PKCS5 { - typealias Padding = PKCS7Padding -} diff --git a/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/PKCS/PKCS7.swift b/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/PKCS/PKCS7.swift deleted file mode 100644 index 41000386..00000000 --- a/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/PKCS/PKCS7.swift +++ /dev/null @@ -1,18 +0,0 @@ -// -// CryptoSwift -// -// Copyright (C) 2014-2017 Marcin Krzyżanowski -// This software is provided 'as-is', without any express or implied warranty. -// -// In no event will the authors be held liable for any damages arising from the use of this software. -// -// Permission is granted to anyone to use this software for any purpose,including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: -// -// - The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation is required. -// - Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -// - This notice may not be removed or altered from any source or binary distribution. -// - -public enum PKCS7 { - typealias Padding = PKCS7Padding -} diff --git a/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/PKCS/PKCS7Padding.swift b/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/PKCS/PKCS7Padding.swift deleted file mode 100644 index a524dd67..00000000 --- a/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/PKCS/PKCS7Padding.swift +++ /dev/null @@ -1,62 +0,0 @@ -// -// CryptoSwift -// -// Copyright (C) 2014-2017 Marcin Krzyżanowski -// This software is provided 'as-is', without any express or implied warranty. -// -// In no event will the authors be held liable for any damages arising from the use of this software. -// -// Permission is granted to anyone to use this software for any purpose,including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: -// -// - The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation is required. -// - Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -// - This notice may not be removed or altered from any source or binary distribution. -// - -// PKCS is a group of public-key cryptography standards devised -// and published by RSA Security Inc, starting in the early 1990s. -// - -struct PKCS7Padding: PaddingProtocol { - enum Error: Swift.Error { - case invalidPaddingValue - } - - init() { - } - - @inlinable - func add(to bytes: Array, blockSize: Int) -> Array { - let padding = UInt8(blockSize - (bytes.count % blockSize)) - var withPadding = bytes - if padding == 0 { - // If the original data is a multiple of N bytes, then an extra block of bytes with value N is added. - withPadding += Array(repeating: UInt8(blockSize), count: Int(blockSize)) - } else { - // The value of each added byte is the number of bytes that are added - withPadding += Array(repeating: padding, count: Int(padding)) - } - return withPadding - } - - @inlinable - func remove(from bytes: Array, blockSize _: Int?) -> Array { - guard !bytes.isEmpty, let lastByte = bytes.last else { - return bytes - } - - assert(!bytes.isEmpty, "Need bytes to remove padding") - - let padding = Int(lastByte) // last byte - let finalLength = bytes.count - padding - - if finalLength < 0 { - return bytes - } - - if padding >= 1 { - return Array(bytes[0.. -// This software is provided 'as-is', without any express or implied warranty. -// -// In no event will the authors be held liable for any damages arising from the use of this software. -// -// Permission is granted to anyone to use this software for any purpose,including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: -// -// - The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation is required. -// - Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -// - This notice may not be removed or altered from any source or binary distribution. -// - -public protocol PaddingProtocol { - func add(to: Array, blockSize: Int) -> Array - func remove(from: Array, blockSize: Int?) -> Array -} - -public enum Padding: PaddingProtocol { - case noPadding, zeroPadding, pkcs7, pkcs5, iso78164, iso10126 - - public func add(to: Array, blockSize: Int) -> Array { - switch self { - case .noPadding: - return to // NoPadding().add(to: to, blockSize: blockSize) - case .zeroPadding: - return ZeroPadding().add(to: to, blockSize: blockSize) - case .pkcs7: - return PKCS7.Padding().add(to: to, blockSize: blockSize) - case .pkcs5: - return PKCS5.Padding().add(to: to, blockSize: blockSize) - case .iso78164: - return ISO78164Padding().add(to: to, blockSize: blockSize) - case .iso10126: - return ISO10126Padding().add(to: to, blockSize: blockSize) - } - } - - public func remove(from: Array, blockSize: Int?) -> Array { - switch self { - case .noPadding: - return from //NoPadding().remove(from: from, blockSize: blockSize) - case .zeroPadding: - return ZeroPadding().remove(from: from, blockSize: blockSize) - case .pkcs7: - return PKCS7.Padding().remove(from: from, blockSize: blockSize) - case .pkcs5: - return PKCS5.Padding().remove(from: from, blockSize: blockSize) - case .iso78164: - return ISO78164Padding().remove(from: from, blockSize: blockSize) - case .iso10126: - return ISO10126Padding().remove(from: from, blockSize: blockSize) - } - } -} diff --git a/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/Poly1305.swift b/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/Poly1305.swift deleted file mode 100644 index 1344c7ff..00000000 --- a/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/Poly1305.swift +++ /dev/null @@ -1,165 +0,0 @@ -// -// CryptoSwift -// -// Copyright (C) 2014-2017 Marcin Krzyżanowski -// This software is provided 'as-is', without any express or implied warranty. -// -// In no event will the authors be held liable for any damages arising from the use of this software. -// -// Permission is granted to anyone to use this software for any purpose,including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: -// -// - The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation is required. -// - Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -// - This notice may not be removed or altered from any source or binary distribution. -// - -// http://tools.ietf.org/html/draft-agl-tls-chacha20poly1305-04#section-4 -// nacl/crypto_onetimeauth/poly1305/ref/auth.c -// -/// Poly1305 takes a 32-byte, one-time key and a message and produces a 16-byte tag that authenticates the -/// message such that an attacker has a negligible chance of producing a valid tag for an inauthentic message. - -public final class Poly1305: Authenticator { - public enum Error: Swift.Error { - case authenticateError - } - - public static let blockSize: Int = 16 - - private let key: SecureBytes - - /// - parameter key: 32-byte key - public init(key: Array) { - self.key = SecureBytes(bytes: key) - } - - private func squeeze(h: inout Array) { - assert(h.count == 17) - var u: UInt32 = 0 - for j in 0..<16 { - u = u &+ h[j] - h[j] = u & 255 - u = u >> 8 - } - - u = u &+ h[16] - h[16] = u & 3 - u = 5 * (u >> 2) - - for j in 0..<16 { - u = u &+ h[j] - h[j] = u & 255 - u = u >> 8 - } - - u = u &+ h[16] - h[16] = u - } - - private func add(h: inout Array, c: Array) { - assert(h.count == 17 && c.count == 17) - - var u: UInt32 = 0 - for j in 0..<17 { - u = u &+ (h[j] &+ c[j]) - h[j] = u & 255 - u = u >> 8 - } - } - - private func mulmod(h: inout Array, r: Array) { - var hr = Array(repeating: 0, count: 17) - var u: UInt32 = 0 - for i in 0..<17 { - u = 0 - for j in 0...i { - u = u &+ (h[j] * r[i &- j]) - } - for j in (i + 1)..<17 { - u = u &+ (320 * h[j] * r[i &+ 17 &- j]) - } - hr[i] = u - } - h = hr - self.squeeze(h: &h) - } - - private func freeze(h: inout Array) { - let horig = h - self.add(h: &h, c: [5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 252]) - let negative = UInt32(bitPattern: -Int32(h[16] >> 7)) - for j in 0..<17 { - h[j] ^= negative & (horig[j] ^ h[j]) - } - } - - /// the key is partitioned into two parts, called "r" and "s" - fileprivate func onetimeauth(message input: Array, key k: Array) -> Array { - // clamp - var r = Array(repeating: 0, count: 17) - var h = Array(repeating: 0, count: 17) - var c = Array(repeating: 0, count: 17) - - r[0] = UInt32(k[0]) - r[1] = UInt32(k[1]) - r[2] = UInt32(k[2]) - r[3] = UInt32(k[3] & 15) - r[4] = UInt32(k[4] & 252) - r[5] = UInt32(k[5]) - r[6] = UInt32(k[6]) - r[7] = UInt32(k[7] & 15) - r[8] = UInt32(k[8] & 252) - r[9] = UInt32(k[9]) - r[10] = UInt32(k[10]) - r[11] = UInt32(k[11] & 15) - r[12] = UInt32(k[12] & 252) - r[13] = UInt32(k[13]) - r[14] = UInt32(k[14]) - r[15] = UInt32(k[15] & 15) - r[16] = 0 - - var inlen = input.count - var inpos = 0 - while inlen > 0 { - for j in 0..) throws -> Array { - self.onetimeauth(message: bytes, key: Array(self.key)) - } -} diff --git a/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/Rabbit.swift b/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/Rabbit.swift deleted file mode 100644 index 2f1d4daf..00000000 --- a/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/Rabbit.swift +++ /dev/null @@ -1,221 +0,0 @@ -// -// CryptoSwift -// -// Copyright (C) 2014-2017 Marcin Krzyżanowski -// This software is provided 'as-is', without any express or implied warranty. -// -// In no event will the authors be held liable for any damages arising from the use of this software. -// -// Permission is granted to anyone to use this software for any purpose,including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: -// -// - The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation is required. -// - Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -// - This notice may not be removed or altered from any source or binary distribution. -// - -public final class Rabbit: BlockCipher { - public enum Error: Swift.Error { - case invalidKeyOrInitializationVector - } - - /// Size of IV in bytes - public static let ivSize = 64 / 8 - - /// Size of key in bytes - public static let keySize = 128 / 8 - - /// Size of block in bytes - public static let blockSize = 128 / 8 - - public var keySize: Int { - self.key.count - } - - /// Key - private let key: Key - - /// IV (optional) - private let iv: Array? - - /// State variables - private var x = Array(repeating: 0, count: 8) - - /// Counter variables - private var c = Array(repeating: 0, count: 8) - - /// Counter carry - private var p7: UInt32 = 0 - - /// 'a' constants - private var a: Array = [ - 0x4d34d34d, - 0xd34d34d3, - 0x34d34d34, - 0x4d34d34d, - 0xd34d34d3, - 0x34d34d34, - 0x4d34d34d, - 0xd34d34d3 - ] - - // MARK: - Initializers - - public convenience init(key: Array) throws { - try self.init(key: key, iv: nil) - } - - public init(key: Array, iv: Array?) throws { - self.key = Key(bytes: key) - self.iv = iv - - guard key.count == Rabbit.keySize && (iv == nil || iv!.count == Rabbit.ivSize) else { - throw Error.invalidKeyOrInitializationVector - } - } - - // MARK: - - - fileprivate func setup() { - self.p7 = 0 - - // Key divided into 8 subkeys - let k = Array(unsafeUninitializedCapacity: 8) { buf, count in - for j in 0..<8 { - buf[j] = UInt32(self.key[Rabbit.blockSize - (2 * j + 1)]) | (UInt32(self.key[Rabbit.blockSize - (2 * j + 2)]) << 8) - } - count = 8 - } - - // Initialize state and counter variables from subkeys - for j in 0..<8 { - if j % 2 == 0 { - self.x[j] = (k[(j + 1) % 8] << 16) | k[j] - self.c[j] = (k[(j + 4) % 8] << 16) | k[(j + 5) % 8] - } else { - self.x[j] = (k[(j + 5) % 8] << 16) | k[(j + 4) % 8] - self.c[j] = (k[j] << 16) | k[(j + 1) % 8] - } - } - - // Iterate system four times - self.nextState() - self.nextState() - self.nextState() - self.nextState() - - // Reinitialize counter variables - for j in 0..<8 { - self.c[j] = self.c[j] ^ self.x[(j + 4) % 8] - } - - if let iv = iv { - self.setupIV(iv) - } - } - - private func setupIV(_ iv: Array) { - // 63...56 55...48 47...40 39...32 31...24 23...16 15...8 7...0 IV bits - // 0 1 2 3 4 5 6 7 IV bytes in array - let iv0 = UInt32(bytes: [iv[4], iv[5], iv[6], iv[7]]) - let iv1 = UInt32(bytes: [iv[0], iv[1], iv[4], iv[5]]) - let iv2 = UInt32(bytes: [iv[0], iv[1], iv[2], iv[3]]) - let iv3 = UInt32(bytes: [iv[2], iv[3], iv[6], iv[7]]) - - // Modify the counter state as function of the IV - c[0] = self.c[0] ^ iv0 - self.c[1] = self.c[1] ^ iv1 - self.c[2] = self.c[2] ^ iv2 - self.c[3] = self.c[3] ^ iv3 - self.c[4] = self.c[4] ^ iv0 - self.c[5] = self.c[5] ^ iv1 - self.c[6] = self.c[6] ^ iv2 - self.c[7] = self.c[7] ^ iv3 - - // Iterate system four times - self.nextState() - self.nextState() - self.nextState() - self.nextState() - } - - private func nextState() { - // Before an iteration the counters are incremented - var carry = self.p7 - for j in 0..<8 { - let prev = self.c[j] - self.c[j] = prev &+ self.a[j] &+ carry - carry = prev > self.c[j] ? 1 : 0 // detect overflow - } - self.p7 = carry // save last carry bit - - // Iteration of the system - self.x = Array(unsafeUninitializedCapacity: 8) { newX, count in - newX[0] = self.g(0) &+ rotateLeft(self.g(7), by: 16) &+ rotateLeft(self.g(6), by: 16) - newX[1] = self.g(1) &+ rotateLeft(self.g(0), by: 8) &+ self.g(7) - newX[2] = self.g(2) &+ rotateLeft(self.g(1), by: 16) &+ rotateLeft(self.g(0), by: 16) - newX[3] = self.g(3) &+ rotateLeft(self.g(2), by: 8) &+ self.g(1) - newX[4] = self.g(4) &+ rotateLeft(self.g(3), by: 16) &+ rotateLeft(self.g(2), by: 16) - newX[5] = self.g(5) &+ rotateLeft(self.g(4), by: 8) &+ self.g(3) - newX[6] = self.g(6) &+ rotateLeft(self.g(5), by: 16) &+ rotateLeft(self.g(4), by: 16) - newX[7] = self.g(7) &+ rotateLeft(self.g(6), by: 8) &+ self.g(5) - count = 8 - } - } - - private func g(_ j: Int) -> UInt32 { - let sum = self.x[j] &+ self.c[j] - let square = UInt64(sum) * UInt64(sum) - return UInt32(truncatingIfNeeded: square ^ (square >> 32)) - } - - fileprivate func nextOutput() -> Array { - self.nextState() - - var output16 = Array(repeating: 0, count: Rabbit.blockSize / 2) - output16[7] = UInt16(truncatingIfNeeded: self.x[0]) ^ UInt16(truncatingIfNeeded: self.x[5] >> 16) - output16[6] = UInt16(truncatingIfNeeded: self.x[0] >> 16) ^ UInt16(truncatingIfNeeded: self.x[3]) - output16[5] = UInt16(truncatingIfNeeded: self.x[2]) ^ UInt16(truncatingIfNeeded: self.x[7] >> 16) - output16[4] = UInt16(truncatingIfNeeded: self.x[2] >> 16) ^ UInt16(truncatingIfNeeded: self.x[5]) - output16[3] = UInt16(truncatingIfNeeded: self.x[4]) ^ UInt16(truncatingIfNeeded: self.x[1] >> 16) - output16[2] = UInt16(truncatingIfNeeded: self.x[4] >> 16) ^ UInt16(truncatingIfNeeded: self.x[7]) - output16[1] = UInt16(truncatingIfNeeded: self.x[6]) ^ UInt16(truncatingIfNeeded: self.x[3] >> 16) - output16[0] = UInt16(truncatingIfNeeded: self.x[6] >> 16) ^ UInt16(truncatingIfNeeded: self.x[1]) - - var output8 = Array(repeating: 0, count: Rabbit.blockSize) - for j in 0..> 8) - output8[j * 2 + 1] = UInt8(truncatingIfNeeded: output16[j]) - } - return output8 - } -} - -// MARK: Cipher - -extension Rabbit: Cipher { - public func encrypt(_ bytes: ArraySlice) throws -> Array { - self.setup() - - return Array(unsafeUninitializedCapacity: bytes.count) { result, count in - var output = self.nextOutput() - var byteIdx = 0 - var outputIdx = 0 - while byteIdx < bytes.count { - if outputIdx == Rabbit.blockSize { - output = self.nextOutput() - outputIdx = 0 - } - - result[byteIdx] = bytes[byteIdx] ^ output[outputIdx] - - byteIdx += 1 - outputIdx += 1 - } - count = bytes.count - } - } - - public func decrypt(_ bytes: ArraySlice) throws -> Array { - try self.encrypt(bytes) - } -} diff --git a/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/SHA1.swift b/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/SHA1.swift deleted file mode 100644 index 1f06f39d..00000000 --- a/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/SHA1.swift +++ /dev/null @@ -1,158 +0,0 @@ -// -// CryptoSwift -// -// Copyright (C) 2014-2017 Marcin Krzyżanowski -// This software is provided 'as-is', without any express or implied warranty. -// -// In no event will the authors be held liable for any damages arising from the use of this software. -// -// Permission is granted to anyone to use this software for any purpose,including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: -// -// - The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation is required. -// - Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -// - This notice may not be removed or altered from any source or binary distribution. -// - -public final class SHA1: DigestType { - - @usableFromInline - static let digestLength: Int = 20 // 160 / 8 - - @usableFromInline - static let blockSize: Int = 64 - - @usableFromInline - static let hashInitialValue: ContiguousArray = [0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0] - - @usableFromInline - var accumulated = Array() - - @usableFromInline - var processedBytesTotalCount: Int = 0 - - @usableFromInline - var accumulatedHash: ContiguousArray = SHA1.hashInitialValue - - public init() { - } - - @inlinable - public func calculate(for bytes: Array) -> Array { - do { - return try update(withBytes: bytes.slice, isLast: true) - } catch { - return [] - } - } - - @usableFromInline - func process(block chunk: ArraySlice, currentHash hh: inout ContiguousArray) { - // break chunk into sixteen 32-bit words M[j], 0 ≤ j ≤ 15, big-endian - // Extend the sixteen 32-bit words into eighty 32-bit words: - let M = UnsafeMutablePointer.allocate(capacity: 80) - M.initialize(repeating: 0, count: 80) - defer { - M.deinitialize(count: 80) - M.deallocate() - } - - for x in 0..<80 { - switch x { - case 0...15: - let start = chunk.startIndex.advanced(by: x * 4) // * MemoryLayout.size - M[x] = UInt32(bytes: chunk, fromIndex: start) - default: - M[x] = rotateLeft(M[x - 3] ^ M[x - 8] ^ M[x - 14] ^ M[x - 16], by: 1) - } - } - - var A = hh[0] - var B = hh[1] - var C = hh[2] - var D = hh[3] - var E = hh[4] - - // Main loop - for j in 0...79 { - var f: UInt32 = 0 - var k: UInt32 = 0 - - switch j { - case 0...19: - f = (B & C) | ((~B) & D) - k = 0x5a827999 - case 20...39: - f = B ^ C ^ D - k = 0x6ed9eba1 - case 40...59: - f = (B & C) | (B & D) | (C & D) - k = 0x8f1bbcdc - case 60...79: - f = B ^ C ^ D - k = 0xca62c1d6 - default: - break - } - - let temp = rotateLeft(A, by: 5) &+ f &+ E &+ M[j] &+ k - E = D - D = C - C = rotateLeft(B, by: 30) - B = A - A = temp - } - - hh[0] = hh[0] &+ A - hh[1] = hh[1] &+ B - hh[2] = hh[2] &+ C - hh[3] = hh[3] &+ D - hh[4] = hh[4] &+ E - } -} - -extension SHA1: Updatable { - @discardableResult @inlinable - public func update(withBytes bytes: ArraySlice, isLast: Bool = false) throws -> Array { - self.accumulated += bytes - - if isLast { - let lengthInBits = (processedBytesTotalCount + self.accumulated.count) * 8 - let lengthBytes = lengthInBits.bytes(totalBytes: 64 / 8) // A 64-bit representation of b - - // Step 1. Append padding - bitPadding(to: &self.accumulated, blockSize: SHA1.blockSize, allowance: 64 / 8) - - // Step 2. Append Length a 64-bit representation of lengthInBits - self.accumulated += lengthBytes - } - - var processedBytes = 0 - for chunk in self.accumulated.batched(by: SHA1.blockSize) { - if isLast || (self.accumulated.count - processedBytes) >= SHA1.blockSize { - self.process(block: chunk, currentHash: &self.accumulatedHash) - processedBytes += chunk.count - } - } - self.accumulated.removeFirst(processedBytes) - self.processedBytesTotalCount += processedBytes - - // output current hash - var result = Array(repeating: 0, count: SHA1.digestLength) - var pos = 0 - for idx in 0..> 24) & 0xff) - result[pos + 1] = UInt8((h >> 16) & 0xff) - result[pos + 2] = UInt8((h >> 8) & 0xff) - result[pos + 3] = UInt8(h & 0xff) - pos += 4 - } - - // reset hash value for instance - if isLast { - self.accumulatedHash = SHA1.hashInitialValue - } - - return result - } -} diff --git a/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/SHA2.swift b/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/SHA2.swift deleted file mode 100644 index 76625df3..00000000 --- a/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/SHA2.swift +++ /dev/null @@ -1,368 +0,0 @@ -// -// CryptoSwift -// -// Copyright (C) 2014-2017 Marcin Krzyżanowski -// This software is provided 'as-is', without any express or implied warranty. -// -// In no event will the authors be held liable for any damages arising from the use of this software. -// -// Permission is granted to anyone to use this software for any purpose,including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: -// -// - The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation is required. -// - Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -// - This notice may not be removed or altered from any source or binary distribution. -// - -// TODO: generic for process32/64 (UInt32/UInt64) -// - -public final class SHA2: DigestType { - @usableFromInline - let variant: Variant - - @usableFromInline - let size: Int - - @usableFromInline - let blockSize: Int - - @usableFromInline - let digestLength: Int - - private let k: Array - - @usableFromInline - var accumulated = Array() - - @usableFromInline - var processedBytesTotalCount: Int = 0 - - @usableFromInline - var accumulatedHash32 = Array() - - @usableFromInline - var accumulatedHash64 = Array() - - @frozen - public enum Variant: RawRepresentable { - case sha224, sha256, sha384, sha512 - - public var digestLength: Int { - self.rawValue / 8 - } - - public var blockSize: Int { - switch self { - case .sha224, .sha256: - return 64 - case .sha384, .sha512: - return 128 - } - } - - public typealias RawValue = Int - public var rawValue: RawValue { - switch self { - case .sha224: - return 224 - case .sha256: - return 256 - case .sha384: - return 384 - case .sha512: - return 512 - } - } - - public init?(rawValue: RawValue) { - switch rawValue { - case 224: - self = .sha224 - case 256: - self = .sha256 - case 384: - self = .sha384 - case 512: - self = .sha512 - default: - return nil - } - } - - @usableFromInline - var h: Array { - switch self { - case .sha224: - return [0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939, 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4] - case .sha256: - return [0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a, 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19] - case .sha384: - return [0xcbbb9d5dc1059ed8, 0x629a292a367cd507, 0x9159015a3070dd17, 0x152fecd8f70e5939, 0x67332667ffc00b31, 0x8eb44a8768581511, 0xdb0c2e0d64f98fa7, 0x47b5481dbefa4fa4] - case .sha512: - return [0x6a09e667f3bcc908, 0xbb67ae8584caa73b, 0x3c6ef372fe94f82b, 0xa54ff53a5f1d36f1, 0x510e527fade682d1, 0x9b05688c2b3e6c1f, 0x1f83d9abfb41bd6b, 0x5be0cd19137e2179] - } - } - - @usableFromInline - var finalLength: Int { - switch self { - case .sha224: - return 7 - case .sha384: - return 6 - default: - return Int.max - } - } - } - - public init(variant: SHA2.Variant) { - self.variant = variant - switch self.variant { - case .sha224, .sha256: - self.accumulatedHash32 = variant.h.map { UInt32($0) } // FIXME: UInt64 for process64 - self.blockSize = variant.blockSize - self.size = variant.rawValue - self.digestLength = variant.digestLength - self.k = [ - 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5, - 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174, - 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, - 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967, - 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85, - 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070, - 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3, - 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2 - ] - case .sha384, .sha512: - self.accumulatedHash64 = variant.h - self.blockSize = variant.blockSize - self.size = variant.rawValue - self.digestLength = variant.digestLength - self.k = [ - 0x428a2f98d728ae22, 0x7137449123ef65cd, 0xb5c0fbcfec4d3b2f, 0xe9b5dba58189dbbc, 0x3956c25bf348b538, - 0x59f111f1b605d019, 0x923f82a4af194f9b, 0xab1c5ed5da6d8118, 0xd807aa98a3030242, 0x12835b0145706fbe, - 0x243185be4ee4b28c, 0x550c7dc3d5ffb4e2, 0x72be5d74f27b896f, 0x80deb1fe3b1696b1, 0x9bdc06a725c71235, - 0xc19bf174cf692694, 0xe49b69c19ef14ad2, 0xefbe4786384f25e3, 0x0fc19dc68b8cd5b5, 0x240ca1cc77ac9c65, - 0x2de92c6f592b0275, 0x4a7484aa6ea6e483, 0x5cb0a9dcbd41fbd4, 0x76f988da831153b5, 0x983e5152ee66dfab, - 0xa831c66d2db43210, 0xb00327c898fb213f, 0xbf597fc7beef0ee4, 0xc6e00bf33da88fc2, 0xd5a79147930aa725, - 0x06ca6351e003826f, 0x142929670a0e6e70, 0x27b70a8546d22ffc, 0x2e1b21385c26c926, 0x4d2c6dfc5ac42aed, - 0x53380d139d95b3df, 0x650a73548baf63de, 0x766a0abb3c77b2a8, 0x81c2c92e47edaee6, 0x92722c851482353b, - 0xa2bfe8a14cf10364, 0xa81a664bbc423001, 0xc24b8b70d0f89791, 0xc76c51a30654be30, 0xd192e819d6ef5218, - 0xd69906245565a910, 0xf40e35855771202a, 0x106aa07032bbd1b8, 0x19a4c116b8d2d0c8, 0x1e376c085141ab53, - 0x2748774cdf8eeb99, 0x34b0bcb5e19b48a8, 0x391c0cb3c5c95a63, 0x4ed8aa4ae3418acb, 0x5b9cca4f7763e373, - 0x682e6ff3d6b2b8a3, 0x748f82ee5defb2fc, 0x78a5636f43172f60, 0x84c87814a1f0ab72, 0x8cc702081a6439ec, - 0x90befffa23631e28, 0xa4506cebde82bde9, 0xbef9a3f7b2c67915, 0xc67178f2e372532b, 0xca273eceea26619c, - 0xd186b8c721c0c207, 0xeada7dd6cde0eb1e, 0xf57d4f7fee6ed178, 0x06f067aa72176fba, 0x0a637dc5a2c898a6, - 0x113f9804bef90dae, 0x1b710b35131c471b, 0x28db77f523047d84, 0x32caab7b40c72493, 0x3c9ebe0a15c9bebc, - 0x431d67c49c100d4c, 0x4cc5d4becb3e42b6, 0x597f299cfc657e2a, 0x5fcb6fab3ad6faec, 0x6c44198c4a475817 - ] - } - } - - @inlinable - public func calculate(for bytes: Array) -> Array { - do { - return try update(withBytes: bytes.slice, isLast: true) - } catch { - return [] - } - } - - @usableFromInline - func process64(block chunk: ArraySlice, currentHash hh: inout Array) { - // break chunk into sixteen 64-bit words M[j], 0 ≤ j ≤ 15, big-endian - // Extend the sixteen 64-bit words into eighty 64-bit words: - let M = UnsafeMutablePointer.allocate(capacity: self.k.count) - M.initialize(repeating: 0, count: self.k.count) - defer { - M.deinitialize(count: self.k.count) - M.deallocate() - } - for x in 0...size - M[x] = UInt64(bytes: chunk, fromIndex: start) - default: - let s0 = rotateRight(M[x - 15], by: 1) ^ rotateRight(M[x - 15], by: 8) ^ (M[x - 15] >> 7) - let s1 = rotateRight(M[x - 2], by: 19) ^ rotateRight(M[x - 2], by: 61) ^ (M[x - 2] >> 6) - M[x] = M[x - 16] &+ s0 &+ M[x - 7] &+ s1 - } - } - - var A = hh[0] - var B = hh[1] - var C = hh[2] - var D = hh[3] - var E = hh[4] - var F = hh[5] - var G = hh[6] - var H = hh[7] - - // Main loop - for j in 0.., currentHash hh: inout Array) { - // break chunk into sixteen 32-bit words M[j], 0 ≤ j ≤ 15, big-endian - // Extend the sixteen 32-bit words into sixty-four 32-bit words: - let M = UnsafeMutablePointer.allocate(capacity: self.k.count) - M.initialize(repeating: 0, count: self.k.count) - defer { - M.deinitialize(count: self.k.count) - M.deallocate() - } - - for x in 0...size - M[x] = UInt32(bytes: chunk, fromIndex: start) - default: - let s0 = rotateRight(M[x - 15], by: 7) ^ rotateRight(M[x - 15], by: 18) ^ (M[x - 15] >> 3) - let s1 = rotateRight(M[x - 2], by: 17) ^ rotateRight(M[x - 2], by: 19) ^ (M[x - 2] >> 10) - M[x] = M[x - 16] &+ s0 &+ M[x - 7] &+ s1 - } - } - - var A = hh[0] - var B = hh[1] - var C = hh[2] - var D = hh[3] - var E = hh[4] - var F = hh[5] - var G = hh[6] - var H = hh[7] - - // Main loop - for j in 0.., isLast: Bool = false) throws -> Array { - self.accumulated += bytes - - if isLast { - let lengthInBits = (processedBytesTotalCount + self.accumulated.count) * 8 - let lengthBytes = lengthInBits.bytes(totalBytes: self.blockSize / 8) // A 64-bit/128-bit representation of b. blockSize fit by accident. - - // Step 1. Append padding - bitPadding(to: &self.accumulated, blockSize: self.blockSize, allowance: self.blockSize / 8) - - // Step 2. Append Length a 64-bit representation of lengthInBits - self.accumulated += lengthBytes - } - - var processedBytes = 0 - for chunk in self.accumulated.batched(by: self.blockSize) { - if isLast || (self.accumulated.count - processedBytes) >= self.blockSize { - switch self.variant { - case .sha224, .sha256: - self.process32(block: chunk, currentHash: &self.accumulatedHash32) - case .sha384, .sha512: - self.process64(block: chunk, currentHash: &self.accumulatedHash64) - } - processedBytes += chunk.count - } - } - self.accumulated.removeFirst(processedBytes) - self.processedBytesTotalCount += processedBytes - - // output current hash - var result = Array(repeating: 0, count: variant.digestLength) - switch self.variant { - case .sha224, .sha256: - var pos = 0 - for idx in 0..> 24) & 0xff) - result[pos + 1] = UInt8((h >> 16) & 0xff) - result[pos + 2] = UInt8((h >> 8) & 0xff) - result[pos + 3] = UInt8(h & 0xff) - pos += 4 - } - case .sha384, .sha512: - var pos = 0 - for idx in 0..> 56) & 0xff) - result[pos + 1] = UInt8((h >> 48) & 0xff) - result[pos + 2] = UInt8((h >> 40) & 0xff) - result[pos + 3] = UInt8((h >> 32) & 0xff) - result[pos + 4] = UInt8((h >> 24) & 0xff) - result[pos + 5] = UInt8((h >> 16) & 0xff) - result[pos + 6] = UInt8((h >> 8) & 0xff) - result[pos + 7] = UInt8(h & 0xff) - pos += 8 - } - } - - // reset hash value for instance - if isLast { - switch self.variant { - case .sha224, .sha256: - self.accumulatedHash32 = self.variant.h.lazy.map { UInt32($0) } // FIXME: UInt64 for process64 - case .sha384, .sha512: - self.accumulatedHash64 = self.variant.h - } - } - - return result - } -} diff --git a/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/SHA3.swift b/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/SHA3.swift deleted file mode 100644 index d988f98a..00000000 --- a/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/SHA3.swift +++ /dev/null @@ -1,299 +0,0 @@ -// -// CryptoSwift -// -// Copyright (C) 2014-2017 Marcin Krzyżanowski -// This software is provided 'as-is', without any express or implied warranty. -// -// In no event will the authors be held liable for any damages arising from the use of this software. -// -// Permission is granted to anyone to use this software for any purpose,including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: -// -// - The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation is required. -// - Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -// - This notice may not be removed or altered from any source or binary distribution. -// - -// http://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.202.pdf -// http://keccak.noekeon.org/specs_summary.html -// - -#if canImport(Darwin) -import Darwin -#elseif canImport(Glibc) -import Glibc -#elseif canImport(ucrt) -import ucrt -#endif - -public final class SHA3: DigestType { - let round_constants: Array = [ - 0x0000000000000001, 0x0000000000008082, 0x800000000000808a, 0x8000000080008000, - 0x000000000000808b, 0x0000000080000001, 0x8000000080008081, 0x8000000000008009, - 0x000000000000008a, 0x0000000000000088, 0x0000000080008009, 0x000000008000000a, - 0x000000008000808b, 0x800000000000008b, 0x8000000000008089, 0x8000000000008003, - 0x8000000000008002, 0x8000000000000080, 0x000000000000800a, 0x800000008000000a, - 0x8000000080008081, 0x8000000000008080, 0x0000000080000001, 0x8000000080008008 - ] - - public let blockSize: Int - public let digestLength: Int - public let markByte: UInt8 - - @usableFromInline - var accumulated = Array() - - - @usableFromInline - var accumulatedHash: Array - - public enum Variant { - case sha224, sha256, sha384, sha512, keccak224, keccak256, keccak384, keccak512 - - var digestLength: Int { - 100 - (self.blockSize / 2) - } - - var blockSize: Int { - (1600 - self.outputLength * 2) / 8 - } - - var markByte: UInt8 { - switch self { - case .sha224, .sha256, .sha384, .sha512: - return 0x06 // 0x1F for SHAKE - case .keccak224, .keccak256, .keccak384, .keccak512: - return 0x01 - } - } - - public var outputLength: Int { - switch self { - case .sha224, .keccak224: - return 224 - case .sha256, .keccak256: - return 256 - case .sha384, .keccak384: - return 384 - case .sha512, .keccak512: - return 512 - } - } - } - - public init(variant: SHA3.Variant) { - self.blockSize = variant.blockSize - self.digestLength = variant.digestLength - self.markByte = variant.markByte - self.accumulatedHash = Array(repeating: 0, count: self.digestLength) - } - - @inlinable - public func calculate(for bytes: Array) -> Array { - do { - return try update(withBytes: bytes.slice, isLast: true) - } catch { - return [] - } - } - - /// 1. For all pairs (x,z) such that 0≤x<5 and 0≤z) { - let c = UnsafeMutablePointer.allocate(capacity: 5) - c.initialize(repeating: 0, count: 5) - defer { - c.deinitialize(count: 5) - c.deallocate() - } - let d = UnsafeMutablePointer.allocate(capacity: 5) - d.initialize(repeating: 0, count: 5) - defer { - d.deinitialize(count: 5) - d.deallocate() - } - - for i in 0..<5 { - c[i] = a[i] ^ a[i &+ 5] ^ a[i &+ 10] ^ a[i &+ 15] ^ a[i &+ 20] - } - - d[0] = rotateLeft(c[1], by: 1) ^ c[4] - d[1] = rotateLeft(c[2], by: 1) ^ c[0] - d[2] = rotateLeft(c[3], by: 1) ^ c[1] - d[3] = rotateLeft(c[4], by: 1) ^ c[2] - d[4] = rotateLeft(c[0], by: 1) ^ c[3] - - for i in 0..<5 { - a[i] ^= d[i] - a[i &+ 5] ^= d[i] - a[i &+ 10] ^= d[i] - a[i &+ 15] ^= d[i] - a[i &+ 20] ^= d[i] - } - } - - /// A′[x, y, z]=A[(x &+ 3y) mod 5, x, z] - private func π(_ a: inout Array) { - let a1 = a[1] - a[1] = a[6] - a[6] = a[9] - a[9] = a[22] - a[22] = a[14] - a[14] = a[20] - a[20] = a[2] - a[2] = a[12] - a[12] = a[13] - a[13] = a[19] - a[19] = a[23] - a[23] = a[15] - a[15] = a[4] - a[4] = a[24] - a[24] = a[21] - a[21] = a[8] - a[8] = a[16] - a[16] = a[5] - a[5] = a[3] - a[3] = a[18] - a[18] = a[17] - a[17] = a[11] - a[11] = a[7] - a[7] = a[10] - a[10] = a1 - } - - /// For all triples (x, y, z) such that 0≤x<5, 0≤y<5, and 0≤z) { - for i in stride(from: 0, to: 25, by: 5) { - let a0 = a[0 &+ i] - let a1 = a[1 &+ i] - a[0 &+ i] ^= ~a1 & a[2 &+ i] - a[1 &+ i] ^= ~a[2 &+ i] & a[3 &+ i] - a[2 &+ i] ^= ~a[3 &+ i] & a[4 &+ i] - a[3 &+ i] ^= ~a[4 &+ i] & a0 - a[4 &+ i] ^= ~a0 & a1 - } - } - - private func ι(_ a: inout Array, round: Int) { - a[0] ^= self.round_constants[round] - } - - @usableFromInline - func process(block chunk: ArraySlice, currentHash hh: inout Array) { - // expand - hh[0] ^= chunk[0].littleEndian - hh[1] ^= chunk[1].littleEndian - hh[2] ^= chunk[2].littleEndian - hh[3] ^= chunk[3].littleEndian - hh[4] ^= chunk[4].littleEndian - hh[5] ^= chunk[5].littleEndian - hh[6] ^= chunk[6].littleEndian - hh[7] ^= chunk[7].littleEndian - hh[8] ^= chunk[8].littleEndian - if self.blockSize > 72 { // 72 / 8, sha-512 - hh[9] ^= chunk[9].littleEndian - hh[10] ^= chunk[10].littleEndian - hh[11] ^= chunk[11].littleEndian - hh[12] ^= chunk[12].littleEndian - if self.blockSize > 104 { // 104 / 8, sha-384 - hh[13] ^= chunk[13].littleEndian - hh[14] ^= chunk[14].littleEndian - hh[15] ^= chunk[15].littleEndian - hh[16] ^= chunk[16].littleEndian - if self.blockSize > 136 { // 136 / 8, sha-256 - hh[17] ^= chunk[17].littleEndian - // FULL_SHA3_FAMILY_SUPPORT - if self.blockSize > 144 { // 144 / 8, sha-224 - hh[18] ^= chunk[18].littleEndian - hh[19] ^= chunk[19].littleEndian - hh[20] ^= chunk[20].littleEndian - hh[21] ^= chunk[21].littleEndian - hh[22] ^= chunk[22].littleEndian - hh[23] ^= chunk[23].littleEndian - hh[24] ^= chunk[24].littleEndian - } - } - } - } - - // Keccak-f - for round in 0..<24 { - self.θ(&hh) - - hh[1] = rotateLeft(hh[1], by: 1) - hh[2] = rotateLeft(hh[2], by: 62) - hh[3] = rotateLeft(hh[3], by: 28) - hh[4] = rotateLeft(hh[4], by: 27) - hh[5] = rotateLeft(hh[5], by: 36) - hh[6] = rotateLeft(hh[6], by: 44) - hh[7] = rotateLeft(hh[7], by: 6) - hh[8] = rotateLeft(hh[8], by: 55) - hh[9] = rotateLeft(hh[9], by: 20) - hh[10] = rotateLeft(hh[10], by: 3) - hh[11] = rotateLeft(hh[11], by: 10) - hh[12] = rotateLeft(hh[12], by: 43) - hh[13] = rotateLeft(hh[13], by: 25) - hh[14] = rotateLeft(hh[14], by: 39) - hh[15] = rotateLeft(hh[15], by: 41) - hh[16] = rotateLeft(hh[16], by: 45) - hh[17] = rotateLeft(hh[17], by: 15) - hh[18] = rotateLeft(hh[18], by: 21) - hh[19] = rotateLeft(hh[19], by: 8) - hh[20] = rotateLeft(hh[20], by: 18) - hh[21] = rotateLeft(hh[21], by: 2) - hh[22] = rotateLeft(hh[22], by: 61) - hh[23] = rotateLeft(hh[23], by: 56) - hh[24] = rotateLeft(hh[24], by: 14) - - self.π(&hh) - self.χ(&hh) - self.ι(&hh, round: round) - } - } -} - -extension SHA3: Updatable { - - @inlinable - public func update(withBytes bytes: ArraySlice, isLast: Bool = false) throws -> Array { - self.accumulated += bytes - - if isLast { - // Add padding - let markByteIndex = self.accumulated.count - - // We need to always pad the input. Even if the input is a multiple of blockSize. - let r = self.blockSize * 8 - let q = (r / 8) - (accumulated.count % (r / 8)) - self.accumulated += Array(repeating: 0, count: q) - - self.accumulated[markByteIndex] |= self.markByte - self.accumulated[self.accumulated.count - 1] |= 0x80 - } - - var processedBytes = 0 - for chunk in self.accumulated.batched(by: self.blockSize) { - if isLast || (self.accumulated.count - processedBytes) >= self.blockSize { - self.process(block: chunk.toUInt64Array().slice, currentHash: &self.accumulatedHash) - processedBytes += chunk.count - } - } - self.accumulated.removeFirst(processedBytes) - - // TODO: verify performance, reduce vs for..in - let result = self.accumulatedHash.reduce(into: Array()) { (result, value) in - result += value.bigEndian.bytes() - } - - // reset hash value for instance - if isLast { - self.accumulatedHash = Array(repeating: 0, count: self.digestLength) - } - - return Array(result[0.. -// This software is provided 'as-is', without any express or implied warranty. -// -// In no event will the authors be held liable for any damages arising from the use of this software. -// -// Permission is granted to anyone to use this software for any purpose,including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: -// -// - The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation is required. -// - Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -// - This notice may not be removed or altered from any source or binary distribution. -// - -// -// https://tools.ietf.org/html/rfc7914 -// - -/// Implementation of the scrypt key derivation function. -public final class Scrypt { - enum Error: Swift.Error { - case nIsTooLarge - case rIsTooLarge - case nMustBeAPowerOf2GreaterThan1 - case invalidInput - } - - /// Configuration parameters. - private let salt: SecureBytes - private let password: SecureBytes - private let blocksize: Int // 128 * r - private let salsaBlock = UnsafeMutableRawPointer.allocate(byteCount: 64, alignment: 64) - private let dkLen: Int - private let N: Int - private let r: Int - private let p: Int - - /// - parameters: - /// - password: password - /// - salt: salt - /// - dkLen: output length - /// - N: determines extra memory used - /// - r: determines a block size - /// - p: determines parallelicity degree - public init(password: Array, salt: Array, dkLen: Int, N: Int, r: Int, p: Int) throws { - precondition(dkLen > 0) - precondition(N > 0) - precondition(r > 0) - precondition(p > 0) - - guard !(N < 2 || (N & (N - 1)) != 0) else { throw Error.nMustBeAPowerOf2GreaterThan1 } - - guard N <= .max / 128 / r else { throw Error.nIsTooLarge } - guard r <= .max / 128 / p else { throw Error.rIsTooLarge } - - guard !salt.isEmpty else { - throw Error.invalidInput - } - - self.blocksize = 128 * r - self.N = N - self.r = r - self.p = p - self.password = SecureBytes(bytes: password) - self.salt = SecureBytes(bytes: salt) - self.dkLen = dkLen - } - - /// Runs the key derivation function with a specific password. - public func calculate() throws -> [UInt8] { - // Allocate memory (as bytes for now) for further use in mixing steps - let B = UnsafeMutableRawPointer.allocate(byteCount: 128 * self.r * self.p, alignment: 64) - let XY = UnsafeMutableRawPointer.allocate(byteCount: 256 * self.r + 64, alignment: 64) - let V = UnsafeMutableRawPointer.allocate(byteCount: 128 * self.r * self.N, alignment: 64) - - // Deallocate memory when done - defer { - B.deallocate() - XY.deallocate() - V.deallocate() - } - - /* 1: (B_0 ... B_{p-1}) <-- PBKDF2(P, S, 1, p * MFLen) */ - // Expand the initial key - let barray = try PKCS5.PBKDF2(password: Array(self.password), salt: Array(self.salt), iterations: 1, keyLength: self.p * 128 * self.r, variant: .sha256).calculate() - barray.withUnsafeBytes { p in - B.copyMemory(from: p.baseAddress!, byteCount: barray.count) - } - - /* 2: for i = 0 to p - 1 do */ - // do the mixing - for i in 0 ..< self.p { - /* 3: B_i <-- MF(B_i, N) */ - smix(B + i * 128 * self.r, V.assumingMemoryBound(to: UInt32.self), XY.assumingMemoryBound(to: UInt32.self)) - } - - /* 5: DK <-- PBKDF2(P, B, 1, dkLen) */ - let pointer = B.assumingMemoryBound(to: UInt8.self) - let bufferPointer = UnsafeBufferPointer(start: pointer, count: p * 128 * self.r) - let block = [UInt8](bufferPointer) - return try PKCS5.PBKDF2(password: Array(self.password), salt: block, iterations: 1, keyLength: self.dkLen, variant: .sha256).calculate() - } -} - -private extension Scrypt { - /// Computes `B = SMix_r(B, N)`. - /// - /// The input `block` must be `128*r` bytes in length; the temporary storage `v` must be `128*r*n` bytes in length; - /// the temporary storage `xy` must be `256*r + 64` bytes in length. The arrays `block`, `v`, and `xy` must be - /// aligned to a multiple of 64 bytes. - @inline(__always) func smix(_ block: UnsafeMutableRawPointer, _ v: UnsafeMutablePointer, _ xy: UnsafeMutablePointer) { - let X = xy - let Y = xy + 32 * self.r - let Z = xy + 64 * self.r - - /* 1: X <-- B */ - let typedBlock = block.assumingMemoryBound(to: UInt32.self) - X.assign(from: typedBlock, count: 32 * self.r) - - /* 2: for i = 0 to N - 1 do */ - for i in stride(from: 0, to: self.N, by: 2) { - /* 3: V_i <-- X */ - UnsafeMutableRawPointer(v + i * (32 * self.r)).copyMemory(from: X, byteCount: 128 * self.r) - - /* 4: X <-- H(X) */ - self.blockMixSalsa8(X, Y, Z) - - /* 3: V_i <-- X */ - UnsafeMutableRawPointer(v + (i + 1) * (32 * self.r)).copyMemory(from: Y, byteCount: 128 * self.r) - - /* 4: X <-- H(X) */ - self.blockMixSalsa8(Y, X, Z) - } - - /* 6: for i = 0 to N - 1 do */ - for _ in stride(from: 0, to: self.N, by: 2) { - /* - 7: j <-- Integerify (X) mod N - where Integerify (B[0] ... B[2 * r - 1]) is defined - as the result of interpreting B[2 * r - 1] as a little-endian integer. - */ - var j = Int(integerify(X) & UInt64(self.N - 1)) - - /* 8: X <-- H(X \xor V_j) */ - self.blockXor(X, v + j * 32 * self.r, 128 * self.r) - self.blockMixSalsa8(X, Y, Z) - - /* 7: j <-- Integerify(X) mod N */ - j = Int(self.integerify(Y) & UInt64(self.N - 1)) - - /* 8: X <-- H(X \xor V_j) */ - self.blockXor(Y, v + j * 32 * self.r, 128 * self.r) - self.blockMixSalsa8(Y, X, Z) - } - - /* 10: B' <-- X */ - for k in 0 ..< 32 * self.r { - UnsafeMutableRawPointer(block + 4 * k).storeBytes(of: X[k], as: UInt32.self) - } - } - - /// Returns the result of parsing `B_{2r-1}` as a little-endian integer. - @inline(__always) func integerify(_ block: UnsafeRawPointer) -> UInt64 { - let bi = block + (2 * self.r - 1) * 64 - return bi.load(as: UInt64.self).littleEndian - } - - /// Compute `bout = BlockMix_{salsa20/8, r}(bin)`. - /// - /// The input `bin` must be `128*r` bytes in length; the output `bout` must also be the same size. The temporary - /// space `x` must be 64 bytes. - @inline(__always) func blockMixSalsa8(_ bin: UnsafePointer, _ bout: UnsafeMutablePointer, _ x: UnsafeMutablePointer) { - /* 1: X <-- B_{2r - 1} */ - UnsafeMutableRawPointer(x).copyMemory(from: bin + (2 * self.r - 1) * 16, byteCount: 64) - - /* 2: for i = 0 to 2r - 1 do */ - for i in stride(from: 0, to: 2 * self.r, by: 2) { - /* 3: X <-- H(X \xor B_i) */ - self.blockXor(x, bin + i * 16, 64) - self.salsa20_8_typed(x) - - /* 4: Y_i <-- X */ - /* 6: B' <-- (Y_0, Y_2 ... Y_{2r-2}, Y_1, Y_3 ... Y_{2r-1}) */ - UnsafeMutableRawPointer(bout + i * 8).copyMemory(from: x, byteCount: 64) - - /* 3: X <-- H(X \xor B_i) */ - self.blockXor(x, bin + i * 16 + 16, 64) - self.salsa20_8_typed(x) - - /* 4: Y_i <-- X */ - /* 6: B' <-- (Y_0, Y_2 ... Y_{2r-2}, Y_1, Y_3 ... Y_{2r-1}) */ - UnsafeMutableRawPointer(bout + i * 8 + self.r * 16).copyMemory(from: x, byteCount: 64) - } - } - - @inline(__always) func salsa20_8_typed(_ block: UnsafeMutablePointer) { - self.salsaBlock.copyMemory(from: UnsafeRawPointer(block), byteCount: 64) - let salsaBlockTyped = self.salsaBlock.assumingMemoryBound(to: UInt32.self) - - for _ in stride(from: 0, to: 8, by: 2) { - salsaBlockTyped[4] ^= rotateLeft(salsaBlockTyped[0] &+ salsaBlockTyped[12], by: 7) - salsaBlockTyped[8] ^= rotateLeft(salsaBlockTyped[4] &+ salsaBlockTyped[0], by: 9) - salsaBlockTyped[12] ^= rotateLeft(salsaBlockTyped[8] &+ salsaBlockTyped[4], by: 13) - salsaBlockTyped[0] ^= rotateLeft(salsaBlockTyped[12] &+ salsaBlockTyped[8], by: 18) - - salsaBlockTyped[9] ^= rotateLeft(salsaBlockTyped[5] &+ salsaBlockTyped[1], by: 7) - salsaBlockTyped[13] ^= rotateLeft(salsaBlockTyped[9] &+ salsaBlockTyped[5], by: 9) - salsaBlockTyped[1] ^= rotateLeft(salsaBlockTyped[13] &+ salsaBlockTyped[9], by: 13) - salsaBlockTyped[5] ^= rotateLeft(salsaBlockTyped[1] &+ salsaBlockTyped[13], by: 18) - - salsaBlockTyped[14] ^= rotateLeft(salsaBlockTyped[10] &+ salsaBlockTyped[6], by: 7) - salsaBlockTyped[2] ^= rotateLeft(salsaBlockTyped[14] &+ salsaBlockTyped[10], by: 9) - salsaBlockTyped[6] ^= rotateLeft(salsaBlockTyped[2] &+ salsaBlockTyped[14], by: 13) - salsaBlockTyped[10] ^= rotateLeft(salsaBlockTyped[6] &+ salsaBlockTyped[2], by: 18) - - salsaBlockTyped[3] ^= rotateLeft(salsaBlockTyped[15] &+ salsaBlockTyped[11], by: 7) - salsaBlockTyped[7] ^= rotateLeft(salsaBlockTyped[3] &+ salsaBlockTyped[15], by: 9) - salsaBlockTyped[11] ^= rotateLeft(salsaBlockTyped[7] &+ salsaBlockTyped[3], by: 13) - salsaBlockTyped[15] ^= rotateLeft(salsaBlockTyped[11] &+ salsaBlockTyped[7], by: 18) - - salsaBlockTyped[1] ^= rotateLeft(salsaBlockTyped[0] &+ salsaBlockTyped[3], by: 7) - salsaBlockTyped[2] ^= rotateLeft(salsaBlockTyped[1] &+ salsaBlockTyped[0], by: 9) - salsaBlockTyped[3] ^= rotateLeft(salsaBlockTyped[2] &+ salsaBlockTyped[1], by: 13) - salsaBlockTyped[0] ^= rotateLeft(salsaBlockTyped[3] &+ salsaBlockTyped[2], by: 18) - - salsaBlockTyped[6] ^= rotateLeft(salsaBlockTyped[5] &+ salsaBlockTyped[4], by: 7) - salsaBlockTyped[7] ^= rotateLeft(salsaBlockTyped[6] &+ salsaBlockTyped[5], by: 9) - salsaBlockTyped[4] ^= rotateLeft(salsaBlockTyped[7] &+ salsaBlockTyped[6], by: 13) - salsaBlockTyped[5] ^= rotateLeft(salsaBlockTyped[4] &+ salsaBlockTyped[7], by: 18) - - salsaBlockTyped[11] ^= rotateLeft(salsaBlockTyped[10] &+ salsaBlockTyped[9], by: 7) - salsaBlockTyped[8] ^= rotateLeft(salsaBlockTyped[11] &+ salsaBlockTyped[10], by: 9) - salsaBlockTyped[9] ^= rotateLeft(salsaBlockTyped[8] &+ salsaBlockTyped[11], by: 13) - salsaBlockTyped[10] ^= rotateLeft(salsaBlockTyped[9] &+ salsaBlockTyped[8], by: 18) - - salsaBlockTyped[12] ^= rotateLeft(salsaBlockTyped[15] &+ salsaBlockTyped[14], by: 7) - salsaBlockTyped[13] ^= rotateLeft(salsaBlockTyped[12] &+ salsaBlockTyped[15], by: 9) - salsaBlockTyped[14] ^= rotateLeft(salsaBlockTyped[13] &+ salsaBlockTyped[12], by: 13) - salsaBlockTyped[15] ^= rotateLeft(salsaBlockTyped[14] &+ salsaBlockTyped[13], by: 18) - } - for i in 0 ..< 16 { - block[i] = block[i] &+ salsaBlockTyped[i] - } - } - - @inline(__always) func blockXor(_ dest: UnsafeMutableRawPointer, _ src: UnsafeRawPointer, _ len: Int) { - let D = dest.assumingMemoryBound(to: UInt64.self) - let S = src.assumingMemoryBound(to: UInt64.self) - let L = len / MemoryLayout.size - - for i in 0 ..< L { - D[i] ^= S[i] - } - } -} diff --git a/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/SecureBytes.swift b/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/SecureBytes.swift deleted file mode 100644 index fc7d1509..00000000 --- a/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/SecureBytes.swift +++ /dev/null @@ -1,87 +0,0 @@ -// -// CryptoSwift -// -// Copyright (C) 2014-2017 Marcin Krzyżanowski -// This software is provided 'as-is', without any express or implied warranty. -// -// In no event will the authors be held liable for any damages arising from the use of this software. -// -// Permission is granted to anyone to use this software for any purpose,including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: -// -// - The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation is required. -// - Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -// - This notice may not be removed or altered from any source or binary distribution. -// - -#if canImport(Darwin) -import Darwin -#elseif canImport(Glibc) -import Glibc -#elseif canImport(WinSDK) -import WinSDK -#endif - -typealias Key = SecureBytes - -/// Keeps bytes in memory. Because this is class, bytes are not copied -/// and memory area is locked as long as referenced, then unlocked on deinit -final class SecureBytes { - private let bytes: Array - let count: Int - - init(bytes: Array) { - self.bytes = bytes - self.count = bytes.count - self.bytes.withUnsafeBufferPointer { (pointer) -> Void in - #if os(Windows) - VirtualLock(UnsafeMutableRawPointer(mutating: pointer.baseAddress), SIZE_T(pointer.count)) - #else - mlock(pointer.baseAddress, pointer.count) - #endif - } - } - - deinit { - self.bytes.withUnsafeBufferPointer { (pointer) -> Void in - #if os(Windows) - VirtualUnlock(UnsafeMutableRawPointer(mutating: pointer.baseAddress), SIZE_T(pointer.count)) - #else - munlock(pointer.baseAddress, pointer.count) - #endif - } - } -} - -extension SecureBytes: Collection { - typealias Index = Int - - var endIndex: Int { - self.bytes.endIndex - } - - var startIndex: Int { - self.bytes.startIndex - } - - subscript(position: Index) -> UInt8 { - self.bytes[position] - } - - subscript(bounds: Range) -> ArraySlice { - self.bytes[bounds] - } - - func formIndex(after i: inout Int) { - self.bytes.formIndex(after: &i) - } - - func index(after i: Int) -> Int { - self.bytes.index(after: i) - } -} - -extension SecureBytes: ExpressibleByArrayLiteral { - public convenience init(arrayLiteral elements: UInt8...) { - self.init(bytes: elements) - } -} diff --git a/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/StreamDecryptor.swift b/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/StreamDecryptor.swift deleted file mode 100644 index cf64d66a..00000000 --- a/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/StreamDecryptor.swift +++ /dev/null @@ -1,92 +0,0 @@ -// CryptoSwift -// -// Copyright (C) 2014-2018 Marcin Krzyżanowski -// This software is provided 'as-is', without any express or implied warranty. -// -// In no event will the authors be held liable for any damages arising from the use of this software. -// -// Permission is granted to anyone to use this software for any purpose,including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: -// -// - The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation is required. -// - Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -// - This notice may not be removed or altered from any source or binary distribution. -// - -@usableFromInline -final class StreamDecryptor: Cryptor, Updatable { - - @usableFromInline - internal let blockSize: Int - - @usableFromInline - internal var worker: CipherModeWorker - - @usableFromInline - internal let padding: Padding - - @usableFromInline - internal var accumulated = Array() - - @usableFromInline - internal var lastBlockRemainder = 0 - - @usableFromInline - init(blockSize: Int, padding: Padding, _ worker: CipherModeWorker) throws { - self.blockSize = blockSize - self.padding = padding - self.worker = worker - } - - // MARK: Updatable - - @inlinable - public func update(withBytes bytes: ArraySlice, isLast: Bool) throws -> Array { - self.accumulated += bytes - - let toProcess = self.accumulated.prefix(max(self.accumulated.count - self.worker.additionalBufferSize, 0)) - - if var finalizingWorker = worker as? FinalizingDecryptModeWorker, isLast == true { - // will truncate suffix if needed - try finalizingWorker.willDecryptLast(bytes: self.accumulated.slice) - } - - var processedBytesCount = 0 - var plaintext = Array(reserveCapacity: bytes.count + self.worker.additionalBufferSize) - for chunk in toProcess.batched(by: self.blockSize) { - plaintext += self.worker.decrypt(block: chunk) - processedBytesCount += chunk.count - } - - if var finalizingWorker = worker as? FinalizingDecryptModeWorker, isLast == true { - plaintext = Array(try finalizingWorker.didDecryptLast(bytes: plaintext.slice)) - } - - // omit unecessary calculation if not needed - if self.padding != .noPadding { - self.lastBlockRemainder = plaintext.count.quotientAndRemainder(dividingBy: self.blockSize).remainder - } - - if isLast { - // CTR doesn't need padding. Really. Add padding to the last block if really want. but... don't. - plaintext = self.padding.remove(from: plaintext, blockSize: self.blockSize - self.lastBlockRemainder) - } - - self.accumulated.removeFirst(processedBytesCount) // super-slow - - if var finalizingWorker = worker as? FinalizingDecryptModeWorker, isLast == true { - plaintext = Array(try finalizingWorker.finalize(decrypt: plaintext.slice)) - } - - return plaintext - } - - @inlinable - public func seek(to position: Int) throws { - guard var worker = self.worker as? SeekableModeWorker else { - fatalError("Not supported") - } - - try worker.seek(to: position) - self.worker = worker - } -} diff --git a/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/StreamEncryptor.swift b/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/StreamEncryptor.swift deleted file mode 100644 index 481b6821..00000000 --- a/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/StreamEncryptor.swift +++ /dev/null @@ -1,68 +0,0 @@ -// CryptoSwift -// -// Copyright (C) 2014-2018 Marcin Krzyżanowski -// This software is provided 'as-is', without any express or implied warranty. -// -// In no event will the authors be held liable for any damages arising from the use of this software. -// -// Permission is granted to anyone to use this software for any purpose,including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: -// -// - The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation is required. -// - Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -// - This notice may not be removed or altered from any source or binary distribution. -// - -@usableFromInline -final class StreamEncryptor: Cryptor, Updatable { - - @usableFromInline - internal let blockSize: Int - - @usableFromInline - internal var worker: CipherModeWorker - - @usableFromInline - internal let padding: Padding - - @usableFromInline - internal var lastBlockRemainder = 0 - - @usableFromInline - init(blockSize: Int, padding: Padding, _ worker: CipherModeWorker) throws { - self.blockSize = blockSize - self.padding = padding - self.worker = worker - } - - // MARK: Updatable - - @inlinable - public func update(withBytes bytes: ArraySlice, isLast: Bool) throws -> Array { - var accumulated = Array(bytes) - if isLast { - // CTR doesn't need padding. Really. Add padding to the last block if really want. but... don't. - accumulated = self.padding.add(to: accumulated, blockSize: self.blockSize - self.lastBlockRemainder) - } - - var encrypted = Array(reserveCapacity: bytes.count) - for chunk in accumulated.batched(by: self.blockSize) { - encrypted += self.worker.encrypt(block: chunk) - } - - // omit unecessary calculation if not needed - if self.padding != .noPadding { - self.lastBlockRemainder = encrypted.count.quotientAndRemainder(dividingBy: self.blockSize).remainder - } - - if var finalizingWorker = worker as? FinalizingEncryptModeWorker, isLast == true { - encrypted = Array(try finalizingWorker.finalize(encrypt: encrypted.slice)) - } - - return encrypted - } - - @usableFromInline - func seek(to: Int) throws { - fatalError("Not supported") - } -} diff --git a/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/String+Extension.swift b/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/String+Extension.swift deleted file mode 100644 index dc8d7b44..00000000 --- a/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/String+Extension.swift +++ /dev/null @@ -1,96 +0,0 @@ -// -// CryptoSwift -// -// Copyright (C) 2014-2017 Marcin Krzyżanowski -// This software is provided 'as-is', without any express or implied warranty. -// -// In no event will the authors be held liable for any damages arising from the use of this software. -// -// Permission is granted to anyone to use this software for any purpose,including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: -// -// - The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation is required. -// - Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -// - This notice may not be removed or altered from any source or binary distribution. -// - -/** String extension */ -extension String { - - @inlinable - public var bytes: Array { - data(using: String.Encoding.utf8, allowLossyConversion: true)?.bytes ?? Array(utf8) - } - - @inlinable - public func md5() -> String { - self.bytes.md5().toHexString() - } - - @inlinable - public func sha1() -> String { - self.bytes.sha1().toHexString() - } - - @inlinable - public func sha224() -> String { - self.bytes.sha224().toHexString() - } - - @inlinable - public func sha256() -> String { - self.bytes.sha256().toHexString() - } - - @inlinable - public func sha384() -> String { - self.bytes.sha384().toHexString() - } - - @inlinable - public func sha512() -> String { - self.bytes.sha512().toHexString() - } - - @inlinable - public func sha3(_ variant: SHA3.Variant) -> String { - self.bytes.sha3(variant).toHexString() - } - - @inlinable - public func crc32(seed: UInt32? = nil, reflect: Bool = true) -> String { - self.bytes.crc32(seed: seed, reflect: reflect).bytes().toHexString() - } - - @inlinable - public func crc32c(seed: UInt32? = nil, reflect: Bool = true) -> String { - self.bytes.crc32c(seed: seed, reflect: reflect).bytes().toHexString() - } - - @inlinable - public func crc16(seed: UInt16? = nil) -> String { - self.bytes.crc16(seed: seed).bytes().toHexString() - } - - /// - parameter cipher: Instance of `Cipher` - /// - returns: hex string of bytes - @inlinable - public func encrypt(cipher: Cipher) throws -> String { - try self.bytes.encrypt(cipher: cipher).toHexString() - } - - /// - parameter cipher: Instance of `Cipher` - /// - returns: base64 encoded string of encrypted bytes - @inlinable - public func encryptToBase64(cipher: Cipher) throws -> String { - try self.bytes.encrypt(cipher: cipher).toBase64() - } - - // decrypt() does not make sense for String - - /// - parameter authenticator: Instance of `Authenticator` - /// - returns: hex string of string - @inlinable - public func authenticate(with authenticator: A) throws -> String { - try self.bytes.authenticate(with: authenticator).toHexString() - } -} diff --git a/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/UInt128.swift b/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/UInt128.swift deleted file mode 100644 index 8e3c246b..00000000 --- a/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/UInt128.swift +++ /dev/null @@ -1,90 +0,0 @@ -// -// UInt128.swift -// -// Copyright (C) 2014-2017 Marcin Krzyżanowski -// This software is provided 'as-is', without any express or implied warranty. -// -// In no event will the authors be held liable for any damages arising from the use of this software. -// -// Permission is granted to anyone to use this software for any purpose,including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: -// -// - The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation is required. -// - Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -// - This notice may not be removed or altered from any source or binary distribution. -// - -import Foundation - -struct UInt128: Equatable, ExpressibleByIntegerLiteral { - let i: (a: UInt64, b: UInt64) - - typealias IntegerLiteralType = UInt64 - - init(integerLiteral value: IntegerLiteralType) { - self = UInt128(value) - } - - init(_ raw: Array) { - self = raw.prefix(MemoryLayout.stride).withUnsafeBytes({ (rawBufferPointer) -> UInt128 in - let arr = rawBufferPointer.bindMemory(to: UInt64.self) - return UInt128((arr[0].bigEndian, arr[1].bigEndian)) - }) - } - - init(_ raw: ArraySlice) { - self.init(Array(raw)) - } - - init(_ i: (a: UInt64, b: UInt64)) { - self.i = i - } - - init(a: UInt64, b: UInt64) { - self.init((a, b)) - } - - init(_ b: UInt64) { - self.init((0, b)) - } - - // Bytes - var bytes: Array { - var at = self.i.a.bigEndian - var bt = self.i.b.bigEndian - - let ar = Data(bytes: &at, count: MemoryLayout.size(ofValue: at)) - let br = Data(bytes: &bt, count: MemoryLayout.size(ofValue: bt)) - - var result = Data() - result.append(ar) - result.append(br) - return result.bytes - } - - static func ^ (n1: UInt128, n2: UInt128) -> UInt128 { - UInt128((n1.i.a ^ n2.i.a, n1.i.b ^ n2.i.b)) - } - - static func & (n1: UInt128, n2: UInt128) -> UInt128 { - UInt128((n1.i.a & n2.i.a, n1.i.b & n2.i.b)) - } - - static func >> (value: UInt128, by: Int) -> UInt128 { - var result = value - for _ in 0..> 1 - let b = result.i.b >> 1 + ((result.i.a & 1) << 63) - result = UInt128((a, b)) - } - return result - } - - // Equatable. - static func == (lhs: UInt128, rhs: UInt128) -> Bool { - lhs.i == rhs.i - } - - static func != (lhs: UInt128, rhs: UInt128) -> Bool { - !(lhs == rhs) - } -} diff --git a/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/UInt16+Extension.swift b/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/UInt16+Extension.swift deleted file mode 100644 index f3e4d2a9..00000000 --- a/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/UInt16+Extension.swift +++ /dev/null @@ -1,37 +0,0 @@ -// -// CryptoSwift -// -// Copyright (C) 2014-2017 Marcin Krzyżanowski -// This software is provided 'as-is', without any express or implied warranty. -// -// In no event will the authors be held liable for any damages arising from the use of this software. -// -// Permission is granted to anyone to use this software for any purpose,including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: -// -// - The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation is required. -// - Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -// - This notice may not be removed or altered from any source or binary distribution. -// - -/** array of bytes */ -extension UInt16 { - @_specialize(where T == ArraySlice) - init(bytes: T) where T.Element == UInt8, T.Index == Int { - self = UInt16(bytes: bytes, fromIndex: bytes.startIndex) - } - - @_specialize(where T == ArraySlice) - init(bytes: T, fromIndex index: T.Index) where T.Element == UInt8, T.Index == Int { - if bytes.isEmpty { - self = 0 - return - } - - let count = bytes.count - - let val0 = count > 0 ? UInt16(bytes[index.advanced(by: 0)]) << 8 : 0 - let val1 = count > 1 ? UInt16(bytes[index.advanced(by: 1)]) : 0 - - self = val0 | val1 - } -} diff --git a/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/UInt32+Extension.swift b/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/UInt32+Extension.swift deleted file mode 100644 index e605f4f7..00000000 --- a/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/UInt32+Extension.swift +++ /dev/null @@ -1,51 +0,0 @@ -// -// CryptoSwift -// -// Copyright (C) 2014-2017 Marcin Krzyżanowski -// This software is provided 'as-is', without any express or implied warranty. -// -// In no event will the authors be held liable for any damages arising from the use of this software. -// -// Permission is granted to anyone to use this software for any purpose,including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: -// -// - The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation is required. -// - Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -// - This notice may not be removed or altered from any source or binary distribution. -// - -#if canImport(Darwin) -import Darwin -#elseif canImport(Glibc) -import Glibc -#elseif canImport(ucrt) -import ucrt -#endif - -protocol _UInt32Type {} -extension UInt32: _UInt32Type {} - -/** array of bytes */ -extension UInt32 { - @_specialize(where T == ArraySlice) - init(bytes: T) where T.Element == UInt8, T.Index == Int { - self = UInt32(bytes: bytes, fromIndex: bytes.startIndex) - } - - @_specialize(where T == ArraySlice) - @inlinable - init(bytes: T, fromIndex index: T.Index) where T.Element == UInt8, T.Index == Int { - if bytes.isEmpty { - self = 0 - return - } - - let count = bytes.count - - let val0 = count > 0 ? UInt32(bytes[index.advanced(by: 0)]) << 24 : 0 - let val1 = count > 1 ? UInt32(bytes[index.advanced(by: 1)]) << 16 : 0 - let val2 = count > 2 ? UInt32(bytes[index.advanced(by: 2)]) << 8 : 0 - let val3 = count > 3 ? UInt32(bytes[index.advanced(by: 3)]) : 0 - - self = val0 | val1 | val2 | val3 - } -} diff --git a/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/UInt64+Extension.swift b/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/UInt64+Extension.swift deleted file mode 100644 index efabfbd5..00000000 --- a/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/UInt64+Extension.swift +++ /dev/null @@ -1,44 +0,0 @@ -// -// CryptoSwift -// -// Copyright (C) 2014-2017 Marcin Krzyżanowski -// This software is provided 'as-is', without any express or implied warranty. -// -// In no event will the authors be held liable for any damages arising from the use of this software. -// -// Permission is granted to anyone to use this software for any purpose,including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: -// -// - The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation is required. -// - Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -// - This notice may not be removed or altered from any source or binary distribution. -// - -/** array of bytes */ -extension UInt64 { - @_specialize(where T == ArraySlice) - init(bytes: T) where T.Element == UInt8, T.Index == Int { - self = UInt64(bytes: bytes, fromIndex: bytes.startIndex) - } - - @_specialize(where T == ArraySlice) - @inlinable - init(bytes: T, fromIndex index: T.Index) where T.Element == UInt8, T.Index == Int { - if bytes.isEmpty { - self = 0 - return - } - - let count = bytes.count - - let val0 = count > 0 ? UInt64(bytes[index.advanced(by: 0)]) << 56 : 0 - let val1 = count > 1 ? UInt64(bytes[index.advanced(by: 1)]) << 48 : 0 - let val2 = count > 2 ? UInt64(bytes[index.advanced(by: 2)]) << 40 : 0 - let val3 = count > 3 ? UInt64(bytes[index.advanced(by: 3)]) << 32 : 0 - let val4 = count > 4 ? UInt64(bytes[index.advanced(by: 4)]) << 24 : 0 - let val5 = count > 5 ? UInt64(bytes[index.advanced(by: 5)]) << 16 : 0 - let val6 = count > 6 ? UInt64(bytes[index.advanced(by: 6)]) << 8 : 0 - let val7 = count > 7 ? UInt64(bytes[index.advanced(by: 7)]) : 0 - - self = val0 | val1 | val2 | val3 | val4 | val5 | val6 | val7 - } -} diff --git a/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/UInt8+Extension.swift b/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/UInt8+Extension.swift deleted file mode 100644 index d2bfc91c..00000000 --- a/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/UInt8+Extension.swift +++ /dev/null @@ -1,74 +0,0 @@ -// -// CryptoSwift -// -// Copyright (C) 2014-2017 Marcin Krzyżanowski -// This software is provided 'as-is', without any express or implied warranty. -// -// In no event will the authors be held liable for any damages arising from the use of this software. -// -// Permission is granted to anyone to use this software for any purpose,including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: -// -// - The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation is required. -// - Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -// - This notice may not be removed or altered from any source or binary distribution. -// - -#if canImport(Darwin) -import Darwin -#elseif canImport(Glibc) -import Glibc -#elseif canImport(ucrt) -import ucrt -#endif - -public protocol _UInt8Type {} -extension UInt8: _UInt8Type {} - -/** casting */ -extension UInt8 { - /** cast because UInt8() because std initializer crash if value is > byte */ - static func with(value: UInt64) -> UInt8 { - let tmp = value & 0xff - return UInt8(tmp) - } - - static func with(value: UInt32) -> UInt8 { - let tmp = value & 0xff - return UInt8(tmp) - } - - static func with(value: UInt16) -> UInt8 { - let tmp = value & 0xff - return UInt8(tmp) - } -} - -/** Bits */ -extension UInt8 { - /** array of bits */ - public func bits() -> [Bit] { - let totalBitsCount = MemoryLayout.size * 8 - - var bitsArray = [Bit](repeating: Bit.zero, count: totalBitsCount) - - for j in 0.. String { - var s = String() - let arr: [Bit] = self.bits() - for idx in arr.indices { - s += (arr[idx] == Bit.one ? "1" : "0") - if idx.advanced(by: 1) % 8 == 0 { s += " " } - } - return s - } -} diff --git a/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/Updatable.swift b/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/Updatable.swift deleted file mode 100644 index 7a3ad4d9..00000000 --- a/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/Updatable.swift +++ /dev/null @@ -1,107 +0,0 @@ -// -// CryptoSwift -// -// Copyright (C) 2014-2017 Marcin Krzyżanowski -// This software is provided 'as-is', without any express or implied warranty. -// -// In no event will the authors be held liable for any damages arising from the use of this software. -// -// Permission is granted to anyone to use this software for any purpose,including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: -// -// - The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation is required. -// - Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -// - This notice may not be removed or altered from any source or binary distribution. -// - -/// A type that supports incremental updates. For example Digest or Cipher may be updatable -/// and calculate result incerementally. -public protocol Updatable { - /// Update given bytes in chunks. - /// - /// - parameter bytes: Bytes to process. - /// - parameter isLast: Indicate if given chunk is the last one. No more updates after this call. - /// - returns: Processed partial result data or empty array. - mutating func update(withBytes bytes: ArraySlice, isLast: Bool) throws -> Array - - /// Update given bytes in chunks. - /// - /// - Parameters: - /// - bytes: Bytes to process. - /// - isLast: Indicate if given chunk is the last one. No more updates after this call. - /// - output: Resulting bytes callback. - /// - Returns: Processed partial result data or empty array. - mutating func update(withBytes bytes: ArraySlice, isLast: Bool, output: (_ bytes: Array) -> Void) throws -} - -extension Updatable { - @inlinable - public mutating func update(withBytes bytes: ArraySlice, isLast: Bool = false, output: (_ bytes: Array) -> Void) throws { - let processed = try update(withBytes: bytes, isLast: isLast) - if !processed.isEmpty { - output(processed) - } - } - - @inlinable - public mutating func update(withBytes bytes: ArraySlice, isLast: Bool = false) throws -> Array { - try self.update(withBytes: bytes, isLast: isLast) - } - - @inlinable - public mutating func update(withBytes bytes: Array, isLast: Bool = false) throws -> Array { - try self.update(withBytes: bytes.slice, isLast: isLast) - } - - @inlinable - public mutating func update(withBytes bytes: Array, isLast: Bool = false, output: (_ bytes: Array) -> Void) throws { - try self.update(withBytes: bytes.slice, isLast: isLast, output: output) - } - - /// Finish updates. This may apply padding. - /// - parameter bytes: Bytes to process - /// - returns: Processed data. - @inlinable - public mutating func finish(withBytes bytes: ArraySlice) throws -> Array { - try self.update(withBytes: bytes, isLast: true) - } - - @inlinable - public mutating func finish(withBytes bytes: Array) throws -> Array { - try self.finish(withBytes: bytes.slice) - } - - /// Finish updates. May add padding. - /// - /// - Returns: Processed data - /// - Throws: Error - @inlinable - public mutating func finish() throws -> Array { - try self.update(withBytes: [], isLast: true) - } - - /// Finish updates. This may apply padding. - /// - parameter bytes: Bytes to process - /// - parameter output: Resulting data - /// - returns: Processed data. - @inlinable - public mutating func finish(withBytes bytes: ArraySlice, output: (_ bytes: Array) -> Void) throws { - let processed = try update(withBytes: bytes, isLast: true) - if !processed.isEmpty { - output(processed) - } - } - - @inlinable - public mutating func finish(withBytes bytes: Array, output: (_ bytes: Array) -> Void) throws { - try self.finish(withBytes: bytes.slice, output: output) - } - - /// Finish updates. May add padding. - /// - /// - Parameter output: Processed data - /// - Throws: Error - @inlinable - public mutating func finish(output: (Array) -> Void) throws { - try self.finish(withBytes: [], output: output) - } -} diff --git a/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/Utils.swift b/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/Utils.swift deleted file mode 100644 index d54bbcb2..00000000 --- a/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/Utils.swift +++ /dev/null @@ -1,117 +0,0 @@ -// -// CryptoSwift -// -// Copyright (C) 2014-2017 Marcin Krzyżanowski -// This software is provided 'as-is', without any express or implied warranty. -// -// In no event will the authors be held liable for any damages arising from the use of this software. -// -// Permission is granted to anyone to use this software for any purpose,including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: -// -// - The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation is required. -// - Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -// - This notice may not be removed or altered from any source or binary distribution. -// - -@inlinable -func rotateLeft(_ value: UInt8, by: UInt8) -> UInt8 { - ((value << by) & 0xff) | (value >> (8 - by)) -} - -@inlinable -func rotateLeft(_ value: UInt16, by: UInt16) -> UInt16 { - ((value << by) & 0xffff) | (value >> (16 - by)) -} - -@inlinable -func rotateLeft(_ value: UInt32, by: UInt32) -> UInt32 { - ((value << by) & 0xffffffff) | (value >> (32 - by)) -} - -@inlinable -func rotateLeft(_ value: UInt64, by: UInt64) -> UInt64 { - (value << by) | (value >> (64 - by)) -} - -@inlinable -func rotateRight(_ value: UInt16, by: UInt16) -> UInt16 { - (value >> by) | (value << (16 - by)) -} - -@inlinable -func rotateRight(_ value: UInt32, by: UInt32) -> UInt32 { - (value >> by) | (value << (32 - by)) -} - -@inlinable -func rotateRight(_ value: UInt64, by: UInt64) -> UInt64 { - ((value >> by) | (value << (64 - by))) -} - -@inlinable -func reversed(_ uint8: UInt8) -> UInt8 { - var v = uint8 - v = (v & 0xf0) >> 4 | (v & 0x0f) << 4 - v = (v & 0xcc) >> 2 | (v & 0x33) << 2 - v = (v & 0xaa) >> 1 | (v & 0x55) << 1 - return v -} - -@inlinable -func reversed(_ uint32: UInt32) -> UInt32 { - var v = uint32 - v = ((v >> 1) & 0x55555555) | ((v & 0x55555555) << 1) - v = ((v >> 2) & 0x33333333) | ((v & 0x33333333) << 2) - v = ((v >> 4) & 0x0f0f0f0f) | ((v & 0x0f0f0f0f) << 4) - v = ((v >> 8) & 0x00ff00ff) | ((v & 0x00ff00ff) << 8) - v = ((v >> 16) & 0xffff) | ((v & 0xffff) << 16) - return v -} - -@inlinable -func xor(_ left: T, _ right: V) -> ArraySlice where T: RandomAccessCollection, V: RandomAccessCollection, T.Element == UInt8, T.Index == Int, V.Element == UInt8, V.Index == Int { - return xor(left, right).slice -} - -@inlinable -func xor(_ left: T, _ right: V) -> Array where T: RandomAccessCollection, V: RandomAccessCollection, T.Element == UInt8, T.Index == Int, V.Element == UInt8, V.Index == Int { - let length = Swift.min(left.count, right.count) - - let buf = UnsafeMutablePointer.allocate(capacity: length) - buf.initialize(repeating: 0, count: length) - defer { - buf.deinitialize(count: length) - buf.deallocate() - } - - // xor - for i in 0.., blockSize: Int, allowance: Int = 0) { - let msgLength = data.count - // Step 1. Append Padding Bits - // append one bit (UInt8 with one bit) to message - data.append(0x80) - - // Step 2. append "0" bit until message length in bits ≡ 448 (mod 512) - let max = blockSize - allowance // 448, 986 - if msgLength % blockSize < max { // 448 - data += Array(repeating: 0, count: max - 1 - (msgLength % blockSize)) - } else { - data += Array(repeating: 0, count: blockSize + max - 1 - (msgLength % blockSize)) - } -} diff --git a/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/ZeroPadding.swift b/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/ZeroPadding.swift deleted file mode 100644 index 3f61b856..00000000 --- a/cocoapods/Pods/CryptoSwift/Sources/CryptoSwift/ZeroPadding.swift +++ /dev/null @@ -1,40 +0,0 @@ -// -// CryptoSwift -// -// Copyright (C) 2014-2017 Marcin Krzyżanowski -// This software is provided 'as-is', without any express or implied warranty. -// -// In no event will the authors be held liable for any damages arising from the use of this software. -// -// Permission is granted to anyone to use this software for any purpose,including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: -// -// - The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation is required. -// - Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -// - This notice may not be removed or altered from any source or binary distribution. -// - -/// All the bytes that are required to be padded are padded with zero. -/// Zero padding may not be reversible if the original file ends with one or more zero bytes. -struct ZeroPadding: PaddingProtocol { - init() { - } - - @inlinable - func add(to bytes: Array, blockSize: Int) -> Array { - let paddingCount = blockSize - (bytes.count % blockSize) - if paddingCount > 0 { - return bytes + Array(repeating: 0, count: paddingCount) - } - return bytes - } - - @inlinable - func remove(from bytes: Array, blockSize _: Int?) -> Array { - for (idx, value) in bytes.reversed().enumerated() { - if value != 0 { - return Array(bytes[0.. 1.0.0" - ], - "CryptoSwift": [ - "~> 1.4.1" - ], - "secp256k1.swift": [ - "~> 0.1.4" - ], - "PromiseKit/Foundation": [ - "~> 6.0" - ], - "BestLogger": [ - "~> 0.0.1" - ] - }, - "pod_target_xcconfig": { - "EXCLUDED_ARCHS[sdk=iphonesimulator*]": "arm64" - }, - "user_target_xcconfig": { - "EXCLUDED_ARCHS[sdk=iphonesimulator*]": "arm64" - }, - "swift_version": "5.0" -} diff --git a/cocoapods/Pods/Manifest.lock b/cocoapods/Pods/Manifest.lock deleted file mode 100644 index 7187f565..00000000 --- a/cocoapods/Pods/Manifest.lock +++ /dev/null @@ -1,56 +0,0 @@ -PODS: - - BestLogger (0.0.3) - - BigInt (5.0.0) - - CryptoSwift (1.4.1) - - GenericJSON (2.0.1) - - PromiseKit/CorePromise (6.15.3) - - PromiseKit/Foundation (6.15.3): - - PromiseKit/CorePromise - - secp256k1.swift (0.1.4) - - Torus-fetchNodeDetails (1.0.0): - - BestLogger (~> 0.0.1) - - PromiseKit/Foundation (~> 6.0) - - web3.swift (~> 0.8.0) - - Torus-utils (1.0.0): - - BestLogger (~> 0.0.1) - - CryptoSwift (~> 1.4.1) - - PromiseKit/Foundation (~> 6.0) - - secp256k1.swift (~> 0.1.4) - - Torus-fetchNodeDetails (~> 1.0.0) - - web3.swift (0.8.1): - - BigInt (~> 5.0.0) - - GenericJSON (~> 2.0) - - secp256k1.swift (~> 0.1) - -DEPENDENCIES: - - Torus-utils (from `../`) - -SPEC REPOS: - trunk: - - BestLogger - - BigInt - - CryptoSwift - - GenericJSON - - PromiseKit - - secp256k1.swift - - Torus-fetchNodeDetails - - web3.swift - -EXTERNAL SOURCES: - Torus-utils: - :path: "../" - -SPEC CHECKSUMS: - BestLogger: 70475db073dfab3ec1ba9b58b0bb78126b068eee - BigInt: 74b4d88367b0e819d9f77393549226d36faeb0d8 - CryptoSwift: 0bc800a7e6a24c4fc9ebeab97d44b0d5f73a78bd - GenericJSON: a6e74e2c457f8693caab08e0eafde7d97e6666de - PromiseKit: 3b2b6995e51a954c46dbc550ce3da44fbfb563c5 - secp256k1.swift: a7e7a214f6db6ce5db32cc6b2b45e5c4dd633634 - Torus-fetchNodeDetails: 03827b5d6481ffd52bfae26cce97fcb7964bd23e - Torus-utils: f18ee7f2556cad65c9e4f511eac05a82cc9c7708 - web3.swift: ce00a5e6e39fb184e33e3622e8be22ae53205e57 - -PODFILE CHECKSUM: 2f38241f146b211ba5492f621b56eb48a9318a55 - -COCOAPODS: 1.10.1 diff --git a/cocoapods/Pods/Pods.xcodeproj/project.pbxproj b/cocoapods/Pods/Pods.xcodeproj/project.pbxproj deleted file mode 100644 index b0fc3522..00000000 --- a/cocoapods/Pods/Pods.xcodeproj/project.pbxproj +++ /dev/null @@ -1,3721 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 51; - objects = { - -/* Begin PBXBuildFile section */ - 01039AFF7C506A85D46B9C8199A84124 /* Blowfish.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9D4D50B232C390BBD88F6DF4D9144448 /* Blowfish.swift */; }; - 017A621F27B7CDFE2B969558D374C8F3 /* CBC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8B206A1158EC090ECBE6347A325D1F72 /* CBC.swift */; }; - 01D4275BFE81067C13521EB485FF8E43 /* TorusUtils+extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 513AB290C01FB6EFD3DD680D835DEFD4 /* TorusUtils+extension.swift */; }; - 036BBC2EC351A45C0BDF7F24634520D3 /* scratch_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 4D375E3576E6E64D65FCA593C3095043 /* scratch_impl.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 03A6C8B5712C52F098BB7D6864833657 /* StreamEncryptor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 748E773405DA3F24E59FEEB243BA3F51 /* StreamEncryptor.swift */; }; - 03C52B3143C56AC7686FF1997AAE20E5 /* NSTask+AnyPromise.h in Headers */ = {isa = PBXBuildFile; fileRef = 704122C7E5DF0CA9090C8883F02C9543 /* NSTask+AnyPromise.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 03DEB78A7F45CCAB0D41E000D3D3D1F8 /* Int+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7AE5CBB7F77DCBADD0E73CC0D312F9EA /* Int+Extension.swift */; }; - 04C4B5D00750E2E4DFD4C4C7CC47283A /* Bitwise Ops.swift in Sources */ = {isa = PBXBuildFile; fileRef = 60FC8BADF090E2274D64444DBD790789 /* Bitwise Ops.swift */; }; - 04C6E8384534DB0AAD235B3CA7667E76 /* UInt8+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5AC3662AD7219F05F38FA35C7F00CD98 /* UInt8+Extension.swift */; }; - 0903F05BD43FB2E9AC392870F20F969E /* abi.json in Sources */ = {isa = PBXBuildFile; fileRef = B60E21B551654A1A07D1C81EA1FF5248 /* abi.json */; }; - 0942026922B8B3717A509AE7ABAAD6C9 /* PKCS7Padding.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1651974D61BD0C6886E658C15DF4C1FB /* PKCS7Padding.swift */; }; - 09B0AC1CCF8620F45AA85CB0D3F21AA2 /* secp256k1.swift-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = CE41E408EF124D3FE8262B5AE33B4E8B /* secp256k1.swift-dummy.m */; }; - 0A316EE1C5FE173C8CE8C41DCD12558E /* CryptoSwift-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = F88BD841AAF2BBBCC87952AC71F275A1 /* CryptoSwift-dummy.m */; }; - 0A55CF7797537DE18E74D21C7339912A /* Torus-fetchNodeDetails-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 57905E613320F8F3C500150C880D087C /* Torus-fetchNodeDetails-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 0B274F516A67A0A0FE60AB22CF00DD1C /* EthereumAddress.swift in Sources */ = {isa = PBXBuildFile; fileRef = 880BAFA2FABB109A64F46FF77F1210F3 /* EthereumAddress.swift */; }; - 0C3498480FBAB4A244F26415FFE39CC9 /* eckey_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = ADD2B7F321837D70C71824C86E56E4EF /* eckey_impl.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 0D24860ECDD34C95BB6D15C4DAC82EF7 /* HMAC.swift in Sources */ = {isa = PBXBuildFile; fileRef = E2889192F91B949BDB206E1ED2324F32 /* HMAC.swift */; }; - 0D7A70AF5A61D3F7507C37FD8BC2133D /* Digest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 86B5F8452F99ED9FFF9A886E247088A2 /* Digest.swift */; }; - 0DF63A4C8FA0E53FB630F5B5429FF066 /* Exponentiation.swift in Sources */ = {isa = PBXBuildFile; fileRef = B51EAFE66F27F1263D4E0F9F8EB304F7 /* Exponentiation.swift */; }; - 0EAAB0D93349F7E7F41CF35CE8750422 /* PCBC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 45FE914109197DB4260E9284777F74EF /* PCBC.swift */; }; - 111905A8DF9F83FE3CEADA193AE439D8 /* UInt16+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 60FD258C582D88CE19A773E27B5E77F5 /* UInt16+Extension.swift */; }; - 1228CC95DF09DE1236397A3213EC3E83 /* String+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1194DC381BEE0B2440EE0B4A82A0F088 /* String+Extension.swift */; }; - 122A5A84827F5BFE66FE48B44DE4BBD8 /* SECP256k1.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6FE3873D103E2F80F6F264DA52800BBE /* SECP256k1.swift */; }; - 129C9C093A35C90FB3089C3E5F093D6E /* JSONRPC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 27FA72D4599B389A57A234E8EB4DEF6A /* JSONRPC.swift */; }; - 133E3A2FC85C01A90EDCB77E4AA0D36B /* BlockDecryptor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 71367370146FFEB708D1598A00B52B40 /* BlockDecryptor.swift */; }; - 13440B87A16A3A8EE7A7DDBDB282CD34 /* EthereumLog.swift in Sources */ = {isa = PBXBuildFile; fileRef = F3C41D914D2872C211DD0309D82B9CA9 /* EthereumLog.swift */; }; - 14827F6D8052EC82A63FB924346E318C /* Data+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 658933927BCB31DC8575FD0DDB8C9DA6 /* Data+Extension.swift */; }; - 14E3C356BDD349B09F7239AD9E8616EB /* Pods-TestApplication-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 1F35ACAD54CA4C8BA1628EEC5C9C803A /* Pods-TestApplication-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 162A1368C72AA5B05A7DE7BC4215DC25 /* PBKDF2.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3C319601202CF7B0E3066E0290B09AAF /* PBKDF2.swift */; }; - 16ADD1234E3CDDBC6D6D7B5C07B74BA7 /* NSNotificationCenter+Promise.swift in Sources */ = {isa = PBXBuildFile; fileRef = 880E471F7AF0F5C6BA2D139745A4F983 /* NSNotificationCenter+Promise.swift */; }; - 16F71F20D31B7EEC6A60DB14135AB7A9 /* Comparable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 853287A42273DF97CDFFA168111378E2 /* Comparable.swift */; }; - 171D5BE7660D69567CB5C7751CC58949 /* MD5.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2F3EEED4CED61DB1BF979660661180B1 /* MD5.swift */; }; - 1734A997E72E05790CA8D79606D1DE6F /* main_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = BD6F8739BCF0EEA387E3315930C8D92C /* main_impl.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 17687E0F74C3541D41B6593C8A488002 /* lax_der_privatekey_parsing.c in Sources */ = {isa = PBXBuildFile; fileRef = 7682731E182645966244278D49D23597 /* lax_der_privatekey_parsing.c */; }; - 18CF0A924F2F701685FC736E185C4DB0 /* Generics.swift in Sources */ = {isa = PBXBuildFile; fileRef = CA88712FED6CF2998A3361EF563A834E /* Generics.swift */; }; - 191DED6E67B79D0BB7C671980C15A68A /* KeyUtil.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7B63097900F8AE0D41E44B24012D4E76 /* KeyUtil.swift */; }; - 196263FA3D93598348A60E7CB452DF2A /* UInt128.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2C6EB095E3C0D6E55A21E671547F963C /* UInt128.swift */; }; - 1983E925E6308EC562F6A4C4C9623DAC /* AnyPromise.h in Headers */ = {isa = PBXBuildFile; fileRef = F7E3A198A1E88DCFDE46C420D913D0C9 /* AnyPromise.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 1BB9D5E7E19599CEBDE4754D05FD4A0C /* SHA3.swift in Sources */ = {isa = PBXBuildFile; fileRef = 02DD2A16BFE076F87A8D8461822F0C1C /* SHA3.swift */; }; - 1D0630A8A27DCAA15FE63E726FF3A6D0 /* ChaCha20.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5522F6FC694B238BA3F79DF8B3FA5206 /* ChaCha20.swift */; }; - 1D48CF70EC724C97038761680D2C95AF /* ERC20Functions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 512505FA399AC0715418B5B0EB5C6EA6 /* ERC20Functions.swift */; }; - 1E120275BC8D3B5A9BD313338E95A644 /* HMAC+Foundation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3F3B4168316B3465043A60D628AD1AB1 /* HMAC+Foundation.swift */; }; - 1E9EB83465BEDA02EC2AFB0A44615943 /* ABIDecoder+Static.swift in Sources */ = {isa = PBXBuildFile; fileRef = D81BD5D1FFABEC3CB65C6AFBB1C3833B /* ABIDecoder+Static.swift */; }; - 1F58F56685F0596CC453CF34FE413AA7 /* ecmult_gen.h in Headers */ = {isa = PBXBuildFile; fileRef = 3C92945F067A0F612799399E07E77320 /* ecmult_gen.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 1FDA31E1656B19BE0275AA46AFB77713 /* UInt32+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = DAE6BA556D1F6F159B8F0001304FBC46 /* UInt32+Extension.swift */; }; - 20578BF0FAF32907B0C30C02A7126A5D /* ABIDecoder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3E173DB1F83723103EEDC0216A9C0C66 /* ABIDecoder.swift */; }; - 20D6320DE2CEB25BAC00AF4550FB86F7 /* Utils.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C06CABD5398EBEA8F52AFB991C3E633 /* Utils.swift */; }; - 215A46C16E5DFBEEFD96EE38C482AFC6 /* aes.h in Headers */ = {isa = PBXBuildFile; fileRef = E13098928CFEFF0808B6D6662EFBFF22 /* aes.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 2167B1BF2790239A29DA9C88B3053452 /* DigestType.swift in Sources */ = {isa = PBXBuildFile; fileRef = A9D486461B6C205FC09B177F2FDD6E36 /* DigestType.swift */; }; - 2228B8549F0F5445D1B2D346E12A20CD /* Floating Point Conversion.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6622D8EA696B15B45675A77EC4B13318 /* Floating Point Conversion.swift */; }; - 22638D112878C799EA2A2D75D2B53FF6 /* Base58.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1F112A5A7A909BB7ED65DFE688D4915B /* Base58.swift */; }; - 247C5F817B64F0A0756A425D12C9382F /* NodeListContract.swift in Sources */ = {isa = PBXBuildFile; fileRef = 535CA87BE83A1CD7ED8B51F0B9D7FDC3 /* NodeListContract.swift */; }; - 252DE76C85184A1E94ADED9F7C9ECD28 /* AES.swift in Sources */ = {isa = PBXBuildFile; fileRef = F9F8C9B346BDD93EDF67DD1315E8DEFC /* AES.swift */; }; - 25B926D32A9D0A3A70BE274F3EB756E1 /* EthereumTransactionReceipt.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F29306CE1013E6EB42A107081EE2E84 /* EthereumTransactionReceipt.swift */; }; - 27C430B131DF6F7F239A3B6A62AA31F5 /* Padding.swift in Sources */ = {isa = PBXBuildFile; fileRef = 28F7E50E8D75EB8B04F3AEF1F2D6E967 /* Padding.swift */; }; - 2811A8C5D0E5FB828FDDB53A589443D7 /* CMAC.swift in Sources */ = {isa = PBXBuildFile; fileRef = F6926A4C195017FA6EEFBAE75FEB9A40 /* CMAC.swift */; }; - 282B19F3169FF0AE8CF9A53FFD11C7EF /* util.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B0ACBB63147F28D8DF0C775E0E6084E /* util.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 28CBB9F6AB9CB25F81145E7729533416 /* ENSMultiResolver.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5BBFD7D25C959FBE5F887081CA16EA19 /* ENSMultiResolver.swift */; }; - 2A3F377071670B8A1E350056A5FB9269 /* BlockMode.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8D01A0D8912AE4530962925B5F7331B /* BlockMode.swift */; }; - 2A97991D5B1C896287DB6AB59105295B /* BestLogger.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 401FB6B95BF461CFBCF5B408508044F7 /* BestLogger.framework */; }; - 2ABD0B1EBEAA45896FBCBE41CB41D07D /* Bit.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5AB7CDB20C1AA54218B45E111EF7D6F8 /* Bit.swift */; }; - 2BCE099C58114F2C7D7441E008D0E7B5 /* scalar_4x64.h in Headers */ = {isa = PBXBuildFile; fileRef = 919B3E391BC4CAC48C5484D88BFB3C12 /* scalar_4x64.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 2D7AD7985E4D58086EF30A8E61A971DD /* AES.Cryptors.swift in Sources */ = {isa = PBXBuildFile; fileRef = B95DA0B8F80A05FF18774CC83A71AE5D /* AES.Cryptors.swift */; }; - 2DC8D1BF773B1D0BFF796474DEB21A08 /* OCB.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8B550862A50AE656D9598B775DCAB12C /* OCB.swift */; }; - 2E25D2D2F52A4161B26175ECD8F1E95F /* secp256k1.h in Headers */ = {isa = PBXBuildFile; fileRef = 9E5B0BCCE1FF2FC9B4512991A323D3A0 /* secp256k1.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 2FB92AEFB1A745AC097C3F028E3B8703 /* KeyAssignRequestResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0851391139C8B561E9D2230BEB98CD83 /* KeyAssignRequestResponse.swift */; }; - 31892E6BA7E9DF2B3F88D226FDBBAB2E /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FC7E69F413E2E84A65EFD752DBA31DFE /* Foundation.framework */; }; - 324E0088874131EBEEAA9C9D4ED0B4BC /* Decodable+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 17018F72CB0DCA9668F767142D567866 /* Decodable+Extensions.swift */; }; - 3414125061419CC2955A14DA04B3EBE8 /* EthereumTransaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = 387353A782112985B34B7CD69F0A51DD /* EthereumTransaction.swift */; }; - 35C279CF0067E4311BA3F339C4A80DB8 /* web3.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CD2F735DEEF3E3BA318724FB4E8C87A7 /* web3.framework */; }; - 36EC4F2319ECCABD09DF923CB2433E4F /* ERC721.swift in Sources */ = {isa = PBXBuildFile; fileRef = 186A61775A01E47AC5C119FB9005FFE5 /* ERC721.swift */; }; - 373E4BEDB620E740B526FA7CC075BE19 /* scalar_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = BEFFF5D6FD42ADB3C141C0953170EE12 /* scalar_impl.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 38389ABA71B46B9D63E18AB6FC8FDA65 /* field.h in Headers */ = {isa = PBXBuildFile; fileRef = F568DB99F0E3C945D308D845A799EB4E /* field.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 3847F05E7A71417D95298774B70A28B6 /* web3.swift-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = D62D7B75B685A4651EA7BD4DFF985D9E /* web3.swift-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 38988B4D837A37F94B883DC379160962 /* field_5x52_int128_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 65FF0818C9929B5926B7C4B52206C07B /* field_5x52_int128_impl.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 38D927FEC10093DB6A4F6E330237E544 /* Data+Random.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7440E35780BF5BA52825B7CA75F9FDE7 /* Data+Random.swift */; }; - 39137B0D7B8FB5BF554BDE012BD85061 /* Data Conversion.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A2CC1CFCF251052ADDD09D9A0E7A75D /* Data Conversion.swift */; }; - 39C9C9704BAE8D24228F58A7E432D68A /* secp256k1.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2889ED6859342ABD0AC4C9F37F73B9E5 /* secp256k1.framework */; }; - 3A91797F3507F57F48C1382CDBBB763D /* Box.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6D404CFFB40C6756B0A4F0188ACB287F /* Box.swift */; }; - 3B233359DC56B3BFF843D8B13086D936 /* hang.m in Sources */ = {isa = PBXBuildFile; fileRef = B94DF005B2AC340384AF4050E05684F2 /* hang.m */; }; - 3B9A2601095A9A72843D76CA44B37782 /* Division.swift in Sources */ = {isa = PBXBuildFile; fileRef = 12766F44109AF015CE13EE9778402D45 /* Division.swift */; }; - 3BEC49289F8F9C071DAA32E1E19ED869 /* ecmult_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 67B44A57092697F09D48B034F87DE0AA /* ecmult_impl.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 3C831C73080260AE302B148004732917 /* BigInt.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BCF9CDF5DFDFCB1A781E6B4DD7B07561 /* BigInt.framework */; }; - 3C8E7E2C111B104576D259218BE727C3 /* allNodeDetails.swift in Sources */ = {isa = PBXBuildFile; fileRef = 83430C8BE37CA5ABED624A47D2CCB2FE /* allNodeDetails.swift */; }; - 3D0DA6DDD5E97C430C2B60ADA3C1C41D /* firstly.swift in Sources */ = {isa = PBXBuildFile; fileRef = BC25B6B0582755B0574E7ECD963EE102 /* firstly.swift */; }; - 3D8694431D0863BF8C2547D76C75432C /* Cryptors.swift in Sources */ = {isa = PBXBuildFile; fileRef = 657202ABBFE748A40A2783796BF08655 /* Cryptors.swift */; }; - 3E59FB896D98F0A2D99CBF41EA856612 /* FetchNodeDetails.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DF8E105FC51ADE54662B607BF36A6D3F /* FetchNodeDetails.framework */; }; - 3EC038C4518CAB305CD874C44F084E4D /* ByteExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6CD31DC5602C8A4EA488F6165118FE5B /* ByteExtensions.swift */; }; - 3F0DCB81028C22B0B2E490F9E0227A32 /* ERC721Responses.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EC90D55FA413D931E20578C1CEEC425 /* ERC721Responses.swift */; }; - 3FBDB6A5D6187B0DE160430842701539 /* ABIFunction.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33E4624D47DB7D9F81C64774BE5B01A7 /* ABIFunction.swift */; }; - 40C7317AB067266482EADD86E9103520 /* CryptoSwift-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 811EAB2E5D2E6254D06555584B240E1F /* CryptoSwift-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 4212FA90B5582FC6D0D70FBC76409298 /* ABIFunctionEncoder.swift in Sources */ = {isa = PBXBuildFile; fileRef = FD0B5FD346CBDFFEE192816885FEBC2A /* ABIFunctionEncoder.swift */; }; - 42AC21CBC10FBAA5D1F4052F1C1844D3 /* AEAD.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4786050970F7BC6B946E9599C6D0E032 /* AEAD.swift */; }; - 4362503059C68DFCDCB8621F4FD9E325 /* Square Root.swift in Sources */ = {isa = PBXBuildFile; fileRef = 296E4589882C9C8517E9E35C6499028B /* Square Root.swift */; }; - 43731713E2AD81A524F9C58E636D61AA /* ecdsa_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = E2C83B722CEE442D0372F0CA73D10DFC /* ecdsa_impl.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 439DD81E2EDA3BD90D9B83DAD6775DED /* PromiseKit.h in Headers */ = {isa = PBXBuildFile; fileRef = 6719018827B4A984DE567135029C81E3 /* PromiseKit.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 440D09BA7AA00FAB201009CE1D795385 /* scalar_low_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 8A163B49CEC0FA9E5225D5F50AF09BE8 /* scalar_low_impl.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 451C30CBE6197C1F042FFEA5C89CF037 /* Resolver.swift in Sources */ = {isa = PBXBuildFile; fileRef = A1D946844EC50D20CE303CF4FD09C94F /* Resolver.swift */; }; - 4560E105548564BD1DD6167698AE3C09 /* fwd.h in Headers */ = {isa = PBXBuildFile; fileRef = 8C94FF4B4412E542AFB463045F959791 /* fwd.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 4765E6E1189C9A9A45DABFFB51475507 /* ABIEncoder.swift in Sources */ = {isa = PBXBuildFile; fileRef = CACE0C4A13AFE60AA2B49B7BBEA046CA /* ABIEncoder.swift */; }; - 47EDFAD188E4C0D9D91DDCFBE9367142 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FC7E69F413E2E84A65EFD752DBA31DFE /* Foundation.framework */; }; - 48261232D5511B897F9C9D438D7866CB /* Checksum.swift in Sources */ = {isa = PBXBuildFile; fileRef = 38ACFA334271222BD4F32D11FEAF97FA /* Checksum.swift */; }; - 4A8B21596204A43258F4EC69A7AEC66E /* Hashable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4271AA592AC70AD55ED2F6D63EE2D786 /* Hashable.swift */; }; - 4B108A020552603ADAAAB2B687C4C276 /* PKCS7.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3E533AA2B9B722DFCD10F4DC711F754 /* PKCS7.swift */; }; - 4D4BFCA91BCB0CFD7F9D66E10EA01C3A /* CBCMAC.swift in Sources */ = {isa = PBXBuildFile; fileRef = FB51FF7C6C4B945820D511EED5DAA827 /* CBCMAC.swift */; }; - 4E38490279CBA1C9BB87FD4D5C97E8C2 /* Scrypt.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3FB45CCDD5C1C04B19AE51DD16976770 /* Scrypt.swift */; }; - 50E21F0AA22CF942624EEFC504647E9A /* field_5x52_asm_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = EB6BE9494194D9AFA7936F12BCFC765F /* field_5x52_asm_impl.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 51241D74B6A9008CA3BBEB9EFB0D2939 /* field_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = FC91C532ED6C11F022DF771E33CCF947 /* field_impl.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 54C983A99664C3E5F18ACB7A51063EC3 /* ERC721Functions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 49EC274D25D4080DB25FBC74A5E04247 /* ERC721Functions.swift */; }; - 56962E55CBEAB06A5A76A2C24CB4A1BB /* EthereumClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = 065E0E21D472F17C59860CF9DFADC6D0 /* EthereumClient.swift */; }; - 56CCB527EE2295657A8CDE856D88D7CC /* Array+Foundation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 145C2CFCCEE9E415BB5C5650807E68EA /* Array+Foundation.swift */; }; - 571530E5AABCD8EE8F42F175D56E29D8 /* BestLogger.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 401FB6B95BF461CFBCF5B408508044F7 /* BestLogger.framework */; }; - 57C8F5B66DFDCBB06D07CF3EC015DC96 /* NSURLSession+AnyPromise.h in Headers */ = {isa = PBXBuildFile; fileRef = 63D22F09D9D257B12174CF0AB13BE616 /* NSURLSession+AnyPromise.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 590D7E5F271EEB55A73F35F03A304A21 /* AnyPromise.m in Sources */ = {isa = PBXBuildFile; fileRef = BBEA3551AC22C8ACECBBDF0D9138CED4 /* AnyPromise.m */; }; - 5A3C959B46922E64F469EAA790385BDE /* HKDF.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47935440EB89D2B4B5FC5832725C8172 /* HKDF.swift */; }; - 5BD19233A11E60C2AE9089B354292534 /* AbstractTorusUtils.swift in Sources */ = {isa = PBXBuildFile; fileRef = 437540F4CEA4C64E88F2FC57D58CD678 /* AbstractTorusUtils.swift */; }; - 5DF9A23D4B7045437B036DFE203B0A55 /* Torus-utils-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 17AC71C0FFE887141BD08505911E4117 /* Torus-utils-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 5E033F7B93284FCC5D5344DA5A3D3252 /* Poly1305.swift in Sources */ = {isa = PBXBuildFile; fileRef = 228EEFF5D908B492A6493287E0E332C6 /* Poly1305.swift */; }; - 5E2574B7162EED00A81237F56CDC0BE4 /* BigInt.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95B90D18205E4BBF8F7B5D530A24432C /* BigInt.swift */; }; - 5E9B57DD15CD387784511C06798F069A /* Querying.swift in Sources */ = {isa = PBXBuildFile; fileRef = 735664226F470311D3170C899448F12C /* Querying.swift */; }; - 5EB4A8027C7C41C305B2373AC33BB6A1 /* CTR.swift in Sources */ = {isa = PBXBuildFile; fileRef = B91BCF654195406C86A973331BF8630B /* CTR.swift */; }; - 5F7CEE7E5E88D08C281E3B05B919504D /* secp256k1_ec_mult_static_context.h in Headers */ = {isa = PBXBuildFile; fileRef = 3350D8405F9EC2E1C0C2506FBAD2BFAF /* secp256k1_ec_mult_static_context.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 5FC50257647CF6C9FB0461EBB2ED2D56 /* keccak-tiny.h in Headers */ = {isa = PBXBuildFile; fileRef = 048650C366ADDE4442EE73E8081DE2AB /* keccak-tiny.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 5FD5456D6D7848229F4D703DF3043744 /* Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5E06860B83B20D4A67BF3717B49D709F /* Extensions.swift */; }; - 6002AD14210CBE9C34EB848031CFD7E6 /* Addition.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF7620A9128591CAA508544D83743F8C /* Addition.swift */; }; - 6090645471BF81CD036A42F9D9F4D622 /* Guarantee.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8FD54D6408CA1C36C029400070E1548 /* Guarantee.swift */; }; - 611450D9423EB6D78CBEBCBC60FC3BE4 /* BestLogger-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = B4BA7ABED2FB9143EA449C37ACF7300E /* BestLogger-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 61962601852B03EE4ECA70CAFFD5C9C9 /* PKCS5.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5006AEB82F73A08150044E2177EB164E /* PKCS5.swift */; }; - 619E26CDCCB3C36C908D99A776D538E9 /* scalar.h in Headers */ = {isa = PBXBuildFile; fileRef = 78706BFF9BA2453C423D8604D9618A5B /* scalar.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 6200212FE506EE2AFA416A92FEAC3FE7 /* AnyPromise.swift in Sources */ = {isa = PBXBuildFile; fileRef = 50FB84D33D8C77943EFB343EC9BB5291 /* AnyPromise.swift */; }; - 6327E3F7473B8EAEF127D6F523520167 /* ethereumNetwork.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD4E29D92957AE248E34A0BE740AFA1C /* ethereumNetwork.swift */; }; - 6368FF5EFA952A81078C455E8E21FCC9 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FC7E69F413E2E84A65EFD752DBA31DFE /* Foundation.framework */; }; - 63C7030226E5447CF45FB89AC396BAEE /* JSON.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6BE6225CB6454F56671574E097552251 /* JSON.swift */; }; - 64DD83A6F6EAA23D3B2AAB0491580078 /* Web3ERROR.swift in Sources */ = {isa = PBXBuildFile; fileRef = FEBDBD7C71F48CCA781AEF8CAB1AA832 /* Web3ERROR.swift */; }; - 659563D9902EB35CC2F452B3169320F5 /* ABIEncoder+Static.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5A5FC334F88D0032EB1D83AC8D493281 /* ABIEncoder+Static.swift */; }; - 66084292CB9E91E8F90A1F62B788057E /* Authenticator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4134AEC11A8F8B8DCDB9F3766DDF1141 /* Authenticator.swift */; }; - 67400968A08C0F3E29D77DB95D5C80A8 /* CompactMap.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2E9158AC3ECFF82080F312EF2735F02A /* CompactMap.swift */; }; - 680EEC439CBC1CE07935EAF98B827B41 /* HexExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1C59CFACA7E0C11A352F48A32069FC41 /* HexExtensions.swift */; }; - 687CD10C93F3E25966A91DE43F59402C /* when.swift in Sources */ = {isa = PBXBuildFile; fileRef = C90089CDFD2E5F46FFA6886F81E2AF9C /* when.swift */; }; - 6989571185F929E3457AF6FD3221C160 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FC7E69F413E2E84A65EFD752DBA31DFE /* Foundation.framework */; }; - 69D7AA0BF494140F716D638A028B18E9 /* ERC20Responses.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F377B50C28D987B0993144A55F57AD9 /* ERC20Responses.swift */; }; - 6B0A431CBE9613E7DEA2BFEE592DC602 /* SHA2.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09C904EEDB892C0039A827BB6DFE64AD /* SHA2.swift */; }; - 6C91CE1A9EAD935953C862AA01252B1F /* ABITuple.swift in Sources */ = {isa = PBXBuildFile; fileRef = 44DA4E25E3BD5461C1A77ECDBABB14C8 /* ABITuple.swift */; }; - 6D03F395E21C63DF45A539A76A09B6F0 /* CFB.swift in Sources */ = {isa = PBXBuildFile; fileRef = CCB88A63CB85E660D3EC7FC6C7C53E0D /* CFB.swift */; }; - 6D80BF21C3FF0C29514142F1658F0FAE /* CustomStringConvertible.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E885E5AEEACFBC1327D43BC77F5F1D7 /* CustomStringConvertible.swift */; }; - 6D891F07EE9F46527782BAC319839540 /* secp256k1.swift-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 94FCF9C0056EB6714CADF0D24C3EB969 /* secp256k1.swift-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 6E0E7F750ECF358400C70C45A6F05FBC /* NSObject+Promise.swift in Sources */ = {isa = PBXBuildFile; fileRef = 54A13D98AB9A9135E521EBECC24086EC /* NSObject+Promise.swift */; }; - 6E8B7017BA811FA1DCC7EFBA8638AA0D /* scalar_4x64_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 91EF3F22D1C57CC47DFFB0F19A072617 /* scalar_4x64_impl.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 6F377530480B0D4A9EB4B7C0AE39EB40 /* Multicall.swift in Sources */ = {isa = PBXBuildFile; fileRef = A2E0F2313A7BF02DC414F553E4F4E207 /* Multicall.swift */; }; - 6F96569BFF4B21CA6D75ADC073DF1CD7 /* GenericJSON.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0CF20DF7F8CB70917B48A09DCAF20008 /* GenericJSON.framework */; }; - 6FD6CF7DDC0B8EFBEF4CBF125251637D /* scalar_8x32.h in Headers */ = {isa = PBXBuildFile; fileRef = 615FADBB13443F5FE8D2A69E2721F74F /* scalar_8x32.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 70025704C650165B9E49CCAA89287488 /* AesUtil.swift in Sources */ = {isa = PBXBuildFile; fileRef = 559673992E18C2184B7DB88C26908C97 /* AesUtil.swift */; }; - 7047308CD74FCCD896CDF4B75484280B /* Cipher.swift in Sources */ = {isa = PBXBuildFile; fileRef = B61E9B4DD1E8E331BED65262657B7ACA /* Cipher.swift */; }; - 70A76CA5133B694BA7F4221C1BF351A9 /* Data+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 80787FB4F6282B6B4774502BA9FDE45E /* Data+Extension.swift */; }; - 711F7DADE06C01CCE27255852937611E /* scalar_low.h in Headers */ = {isa = PBXBuildFile; fileRef = 6015211FA3890EB6038D375C31DBF42B /* scalar_low.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 71584F3629CA1159CDA2B9847FF46CBB /* hash.h in Headers */ = {isa = PBXBuildFile; fileRef = 12F764DC64AB0A601139422E4BD7D8DD /* hash.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 73EBE9A97699C85946EE53450A8084F8 /* Deprecations.swift in Sources */ = {isa = PBXBuildFile; fileRef = EF051FD5538DECBB1E8F994587A6FFCA /* Deprecations.swift */; }; - 7429C276361E16E48BF59044AF27A028 /* CCM.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBF5A984037769B13F3CDFBCD77F0101 /* CCM.swift */; }; - 74CFE6D4AD2B232D6D0E1F5F67BE42DA /* RLP.swift in Sources */ = {isa = PBXBuildFile; fileRef = FFA75995355AAE462CC550E8A760D288 /* RLP.swift */; }; - 74E29584304FA048D1854662FD2C57A3 /* SecureBytes.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3CA73B7B37631191F8319ECA14123494 /* SecureBytes.swift */; }; - 7744550E93E9C5539458DD596AAF3588 /* Array+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = EEACF7A961EC75E6BA98EFA22D55C5BE /* Array+Extension.swift */; }; - 77733BE94B2273D0FD91AD5902FF399B /* JSONRPCRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1B57C4429024335B6B233AFBC8EBCA62 /* JSONRPCRequest.swift */; }; - 796B95070EC9558D5E41E9EF7532BBA4 /* Collection+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2F940CBEDB6917EA53A85EFD2E617BC7 /* Collection+Extension.swift */; }; - 79FD9B3E01769F3863DD3CCAD6A490C0 /* Torus-utils-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 1A1951365C824097FACFD2902FB031AE /* Torus-utils-dummy.m */; }; - 7A38D008736C3A493C41F02060F49B76 /* MulticallContract.swift in Sources */ = {isa = PBXBuildFile; fileRef = 73A6BB7E6612064E62C5915EAEEB1E90 /* MulticallContract.swift */; }; - 7A95B19EF8667BB6885CAB268B599ABB /* aes.c in Sources */ = {isa = PBXBuildFile; fileRef = DD5E21C3E93E74968429B747610652AC /* aes.c */; }; - 7B9BE1B91DA5293155B6D89171DC9CA8 /* String+Numeric.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9A56F53D176856193ADC162E4AA076D3 /* String+Numeric.swift */; }; - 7EECE9FCF5E07473E6D0FE80BFCB94C9 /* BigInt-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 5E2D4BC3737199C8D05218F1C77F9034 /* BigInt-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 7F3F9C47BD625CD3F2AD18B909973E04 /* Blowfish+Foundation.swift in Sources */ = {isa = PBXBuildFile; fileRef = A9C40D80418447C39E1CEE26F0F62541 /* Blowfish+Foundation.swift */; }; - 8145C49CA35BCE3FCF5A99ADB87A0C55 /* ecmult_gen_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 486E6A0E5AE1F8895ECAEE9DD2005369 /* ecmult_gen_impl.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 8252E005129B3142BADB46BCCFE94C7F /* Error.swift in Sources */ = {isa = PBXBuildFile; fileRef = 17D29E3BCB8FF1F4020A2994E7BCE1EC /* Error.swift */; }; - 832410C57E709819C0AB90704B227D15 /* Utils+Foundation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 846F829B2D7426B6F3568F7A41B70709 /* Utils+Foundation.swift */; }; - 834CD9C366761EB93A388586921A99FF /* fetchNodeDetails+promise.swift in Sources */ = {isa = PBXBuildFile; fileRef = 766055FE9D17A63A6550E7C31B47CCA0 /* fetchNodeDetails+promise.swift */; }; - 839BC168E7632A2D9B19CF7152A9800C /* after.swift in Sources */ = {isa = PBXBuildFile; fileRef = C3C8F8C1CEC18CFA6F4EC55EBA7631EA /* after.swift */; }; - 83EFCE89EFC023D35E82886D2E22DFC2 /* OFB.swift in Sources */ = {isa = PBXBuildFile; fileRef = 227988D42D5705A1BAE6FAD5F72C6D00 /* OFB.swift */; }; - 8532AFAE5B4DE21DCAFB19AB0E4434EB /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FC7E69F413E2E84A65EFD752DBA31DFE /* Foundation.framework */; }; - 85448A725FB5CA7ED4A57E4B5E1AEE17 /* NSRegularExpressionExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = BE12BB56CC283AE61B661B59E78E2647 /* NSRegularExpressionExtension.swift */; }; - 8599E23B2946C6F3F6DA3D63EC82C4A3 /* Words and Bits.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2170B31DD562445C083A20DDD6258F0F /* Words and Bits.swift */; }; - 85C6907C9074A39986480244B05D9048 /* BatchedCollection.swift in Sources */ = {isa = PBXBuildFile; fileRef = 625BE58FC9C80FD86E0F3428FAB98641 /* BatchedCollection.swift */; }; - 85F2B33BD5A52DB4D0AA52CD12D12167 /* ChaCha20+Foundation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5896784A7C660D31DBAE675252CA4DF1 /* ChaCha20+Foundation.swift */; }; - 8696F36413C5022B80C90D7F6F095EE8 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FC7E69F413E2E84A65EFD752DBA31DFE /* Foundation.framework */; }; - 86C453ADE644FB9F9152248CE001666E /* race.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C73E21633622C0E540FECA763090CF5 /* race.swift */; }; - 87E94A1679CE829C192A153716A10671 /* join.m in Sources */ = {isa = PBXBuildFile; fileRef = 3E70E5624B6AE48004C699DCD7992DF8 /* join.m */; }; - 88066B6FE11C9F717E534CF2F51B3565 /* scratch.h in Headers */ = {isa = PBXBuildFile; fileRef = C70E337CA4A128EB792DA9A9A442B8B7 /* scratch.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 883E03D5F63E4A5F9AC708633424896B /* SHA1.swift in Sources */ = {isa = PBXBuildFile; fileRef = 57A8F00674208873848E850C916B07DA /* SHA1.swift */; }; - 89C6C643663DB9E4B6648144D1C574AE /* num.h in Headers */ = {isa = PBXBuildFile; fileRef = 30C3E0C8C874047E39DA7BED51AE62C1 /* num.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 89D080534ECA704573D2054947D42A7D /* NSTask+AnyPromise.m in Sources */ = {isa = PBXBuildFile; fileRef = 365F7CFC9000B66178A957AB3210DEAB /* NSTask+AnyPromise.m */; }; - 8B0847B6C4AE3201E4BD3F16467D3651 /* String+FoundationExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2447CE7DAD1FA7DB3AA250427A017605 /* String+FoundationExtension.swift */; }; - 8B777214C4B99B729D4C0B702BF74D3A /* Error.swift in Sources */ = {isa = PBXBuildFile; fileRef = B83A95CDF79941CA7AE303C151E4FC8E /* Error.swift */; }; - 8BF40F940F98EAA18B30C0D52431212F /* scalar_8x32_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 3E7141D086ADC08DD965A7B5ABF52284 /* scalar_8x32_impl.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 8C26CE61F140552EBBDBBBDD57FCEF51 /* Catchable.swift in Sources */ = {isa = PBXBuildFile; fileRef = D7C6DDD94A2A8C545C4D1B69BA43D722 /* Catchable.swift */; }; - 904B351E0FA2C736D1F79343FA930CC5 /* secp256k1.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2889ED6859342ABD0AC4C9F37F73B9E5 /* secp256k1.framework */; }; - 90EABD413727D87F031910B7240F9191 /* secp256k1_ecdh.h in Headers */ = {isa = PBXBuildFile; fileRef = 97C43CF8036DEAB3C7EA5E3B522581B3 /* secp256k1_ecdh.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 91A11E1C87AA34B7ABFC47EA6E38851A /* main_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = BFEFDD7E3AFC5D34452BDC80FF8C105D /* main_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 9249FA13BD9FB1D1B64124033450A3CE /* RIPEMD160+StackOveflow.swift in Sources */ = {isa = PBXBuildFile; fileRef = C80291FFE1DDADC08B9AA9FA72564B27 /* RIPEMD160+StackOveflow.swift */; }; - 9250E2CA6532715FB44355DB435A8E41 /* EthereumAccount.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74F3F1B8FD72FF65A416F892BE4F1D77 /* EthereumAccount.swift */; }; - 92C9F58DC8D6679585C327524FFB113C /* Torus-fetchNodeDetails-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = D3B7FA99D8BAF992F5C08880834432DB /* Torus-fetchNodeDetails-dummy.m */; }; - 930066A4A0897157ADD1F68ACAA03C26 /* HexUtil.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8B26AEAF934F1B432BA0C56F9E0A4003 /* HexUtil.swift */; }; - 958D884F07F2EF5A01763A4321F7706C /* StreamDecryptor.swift in Sources */ = {isa = PBXBuildFile; fileRef = AE37171F151FE8AC745186199F849F4E /* StreamDecryptor.swift */; }; - 96CA755FC38BF83CAD18DF075332B351 /* Pods-TestApplication-TestApplicationTests-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = CA38481A10469E72124DD89F5DC85BDD /* Pods-TestApplication-TestApplicationTests-dummy.m */; }; - 99F35D362CDAA3F01D59E05FAB02907D /* Strideable.swift in Sources */ = {isa = PBXBuildFile; fileRef = BA8AD0C185FB85574DB51265FA838E1F /* Strideable.swift */; }; - 9BA1AD0AD7986535806976E7DD937797 /* afterlife.swift in Sources */ = {isa = PBXBuildFile; fileRef = FCD66DE5118D187C8CC9C5E32D84D478 /* afterlife.swift */; }; - 9EA77F1E8739F22A5B035FEFEBE8DC68 /* ecmult_const_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 1FC45449936DF5240CAF940D29E39C49 /* ecmult_const_impl.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 9FA61FB16C6D506091E47511D3ED3EC3 /* ABIRawType+JSON.swift in Sources */ = {isa = PBXBuildFile; fileRef = 21898A94100F0AAE45DF0541E2E0CBCC /* ABIRawType+JSON.swift */; }; - A0D66E0AB4008821F396A7358341A790 /* secp256k1.c in Sources */ = {isa = PBXBuildFile; fileRef = 929B427A2A41FDB092BEB627145B4B1A /* secp256k1.c */; }; - A24347122645BA45628664A7150167EC /* GCM.swift in Sources */ = {isa = PBXBuildFile; fileRef = 332F52699E64158C82118FD0F3ADA95B /* GCM.swift */; }; - A348AC80E688080DAF4D4E53E914635A /* EthereumBlockInfo.swift in Sources */ = {isa = PBXBuildFile; fileRef = B4DD22124D02AEFB8CD1C081B693A862 /* EthereumBlockInfo.swift */; }; - A3537A0BF9EEDA0136E8DF0E4808A071 /* ecmult.h in Headers */ = {isa = PBXBuildFile; fileRef = 33DD392B28249B6AC36CCE4111EA32CC /* ecmult.h */; settings = {ATTRIBUTES = (Private, ); }; }; - A388FDA4B69D62161C5980C6180FC0F8 /* GenericJSON-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 46EDEBD5407B6208F2E7818139E41432 /* GenericJSON-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - A39CDB9564FF499A726A124D54F288F0 /* CipherModeWorker.swift in Sources */ = {isa = PBXBuildFile; fileRef = 438E9635D94E1B1EAD726DED2082D9C1 /* CipherModeWorker.swift */; }; - A523401DEFF98A31C5EA134D790C49B3 /* Configuration.swift in Sources */ = {isa = PBXBuildFile; fileRef = B0BB649A97D99A1DCFCFF30E68B7819B /* Configuration.swift */; }; - A5E9EF7703A91BC02825E074EEE9B073 /* nodeDetails.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2FD51937D140E00F9B4D3F5216E5A3B6 /* nodeDetails.swift */; }; - A65208A5DE3D8A8F9803BF5CEE283243 /* NSURLSession+AnyPromise.m in Sources */ = {isa = PBXBuildFile; fileRef = 501F3EDFAF27DF3750AD513AFA1AEC20 /* NSURLSession+AnyPromise.m */; }; - A6DF340F03B399DB1F02D5F75ADDE68E /* Rabbit+Foundation.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF9862A03C43767E8E3C6D36315A5CBB /* Rabbit+Foundation.swift */; }; - A7D81AB5559FBF946A48825BCDDE8BCD /* NoPadding.swift in Sources */ = {isa = PBXBuildFile; fileRef = D6916E78D3D8F77D9D14EC4153148957 /* NoPadding.swift */; }; - A7DBA8BAD821AE34BAA91D3BCFD395B5 /* String.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4606B08B6DEB98353BA491A53AC33179 /* String.swift */; }; - A86323DBBCC6F8D2CE33D8CC842D3914 /* Initialization.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0F6B30756599BFEB2256002FB64351A /* Initialization.swift */; }; - A90954DFB72A64488E4E18A49D730154 /* field_10x26.h in Headers */ = {isa = PBXBuildFile; fileRef = 83C2D1A6B39C60D291A546F28E434BA7 /* field_10x26.h */; settings = {ATTRIBUTES = (Private, ); }; }; - A91A6DB1FA0CB11EC5E75C28353750AE /* Process+Promise.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6809224EF5DB3DA7107CCEE105A38DF1 /* Process+Promise.swift */; }; - AA7DF5E39E92D10C2365507B721890C5 /* UInt64+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0725D54099E8DC5F13F166F38A3E0483 /* UInt64+Extension.swift */; }; - AACE9BF8828258FB9005920DD763A5D2 /* Merging.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7B1A4648778048C7F084EF95A356B165 /* Merging.swift */; }; - ABF9D3029DDA1D3BF80E7CCC938FA423 /* lax_der_parsing.c in Sources */ = {isa = PBXBuildFile; fileRef = 40B3F6A51D76E5023588B1808D0D2CFD /* lax_der_parsing.c */; }; - AC4E061C6A2D21210122B471D8BCC81E /* Random.swift in Sources */ = {isa = PBXBuildFile; fileRef = 94D080D97613C26E3745753411FD283A /* Random.swift */; }; - AC7DBF3AD44B3E7644068E6F09F9EBF2 /* BigUInt.swift in Sources */ = {isa = PBXBuildFile; fileRef = E030D06A52E5961BA9BDF05F6F355AB5 /* BigUInt.swift */; }; - AD3ADED2C7A356C48E090AB15B5791CF /* ERC20.swift in Sources */ = {isa = PBXBuildFile; fileRef = 642310926E7B2EBE2C3FDECE7283F069 /* ERC20.swift */; }; - AD4211DDE9CA6B31F727DDDB9A780C19 /* Array+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 77B4019CF0ED9D3E11EDF90BBFC3B7EA /* Array+Extension.swift */; }; - AE2372913A8C944C35E666F215C4C763 /* field_5x52.h in Headers */ = {isa = PBXBuildFile; fileRef = 741AFFAC18F4274036ABAA3F88D19E3F /* field_5x52.h */; settings = {ATTRIBUTES = (Private, ); }; }; - B16EAB7D16914A5AB8DD6537096CA1C8 /* Operators.swift in Sources */ = {isa = PBXBuildFile; fileRef = DA7496928C2C06096EB627BCA771DB62 /* Operators.swift */; }; - B52AA98C7F96F4FFF6A03BB7E37A45EE /* ERC165.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1E15F289AAC20610718E90CB6948CB28 /* ERC165.swift */; }; - B5D2120553126FAD0CF14DBA77C57757 /* ERC20Events.swift in Sources */ = {isa = PBXBuildFile; fileRef = E0878338B49562AA36DB88BC20435547 /* ERC20Events.swift */; }; - B5E1DB7A4D9547DBDEE0A66050A4ECAA /* Dictionary+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 79E446965E5C279D7C6E50209DEB6C0D /* Dictionary+Extension.swift */; }; - B63EE4EAB445C635F00B609985FA192E /* Pods-TestApplication-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 9480EC5419F2059D80BD085B2DBF2323 /* Pods-TestApplication-dummy.m */; }; - B84DD3D850DC526C180B85AB8085848E /* AES+Foundation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9363C4F487656755DF0A37F5B2517F8D /* AES+Foundation.swift */; }; - BAA052C302D45F8DAB72606E997CAD69 /* Subtraction.swift in Sources */ = {isa = PBXBuildFile; fileRef = 244569551C654FAD088C5BF1804BB0CF /* Subtraction.swift */; }; - BC833904B48AB770E7152E060872FB04 /* EthereumAccount+SignTransaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = D5361ABEA1CDF0DD51F64831C1F47671 /* EthereumAccount+SignTransaction.swift */; }; - BE29AFA73FEDAFA471F35F8AB1C3EA99 /* Shifts.swift in Sources */ = {isa = PBXBuildFile; fileRef = FD3B53A6F28E087C361B3BE376595D74 /* Shifts.swift */; }; - BF1E13CA09A14498F682ED50CF7CE36D /* ENSContracts.swift in Sources */ = {isa = PBXBuildFile; fileRef = BD39EB98407DC1E1E755DC2C646032A5 /* ENSContracts.swift */; }; - BF4CFED16A01A443719C6A8AF12A1C66 /* hang.swift in Sources */ = {isa = PBXBuildFile; fileRef = EB2C6BED3D74ECE2DFC06B298D4AB6B9 /* hang.swift */; }; - BFA9B66AADC5D0968C1455A0C294F2CD /* EthereumClient+Static.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1471D23729F8BAB1C7CC8595F3E747E2 /* EthereumClient+Static.swift */; }; - BFE07B2163299AA613828BFD12E1DD30 /* TypedData.swift in Sources */ = {isa = PBXBuildFile; fileRef = A6F06C93786B08E1DE559DDD7B9F5423 /* TypedData.swift */; }; - C3DAA89D71AFFB9199C8B3792E195AE5 /* KeyDerivation.swift in Sources */ = {isa = PBXBuildFile; fileRef = E82B13B68F52BEAD3FBB117CA0C0CE0A /* KeyDerivation.swift */; }; - C3F9898CED558AA22503CDE7D1D6E3E6 /* ABIRawType+Static.swift in Sources */ = {isa = PBXBuildFile; fileRef = 66F8AAC22DB26ABC53091415B10EEC16 /* ABIRawType+Static.swift */; }; - C440CB19EAD2250736F779723F9E1613 /* lax_der_privatekey_parsing.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BAEB0D6C133C644E7C75BDC3DFEE150 /* lax_der_privatekey_parsing.h */; settings = {ATTRIBUTES = (Private, ); }; }; - C4A7224A219E0B1367D9B63B42CAFBFD /* ABIEvent.swift in Sources */ = {isa = PBXBuildFile; fileRef = 34A9444C608A173A0C7BCE90EFDCD2C8 /* ABIEvent.swift */; }; - C58FAE6BAFB4B5977473EE7C6152D1F2 /* Rabbit.swift in Sources */ = {isa = PBXBuildFile; fileRef = F98029C9DB6922E77715A2A6DAF2283B /* Rabbit.swift */; }; - C80CFC41AB0D8C865EFB0107805B4063 /* BlockEncryptor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 517C9054E04427F006E9A3EF43E6E45E /* BlockEncryptor.swift */; }; - C97B6559C68CDFA1815B21868A2C4FA4 /* KeystoreUtil.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2FA065E8923A9B4B230F07C25B1D17DF /* KeystoreUtil.swift */; }; - CAA9D23D51710AF8997CDE21F069C362 /* CryptoSwift.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0F108ED1141687A35E9F764E19ECA19A /* CryptoSwift.framework */; }; - CB11C5BC6E27394D8A93CD42B788AEFB /* TorusUtils.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0CCDBC1B821FF862979B3E2F8311E141 /* TorusUtils.swift */; }; - CB6CDE318AA7AAD6458065A310825787 /* NSNotificationCenter+AnyPromise.h in Headers */ = {isa = PBXBuildFile; fileRef = C4B6453889D747D11C945C03DD14A0CC /* NSNotificationCenter+AnyPromise.h */; settings = {ATTRIBUTES = (Public, ); }; }; - CB92B16177821485034F926E18FBFB16 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FC7E69F413E2E84A65EFD752DBA31DFE /* Foundation.framework */; }; - CBA03B40B0121AF0860C099FB1055E88 /* torusNodePub.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1BC2FF26857A73C38ADDF6A7DCA27F09 /* torusNodePub.swift */; }; - CE67039F46FFA8530312AE1369E3410A /* PBKDF1.swift in Sources */ = {isa = PBXBuildFile; fileRef = C2A2B713501EFB61B44C35BEECBEE942 /* PBKDF1.swift */; }; - CE94B77F92A93F3F68DB20AF5450581C /* ERC721Events.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76CEC0CE7E0EA8154AF04D686166E1CE /* ERC721Events.swift */; }; - CF76E3D297B0996581A9DF7CCD2DEACB /* Pods-TestApplication-TestApplicationTests-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = CEC31D6A49140A8533DE7811B519DB98 /* Pods-TestApplication-TestApplicationTests-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - CF9A1A2EC5F7514F80E89F5B21A90FA0 /* ZeroPadding.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3DCB79608CDE73661BF31DBA543934E6 /* ZeroPadding.swift */; }; - D03CA8ADF7DFB7CDFEFEC1ECEB00A330 /* PromiseKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FF2875B47A1760A6A6B513F73B1154C5 /* PromiseKit.framework */; }; - D040BB1F2A079E0A386DD7430D7BE500 /* ABIRawType.swift in Sources */ = {isa = PBXBuildFile; fileRef = D8AFFF868EB84EB607143B5565BBDA1D /* ABIRawType.swift */; }; - D1F7E0C0020B441D5D28225421323A99 /* keccak-tiny.c in Sources */ = {isa = PBXBuildFile; fileRef = 838B4A2F61FA416D6477A9AC1058852D /* keccak-tiny.c */; }; - D2C3FD9079EB324D58353216251588FD /* secp256k1-config.h in Headers */ = {isa = PBXBuildFile; fileRef = 6522FBD7759B8D45FB77AAFC73C73FBE /* secp256k1-config.h */; settings = {ATTRIBUTES = (Project, ); }; }; - D45AEA0417E7C178F5A7A5B09B932B23 /* RecursiveLogCollector.swift in Sources */ = {isa = PBXBuildFile; fileRef = 171D30B00FFF9FF1E041CD16B6F40F67 /* RecursiveLogCollector.swift */; }; - D48A4410A7C8CE6B6A0787A0F4999DE5 /* Multiplication.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0CA3952C11FD519FD43BF4F8AC3C6A12 /* Multiplication.swift */; }; - D4E126CF3E55186DF8CD2D290C2E3EA1 /* abi.swift in Sources */ = {isa = PBXBuildFile; fileRef = A98BB106714997D0CC43F47613A9E687 /* abi.swift */; }; - D6C6B941F5A8732E6E2D5C5DAD6F3CBD /* BlockModeOptions.swift in Sources */ = {isa = PBXBuildFile; fileRef = F5B8EB110B55AA3FB4CAD2360C519392 /* BlockModeOptions.swift */; }; - D715D21943781AD4748F78D16C4274D3 /* NSURLSession+Promise.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5F2233FCB68A0ADAD892CE83D30BA631 /* NSURLSession+Promise.swift */; }; - D8A78CBD2EE8B5DE3645654085445B94 /* ECB.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1FBAE32F1B25EF2E3DD3FE1CB070E785 /* ECB.swift */; }; - D95896401FF5E7F2BBFCD52D04D21A83 /* BigUInt+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = AA7DA7B4EC3D51F14B2FC3CAD3AC27B4 /* BigUInt+Extensions.swift */; }; - D9D7A0D0519B6A5E325DF969ED8529D9 /* num_gmp_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 5ED50921647C799CF8C0C1155F2016C5 /* num_gmp_impl.h */; settings = {ATTRIBUTES = (Private, ); }; }; - D9EC9F9D1CD3C150A8B4CDE6EC13053B /* AEADChaCha20Poly1305.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9C5D28B376396769A8345EA4FDD6F087 /* AEADChaCha20Poly1305.swift */; }; - DAE8EDB9D21E460953216646F12A2574 /* EthereumNameService.swift in Sources */ = {isa = PBXBuildFile; fileRef = C9FEA2BFAF950BCFBFD1EA7BFF92A57A /* EthereumNameService.swift */; }; - DBE9A6D9CB82D8605F4C25B9426B1557 /* Codable.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4AF2BDFB2BB94A418B23C286BB2CC72 /* Codable.swift */; }; - DBF232C5CC6FB8EDF32D69E0FF8A50BD /* BestLogger-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = E95FADD8DFB40C5A19F7745EC43E36B0 /* BestLogger-dummy.m */; }; - DC59AEFA9BD4DC19BECC59F52A7E4903 /* web3.swift-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 25D82BF60AB4BA0F6160F9F633DEBF26 /* web3.swift-dummy.m */; }; - DCE74D5CB8D3EF178AD6F16EA903DDD4 /* PromiseKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FF2875B47A1760A6A6B513F73B1154C5 /* PromiseKit.framework */; }; - DD4696B76C51BBE9D65FCCAA83E01CE8 /* num_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 6724980A57CFBD848FEB46934DDE16B9 /* num_impl.h */; settings = {ATTRIBUTES = (Private, ); }; }; - DF0D601BDFFD7CC0858A26A071C42A5F /* EthereumNetwork.swift in Sources */ = {isa = PBXBuildFile; fileRef = C722D43EF4943ED4C6850E8746BD8460 /* EthereumNetwork.swift */; }; - DF229FD3411FEAF824277A8DAAC10952 /* Promise.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2AC12F89264B908BC0B7226C60E10565 /* Promise.swift */; }; - E0A113D3E7F839B9A694BDF8F14B2350 /* group_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 30FDD3AC62CA96BD7F7AD357B4EB8451 /* group_impl.h */; settings = {ATTRIBUTES = (Private, ); }; }; - E0B84D75D0F7E7EA2E905C05774CC361 /* Integer Conversion.swift in Sources */ = {isa = PBXBuildFile; fileRef = C37402F645C4D792CBB9A8A6632F2BA3 /* Integer Conversion.swift */; }; - E26CD2D802212FB1C5846139BF2DAE18 /* CryptoExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7D1494809DCCBB6CA502E31B8E609B47 /* CryptoExtensions.swift */; }; - E2BC9DCDF4C1F49FF55C72890D5B41EB /* lax_der_parsing.h in Headers */ = {isa = PBXBuildFile; fileRef = 9EE9B27E2555D7296BEDCA963C73D0A0 /* lax_der_parsing.h */; settings = {ATTRIBUTES = (Private, ); }; }; - E332D1A462D6291A366BAFC5C4F4A738 /* Cryptor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EA249BCC820BF0D1BFDF5D8437662B3 /* Cryptor.swift */; }; - E3722732874689BBCD403DE3425D019A /* eckey.h in Headers */ = {isa = PBXBuildFile; fileRef = 7B30E983C0539A09B868FA39B5134C16 /* eckey.h */; settings = {ATTRIBUTES = (Private, ); }; }; - E39835938BABEC4BBE3C1C8016F5E1FB /* ISO10126Padding.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8A9AD8E13539BB198D04A4546D3B04B9 /* ISO10126Padding.swift */; }; - E60B581E6046898D5951A8370A302235 /* field_5x52_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 905566F790A691B5547B4DA117035B41 /* field_5x52_impl.h */; settings = {ATTRIBUTES = (Private, ); }; }; - E642797D563A605F28C3593EF0419DCC /* secp256k1_recovery.h in Headers */ = {isa = PBXBuildFile; fileRef = 90B639CFCF2B6A84C803968A7D2E5CDC /* secp256k1_recovery.h */; settings = {ATTRIBUTES = (Public, ); }; }; - E665DAA88F57178FFA8819BC4E88995A /* Encodable+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1F2C5CF530973B84C4D04399387E1230 /* Encodable+Extensions.swift */; }; - E6A12ABF215E8E669D5EA34AD1C45982 /* GenericJSON-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = B71203F9814D6098D0BDD444A73B1FB1 /* GenericJSON-dummy.m */; }; - E6C98D0B5C534492BA9694F4C4B2CD8F /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FC7E69F413E2E84A65EFD752DBA31DFE /* Foundation.framework */; }; - E74E7E8884EAD324EB2F3537B2CB8DC0 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FC7E69F413E2E84A65EFD752DBA31DFE /* Foundation.framework */; }; - E76B7E1EBD06E27FBF0B8ED35AC9BE9B /* when.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CF60EDD4B72C01DAAC4CCCAD27B8FAE /* when.m */; }; - E78B30F45F367D6221E889513C69A923 /* field_10x26_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 95433FAB2575C84D98AEA73A78453ED4 /* field_10x26_impl.h */; settings = {ATTRIBUTES = (Private, ); }; }; - E82495B73C69BB82857EA6385809124D /* EthereumBlock.swift in Sources */ = {isa = PBXBuildFile; fileRef = A24186845D5C01BBD56FAC2B8B5D8BD9 /* EthereumBlock.swift */; }; - E8A219E1EA94951707277DEA902D7F34 /* group.h in Headers */ = {isa = PBXBuildFile; fileRef = 020E2E2655B54E4F841EFF5C78EC9A50 /* group.h */; settings = {ATTRIBUTES = (Private, ); }; }; - E8A71945E0D647B185ACA6E7A8DCD353 /* Updatable.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE4DCDC16D95F49A6F101647535E6700 /* Updatable.swift */; }; - E8ABBB87CFEBE721FC2D14B71A719BC2 /* String Conversion.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4584418C470BA7BFBBA87FDAEF488CF0 /* String Conversion.swift */; }; - E8B3D8F1EF4C24881AC43D752840C782 /* fetchNodeDetails.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA437238714B0745150524A37C4251BF /* fetchNodeDetails.swift */; }; - E93CF504980B3D653BB4530E7F98E9F6 /* Prime Test.swift in Sources */ = {isa = PBXBuildFile; fileRef = A2B9392690B460036C89A882BD7FDFEC /* Prime Test.swift */; }; - EB0450140F0DE8EC373CE3173F9CD9AF /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FC7E69F413E2E84A65EFD752DBA31DFE /* Foundation.framework */; }; - EB9DB3EF58017616CDD3CAF7D8D30EB8 /* basic-config.h in Headers */ = {isa = PBXBuildFile; fileRef = 08A78AF904E46E091F3D3FE519CF4760 /* basic-config.h */; settings = {ATTRIBUTES = (Private, ); }; }; - EC1DA3E38FB8FE590C02877C47DA1AB2 /* ecmult_const.h in Headers */ = {isa = PBXBuildFile; fileRef = 910D79A23CF5FF03F05E71536F3E41BA /* ecmult_const.h */; settings = {ATTRIBUTES = (Private, ); }; }; - ED65BF60F7C7CE93B7906AEB054A2352 /* PromiseKit-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 480FC0755DD71E0AF4F1428BBCEA2CEA /* PromiseKit-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - ED90D5F734B38ABB9C1C2988FD080D3B /* LogEvent.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8F18EEA5FD4BA8416D39F7C9E2135452 /* LogEvent.swift */; }; - F04E36B4D3BA605353AC658D2F05E9C6 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FC7E69F413E2E84A65EFD752DBA31DFE /* Foundation.framework */; }; - F062C462EE76BCA476DB152B78DC48C5 /* num_gmp.h in Headers */ = {isa = PBXBuildFile; fileRef = C26C01C972A085F70B205170897B5C1F /* num_gmp.h */; settings = {ATTRIBUTES = (Private, ); }; }; - F13925E2206A7647AC326ECFA6ED2856 /* GCD.swift in Sources */ = {isa = PBXBuildFile; fileRef = AAECE43379277130C24025534B502DE7 /* GCD.swift */; }; - F183C3591CE63C56EC75D429E079F2C8 /* String+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7B308266B66D32BEE30FA4033575BBCC /* String+Extension.swift */; }; - F1BAEBBEEAF4F9F5398650430D78BC70 /* hash_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = F5992D1E9BB1CFB5DB408C53D463F901 /* hash_impl.h */; settings = {ATTRIBUTES = (Private, ); }; }; - F247F979594173ADDCC0CCDC8D19F238 /* Thenable.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF8CF5611E134E636443143FA67AD49F /* Thenable.swift */; }; - F467CBAA37786202C18C606F7A0B533B /* PMKFoundation.h in Headers */ = {isa = PBXBuildFile; fileRef = 18997BD10C1E8709FA7DBCEA1EAB809B /* PMKFoundation.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F53E5CF590A98D2D1DC018AAE121C9D4 /* dispatch_promise.m in Sources */ = {isa = PBXBuildFile; fileRef = 2AB273F8448B5EB518156BD5C29F482D /* dispatch_promise.m */; }; - F5D4ACAC7F17C5124B8AEA17EE690EC8 /* KeccakExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4F7A157ACEF96B73525911DBF2977A23 /* KeccakExtensions.swift */; }; - F620A7251AF3245C3D70DC5FFA8E078F /* secp256k1_main.h in Headers */ = {isa = PBXBuildFile; fileRef = 086636E244AE50BDFE486B4C589EBFB6 /* secp256k1_main.h */; settings = {ATTRIBUTES = (Project, ); }; }; - F6E1A005B24D3074F42E9338BB5F657B /* after.m in Sources */ = {isa = PBXBuildFile; fileRef = CC893128B2A1C355A1CEE4BC672363CF /* after.m */; }; - F73DD4C29235A28DC347A680FF5BE4A1 /* epochInfo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8304465A6818E3539B61C8873FE01CA1 /* epochInfo.swift */; }; - F7F9EBF06192E6822ECC8DB05845561D /* NSNotificationCenter+AnyPromise.m in Sources */ = {isa = PBXBuildFile; fileRef = BC941BDD0B41F2770D00A17E35D6D072 /* NSNotificationCenter+AnyPromise.m */; }; - F86E40919AEA8ECAC98E54F65852ED8C /* ENSResponses.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1C9184915751000EBDB5D3111469A510 /* ENSResponses.swift */; }; - F8875970C85593CF5B7F835969188D56 /* race.m in Sources */ = {isa = PBXBuildFile; fileRef = AA9121CAD3263CE38A10D823D79DCC1F /* race.m */; }; - F8D373653E0C6B391F00FF841B852AFB /* PromiseKit-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = E9E85AD994CB2DBE3E90AB2A6A9BEAAC /* PromiseKit-dummy.m */; }; - F95D62F49B9E9BD40852B563742586BC /* NativeTypesEncoding+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3468D17C11FA2ACBF38C9AB7C8271DF1 /* NativeTypesEncoding+Extensions.swift */; }; - F96CBE93334B41996889A31796F6FB1B /* ecdsa.h in Headers */ = {isa = PBXBuildFile; fileRef = AE4632FB99AF85FBDFFD007EC99F86CA /* ecdsa.h */; settings = {ATTRIBUTES = (Private, ); }; }; - FB047EBB6933512478EC05C3AD983423 /* EthereumKeyStorage.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0E2DB8A0F1A5CD953B28C0F1323A63E /* EthereumKeyStorage.swift */; }; - FCFE2FD4018717BBE9B36642559EA558 /* ISO78164Padding.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A69511B534B69193581E33DBA9A7728 /* ISO78164Padding.swift */; }; - FE0D3AEBDA7E74DCB8F81D86A89127B4 /* BestLogger.swift in Sources */ = {isa = PBXBuildFile; fileRef = 02F383D8B351FE17F6337BE5F127D5B9 /* BestLogger.swift */; }; - FF4A7A417417DD3910A58A726E8442EA /* BlockCipher.swift in Sources */ = {isa = PBXBuildFile; fileRef = 70E08293AB11CD4B418F795968249F13 /* BlockCipher.swift */; }; - FFF7E224F5F3094210837EC8C7FE4960 /* BigInt-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 2C27E235F897CC2666B12364F41223FA /* BigInt-dummy.m */; }; -/* End PBXBuildFile section */ - -/* Begin PBXContainerItemProxy section */ - 02ADBDC285C01C790B1F84C6800E2D15 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 09DD83B7D075842A3A5105AD410BD38A; - remoteInfo = BigInt; - }; - 09BB928C46A93931EA0811BD1BE915AB /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = D93330767C6CBDF516265779A4B9C299; - remoteInfo = web3.swift; - }; - 0F3B2138BBE3A0CC95DC7760FAB078F3 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 3744C58A953D980BCF08B0FEAE449C91; - remoteInfo = "Torus-fetchNodeDetails"; - }; - 15A2DC5773CCDED63B521DB4F2947BC9 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 7C579CE66A1E7A9AA33CA5F97F9C22C5; - remoteInfo = PromiseKit; - }; - 19FFC6F4CBBBBDA95AA04EFF98E14563 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 09DD83B7D075842A3A5105AD410BD38A; - remoteInfo = BigInt; - }; - 38F07B50B699413D877EEF492B2A1C71 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 50BD5410DB90F893AE68CE9925FD066E; - remoteInfo = "Torus-utils"; - }; - 3BE18238C9086576A3E8AAC637F78FA8 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 1365165D183E4C35E57FE0E71450F0E2; - remoteInfo = BestLogger; - }; - 416CB356B55F1C7A0637DFB098497EB6 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 4FF1EE5493800BD023263DE462914B83; - remoteInfo = secp256k1.swift; - }; - 5C0D90ACA3E33B78C1D6F82B88636E24 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 7F18A768FDF4947B6325776051521D6D; - remoteInfo = GenericJSON; - }; - 5F3198F9C954CF8E1047A417B2B65E35 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 3744C58A953D980BCF08B0FEAE449C91; - remoteInfo = "Torus-fetchNodeDetails"; - }; - 65768C76E385DE336D035606849952BF /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 09DD83B7D075842A3A5105AD410BD38A; - remoteInfo = BigInt; - }; - 68154585206B6BCA5C512A03080A264E /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 1365165D183E4C35E57FE0E71450F0E2; - remoteInfo = BestLogger; - }; - 7493120FAC27B898FD7BF521BE330AD3 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 1365165D183E4C35E57FE0E71450F0E2; - remoteInfo = BestLogger; - }; - 7AA751022E5D40139B5EF7F069B27859 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = D93330767C6CBDF516265779A4B9C299; - remoteInfo = web3.swift; - }; - 82241E47649BB7E61D3D066EA0578941 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 4FF1EE5493800BD023263DE462914B83; - remoteInfo = secp256k1.swift; - }; - 8306C4533B00960C7C12A58C3404694A /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 7C579CE66A1E7A9AA33CA5F97F9C22C5; - remoteInfo = PromiseKit; - }; - 88792E2313B2662E7B4EF765A770D451 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 3744C58A953D980BCF08B0FEAE449C91; - remoteInfo = "Torus-fetchNodeDetails"; - }; - 897976F5BE74C0BEB68F6B5DFA07836D /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 4FF1EE5493800BD023263DE462914B83; - remoteInfo = secp256k1.swift; - }; - 8F3D5B41697186FC71A6CB76FFA0EB8E /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = D93330767C6CBDF516265779A4B9C299; - remoteInfo = web3.swift; - }; - 90A75D433C7027336E240834BAF8612A /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 7F18A768FDF4947B6325776051521D6D; - remoteInfo = GenericJSON; - }; - 92E29CC4E92F47FF8F5F3B2BC38E51FA /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 99313990C1D76A6D1D017868B6975CC8; - remoteInfo = CryptoSwift; - }; - 936EE5C130945A7DE028EB5559605441 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 7F18A768FDF4947B6325776051521D6D; - remoteInfo = GenericJSON; - }; - A5B1343F88A2C8586221C6A7555C9787 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 1365165D183E4C35E57FE0E71450F0E2; - remoteInfo = BestLogger; - }; - B52708789A193C866BA8E887DD24D54C /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 7C579CE66A1E7A9AA33CA5F97F9C22C5; - remoteInfo = PromiseKit; - }; - C186EBC2180876831BC1B8235D13F661 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 99313990C1D76A6D1D017868B6975CC8; - remoteInfo = CryptoSwift; - }; - C72049CFC060FC515A6D5EBE25B7D24D /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 4FF1EE5493800BD023263DE462914B83; - remoteInfo = secp256k1.swift; - }; - CD000446E8926E6E2D8ED1A66AF437E6 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 99313990C1D76A6D1D017868B6975CC8; - remoteInfo = CryptoSwift; - }; - EB0FBA9CFE902673A4F195B0964C1DD4 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 50BD5410DB90F893AE68CE9925FD066E; - remoteInfo = "Torus-utils"; - }; - FDA0B04EDC7EBEFB079AB405EA5C8522 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 7C579CE66A1E7A9AA33CA5F97F9C22C5; - remoteInfo = PromiseKit; - }; -/* End PBXContainerItemProxy section */ - -/* Begin PBXFileReference section */ - 002B1E88BA14EBF633CD66EBFBA107E9 /* PromiseKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = PromiseKit.framework; path = PromiseKit.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 020E2E2655B54E4F841EFF5C78EC9A50 /* group.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = group.h; path = secp256k1/Classes/secp256k1/src/group.h; sourceTree = ""; }; - 02DD2A16BFE076F87A8D8461822F0C1C /* SHA3.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SHA3.swift; path = Sources/CryptoSwift/SHA3.swift; sourceTree = ""; }; - 02F383D8B351FE17F6337BE5F127D5B9 /* BestLogger.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BestLogger.swift; path = Sources/BestLogger/BestLogger.swift; sourceTree = ""; }; - 048650C366ADDE4442EE73E8081DE2AB /* keccak-tiny.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "keccak-tiny.h"; path = "web3swift/lib/keccak-tiny/include/keccak-tiny.h"; sourceTree = ""; }; - 065E0E21D472F17C59860CF9DFADC6D0 /* EthereumClient.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = EthereumClient.swift; path = web3swift/src/Client/EthereumClient.swift; sourceTree = ""; }; - 0725D54099E8DC5F13F166F38A3E0483 /* UInt64+Extension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UInt64+Extension.swift"; path = "Sources/CryptoSwift/UInt64+Extension.swift"; sourceTree = ""; }; - 07393C58FA33AA78F5B49A13745F8297 /* BigInt-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "BigInt-Info.plist"; sourceTree = ""; }; - 0851391139C8B561E9D2230BEB98CD83 /* KeyAssignRequestResponse.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = KeyAssignRequestResponse.swift; sourceTree = ""; }; - 086636E244AE50BDFE486B4C589EBFB6 /* secp256k1_main.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = secp256k1_main.h; path = secp256k1/Classes/secp256k1_main.h; sourceTree = ""; }; - 08A78AF904E46E091F3D3FE519CF4760 /* basic-config.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "basic-config.h"; path = "secp256k1/Classes/secp256k1/src/basic-config.h"; sourceTree = ""; }; - 09C904EEDB892C0039A827BB6DFE64AD /* SHA2.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SHA2.swift; path = Sources/CryptoSwift/SHA2.swift; sourceTree = ""; }; - 0CA3952C11FD519FD43BF4F8AC3C6A12 /* Multiplication.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Multiplication.swift; path = Sources/Multiplication.swift; sourceTree = ""; }; - 0CCDBC1B821FF862979B3E2F8311E141 /* TorusUtils.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TorusUtils.swift; path = Sources/TorusUtils/TorusUtils.swift; sourceTree = ""; }; - 0CF20DF7F8CB70917B48A09DCAF20008 /* GenericJSON.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = GenericJSON.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 0CF60EDD4B72C01DAAC4CCCAD27B8FAE /* when.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = when.m; path = Sources/when.m; sourceTree = ""; }; - 0E885E5AEEACFBC1327D43BC77F5F1D7 /* CustomStringConvertible.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CustomStringConvertible.swift; path = Sources/CustomStringConvertible.swift; sourceTree = ""; }; - 0EA249BCC820BF0D1BFDF5D8437662B3 /* Cryptor.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Cryptor.swift; path = Sources/CryptoSwift/Cryptor.swift; sourceTree = ""; }; - 0F108ED1141687A35E9F764E19ECA19A /* CryptoSwift.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = CryptoSwift.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 1194DC381BEE0B2440EE0B4A82A0F088 /* String+Extension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "String+Extension.swift"; sourceTree = ""; }; - 12766F44109AF015CE13EE9778402D45 /* Division.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Division.swift; path = Sources/Division.swift; sourceTree = ""; }; - 12F764DC64AB0A601139422E4BD7D8DD /* hash.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = hash.h; path = secp256k1/Classes/secp256k1/src/hash.h; sourceTree = ""; }; - 145C2CFCCEE9E415BB5C5650807E68EA /* Array+Foundation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Array+Foundation.swift"; path = "Sources/CryptoSwift/Foundation/Array+Foundation.swift"; sourceTree = ""; }; - 1471D23729F8BAB1C7CC8595F3E747E2 /* EthereumClient+Static.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "EthereumClient+Static.swift"; path = "web3swift/src/Contract/Statically Typed/EthereumClient+Static.swift"; sourceTree = ""; }; - 15AA4E4350BA85427F44131E6C86179E /* GenericJSON-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "GenericJSON-prefix.pch"; sourceTree = ""; }; - 1651974D61BD0C6886E658C15DF4C1FB /* PKCS7Padding.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PKCS7Padding.swift; path = Sources/CryptoSwift/PKCS/PKCS7Padding.swift; sourceTree = ""; }; - 17018F72CB0DCA9668F767142D567866 /* Decodable+Extensions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "Decodable+Extensions.swift"; sourceTree = ""; }; - 171D30B00FFF9FF1E041CD16B6F40F67 /* RecursiveLogCollector.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RecursiveLogCollector.swift; path = web3swift/src/Client/RecursiveLogCollector.swift; sourceTree = ""; }; - 1764C73C5A2BAF6D7920A5164D0CD86C /* Pods-TestApplication-TestApplicationTests-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-TestApplication-TestApplicationTests-frameworks.sh"; sourceTree = ""; }; - 17AC71C0FFE887141BD08505911E4117 /* Torus-utils-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Torus-utils-umbrella.h"; sourceTree = ""; }; - 17D29E3BCB8FF1F4020A2994E7BCE1EC /* Error.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = Error.swift; sourceTree = ""; }; - 186A61775A01E47AC5C119FB9005FFE5 /* ERC721.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ERC721.swift; path = web3swift/src/ERC721/ERC721.swift; sourceTree = ""; }; - 18997BD10C1E8709FA7DBCEA1EAB809B /* PMKFoundation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PMKFoundation.h; path = Extensions/Foundation/Sources/PMKFoundation.h; sourceTree = ""; }; - 1A1951365C824097FACFD2902FB031AE /* Torus-utils-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Torus-utils-dummy.m"; sourceTree = ""; }; - 1A2CC1CFCF251052ADDD09D9A0E7A75D /* Data Conversion.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Data Conversion.swift"; path = "Sources/Data Conversion.swift"; sourceTree = ""; }; - 1A69511B534B69193581E33DBA9A7728 /* ISO78164Padding.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ISO78164Padding.swift; path = Sources/CryptoSwift/ISO78164Padding.swift; sourceTree = ""; }; - 1B57C4429024335B6B233AFBC8EBCA62 /* JSONRPCRequest.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = JSONRPCRequest.swift; sourceTree = ""; }; - 1BC2FF26857A73C38ADDF6A7DCA27F09 /* torusNodePub.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = torusNodePub.swift; path = Sources/FetchNodeDetails/torusNodePub.swift; sourceTree = ""; }; - 1C59CFACA7E0C11A352F48A32069FC41 /* HexExtensions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = HexExtensions.swift; path = web3swift/src/Extensions/HexExtensions.swift; sourceTree = ""; }; - 1C9184915751000EBDB5D3111469A510 /* ENSResponses.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ENSResponses.swift; path = web3swift/src/ENS/ENSResponses.swift; sourceTree = ""; }; - 1E15F289AAC20610718E90CB6948CB28 /* ERC165.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ERC165.swift; path = web3swift/src/ERC165/ERC165.swift; sourceTree = ""; }; - 1F112A5A7A909BB7ED65DFE688D4915B /* Base58.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = Base58.swift; sourceTree = ""; }; - 1F2C5CF530973B84C4D04399387E1230 /* Encodable+Extensions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "Encodable+Extensions.swift"; sourceTree = ""; }; - 1F35ACAD54CA4C8BA1628EEC5C9C803A /* Pods-TestApplication-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-TestApplication-umbrella.h"; sourceTree = ""; }; - 1FBAE32F1B25EF2E3DD3FE1CB070E785 /* ECB.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ECB.swift; path = Sources/CryptoSwift/BlockMode/ECB.swift; sourceTree = ""; }; - 1FC45449936DF5240CAF940D29E39C49 /* ecmult_const_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ecmult_const_impl.h; path = secp256k1/Classes/secp256k1/src/ecmult_const_impl.h; sourceTree = ""; }; - 2170B31DD562445C083A20DDD6258F0F /* Words and Bits.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Words and Bits.swift"; path = "Sources/Words and Bits.swift"; sourceTree = ""; }; - 21898A94100F0AAE45DF0541E2E0CBCC /* ABIRawType+JSON.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "ABIRawType+JSON.swift"; path = "web3swift/src/Contract/JSON Definition/ABIRawType+JSON.swift"; sourceTree = ""; }; - 227988D42D5705A1BAE6FAD5F72C6D00 /* OFB.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = OFB.swift; path = Sources/CryptoSwift/BlockMode/OFB.swift; sourceTree = ""; }; - 228EEFF5D908B492A6493287E0E332C6 /* Poly1305.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Poly1305.swift; path = Sources/CryptoSwift/Poly1305.swift; sourceTree = ""; }; - 244569551C654FAD088C5BF1804BB0CF /* Subtraction.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Subtraction.swift; path = Sources/Subtraction.swift; sourceTree = ""; }; - 2447CE7DAD1FA7DB3AA250427A017605 /* String+FoundationExtension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "String+FoundationExtension.swift"; path = "Sources/CryptoSwift/Foundation/String+FoundationExtension.swift"; sourceTree = ""; }; - 25D82BF60AB4BA0F6160F9F633DEBF26 /* web3.swift-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "web3.swift-dummy.m"; sourceTree = ""; }; - 26A30E0DA2419B1831A942110E9826A2 /* BestLogger.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = BestLogger.framework; path = BestLogger.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 27D0825E11B5A7D6E7E5C8D5DEF69575 /* Torus-utils-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Torus-utils-prefix.pch"; sourceTree = ""; }; - 27FA72D4599B389A57A234E8EB4DEF6A /* JSONRPC.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = JSONRPC.swift; path = web3swift/src/Client/JSONRPC.swift; sourceTree = ""; }; - 2889ED6859342ABD0AC4C9F37F73B9E5 /* secp256k1.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = secp256k1.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 28F7E50E8D75EB8B04F3AEF1F2D6E967 /* Padding.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Padding.swift; path = Sources/CryptoSwift/Padding.swift; sourceTree = ""; }; - 296E4589882C9C8517E9E35C6499028B /* Square Root.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Square Root.swift"; path = "Sources/Square Root.swift"; sourceTree = ""; }; - 2AB273F8448B5EB518156BD5C29F482D /* dispatch_promise.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = dispatch_promise.m; path = Sources/dispatch_promise.m; sourceTree = ""; }; - 2AC12F89264B908BC0B7226C60E10565 /* Promise.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Promise.swift; path = Sources/Promise.swift; sourceTree = ""; }; - 2B0ACBB63147F28D8DF0C775E0E6084E /* util.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = util.h; path = secp256k1/Classes/secp256k1/src/util.h; sourceTree = ""; }; - 2C1788DED94C5B9BBBB3C953DDBDEE9D /* BestLogger.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = BestLogger.modulemap; sourceTree = ""; }; - 2C27E235F897CC2666B12364F41223FA /* BigInt-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "BigInt-dummy.m"; sourceTree = ""; }; - 2C6EB095E3C0D6E55A21E671547F963C /* UInt128.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UInt128.swift; path = Sources/CryptoSwift/UInt128.swift; sourceTree = ""; }; - 2E9158AC3ECFF82080F312EF2735F02A /* CompactMap.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CompactMap.swift; path = Sources/CryptoSwift/CompactMap.swift; sourceTree = ""; }; - 2F3EEED4CED61DB1BF979660661180B1 /* MD5.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = MD5.swift; path = Sources/CryptoSwift/MD5.swift; sourceTree = ""; }; - 2F940CBEDB6917EA53A85EFD2E617BC7 /* Collection+Extension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Collection+Extension.swift"; path = "Sources/CryptoSwift/Collection+Extension.swift"; sourceTree = ""; }; - 2FA065E8923A9B4B230F07C25B1D17DF /* KeystoreUtil.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = KeystoreUtil.swift; path = web3swift/src/Utils/KeystoreUtil.swift; sourceTree = ""; }; - 2FD51937D140E00F9B4D3F5216E5A3B6 /* nodeDetails.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = nodeDetails.swift; path = Sources/FetchNodeDetails/nodeDetails.swift; sourceTree = ""; }; - 30C3E0C8C874047E39DA7BED51AE62C1 /* num.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = num.h; path = secp256k1/Classes/secp256k1/src/num.h; sourceTree = ""; }; - 30FDD3AC62CA96BD7F7AD357B4EB8451 /* group_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = group_impl.h; path = secp256k1/Classes/secp256k1/src/group_impl.h; sourceTree = ""; }; - 31D69897ADC12A0DCABDC5D85828E53C /* GenericJSON.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = GenericJSON.release.xcconfig; sourceTree = ""; }; - 332F52699E64158C82118FD0F3ADA95B /* GCM.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = GCM.swift; path = Sources/CryptoSwift/BlockMode/GCM.swift; sourceTree = ""; }; - 3350D8405F9EC2E1C0C2506FBAD2BFAF /* secp256k1_ec_mult_static_context.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = secp256k1_ec_mult_static_context.h; path = secp256k1/Classes/secp256k1_ec_mult_static_context.h; sourceTree = ""; }; - 33DD392B28249B6AC36CCE4111EA32CC /* ecmult.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ecmult.h; path = secp256k1/Classes/secp256k1/src/ecmult.h; sourceTree = ""; }; - 33E4624D47DB7D9F81C64774BE5B01A7 /* ABIFunction.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ABIFunction.swift; path = "web3swift/src/Contract/Statically Typed/ABIFunction.swift"; sourceTree = ""; }; - 344DF0D975CE2D43A89199F188697FDC /* Torus-fetchNodeDetails-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Torus-fetchNodeDetails-prefix.pch"; sourceTree = ""; }; - 3468D17C11FA2ACBF38C9AB7C8271DF1 /* NativeTypesEncoding+Extensions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "NativeTypesEncoding+Extensions.swift"; sourceTree = ""; }; - 34A9444C608A173A0C7BCE90EFDCD2C8 /* ABIEvent.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ABIEvent.swift; path = "web3swift/src/Contract/Statically Typed/ABIEvent.swift"; sourceTree = ""; }; - 365F7CFC9000B66178A957AB3210DEAB /* NSTask+AnyPromise.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSTask+AnyPromise.m"; path = "Extensions/Foundation/Sources/NSTask+AnyPromise.m"; sourceTree = ""; }; - 36B22267AF4D657854BDCBC896BAA6BE /* FetchNodeDetails.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = FetchNodeDetails.framework; path = "Torus-fetchNodeDetails.framework"; sourceTree = BUILT_PRODUCTS_DIR; }; - 387353A782112985B34B7CD69F0A51DD /* EthereumTransaction.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = EthereumTransaction.swift; path = web3swift/src/Client/Models/EthereumTransaction.swift; sourceTree = ""; }; - 38ACFA334271222BD4F32D11FEAF97FA /* Checksum.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Checksum.swift; path = Sources/CryptoSwift/Checksum.swift; sourceTree = ""; }; - 3936ADAF803ACF9C9AF43E3304CF7768 /* TorusUtils.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = TorusUtils.framework; path = "Torus-utils.framework"; sourceTree = BUILT_PRODUCTS_DIR; }; - 399721B8AC54458E4268EEBC19853764 /* Torus-fetchNodeDetails.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Torus-fetchNodeDetails.debug.xcconfig"; sourceTree = ""; }; - 39EFB01F3AD1DCD8F4BE85639B6D66E3 /* secp256k1.swift.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = secp256k1.swift.modulemap; sourceTree = ""; }; - 3AFBD54D0B9B32E5B0BC7015E336A38F /* Torus-utils-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Torus-utils-Info.plist"; sourceTree = ""; }; - 3C319601202CF7B0E3066E0290B09AAF /* PBKDF2.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PBKDF2.swift; path = Sources/CryptoSwift/PKCS/PBKDF2.swift; sourceTree = ""; }; - 3C92945F067A0F612799399E07E77320 /* ecmult_gen.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ecmult_gen.h; path = secp256k1/Classes/secp256k1/src/ecmult_gen.h; sourceTree = ""; }; - 3CA73B7B37631191F8319ECA14123494 /* SecureBytes.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SecureBytes.swift; path = Sources/CryptoSwift/SecureBytes.swift; sourceTree = ""; }; - 3CD61CB140A0F2B5CEE7F5E3A43BE3F6 /* secp256k1.swift-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "secp256k1.swift-prefix.pch"; sourceTree = ""; }; - 3D29A873E30C60D50F29597994546CD4 /* BestLogger-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "BestLogger-prefix.pch"; sourceTree = ""; }; - 3DCB79608CDE73661BF31DBA543934E6 /* ZeroPadding.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ZeroPadding.swift; path = Sources/CryptoSwift/ZeroPadding.swift; sourceTree = ""; }; - 3E173DB1F83723103EEDC0216A9C0C66 /* ABIDecoder.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ABIDecoder.swift; path = web3swift/src/Contract/ABIDecoder.swift; sourceTree = ""; }; - 3E70E5624B6AE48004C699DCD7992DF8 /* join.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = join.m; path = Sources/join.m; sourceTree = ""; }; - 3E7141D086ADC08DD965A7B5ABF52284 /* scalar_8x32_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = scalar_8x32_impl.h; path = secp256k1/Classes/secp256k1/src/scalar_8x32_impl.h; sourceTree = ""; }; - 3F140FC4233C8118AEB177B33479773E /* Torus-utils.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = "Torus-utils.podspec"; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; - 3F3B4168316B3465043A60D628AD1AB1 /* HMAC+Foundation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "HMAC+Foundation.swift"; path = "Sources/CryptoSwift/Foundation/HMAC+Foundation.swift"; sourceTree = ""; }; - 3FB45CCDD5C1C04B19AE51DD16976770 /* Scrypt.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Scrypt.swift; path = Sources/CryptoSwift/Scrypt.swift; sourceTree = ""; }; - 401FB6B95BF461CFBCF5B408508044F7 /* BestLogger.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = BestLogger.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 40B3F6A51D76E5023588B1808D0D2CFD /* lax_der_parsing.c */ = {isa = PBXFileReference; includeInIndex = 1; name = lax_der_parsing.c; path = secp256k1/Classes/secp256k1/contrib/lax_der_parsing.c; sourceTree = ""; }; - 40CCE1281164DE769303759678296832 /* secp256k1.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = secp256k1.framework; path = secp256k1.swift.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 4134AEC11A8F8B8DCDB9F3766DDF1141 /* Authenticator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Authenticator.swift; path = Sources/CryptoSwift/Authenticator.swift; sourceTree = ""; }; - 4149DFD7C82A8AE682E718D3485E38F1 /* GenericJSON.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = GenericJSON.debug.xcconfig; sourceTree = ""; }; - 421F491B9F8AB1BC9C6616B284D46A65 /* Pods-TestApplication.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-TestApplication.release.xcconfig"; sourceTree = ""; }; - 4271AA592AC70AD55ED2F6D63EE2D786 /* Hashable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Hashable.swift; path = Sources/Hashable.swift; sourceTree = ""; }; - 437540F4CEA4C64E88F2FC57D58CD678 /* AbstractTorusUtils.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AbstractTorusUtils.swift; path = Sources/TorusUtils/AbstractTorusUtils.swift; sourceTree = ""; }; - 438E9635D94E1B1EAD726DED2082D9C1 /* CipherModeWorker.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CipherModeWorker.swift; path = Sources/CryptoSwift/BlockMode/CipherModeWorker.swift; sourceTree = ""; }; - 44DA4E25E3BD5461C1A77ECDBABB14C8 /* ABITuple.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ABITuple.swift; path = "web3swift/src/Contract/Statically Typed/ABITuple.swift"; sourceTree = ""; }; - 4584418C470BA7BFBBA87FDAEF488CF0 /* String Conversion.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "String Conversion.swift"; path = "Sources/String Conversion.swift"; sourceTree = ""; }; - 45FE914109197DB4260E9284777F74EF /* PCBC.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PCBC.swift; path = Sources/CryptoSwift/BlockMode/PCBC.swift; sourceTree = ""; }; - 4606B08B6DEB98353BA491A53AC33179 /* String.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = String.swift; path = Sources/FetchNodeDetails/extensions/String.swift; sourceTree = ""; }; - 46620DD8F000F669B041B9AC6A6C4941 /* README.md */ = {isa = PBXFileReference; includeInIndex = 1; path = README.md; sourceTree = ""; }; - 46EDEBD5407B6208F2E7818139E41432 /* GenericJSON-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "GenericJSON-umbrella.h"; sourceTree = ""; }; - 4786050970F7BC6B946E9599C6D0E032 /* AEAD.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AEAD.swift; path = Sources/CryptoSwift/AEAD/AEAD.swift; sourceTree = ""; }; - 47935440EB89D2B4B5FC5832725C8172 /* HKDF.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = HKDF.swift; path = Sources/CryptoSwift/HKDF.swift; sourceTree = ""; }; - 480FC0755DD71E0AF4F1428BBCEA2CEA /* PromiseKit-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "PromiseKit-umbrella.h"; sourceTree = ""; }; - 486E6A0E5AE1F8895ECAEE9DD2005369 /* ecmult_gen_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ecmult_gen_impl.h; path = secp256k1/Classes/secp256k1/src/ecmult_gen_impl.h; sourceTree = ""; }; - 498F0D13322EB59CE7A2B26E805E760B /* BestLogger.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = BestLogger.debug.xcconfig; sourceTree = ""; }; - 49EC274D25D4080DB25FBC74A5E04247 /* ERC721Functions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ERC721Functions.swift; path = web3swift/src/ERC721/ERC721Functions.swift; sourceTree = ""; }; - 4C06CABD5398EBEA8F52AFB991C3E633 /* Utils.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Utils.swift; path = Sources/CryptoSwift/Utils.swift; sourceTree = ""; }; - 4D375E3576E6E64D65FCA593C3095043 /* scratch_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = scratch_impl.h; path = secp256k1/Classes/secp256k1/src/scratch_impl.h; sourceTree = ""; }; - 4D4CFA88A467301FD2EEF25631F6965A /* web3.swift-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "web3.swift-prefix.pch"; sourceTree = ""; }; - 4E3960E268984162FF5DDA0F17BCE57F /* Pods-TestApplication-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-TestApplication-acknowledgements.plist"; sourceTree = ""; }; - 4F7A157ACEF96B73525911DBF2977A23 /* KeccakExtensions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = KeccakExtensions.swift; path = web3swift/src/Extensions/KeccakExtensions.swift; sourceTree = ""; }; - 5006AEB82F73A08150044E2177EB164E /* PKCS5.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PKCS5.swift; path = Sources/CryptoSwift/PKCS/PKCS5.swift; sourceTree = ""; }; - 501F3EDFAF27DF3750AD513AFA1AEC20 /* NSURLSession+AnyPromise.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSURLSession+AnyPromise.m"; path = "Extensions/Foundation/Sources/NSURLSession+AnyPromise.m"; sourceTree = ""; }; - 50FB84D33D8C77943EFB343EC9BB5291 /* AnyPromise.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AnyPromise.swift; path = Sources/AnyPromise.swift; sourceTree = ""; }; - 512505FA399AC0715418B5B0EB5C6EA6 /* ERC20Functions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ERC20Functions.swift; path = web3swift/src/ERC20/ERC20Functions.swift; sourceTree = ""; }; - 513AB290C01FB6EFD3DD680D835DEFD4 /* TorusUtils+extension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "TorusUtils+extension.swift"; sourceTree = ""; }; - 517C9054E04427F006E9A3EF43E6E45E /* BlockEncryptor.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BlockEncryptor.swift; path = Sources/CryptoSwift/BlockEncryptor.swift; sourceTree = ""; }; - 535CA87BE83A1CD7ED8B51F0B9D7FDC3 /* NodeListContract.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NodeListContract.swift; path = Sources/FetchNodeDetails/NodeListContract.swift; sourceTree = ""; }; - 54A13D98AB9A9135E521EBECC24086EC /* NSObject+Promise.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "NSObject+Promise.swift"; path = "Extensions/Foundation/Sources/NSObject+Promise.swift"; sourceTree = ""; }; - 5522F6FC694B238BA3F79DF8B3FA5206 /* ChaCha20.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ChaCha20.swift; path = Sources/CryptoSwift/ChaCha20.swift; sourceTree = ""; }; - 559673992E18C2184B7DB88C26908C97 /* AesUtil.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AesUtil.swift; path = web3swift/src/Utils/AesUtil.swift; sourceTree = ""; }; - 56DDEB3F1B8EEEC46C7FE78A4BE07084 /* BestLogger-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "BestLogger-Info.plist"; sourceTree = ""; }; - 57905E613320F8F3C500150C880D087C /* Torus-fetchNodeDetails-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Torus-fetchNodeDetails-umbrella.h"; sourceTree = ""; }; - 57A8F00674208873848E850C916B07DA /* SHA1.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SHA1.swift; path = Sources/CryptoSwift/SHA1.swift; sourceTree = ""; }; - 588AE181250B323137C9868209035ECB /* Pods-TestApplication.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-TestApplication.modulemap"; sourceTree = ""; }; - 5896784A7C660D31DBAE675252CA4DF1 /* ChaCha20+Foundation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "ChaCha20+Foundation.swift"; path = "Sources/CryptoSwift/Foundation/ChaCha20+Foundation.swift"; sourceTree = ""; }; - 5A5FC334F88D0032EB1D83AC8D493281 /* ABIEncoder+Static.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "ABIEncoder+Static.swift"; path = "web3swift/src/Contract/Statically Typed/ABIEncoder+Static.swift"; sourceTree = ""; }; - 5AB7CDB20C1AA54218B45E111EF7D6F8 /* Bit.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Bit.swift; path = Sources/CryptoSwift/Bit.swift; sourceTree = ""; }; - 5AC3662AD7219F05F38FA35C7F00CD98 /* UInt8+Extension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UInt8+Extension.swift"; path = "Sources/CryptoSwift/UInt8+Extension.swift"; sourceTree = ""; }; - 5BBFD7D25C959FBE5F887081CA16EA19 /* ENSMultiResolver.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ENSMultiResolver.swift; path = web3swift/src/ENS/ENSMultiResolver.swift; sourceTree = ""; }; - 5C73E21633622C0E540FECA763090CF5 /* race.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = race.swift; path = Sources/race.swift; sourceTree = ""; }; - 5E06860B83B20D4A67BF3717B49D709F /* Extensions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Extensions.swift; path = web3swift/src/Extensions/Extensions.swift; sourceTree = ""; }; - 5E2D4BC3737199C8D05218F1C77F9034 /* BigInt-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "BigInt-umbrella.h"; sourceTree = ""; }; - 5ED50921647C799CF8C0C1155F2016C5 /* num_gmp_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = num_gmp_impl.h; path = secp256k1/Classes/secp256k1/src/num_gmp_impl.h; sourceTree = ""; }; - 5F2233FCB68A0ADAD892CE83D30BA631 /* NSURLSession+Promise.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "NSURLSession+Promise.swift"; path = "Extensions/Foundation/Sources/NSURLSession+Promise.swift"; sourceTree = ""; }; - 6015211FA3890EB6038D375C31DBF42B /* scalar_low.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = scalar_low.h; path = secp256k1/Classes/secp256k1/src/scalar_low.h; sourceTree = ""; }; - 60FC8BADF090E2274D64444DBD790789 /* Bitwise Ops.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Bitwise Ops.swift"; path = "Sources/Bitwise Ops.swift"; sourceTree = ""; }; - 60FD258C582D88CE19A773E27B5E77F5 /* UInt16+Extension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UInt16+Extension.swift"; path = "Sources/CryptoSwift/UInt16+Extension.swift"; sourceTree = ""; }; - 6130ED90F9989E9635298473756B1683 /* GenericJSON.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = GenericJSON.modulemap; sourceTree = ""; }; - 615FADBB13443F5FE8D2A69E2721F74F /* scalar_8x32.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = scalar_8x32.h; path = secp256k1/Classes/secp256k1/src/scalar_8x32.h; sourceTree = ""; }; - 625BE58FC9C80FD86E0F3428FAB98641 /* BatchedCollection.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BatchedCollection.swift; path = Sources/CryptoSwift/BatchedCollection.swift; sourceTree = ""; }; - 636F14D1D805465AFBED7A23DCC80AF4 /* Pods-TestApplication-TestApplicationTests-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-TestApplication-TestApplicationTests-Info.plist"; sourceTree = ""; }; - 63D22F09D9D257B12174CF0AB13BE616 /* NSURLSession+AnyPromise.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSURLSession+AnyPromise.h"; path = "Extensions/Foundation/Sources/NSURLSession+AnyPromise.h"; sourceTree = ""; }; - 642310926E7B2EBE2C3FDECE7283F069 /* ERC20.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ERC20.swift; path = web3swift/src/ERC20/ERC20.swift; sourceTree = ""; }; - 6522FBD7759B8D45FB77AAFC73C73FBE /* secp256k1-config.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "secp256k1-config.h"; path = "secp256k1/Classes/secp256k1-config.h"; sourceTree = ""; }; - 657202ABBFE748A40A2783796BF08655 /* Cryptors.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Cryptors.swift; path = Sources/CryptoSwift/Cryptors.swift; sourceTree = ""; }; - 658933927BCB31DC8575FD0DDB8C9DA6 /* Data+Extension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "Data+Extension.swift"; sourceTree = ""; }; - 65FF0818C9929B5926B7C4B52206C07B /* field_5x52_int128_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = field_5x52_int128_impl.h; path = secp256k1/Classes/secp256k1/src/field_5x52_int128_impl.h; sourceTree = ""; }; - 6622D8EA696B15B45675A77EC4B13318 /* Floating Point Conversion.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Floating Point Conversion.swift"; path = "Sources/Floating Point Conversion.swift"; sourceTree = ""; }; - 66F8AAC22DB26ABC53091415B10EEC16 /* ABIRawType+Static.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "ABIRawType+Static.swift"; path = "web3swift/src/Contract/Statically Typed/ABIRawType+Static.swift"; sourceTree = ""; }; - 6719018827B4A984DE567135029C81E3 /* PromiseKit.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PromiseKit.h; path = Sources/PromiseKit.h; sourceTree = ""; }; - 6724980A57CFBD848FEB46934DDE16B9 /* num_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = num_impl.h; path = secp256k1/Classes/secp256k1/src/num_impl.h; sourceTree = ""; }; - 67B44A57092697F09D48B034F87DE0AA /* ecmult_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ecmult_impl.h; path = secp256k1/Classes/secp256k1/src/ecmult_impl.h; sourceTree = ""; }; - 6809224EF5DB3DA7107CCEE105A38DF1 /* Process+Promise.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Process+Promise.swift"; path = "Extensions/Foundation/Sources/Process+Promise.swift"; sourceTree = ""; }; - 6BE6225CB6454F56671574E097552251 /* JSON.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = JSON.swift; path = GenericJSON/JSON.swift; sourceTree = ""; }; - 6CD31DC5602C8A4EA488F6165118FE5B /* ByteExtensions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ByteExtensions.swift; path = web3swift/src/Extensions/ByteExtensions.swift; sourceTree = ""; }; - 6D404CFFB40C6756B0A4F0188ACB287F /* Box.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Box.swift; path = Sources/Box.swift; sourceTree = ""; }; - 6DB4E635E7EFF54B5F7AAF164D20B8AE /* Torus-fetchNodeDetails-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Torus-fetchNodeDetails-Info.plist"; sourceTree = ""; }; - 6EC90D55FA413D931E20578C1CEEC425 /* ERC721Responses.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ERC721Responses.swift; path = web3swift/src/ERC721/ERC721Responses.swift; sourceTree = ""; }; - 6FE3873D103E2F80F6F264DA52800BBE /* SECP256k1.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = SECP256k1.swift; sourceTree = ""; }; - 704122C7E5DF0CA9090C8883F02C9543 /* NSTask+AnyPromise.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSTask+AnyPromise.h"; path = "Extensions/Foundation/Sources/NSTask+AnyPromise.h"; sourceTree = ""; }; - 7075F86F3428159E453A281B2BFF68D5 /* CryptoSwift.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = CryptoSwift.debug.xcconfig; sourceTree = ""; }; - 70E08293AB11CD4B418F795968249F13 /* BlockCipher.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BlockCipher.swift; path = Sources/CryptoSwift/BlockCipher.swift; sourceTree = ""; }; - 71367370146FFEB708D1598A00B52B40 /* BlockDecryptor.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BlockDecryptor.swift; path = Sources/CryptoSwift/BlockDecryptor.swift; sourceTree = ""; }; - 735664226F470311D3170C899448F12C /* Querying.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Querying.swift; path = GenericJSON/Querying.swift; sourceTree = ""; }; - 73827FA0B1D3AD8E863A736BD4486D2E /* secp256k1.swift.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = secp256k1.swift.release.xcconfig; sourceTree = ""; }; - 73A6BB7E6612064E62C5915EAEEB1E90 /* MulticallContract.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = MulticallContract.swift; path = web3swift/src/Multicall/MulticallContract.swift; sourceTree = ""; }; - 741AFFAC18F4274036ABAA3F88D19E3F /* field_5x52.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = field_5x52.h; path = secp256k1/Classes/secp256k1/src/field_5x52.h; sourceTree = ""; }; - 7440E35780BF5BA52825B7CA75F9FDE7 /* Data+Random.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Data+Random.swift"; path = "web3swift/src/Extensions/Data+Random.swift"; sourceTree = ""; }; - 748E773405DA3F24E59FEEB243BA3F51 /* StreamEncryptor.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = StreamEncryptor.swift; path = Sources/CryptoSwift/StreamEncryptor.swift; sourceTree = ""; }; - 74F3F1B8FD72FF65A416F892BE4F1D77 /* EthereumAccount.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = EthereumAccount.swift; path = web3swift/src/Account/EthereumAccount.swift; sourceTree = ""; }; - 74F9436D309E5C0320E2BF39B33369DC /* Pods-TestApplication-TestApplicationTests.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-TestApplication-TestApplicationTests.modulemap"; sourceTree = ""; }; - 766055FE9D17A63A6550E7C31B47CCA0 /* fetchNodeDetails+promise.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "fetchNodeDetails+promise.swift"; path = "Sources/FetchNodeDetails/fetchNodeDetails+promise.swift"; sourceTree = ""; }; - 7682731E182645966244278D49D23597 /* lax_der_privatekey_parsing.c */ = {isa = PBXFileReference; includeInIndex = 1; name = lax_der_privatekey_parsing.c; path = secp256k1/Classes/secp256k1/contrib/lax_der_privatekey_parsing.c; sourceTree = ""; }; - 76CEC0CE7E0EA8154AF04D686166E1CE /* ERC721Events.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ERC721Events.swift; path = web3swift/src/ERC721/ERC721Events.swift; sourceTree = ""; }; - 76ED65415F56F8686655E19B2CF2061B /* License.md */ = {isa = PBXFileReference; includeInIndex = 1; path = License.md; sourceTree = ""; }; - 77B4019CF0ED9D3E11EDF90BBFC3B7EA /* Array+Extension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "Array+Extension.swift"; sourceTree = ""; }; - 78706BFF9BA2453C423D8604D9618A5B /* scalar.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = scalar.h; path = secp256k1/Classes/secp256k1/src/scalar.h; sourceTree = ""; }; - 79E446965E5C279D7C6E50209DEB6C0D /* Dictionary+Extension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "Dictionary+Extension.swift"; sourceTree = ""; }; - 7AE5CBB7F77DCBADD0E73CC0D312F9EA /* Int+Extension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Int+Extension.swift"; path = "Sources/CryptoSwift/Int+Extension.swift"; sourceTree = ""; }; - 7B1A4648778048C7F084EF95A356B165 /* Merging.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Merging.swift; path = GenericJSON/Merging.swift; sourceTree = ""; }; - 7B308266B66D32BEE30FA4033575BBCC /* String+Extension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "String+Extension.swift"; path = "Sources/CryptoSwift/String+Extension.swift"; sourceTree = ""; }; - 7B30E983C0539A09B868FA39B5134C16 /* eckey.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = eckey.h; path = secp256k1/Classes/secp256k1/src/eckey.h; sourceTree = ""; }; - 7B63097900F8AE0D41E44B24012D4E76 /* KeyUtil.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = KeyUtil.swift; path = web3swift/src/Utils/KeyUtil.swift; sourceTree = ""; }; - 7D1494809DCCBB6CA502E31B8E609B47 /* CryptoExtensions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = CryptoExtensions.swift; sourceTree = ""; }; - 7F673FD14D4ABF76640791855FBB0BB6 /* Pods-TestApplication-TestApplicationTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-TestApplication-TestApplicationTests.release.xcconfig"; sourceTree = ""; }; - 80787FB4F6282B6B4774502BA9FDE45E /* Data+Extension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Data+Extension.swift"; path = "Sources/CryptoSwift/Foundation/Data+Extension.swift"; sourceTree = ""; }; - 811EAB2E5D2E6254D06555584B240E1F /* CryptoSwift-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "CryptoSwift-umbrella.h"; sourceTree = ""; }; - 8304465A6818E3539B61C8873FE01CA1 /* epochInfo.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = epochInfo.swift; path = Sources/FetchNodeDetails/epochInfo.swift; sourceTree = ""; }; - 83430C8BE37CA5ABED624A47D2CCB2FE /* allNodeDetails.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = allNodeDetails.swift; path = Sources/FetchNodeDetails/allNodeDetails.swift; sourceTree = ""; }; - 838B4A2F61FA416D6477A9AC1058852D /* keccak-tiny.c */ = {isa = PBXFileReference; includeInIndex = 1; name = "keccak-tiny.c"; path = "web3swift/lib/keccak-tiny/keccak-tiny.c"; sourceTree = ""; }; - 83C2D1A6B39C60D291A546F28E434BA7 /* field_10x26.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = field_10x26.h; path = secp256k1/Classes/secp256k1/src/field_10x26.h; sourceTree = ""; }; - 846F829B2D7426B6F3568F7A41B70709 /* Utils+Foundation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Utils+Foundation.swift"; path = "Sources/CryptoSwift/Foundation/Utils+Foundation.swift"; sourceTree = ""; }; - 853287A42273DF97CDFFA168111378E2 /* Comparable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Comparable.swift; path = Sources/Comparable.swift; sourceTree = ""; }; - 86B5F8452F99ED9FFF9A886E247088A2 /* Digest.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Digest.swift; path = Sources/CryptoSwift/Digest.swift; sourceTree = ""; }; - 880BAFA2FABB109A64F46FF77F1210F3 /* EthereumAddress.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = EthereumAddress.swift; path = web3swift/src/Client/Models/EthereumAddress.swift; sourceTree = ""; }; - 880E471F7AF0F5C6BA2D139745A4F983 /* NSNotificationCenter+Promise.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "NSNotificationCenter+Promise.swift"; path = "Extensions/Foundation/Sources/NSNotificationCenter+Promise.swift"; sourceTree = ""; }; - 8A163B49CEC0FA9E5225D5F50AF09BE8 /* scalar_low_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = scalar_low_impl.h; path = secp256k1/Classes/secp256k1/src/scalar_low_impl.h; sourceTree = ""; }; - 8A9AD8E13539BB198D04A4546D3B04B9 /* ISO10126Padding.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ISO10126Padding.swift; path = Sources/CryptoSwift/ISO10126Padding.swift; sourceTree = ""; }; - 8B075CA53091CACB97CA1EC16B1B8CAC /* Pods_TestApplication.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Pods_TestApplication.framework; path = "Pods-TestApplication.framework"; sourceTree = BUILT_PRODUCTS_DIR; }; - 8B206A1158EC090ECBE6347A325D1F72 /* CBC.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CBC.swift; path = Sources/CryptoSwift/BlockMode/CBC.swift; sourceTree = ""; }; - 8B26AEAF934F1B432BA0C56F9E0A4003 /* HexUtil.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = HexUtil.swift; path = web3swift/src/Utils/HexUtil.swift; sourceTree = ""; }; - 8B550862A50AE656D9598B775DCAB12C /* OCB.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = OCB.swift; path = Sources/CryptoSwift/BlockMode/OCB.swift; sourceTree = ""; }; - 8BAEB0D6C133C644E7C75BDC3DFEE150 /* lax_der_privatekey_parsing.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = lax_der_privatekey_parsing.h; path = secp256k1/Classes/secp256k1/contrib/lax_der_privatekey_parsing.h; sourceTree = ""; }; - 8C94FF4B4412E542AFB463045F959791 /* fwd.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = fwd.h; path = Sources/fwd.h; sourceTree = ""; }; - 8F18EEA5FD4BA8416D39F7C9E2135452 /* LogEvent.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = LogEvent.swift; path = Sources/LogEvent.swift; sourceTree = ""; }; - 8F5E54573E582FDB933E2CA84A63D966 /* Torus-utils.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Torus-utils.debug.xcconfig"; sourceTree = ""; }; - 905566F790A691B5547B4DA117035B41 /* field_5x52_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = field_5x52_impl.h; path = secp256k1/Classes/secp256k1/src/field_5x52_impl.h; sourceTree = ""; }; - 90B639CFCF2B6A84C803968A7D2E5CDC /* secp256k1_recovery.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = secp256k1_recovery.h; path = secp256k1/Classes/secp256k1/include/secp256k1_recovery.h; sourceTree = ""; }; - 910D79A23CF5FF03F05E71536F3E41BA /* ecmult_const.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ecmult_const.h; path = secp256k1/Classes/secp256k1/src/ecmult_const.h; sourceTree = ""; }; - 91408665F11F5DDBBE848E547FBA8C55 /* PromiseKit.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = PromiseKit.debug.xcconfig; sourceTree = ""; }; - 919B3E391BC4CAC48C5484D88BFB3C12 /* scalar_4x64.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = scalar_4x64.h; path = secp256k1/Classes/secp256k1/src/scalar_4x64.h; sourceTree = ""; }; - 91BB24BA472AF523E913108C9AA301F2 /* BigInt.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = BigInt.framework; path = BigInt.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 91EF3F22D1C57CC47DFFB0F19A072617 /* scalar_4x64_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = scalar_4x64_impl.h; path = secp256k1/Classes/secp256k1/src/scalar_4x64_impl.h; sourceTree = ""; }; - 929B427A2A41FDB092BEB627145B4B1A /* secp256k1.c */ = {isa = PBXFileReference; includeInIndex = 1; name = secp256k1.c; path = secp256k1/Classes/secp256k1/src/secp256k1.c; sourceTree = ""; }; - 9363C4F487656755DF0A37F5B2517F8D /* AES+Foundation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "AES+Foundation.swift"; path = "Sources/CryptoSwift/Foundation/AES+Foundation.swift"; sourceTree = ""; }; - 9480EC5419F2059D80BD085B2DBF2323 /* Pods-TestApplication-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-TestApplication-dummy.m"; sourceTree = ""; }; - 94D080D97613C26E3745753411FD283A /* Random.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Random.swift; path = Sources/Random.swift; sourceTree = ""; }; - 94FCF9C0056EB6714CADF0D24C3EB969 /* secp256k1.swift-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "secp256k1.swift-umbrella.h"; sourceTree = ""; }; - 95433FAB2575C84D98AEA73A78453ED4 /* field_10x26_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = field_10x26_impl.h; path = secp256k1/Classes/secp256k1/src/field_10x26_impl.h; sourceTree = ""; }; - 95B90D18205E4BBF8F7B5D530A24432C /* BigInt.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BigInt.swift; path = Sources/BigInt.swift; sourceTree = ""; }; - 97241BE1FCAA933EA8779E01EEA25CB6 /* Pods_TestApplication_TestApplicationTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Pods_TestApplication_TestApplicationTests.framework; path = "Pods-TestApplication-TestApplicationTests.framework"; sourceTree = BUILT_PRODUCTS_DIR; }; - 97C43CF8036DEAB3C7EA5E3B522581B3 /* secp256k1_ecdh.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = secp256k1_ecdh.h; path = secp256k1/Classes/secp256k1/include/secp256k1_ecdh.h; sourceTree = ""; }; - 985D4AB624C9F8A7F64BE249D0E772FB /* Torus-utils.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Torus-utils.modulemap"; sourceTree = ""; }; - 9A56F53D176856193ADC162E4AA076D3 /* String+Numeric.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "String+Numeric.swift"; path = "web3swift/src/Extensions/String+Numeric.swift"; sourceTree = ""; }; - 9C5D28B376396769A8345EA4FDD6F087 /* AEADChaCha20Poly1305.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AEADChaCha20Poly1305.swift; path = Sources/CryptoSwift/AEAD/AEADChaCha20Poly1305.swift; sourceTree = ""; }; - 9D4D50B232C390BBD88F6DF4D9144448 /* Blowfish.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Blowfish.swift; path = Sources/CryptoSwift/Blowfish.swift; sourceTree = ""; }; - 9D58A212C56633522402D90E876B70C0 /* web3.swift.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = web3.swift.debug.xcconfig; sourceTree = ""; }; - 9D940727FF8FB9C785EB98E56350EF41 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; - 9E5B0BCCE1FF2FC9B4512991A323D3A0 /* secp256k1.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = secp256k1.h; path = secp256k1/Classes/secp256k1/include/secp256k1.h; sourceTree = ""; }; - 9EE9B27E2555D7296BEDCA963C73D0A0 /* lax_der_parsing.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = lax_der_parsing.h; path = secp256k1/Classes/secp256k1/contrib/lax_der_parsing.h; sourceTree = ""; }; - 9F29306CE1013E6EB42A107081EE2E84 /* EthereumTransactionReceipt.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = EthereumTransactionReceipt.swift; path = web3swift/src/Client/Models/EthereumTransactionReceipt.swift; sourceTree = ""; }; - 9F377B50C28D987B0993144A55F57AD9 /* ERC20Responses.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ERC20Responses.swift; path = web3swift/src/ERC20/ERC20Responses.swift; sourceTree = ""; }; - 9FA54E8E4D7DFF2A8548161D0E744A16 /* web3.swift.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = web3.swift.release.xcconfig; sourceTree = ""; }; - A1D946844EC50D20CE303CF4FD09C94F /* Resolver.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Resolver.swift; path = Sources/Resolver.swift; sourceTree = ""; }; - A24186845D5C01BBD56FAC2B8B5D8BD9 /* EthereumBlock.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = EthereumBlock.swift; path = web3swift/src/Client/Models/EthereumBlock.swift; sourceTree = ""; }; - A2B9392690B460036C89A882BD7FDFEC /* Prime Test.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Prime Test.swift"; path = "Sources/Prime Test.swift"; sourceTree = ""; }; - A2E0F2313A7BF02DC414F553E4F4E207 /* Multicall.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Multicall.swift; path = web3swift/src/Multicall/Multicall.swift; sourceTree = ""; }; - A3ABFE3667AA01A217809D9BE0B80D1F /* Pods-TestApplication-TestApplicationTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-TestApplication-TestApplicationTests.debug.xcconfig"; sourceTree = ""; }; - A4833F9362F06B5EFCD67F73EA471827 /* secp256k1.swift-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "secp256k1.swift-Info.plist"; sourceTree = ""; }; - A6F06C93786B08E1DE559DDD7B9F5423 /* TypedData.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TypedData.swift; path = web3swift/src/Account/TypedData.swift; sourceTree = ""; }; - A98BB106714997D0CC43F47613A9E687 /* abi.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = abi.swift; path = Sources/FetchNodeDetails/contract/abi.swift; sourceTree = ""; }; - A9C40D80418447C39E1CEE26F0F62541 /* Blowfish+Foundation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Blowfish+Foundation.swift"; path = "Sources/CryptoSwift/Foundation/Blowfish+Foundation.swift"; sourceTree = ""; }; - A9D486461B6C205FC09B177F2FDD6E36 /* DigestType.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DigestType.swift; path = Sources/CryptoSwift/DigestType.swift; sourceTree = ""; }; - AA7DA7B4EC3D51F14B2FC3CAD3AC27B4 /* BigUInt+Extensions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "BigUInt+Extensions.swift"; sourceTree = ""; }; - AA9121CAD3263CE38A10D823D79DCC1F /* race.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = race.m; path = Sources/race.m; sourceTree = ""; }; - AABA2BCA10DB0489781C0BA4883729C1 /* BigInt.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = BigInt.debug.xcconfig; sourceTree = ""; }; - AAECE43379277130C24025534B502DE7 /* GCD.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = GCD.swift; path = Sources/GCD.swift; sourceTree = ""; }; - ABA186C57DF0065E462243C5B4466E49 /* PromiseKit.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = PromiseKit.modulemap; sourceTree = ""; }; - ADD2B7F321837D70C71824C86E56E4EF /* eckey_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = eckey_impl.h; path = secp256k1/Classes/secp256k1/src/eckey_impl.h; sourceTree = ""; }; - ADDF4C9FCC2775A1D1B2EFEC91EC2CE4 /* Torus-fetchNodeDetails.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Torus-fetchNodeDetails.modulemap"; sourceTree = ""; }; - AE37171F151FE8AC745186199F849F4E /* StreamDecryptor.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = StreamDecryptor.swift; path = Sources/CryptoSwift/StreamDecryptor.swift; sourceTree = ""; }; - AE4632FB99AF85FBDFFD007EC99F86CA /* ecdsa.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ecdsa.h; path = secp256k1/Classes/secp256k1/src/ecdsa.h; sourceTree = ""; }; - B0220B7E25CEBA4F0EB907B6FE0DF819 /* CryptoSwift-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "CryptoSwift-prefix.pch"; sourceTree = ""; }; - B0BB14CA283330B9DECFF113DB016476 /* GenericJSON-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "GenericJSON-Info.plist"; sourceTree = ""; }; - B0BB649A97D99A1DCFCFF30E68B7819B /* Configuration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Configuration.swift; path = Sources/Configuration.swift; sourceTree = ""; }; - B19CB2ADB2C8F8D3344E2769ECE3DCBE /* Torus-fetchNodeDetails.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Torus-fetchNodeDetails.release.xcconfig"; sourceTree = ""; }; - B2EAA5F612FE999334D6B0F6B413F776 /* Pods-TestApplication-TestApplicationTests-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-TestApplication-TestApplicationTests-acknowledgements.markdown"; sourceTree = ""; }; - B3E533AA2B9B722DFCD10F4DC711F754 /* PKCS7.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PKCS7.swift; path = Sources/CryptoSwift/PKCS/PKCS7.swift; sourceTree = ""; }; - B4BA7ABED2FB9143EA449C37ACF7300E /* BestLogger-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "BestLogger-umbrella.h"; sourceTree = ""; }; - B4DD22124D02AEFB8CD1C081B693A862 /* EthereumBlockInfo.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = EthereumBlockInfo.swift; path = web3swift/src/Client/Models/EthereumBlockInfo.swift; sourceTree = ""; }; - B51EAFE66F27F1263D4E0F9F8EB304F7 /* Exponentiation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Exponentiation.swift; path = Sources/Exponentiation.swift; sourceTree = ""; }; - B5359F2F46F8C6AC35F1007EE324CE53 /* Pods-TestApplication.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-TestApplication.debug.xcconfig"; sourceTree = ""; }; - B565E4BAD69368B55E47510ED575AB6E /* PromiseKit-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "PromiseKit-Info.plist"; sourceTree = ""; }; - B60E21B551654A1A07D1C81EA1FF5248 /* abi.json */ = {isa = PBXFileReference; includeInIndex = 1; name = abi.json; path = Sources/FetchNodeDetails/contract/abi.json; sourceTree = ""; }; - B61E9B4DD1E8E331BED65262657B7ACA /* Cipher.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Cipher.swift; path = Sources/CryptoSwift/Cipher.swift; sourceTree = ""; }; - B71203F9814D6098D0BDD444A73B1FB1 /* GenericJSON-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "GenericJSON-dummy.m"; sourceTree = ""; }; - B7864C0A7DE1F82775DDFFFD201B1B4D /* web3.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = web3.framework; path = web3.swift.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - B83A95CDF79941CA7AE303C151E4FC8E /* Error.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Error.swift; path = Sources/Error.swift; sourceTree = ""; }; - B91BCF654195406C86A973331BF8630B /* CTR.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CTR.swift; path = Sources/CryptoSwift/BlockMode/CTR.swift; sourceTree = ""; }; - B94DF005B2AC340384AF4050E05684F2 /* hang.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = hang.m; path = Sources/hang.m; sourceTree = ""; }; - B95DA0B8F80A05FF18774CC83A71AE5D /* AES.Cryptors.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AES.Cryptors.swift; path = Sources/CryptoSwift/AES.Cryptors.swift; sourceTree = ""; }; - B99D9981AEBF8D8652D52D14D95114E4 /* Pods-TestApplication-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-TestApplication-acknowledgements.markdown"; sourceTree = ""; }; - BA00FA25D79D42904906782ED589D977 /* Pods-TestApplication-TestApplicationTests-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-TestApplication-TestApplicationTests-acknowledgements.plist"; sourceTree = ""; }; - BA8AD0C185FB85574DB51265FA838E1F /* Strideable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Strideable.swift; path = Sources/Strideable.swift; sourceTree = ""; }; - BBEA3551AC22C8ACECBBDF0D9138CED4 /* AnyPromise.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AnyPromise.m; path = Sources/AnyPromise.m; sourceTree = ""; }; - BC25B6B0582755B0574E7ECD963EE102 /* firstly.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = firstly.swift; path = Sources/firstly.swift; sourceTree = ""; }; - BC941BDD0B41F2770D00A17E35D6D072 /* NSNotificationCenter+AnyPromise.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSNotificationCenter+AnyPromise.m"; path = "Extensions/Foundation/Sources/NSNotificationCenter+AnyPromise.m"; sourceTree = ""; }; - BCF9CDF5DFDFCB1A781E6B4DD7B07561 /* BigInt.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = BigInt.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - BD39EB98407DC1E1E755DC2C646032A5 /* ENSContracts.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ENSContracts.swift; path = web3swift/src/ENS/ENSContracts.swift; sourceTree = ""; }; - BD6F8739BCF0EEA387E3315930C8D92C /* main_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = main_impl.h; path = secp256k1/Classes/secp256k1/src/modules/recovery/main_impl.h; sourceTree = ""; }; - BDACFE7A3583DFE041775104F44CB1D7 /* Torus-utils.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Torus-utils.release.xcconfig"; sourceTree = ""; }; - BE12BB56CC283AE61B661B59E78E2647 /* NSRegularExpressionExtension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = NSRegularExpressionExtension.swift; sourceTree = ""; }; - BEFFF5D6FD42ADB3C141C0953170EE12 /* scalar_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = scalar_impl.h; path = secp256k1/Classes/secp256k1/src/scalar_impl.h; sourceTree = ""; }; - BF6293BE34303A67D12748C6DE839E70 /* BigInt-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "BigInt-prefix.pch"; sourceTree = ""; }; - BF7620A9128591CAA508544D83743F8C /* Addition.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Addition.swift; path = Sources/Addition.swift; sourceTree = ""; }; - BFEFDD7E3AFC5D34452BDC80FF8C105D /* main_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = main_impl.h; path = secp256k1/Classes/secp256k1/src/modules/ecdh/main_impl.h; sourceTree = ""; }; - C0F6B30756599BFEB2256002FB64351A /* Initialization.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Initialization.swift; path = GenericJSON/Initialization.swift; sourceTree = ""; }; - C26C01C972A085F70B205170897B5C1F /* num_gmp.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = num_gmp.h; path = secp256k1/Classes/secp256k1/src/num_gmp.h; sourceTree = ""; }; - C2A2B713501EFB61B44C35BEECBEE942 /* PBKDF1.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PBKDF1.swift; path = Sources/CryptoSwift/PKCS/PBKDF1.swift; sourceTree = ""; }; - C37402F645C4D792CBB9A8A6632F2BA3 /* Integer Conversion.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Integer Conversion.swift"; path = "Sources/Integer Conversion.swift"; sourceTree = ""; }; - C3C8F8C1CEC18CFA6F4EC55EBA7631EA /* after.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = after.swift; path = Sources/after.swift; sourceTree = ""; }; - C4AF2BDFB2BB94A418B23C286BB2CC72 /* Codable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Codable.swift; path = Sources/Codable.swift; sourceTree = ""; }; - C4B6453889D747D11C945C03DD14A0CC /* NSNotificationCenter+AnyPromise.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSNotificationCenter+AnyPromise.h"; path = "Extensions/Foundation/Sources/NSNotificationCenter+AnyPromise.h"; sourceTree = ""; }; - C70E337CA4A128EB792DA9A9A442B8B7 /* scratch.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = scratch.h; path = secp256k1/Classes/secp256k1/src/scratch.h; sourceTree = ""; }; - C722D43EF4943ED4C6850E8746BD8460 /* EthereumNetwork.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = EthereumNetwork.swift; path = web3swift/src/Client/Models/EthereumNetwork.swift; sourceTree = ""; }; - C80291FFE1DDADC08B9AA9FA72564B27 /* RIPEMD160+StackOveflow.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RIPEMD160+StackOveflow.swift"; sourceTree = ""; }; - C8D01A0D8912AE4530962925B5F7331B /* BlockMode.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BlockMode.swift; path = Sources/CryptoSwift/BlockMode/BlockMode.swift; sourceTree = ""; }; - C8FD54D6408CA1C36C029400070E1548 /* Guarantee.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Guarantee.swift; path = Sources/Guarantee.swift; sourceTree = ""; }; - C90089CDFD2E5F46FFA6886F81E2AF9C /* when.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = when.swift; path = Sources/when.swift; sourceTree = ""; }; - C9EA4C845BC2CE81BD34D14A2D66F68D /* PromiseKit-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "PromiseKit-prefix.pch"; sourceTree = ""; }; - C9FEA2BFAF950BCFBFD1EA7BFF92A57A /* EthereumNameService.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = EthereumNameService.swift; path = web3swift/src/ENS/EthereumNameService.swift; sourceTree = ""; }; - CA38481A10469E72124DD89F5DC85BDD /* Pods-TestApplication-TestApplicationTests-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-TestApplication-TestApplicationTests-dummy.m"; sourceTree = ""; }; - CA88712FED6CF2998A3361EF563A834E /* Generics.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Generics.swift; path = Sources/CryptoSwift/Generics.swift; sourceTree = ""; }; - CACE0C4A13AFE60AA2B49B7BBEA046CA /* ABIEncoder.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ABIEncoder.swift; path = web3swift/src/Contract/ABIEncoder.swift; sourceTree = ""; }; - CC893128B2A1C355A1CEE4BC672363CF /* after.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = after.m; path = Sources/after.m; sourceTree = ""; }; - CCB88A63CB85E660D3EC7FC6C7C53E0D /* CFB.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CFB.swift; path = Sources/CryptoSwift/BlockMode/CFB.swift; sourceTree = ""; }; - CD2F735DEEF3E3BA318724FB4E8C87A7 /* web3.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = web3.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - CE41E408EF124D3FE8262B5AE33B4E8B /* secp256k1.swift-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "secp256k1.swift-dummy.m"; sourceTree = ""; }; - CEC31D6A49140A8533DE7811B519DB98 /* Pods-TestApplication-TestApplicationTests-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-TestApplication-TestApplicationTests-umbrella.h"; sourceTree = ""; }; - CF9862A03C43767E8E3C6D36315A5CBB /* Rabbit+Foundation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Rabbit+Foundation.swift"; path = "Sources/CryptoSwift/Foundation/Rabbit+Foundation.swift"; sourceTree = ""; }; - D0866F78E5D605A563EEC65A5821ECF4 /* web3.swift-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "web3.swift-Info.plist"; sourceTree = ""; }; - D0E2DB8A0F1A5CD953B28C0F1323A63E /* EthereumKeyStorage.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = EthereumKeyStorage.swift; path = web3swift/src/Account/EthereumKeyStorage.swift; sourceTree = ""; }; - D3B7FA99D8BAF992F5C08880834432DB /* Torus-fetchNodeDetails-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Torus-fetchNodeDetails-dummy.m"; sourceTree = ""; }; - D49541832200CE09F57E3391936FC65D /* BigInt.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = BigInt.release.xcconfig; sourceTree = ""; }; - D5361ABEA1CDF0DD51F64831C1F47671 /* EthereumAccount+SignTransaction.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "EthereumAccount+SignTransaction.swift"; path = "web3swift/src/Account/EthereumAccount+SignTransaction.swift"; sourceTree = ""; }; - D62D7B75B685A4651EA7BD4DFF985D9E /* web3.swift-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "web3.swift-umbrella.h"; sourceTree = ""; }; - D6417C1E1854000B109400B5DA0C58AE /* web3.swift.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = web3.swift.modulemap; sourceTree = ""; }; - D6916E78D3D8F77D9D14EC4153148957 /* NoPadding.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NoPadding.swift; path = Sources/CryptoSwift/NoPadding.swift; sourceTree = ""; }; - D7C6DDD94A2A8C545C4D1B69BA43D722 /* Catchable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Catchable.swift; path = Sources/Catchable.swift; sourceTree = ""; }; - D81BD5D1FFABEC3CB65C6AFBB1C3833B /* ABIDecoder+Static.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "ABIDecoder+Static.swift"; path = "web3swift/src/Contract/Statically Typed/ABIDecoder+Static.swift"; sourceTree = ""; }; - D83447A47EB9DC91613935D6EC994427 /* PromiseKit.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = PromiseKit.release.xcconfig; sourceTree = ""; }; - D8AFFF868EB84EB607143B5565BBDA1D /* ABIRawType.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ABIRawType.swift; path = web3swift/src/Contract/ABIRawType.swift; sourceTree = ""; }; - DA7496928C2C06096EB627BCA771DB62 /* Operators.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Operators.swift; path = Sources/CryptoSwift/Operators.swift; sourceTree = ""; }; - DAE6BA556D1F6F159B8F0001304FBC46 /* UInt32+Extension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UInt32+Extension.swift"; path = "Sources/CryptoSwift/UInt32+Extension.swift"; sourceTree = ""; }; - DBF5A984037769B13F3CDFBCD77F0101 /* CCM.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CCM.swift; path = Sources/CryptoSwift/BlockMode/CCM.swift; sourceTree = ""; }; - DD4E29D92957AE248E34A0BE740AFA1C /* ethereumNetwork.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ethereumNetwork.swift; path = Sources/FetchNodeDetails/ethereumNetwork.swift; sourceTree = ""; }; - DD5E21C3E93E74968429B747610652AC /* aes.c */ = {isa = PBXFileReference; includeInIndex = 1; name = aes.c; path = web3swift/lib/aes/aes.c; sourceTree = ""; }; - DF8CF5611E134E636443143FA67AD49F /* Thenable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Thenable.swift; path = Sources/Thenable.swift; sourceTree = ""; }; - DF8E105FC51ADE54662B607BF36A6D3F /* FetchNodeDetails.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = FetchNodeDetails.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - E030D06A52E5961BA9BDF05F6F355AB5 /* BigUInt.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BigUInt.swift; path = Sources/BigUInt.swift; sourceTree = ""; }; - E0878338B49562AA36DB88BC20435547 /* ERC20Events.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ERC20Events.swift; path = web3swift/src/ERC20/ERC20Events.swift; sourceTree = ""; }; - E0B2A8CCC7949A112D2FC5ED86D86B75 /* secp256k1.swift.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = secp256k1.swift.debug.xcconfig; sourceTree = ""; }; - E13098928CFEFF0808B6D6662EFBFF22 /* aes.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = aes.h; path = web3swift/lib/aes/include/aes.h; sourceTree = ""; }; - E2889192F91B949BDB206E1ED2324F32 /* HMAC.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = HMAC.swift; path = Sources/CryptoSwift/HMAC.swift; sourceTree = ""; }; - E2C83B722CEE442D0372F0CA73D10DFC /* ecdsa_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ecdsa_impl.h; path = secp256k1/Classes/secp256k1/src/ecdsa_impl.h; sourceTree = ""; }; - E679688A3BEC8D48600FB76F2343B7CD /* CryptoSwift-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "CryptoSwift-Info.plist"; sourceTree = ""; }; - E82B13B68F52BEAD3FBB117CA0C0CE0A /* KeyDerivation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = KeyDerivation.swift; path = web3swift/src/Utils/KeyDerivation.swift; sourceTree = ""; }; - E9270088A5D23A1E147E74F83B5FE060 /* CryptoSwift.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = CryptoSwift.release.xcconfig; sourceTree = ""; }; - E95FADD8DFB40C5A19F7745EC43E36B0 /* BestLogger-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "BestLogger-dummy.m"; sourceTree = ""; }; - E9E85AD994CB2DBE3E90AB2A6A9BEAAC /* PromiseKit-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "PromiseKit-dummy.m"; sourceTree = ""; }; - EA437238714B0745150524A37C4251BF /* fetchNodeDetails.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = fetchNodeDetails.swift; path = Sources/FetchNodeDetails/fetchNodeDetails.swift; sourceTree = ""; }; - EB2C6BED3D74ECE2DFC06B298D4AB6B9 /* hang.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = hang.swift; path = Sources/hang.swift; sourceTree = ""; }; - EB6BE9494194D9AFA7936F12BCFC765F /* field_5x52_asm_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = field_5x52_asm_impl.h; path = secp256k1/Classes/secp256k1/src/field_5x52_asm_impl.h; sourceTree = ""; }; - EE4DCDC16D95F49A6F101647535E6700 /* Updatable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Updatable.swift; path = Sources/CryptoSwift/Updatable.swift; sourceTree = ""; }; - EEACF7A961EC75E6BA98EFA22D55C5BE /* Array+Extension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Array+Extension.swift"; path = "Sources/CryptoSwift/Array+Extension.swift"; sourceTree = ""; }; - EF051FD5538DECBB1E8F994587A6FFCA /* Deprecations.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Deprecations.swift; path = Sources/Deprecations.swift; sourceTree = ""; }; - F0A5B275CA1172B8D72802F34ECD80F6 /* CryptoSwift.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = CryptoSwift.modulemap; sourceTree = ""; }; - F28C400BAF700B04CC6C3F5044B588E5 /* BigInt.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = BigInt.modulemap; sourceTree = ""; }; - F39B9C1518AEEE1320C383DE7547FB56 /* Pods-TestApplication-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-TestApplication-Info.plist"; sourceTree = ""; }; - F3C41D914D2872C211DD0309D82B9CA9 /* EthereumLog.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = EthereumLog.swift; path = web3swift/src/Client/Models/EthereumLog.swift; sourceTree = ""; }; - F568DB99F0E3C945D308D845A799EB4E /* field.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = field.h; path = secp256k1/Classes/secp256k1/src/field.h; sourceTree = ""; }; - F5992D1E9BB1CFB5DB408C53D463F901 /* hash_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = hash_impl.h; path = secp256k1/Classes/secp256k1/src/hash_impl.h; sourceTree = ""; }; - F5B8EB110B55AA3FB4CAD2360C519392 /* BlockModeOptions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BlockModeOptions.swift; path = Sources/CryptoSwift/BlockMode/BlockModeOptions.swift; sourceTree = ""; }; - F629CE6C9A9092A215DE9415EA54DF90 /* GenericJSON.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = GenericJSON.framework; path = GenericJSON.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - F6926A4C195017FA6EEFBAE75FEB9A40 /* CMAC.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CMAC.swift; path = Sources/CryptoSwift/CMAC.swift; sourceTree = ""; }; - F7E3A198A1E88DCFDE46C420D913D0C9 /* AnyPromise.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AnyPromise.h; path = Sources/AnyPromise.h; sourceTree = ""; }; - F81274EDB681F11E7CB05F7DCA2BB33C /* CryptoSwift.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = CryptoSwift.framework; path = CryptoSwift.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - F88BD841AAF2BBBCC87952AC71F275A1 /* CryptoSwift-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "CryptoSwift-dummy.m"; sourceTree = ""; }; - F98029C9DB6922E77715A2A6DAF2283B /* Rabbit.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Rabbit.swift; path = Sources/CryptoSwift/Rabbit.swift; sourceTree = ""; }; - F9F8C9B346BDD93EDF67DD1315E8DEFC /* AES.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AES.swift; path = Sources/CryptoSwift/AES.swift; sourceTree = ""; }; - FB51FF7C6C4B945820D511EED5DAA827 /* CBCMAC.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CBCMAC.swift; path = Sources/CryptoSwift/CBCMAC.swift; sourceTree = ""; }; - FC7E69F413E2E84A65EFD752DBA31DFE /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS14.0.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; - FC91C532ED6C11F022DF771E33CCF947 /* field_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = field_impl.h; path = secp256k1/Classes/secp256k1/src/field_impl.h; sourceTree = ""; }; - FCD66DE5118D187C8CC9C5E32D84D478 /* afterlife.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = afterlife.swift; path = Extensions/Foundation/Sources/afterlife.swift; sourceTree = ""; }; - FD0B5FD346CBDFFEE192816885FEBC2A /* ABIFunctionEncoder.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ABIFunctionEncoder.swift; path = "web3swift/src/Contract/Statically Typed/ABIFunctionEncoder.swift"; sourceTree = ""; }; - FD3B53A6F28E087C361B3BE376595D74 /* Shifts.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Shifts.swift; path = Sources/Shifts.swift; sourceTree = ""; }; - FEBDBD7C71F48CCA781AEF8CAB1AA832 /* Web3ERROR.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = Web3ERROR.swift; sourceTree = ""; }; - FF04D3A6B1A00EEC32D8C2D98D1F6444 /* BestLogger.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = BestLogger.release.xcconfig; sourceTree = ""; }; - FF2875B47A1760A6A6B513F73B1154C5 /* PromiseKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = PromiseKit.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - FFA75995355AAE462CC550E8A760D288 /* RLP.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RLP.swift; path = web3swift/src/Utils/RLP.swift; sourceTree = ""; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - 0627735B01D8E22FAAF74169437F36C6 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 6989571185F929E3457AF6FD3221C160 /* Foundation.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 11311D70953AC99174A763E25F665920 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 8532AFAE5B4DE21DCAFB19AB0E4434EB /* Foundation.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 20F6716357184C89E8EE70C3073BE0F0 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 31892E6BA7E9DF2B3F88D226FDBBAB2E /* Foundation.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 367556A5B9AD32E0982D8200E08144F0 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - E6C98D0B5C534492BA9694F4C4B2CD8F /* Foundation.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 37EC3A014924225FC82F091D1F0ACE22 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - CB92B16177821485034F926E18FBFB16 /* Foundation.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 7BFF1D1636F8C4926CC42353281EBCD5 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 8696F36413C5022B80C90D7F6F095EE8 /* Foundation.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 7C11A9D918EE667C4AC018541C242DC2 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 571530E5AABCD8EE8F42F175D56E29D8 /* BestLogger.framework in Frameworks */, - CAA9D23D51710AF8997CDE21F069C362 /* CryptoSwift.framework in Frameworks */, - 3E59FB896D98F0A2D99CBF41EA856612 /* FetchNodeDetails.framework in Frameworks */, - F04E36B4D3BA605353AC658D2F05E9C6 /* Foundation.framework in Frameworks */, - D03CA8ADF7DFB7CDFEFEC1ECEB00A330 /* PromiseKit.framework in Frameworks */, - 904B351E0FA2C736D1F79343FA930CC5 /* secp256k1.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - A27B6EB416189F1A72C5F7FFA17E12EB /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 2A97991D5B1C896287DB6AB59105295B /* BestLogger.framework in Frameworks */, - 47EDFAD188E4C0D9D91DDCFBE9367142 /* Foundation.framework in Frameworks */, - DCE74D5CB8D3EF178AD6F16EA903DDD4 /* PromiseKit.framework in Frameworks */, - 35C279CF0067E4311BA3F339C4A80DB8 /* web3.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - AD14A83BF9B6A00656C3E87EB8D818A2 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - EB0450140F0DE8EC373CE3173F9CD9AF /* Foundation.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - C5B1A79FDA52911F0949E45FAAF57749 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - E74E7E8884EAD324EB2F3537B2CB8DC0 /* Foundation.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - D0D0B2B0DD24157AB160271F119CCC9B /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 3C831C73080260AE302B148004732917 /* BigInt.framework in Frameworks */, - 6368FF5EFA952A81078C455E8E21FCC9 /* Foundation.framework in Frameworks */, - 6F96569BFF4B21CA6D75ADC073DF1CD7 /* GenericJSON.framework in Frameworks */, - 39C9C9704BAE8D24228F58A7E432D68A /* secp256k1.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 02C5ECEA382E41FB54FF5DA325E18878 /* Targets Support Files */ = { - isa = PBXGroup; - children = ( - A15D84FBC186D019445F1DEAE83631FF /* Pods-TestApplication */, - 0BD2E917C6DA4408E22079D33E189D5A /* Pods-TestApplication-TestApplicationTests */, - ); - name = "Targets Support Files"; - sourceTree = ""; - }; - 0BD2E917C6DA4408E22079D33E189D5A /* Pods-TestApplication-TestApplicationTests */ = { - isa = PBXGroup; - children = ( - 74F9436D309E5C0320E2BF39B33369DC /* Pods-TestApplication-TestApplicationTests.modulemap */, - B2EAA5F612FE999334D6B0F6B413F776 /* Pods-TestApplication-TestApplicationTests-acknowledgements.markdown */, - BA00FA25D79D42904906782ED589D977 /* Pods-TestApplication-TestApplicationTests-acknowledgements.plist */, - CA38481A10469E72124DD89F5DC85BDD /* Pods-TestApplication-TestApplicationTests-dummy.m */, - 1764C73C5A2BAF6D7920A5164D0CD86C /* Pods-TestApplication-TestApplicationTests-frameworks.sh */, - 636F14D1D805465AFBED7A23DCC80AF4 /* Pods-TestApplication-TestApplicationTests-Info.plist */, - CEC31D6A49140A8533DE7811B519DB98 /* Pods-TestApplication-TestApplicationTests-umbrella.h */, - A3ABFE3667AA01A217809D9BE0B80D1F /* Pods-TestApplication-TestApplicationTests.debug.xcconfig */, - 7F673FD14D4ABF76640791855FBB0BB6 /* Pods-TestApplication-TestApplicationTests.release.xcconfig */, - ); - name = "Pods-TestApplication-TestApplicationTests"; - path = "Target Support Files/Pods-TestApplication-TestApplicationTests"; - sourceTree = ""; - }; - 0DCA1E558115E357DE238EE47D500914 /* Frameworks */ = { - isa = PBXGroup; - children = ( - 401FB6B95BF461CFBCF5B408508044F7 /* BestLogger.framework */, - BCF9CDF5DFDFCB1A781E6B4DD7B07561 /* BigInt.framework */, - 0F108ED1141687A35E9F764E19ECA19A /* CryptoSwift.framework */, - DF8E105FC51ADE54662B607BF36A6D3F /* FetchNodeDetails.framework */, - 0CF20DF7F8CB70917B48A09DCAF20008 /* GenericJSON.framework */, - FF2875B47A1760A6A6B513F73B1154C5 /* PromiseKit.framework */, - 2889ED6859342ABD0AC4C9F37F73B9E5 /* secp256k1.framework */, - CD2F735DEEF3E3BA318724FB4E8C87A7 /* web3.framework */, - B6F7A27D20A03BC1ACF0EDB6F6B63EBD /* iOS */, - ); - name = Frameworks; - sourceTree = ""; - }; - 1BC71CB59160AAA7F149C155FF8A703D /* Pods */ = { - isa = PBXGroup; - children = ( - 851E1243BAF2312A558720BAF4973925 /* BestLogger */, - BDBF2DAAA2905334B0AC8C5542A021B6 /* BigInt */, - 6EFB8B7D3C05F7D137F40E2FFB7AC0EE /* CryptoSwift */, - 7CE2C665B01CD26B38DE90F16DAC215C /* GenericJSON */, - CC8274A70A59040DF96A45FB356292D3 /* PromiseKit */, - 78E6751047EA99966F23A155143C148E /* secp256k1.swift */, - 33DC7527BF77689BBC9329FB5EAF3C2A /* Torus-fetchNodeDetails */, - 40442A48B13E759D58AC0C15467F31F9 /* web3.swift */, - ); - name = Pods; - sourceTree = ""; - }; - 1FABA197481097E71470C1F536DC3BA7 /* Development Pods */ = { - isa = PBXGroup; - children = ( - 2B7253AA96EBDBECCAEC1E928E788FAD /* Torus-utils */, - ); - name = "Development Pods"; - sourceTree = ""; - }; - 21F390AC18436066BA77DDBA25173422 /* Support Files */ = { - isa = PBXGroup; - children = ( - D6417C1E1854000B109400B5DA0C58AE /* web3.swift.modulemap */, - 25D82BF60AB4BA0F6160F9F633DEBF26 /* web3.swift-dummy.m */, - D0866F78E5D605A563EEC65A5821ECF4 /* web3.swift-Info.plist */, - 4D4CFA88A467301FD2EEF25631F6965A /* web3.swift-prefix.pch */, - D62D7B75B685A4651EA7BD4DFF985D9E /* web3.swift-umbrella.h */, - 9D58A212C56633522402D90E876B70C0 /* web3.swift.debug.xcconfig */, - 9FA54E8E4D7DFF2A8548161D0E744A16 /* web3.swift.release.xcconfig */, - ); - name = "Support Files"; - path = "../Target Support Files/web3.swift"; - sourceTree = ""; - }; - 22F9836F4D32A1382C16AEC92E9F5515 /* Support Files */ = { - isa = PBXGroup; - children = ( - ADDF4C9FCC2775A1D1B2EFEC91EC2CE4 /* Torus-fetchNodeDetails.modulemap */, - D3B7FA99D8BAF992F5C08880834432DB /* Torus-fetchNodeDetails-dummy.m */, - 6DB4E635E7EFF54B5F7AAF164D20B8AE /* Torus-fetchNodeDetails-Info.plist */, - 344DF0D975CE2D43A89199F188697FDC /* Torus-fetchNodeDetails-prefix.pch */, - 57905E613320F8F3C500150C880D087C /* Torus-fetchNodeDetails-umbrella.h */, - 399721B8AC54458E4268EEBC19853764 /* Torus-fetchNodeDetails.debug.xcconfig */, - B19CB2ADB2C8F8D3344E2769ECE3DCBE /* Torus-fetchNodeDetails.release.xcconfig */, - ); - name = "Support Files"; - path = "../Target Support Files/Torus-fetchNodeDetails"; - sourceTree = ""; - }; - 29581CC9D4B87B5BA79682F96551F68C /* Support Files */ = { - isa = PBXGroup; - children = ( - F28C400BAF700B04CC6C3F5044B588E5 /* BigInt.modulemap */, - 2C27E235F897CC2666B12364F41223FA /* BigInt-dummy.m */, - 07393C58FA33AA78F5B49A13745F8297 /* BigInt-Info.plist */, - BF6293BE34303A67D12748C6DE839E70 /* BigInt-prefix.pch */, - 5E2D4BC3737199C8D05218F1C77F9034 /* BigInt-umbrella.h */, - AABA2BCA10DB0489781C0BA4883729C1 /* BigInt.debug.xcconfig */, - D49541832200CE09F57E3391936FC65D /* BigInt.release.xcconfig */, - ); - name = "Support Files"; - path = "../Target Support Files/BigInt"; - sourceTree = ""; - }; - 29730A4FD4D933CCD7BB97999595A5AE /* Support Files */ = { - isa = PBXGroup; - children = ( - 6130ED90F9989E9635298473756B1683 /* GenericJSON.modulemap */, - B71203F9814D6098D0BDD444A73B1FB1 /* GenericJSON-dummy.m */, - B0BB14CA283330B9DECFF113DB016476 /* GenericJSON-Info.plist */, - 15AA4E4350BA85427F44131E6C86179E /* GenericJSON-prefix.pch */, - 46EDEBD5407B6208F2E7818139E41432 /* GenericJSON-umbrella.h */, - 4149DFD7C82A8AE682E718D3485E38F1 /* GenericJSON.debug.xcconfig */, - 31D69897ADC12A0DCABDC5D85828E53C /* GenericJSON.release.xcconfig */, - ); - name = "Support Files"; - path = "../Target Support Files/GenericJSON"; - sourceTree = ""; - }; - 2B7253AA96EBDBECCAEC1E928E788FAD /* Torus-utils */ = { - isa = PBXGroup; - children = ( - 437540F4CEA4C64E88F2FC57D58CD678 /* AbstractTorusUtils.swift */, - 0CCDBC1B821FF862979B3E2F8311E141 /* TorusUtils.swift */, - B47BC079D5D92757F6A55E544D4B3900 /* Convenience */, - F8F58CB14E464D5479BFDAB6F9B97210 /* Extensions */, - 6457D41F839C13EFEFBB6C4DEB42207A /* Helpers */, - 3AF9A5584D114029E7751CE0920816BB /* Pod */, - D0C6D82F51084E52B38229C3207D8F97 /* Support Files */, - ); - name = "Torus-utils"; - path = ../..; - sourceTree = ""; - }; - 33DC7527BF77689BBC9329FB5EAF3C2A /* Torus-fetchNodeDetails */ = { - isa = PBXGroup; - children = ( - B60E21B551654A1A07D1C81EA1FF5248 /* abi.json */, - A98BB106714997D0CC43F47613A9E687 /* abi.swift */, - 83430C8BE37CA5ABED624A47D2CCB2FE /* allNodeDetails.swift */, - 8304465A6818E3539B61C8873FE01CA1 /* epochInfo.swift */, - DD4E29D92957AE248E34A0BE740AFA1C /* ethereumNetwork.swift */, - EA437238714B0745150524A37C4251BF /* fetchNodeDetails.swift */, - 766055FE9D17A63A6550E7C31B47CCA0 /* fetchNodeDetails+promise.swift */, - 2FD51937D140E00F9B4D3F5216E5A3B6 /* nodeDetails.swift */, - 535CA87BE83A1CD7ED8B51F0B9D7FDC3 /* NodeListContract.swift */, - 4606B08B6DEB98353BA491A53AC33179 /* String.swift */, - 1BC2FF26857A73C38ADDF6A7DCA27F09 /* torusNodePub.swift */, - 22F9836F4D32A1382C16AEC92E9F5515 /* Support Files */, - ); - name = "Torus-fetchNodeDetails"; - path = "Torus-fetchNodeDetails"; - sourceTree = ""; - }; - 3AF9A5584D114029E7751CE0920816BB /* Pod */ = { - isa = PBXGroup; - children = ( - 76ED65415F56F8686655E19B2CF2061B /* License.md */, - 46620DD8F000F669B041B9AC6A6C4941 /* README.md */, - 3F140FC4233C8118AEB177B33479773E /* Torus-utils.podspec */, - ); - name = Pod; - sourceTree = ""; - }; - 40442A48B13E759D58AC0C15467F31F9 /* web3.swift */ = { - isa = PBXGroup; - children = ( - 3E173DB1F83723103EEDC0216A9C0C66 /* ABIDecoder.swift */, - D81BD5D1FFABEC3CB65C6AFBB1C3833B /* ABIDecoder+Static.swift */, - CACE0C4A13AFE60AA2B49B7BBEA046CA /* ABIEncoder.swift */, - 5A5FC334F88D0032EB1D83AC8D493281 /* ABIEncoder+Static.swift */, - 34A9444C608A173A0C7BCE90EFDCD2C8 /* ABIEvent.swift */, - 33E4624D47DB7D9F81C64774BE5B01A7 /* ABIFunction.swift */, - FD0B5FD346CBDFFEE192816885FEBC2A /* ABIFunctionEncoder.swift */, - D8AFFF868EB84EB607143B5565BBDA1D /* ABIRawType.swift */, - 21898A94100F0AAE45DF0541E2E0CBCC /* ABIRawType+JSON.swift */, - 66F8AAC22DB26ABC53091415B10EEC16 /* ABIRawType+Static.swift */, - 44DA4E25E3BD5461C1A77ECDBABB14C8 /* ABITuple.swift */, - DD5E21C3E93E74968429B747610652AC /* aes.c */, - E13098928CFEFF0808B6D6662EFBFF22 /* aes.h */, - 559673992E18C2184B7DB88C26908C97 /* AesUtil.swift */, - 6CD31DC5602C8A4EA488F6165118FE5B /* ByteExtensions.swift */, - 7440E35780BF5BA52825B7CA75F9FDE7 /* Data+Random.swift */, - BD39EB98407DC1E1E755DC2C646032A5 /* ENSContracts.swift */, - 5BBFD7D25C959FBE5F887081CA16EA19 /* ENSMultiResolver.swift */, - 1C9184915751000EBDB5D3111469A510 /* ENSResponses.swift */, - 1E15F289AAC20610718E90CB6948CB28 /* ERC165.swift */, - 642310926E7B2EBE2C3FDECE7283F069 /* ERC20.swift */, - E0878338B49562AA36DB88BC20435547 /* ERC20Events.swift */, - 512505FA399AC0715418B5B0EB5C6EA6 /* ERC20Functions.swift */, - 9F377B50C28D987B0993144A55F57AD9 /* ERC20Responses.swift */, - 186A61775A01E47AC5C119FB9005FFE5 /* ERC721.swift */, - 76CEC0CE7E0EA8154AF04D686166E1CE /* ERC721Events.swift */, - 49EC274D25D4080DB25FBC74A5E04247 /* ERC721Functions.swift */, - 6EC90D55FA413D931E20578C1CEEC425 /* ERC721Responses.swift */, - 74F3F1B8FD72FF65A416F892BE4F1D77 /* EthereumAccount.swift */, - D5361ABEA1CDF0DD51F64831C1F47671 /* EthereumAccount+SignTransaction.swift */, - 880BAFA2FABB109A64F46FF77F1210F3 /* EthereumAddress.swift */, - A24186845D5C01BBD56FAC2B8B5D8BD9 /* EthereumBlock.swift */, - B4DD22124D02AEFB8CD1C081B693A862 /* EthereumBlockInfo.swift */, - 065E0E21D472F17C59860CF9DFADC6D0 /* EthereumClient.swift */, - 1471D23729F8BAB1C7CC8595F3E747E2 /* EthereumClient+Static.swift */, - D0E2DB8A0F1A5CD953B28C0F1323A63E /* EthereumKeyStorage.swift */, - F3C41D914D2872C211DD0309D82B9CA9 /* EthereumLog.swift */, - C9FEA2BFAF950BCFBFD1EA7BFF92A57A /* EthereumNameService.swift */, - C722D43EF4943ED4C6850E8746BD8460 /* EthereumNetwork.swift */, - 387353A782112985B34B7CD69F0A51DD /* EthereumTransaction.swift */, - 9F29306CE1013E6EB42A107081EE2E84 /* EthereumTransactionReceipt.swift */, - 5E06860B83B20D4A67BF3717B49D709F /* Extensions.swift */, - 1C59CFACA7E0C11A352F48A32069FC41 /* HexExtensions.swift */, - 8B26AEAF934F1B432BA0C56F9E0A4003 /* HexUtil.swift */, - 27FA72D4599B389A57A234E8EB4DEF6A /* JSONRPC.swift */, - 838B4A2F61FA416D6477A9AC1058852D /* keccak-tiny.c */, - 048650C366ADDE4442EE73E8081DE2AB /* keccak-tiny.h */, - 4F7A157ACEF96B73525911DBF2977A23 /* KeccakExtensions.swift */, - E82B13B68F52BEAD3FBB117CA0C0CE0A /* KeyDerivation.swift */, - 2FA065E8923A9B4B230F07C25B1D17DF /* KeystoreUtil.swift */, - 7B63097900F8AE0D41E44B24012D4E76 /* KeyUtil.swift */, - A2E0F2313A7BF02DC414F553E4F4E207 /* Multicall.swift */, - 73A6BB7E6612064E62C5915EAEEB1E90 /* MulticallContract.swift */, - 171D30B00FFF9FF1E041CD16B6F40F67 /* RecursiveLogCollector.swift */, - FFA75995355AAE462CC550E8A760D288 /* RLP.swift */, - 9A56F53D176856193ADC162E4AA076D3 /* String+Numeric.swift */, - A6F06C93786B08E1DE559DDD7B9F5423 /* TypedData.swift */, - 21F390AC18436066BA77DDBA25173422 /* Support Files */, - ); - name = web3.swift; - path = web3.swift; - sourceTree = ""; - }; - 41C4DBC9BB2BA46A7EF1BF285F38C4BF /* Support Files */ = { - isa = PBXGroup; - children = ( - 2C1788DED94C5B9BBBB3C953DDBDEE9D /* BestLogger.modulemap */, - E95FADD8DFB40C5A19F7745EC43E36B0 /* BestLogger-dummy.m */, - 56DDEB3F1B8EEEC46C7FE78A4BE07084 /* BestLogger-Info.plist */, - 3D29A873E30C60D50F29597994546CD4 /* BestLogger-prefix.pch */, - B4BA7ABED2FB9143EA449C37ACF7300E /* BestLogger-umbrella.h */, - 498F0D13322EB59CE7A2B26E805E760B /* BestLogger.debug.xcconfig */, - FF04D3A6B1A00EEC32D8C2D98D1F6444 /* BestLogger.release.xcconfig */, - ); - name = "Support Files"; - path = "../Target Support Files/BestLogger"; - sourceTree = ""; - }; - 6457D41F839C13EFEFBB6C4DEB42207A /* Helpers */ = { - isa = PBXGroup; - children = ( - 17D29E3BCB8FF1F4020A2994E7BCE1EC /* Error.swift */, - 1B57C4429024335B6B233AFBC8EBCA62 /* JSONRPCRequest.swift */, - 0851391139C8B561E9D2230BEB98CD83 /* KeyAssignRequestResponse.swift */, - FEBDBD7C71F48CCA781AEF8CAB1AA832 /* Web3ERROR.swift */, - ); - name = Helpers; - path = Sources/TorusUtils/Helpers; - sourceTree = ""; - }; - 6EFB8B7D3C05F7D137F40E2FFB7AC0EE /* CryptoSwift */ = { - isa = PBXGroup; - children = ( - 4786050970F7BC6B946E9599C6D0E032 /* AEAD.swift */, - 9C5D28B376396769A8345EA4FDD6F087 /* AEADChaCha20Poly1305.swift */, - F9F8C9B346BDD93EDF67DD1315E8DEFC /* AES.swift */, - 9363C4F487656755DF0A37F5B2517F8D /* AES+Foundation.swift */, - B95DA0B8F80A05FF18774CC83A71AE5D /* AES.Cryptors.swift */, - EEACF7A961EC75E6BA98EFA22D55C5BE /* Array+Extension.swift */, - 145C2CFCCEE9E415BB5C5650807E68EA /* Array+Foundation.swift */, - 4134AEC11A8F8B8DCDB9F3766DDF1141 /* Authenticator.swift */, - 625BE58FC9C80FD86E0F3428FAB98641 /* BatchedCollection.swift */, - 5AB7CDB20C1AA54218B45E111EF7D6F8 /* Bit.swift */, - 70E08293AB11CD4B418F795968249F13 /* BlockCipher.swift */, - 71367370146FFEB708D1598A00B52B40 /* BlockDecryptor.swift */, - 517C9054E04427F006E9A3EF43E6E45E /* BlockEncryptor.swift */, - C8D01A0D8912AE4530962925B5F7331B /* BlockMode.swift */, - F5B8EB110B55AA3FB4CAD2360C519392 /* BlockModeOptions.swift */, - 9D4D50B232C390BBD88F6DF4D9144448 /* Blowfish.swift */, - A9C40D80418447C39E1CEE26F0F62541 /* Blowfish+Foundation.swift */, - 8B206A1158EC090ECBE6347A325D1F72 /* CBC.swift */, - FB51FF7C6C4B945820D511EED5DAA827 /* CBCMAC.swift */, - DBF5A984037769B13F3CDFBCD77F0101 /* CCM.swift */, - CCB88A63CB85E660D3EC7FC6C7C53E0D /* CFB.swift */, - 5522F6FC694B238BA3F79DF8B3FA5206 /* ChaCha20.swift */, - 5896784A7C660D31DBAE675252CA4DF1 /* ChaCha20+Foundation.swift */, - 38ACFA334271222BD4F32D11FEAF97FA /* Checksum.swift */, - B61E9B4DD1E8E331BED65262657B7ACA /* Cipher.swift */, - 438E9635D94E1B1EAD726DED2082D9C1 /* CipherModeWorker.swift */, - F6926A4C195017FA6EEFBAE75FEB9A40 /* CMAC.swift */, - 2F940CBEDB6917EA53A85EFD2E617BC7 /* Collection+Extension.swift */, - 2E9158AC3ECFF82080F312EF2735F02A /* CompactMap.swift */, - 0EA249BCC820BF0D1BFDF5D8437662B3 /* Cryptor.swift */, - 657202ABBFE748A40A2783796BF08655 /* Cryptors.swift */, - B91BCF654195406C86A973331BF8630B /* CTR.swift */, - 80787FB4F6282B6B4774502BA9FDE45E /* Data+Extension.swift */, - 86B5F8452F99ED9FFF9A886E247088A2 /* Digest.swift */, - A9D486461B6C205FC09B177F2FDD6E36 /* DigestType.swift */, - 1FBAE32F1B25EF2E3DD3FE1CB070E785 /* ECB.swift */, - 332F52699E64158C82118FD0F3ADA95B /* GCM.swift */, - CA88712FED6CF2998A3361EF563A834E /* Generics.swift */, - 47935440EB89D2B4B5FC5832725C8172 /* HKDF.swift */, - E2889192F91B949BDB206E1ED2324F32 /* HMAC.swift */, - 3F3B4168316B3465043A60D628AD1AB1 /* HMAC+Foundation.swift */, - 7AE5CBB7F77DCBADD0E73CC0D312F9EA /* Int+Extension.swift */, - 8A9AD8E13539BB198D04A4546D3B04B9 /* ISO10126Padding.swift */, - 1A69511B534B69193581E33DBA9A7728 /* ISO78164Padding.swift */, - 2F3EEED4CED61DB1BF979660661180B1 /* MD5.swift */, - D6916E78D3D8F77D9D14EC4153148957 /* NoPadding.swift */, - 8B550862A50AE656D9598B775DCAB12C /* OCB.swift */, - 227988D42D5705A1BAE6FAD5F72C6D00 /* OFB.swift */, - DA7496928C2C06096EB627BCA771DB62 /* Operators.swift */, - 28F7E50E8D75EB8B04F3AEF1F2D6E967 /* Padding.swift */, - C2A2B713501EFB61B44C35BEECBEE942 /* PBKDF1.swift */, - 3C319601202CF7B0E3066E0290B09AAF /* PBKDF2.swift */, - 45FE914109197DB4260E9284777F74EF /* PCBC.swift */, - 5006AEB82F73A08150044E2177EB164E /* PKCS5.swift */, - B3E533AA2B9B722DFCD10F4DC711F754 /* PKCS7.swift */, - 1651974D61BD0C6886E658C15DF4C1FB /* PKCS7Padding.swift */, - 228EEFF5D908B492A6493287E0E332C6 /* Poly1305.swift */, - F98029C9DB6922E77715A2A6DAF2283B /* Rabbit.swift */, - CF9862A03C43767E8E3C6D36315A5CBB /* Rabbit+Foundation.swift */, - 3FB45CCDD5C1C04B19AE51DD16976770 /* Scrypt.swift */, - 3CA73B7B37631191F8319ECA14123494 /* SecureBytes.swift */, - 57A8F00674208873848E850C916B07DA /* SHA1.swift */, - 09C904EEDB892C0039A827BB6DFE64AD /* SHA2.swift */, - 02DD2A16BFE076F87A8D8461822F0C1C /* SHA3.swift */, - AE37171F151FE8AC745186199F849F4E /* StreamDecryptor.swift */, - 748E773405DA3F24E59FEEB243BA3F51 /* StreamEncryptor.swift */, - 7B308266B66D32BEE30FA4033575BBCC /* String+Extension.swift */, - 2447CE7DAD1FA7DB3AA250427A017605 /* String+FoundationExtension.swift */, - 2C6EB095E3C0D6E55A21E671547F963C /* UInt128.swift */, - 60FD258C582D88CE19A773E27B5E77F5 /* UInt16+Extension.swift */, - DAE6BA556D1F6F159B8F0001304FBC46 /* UInt32+Extension.swift */, - 0725D54099E8DC5F13F166F38A3E0483 /* UInt64+Extension.swift */, - 5AC3662AD7219F05F38FA35C7F00CD98 /* UInt8+Extension.swift */, - EE4DCDC16D95F49A6F101647535E6700 /* Updatable.swift */, - 4C06CABD5398EBEA8F52AFB991C3E633 /* Utils.swift */, - 846F829B2D7426B6F3568F7A41B70709 /* Utils+Foundation.swift */, - 3DCB79608CDE73661BF31DBA543934E6 /* ZeroPadding.swift */, - A98526F4175932496BBE771029600413 /* Support Files */, - ); - name = CryptoSwift; - path = CryptoSwift; - sourceTree = ""; - }; - 78E6751047EA99966F23A155143C148E /* secp256k1.swift */ = { - isa = PBXGroup; - children = ( - 08A78AF904E46E091F3D3FE519CF4760 /* basic-config.h */, - AE4632FB99AF85FBDFFD007EC99F86CA /* ecdsa.h */, - E2C83B722CEE442D0372F0CA73D10DFC /* ecdsa_impl.h */, - 7B30E983C0539A09B868FA39B5134C16 /* eckey.h */, - ADD2B7F321837D70C71824C86E56E4EF /* eckey_impl.h */, - 33DD392B28249B6AC36CCE4111EA32CC /* ecmult.h */, - 910D79A23CF5FF03F05E71536F3E41BA /* ecmult_const.h */, - 1FC45449936DF5240CAF940D29E39C49 /* ecmult_const_impl.h */, - 3C92945F067A0F612799399E07E77320 /* ecmult_gen.h */, - 486E6A0E5AE1F8895ECAEE9DD2005369 /* ecmult_gen_impl.h */, - 67B44A57092697F09D48B034F87DE0AA /* ecmult_impl.h */, - F568DB99F0E3C945D308D845A799EB4E /* field.h */, - 83C2D1A6B39C60D291A546F28E434BA7 /* field_10x26.h */, - 95433FAB2575C84D98AEA73A78453ED4 /* field_10x26_impl.h */, - 741AFFAC18F4274036ABAA3F88D19E3F /* field_5x52.h */, - EB6BE9494194D9AFA7936F12BCFC765F /* field_5x52_asm_impl.h */, - 905566F790A691B5547B4DA117035B41 /* field_5x52_impl.h */, - 65FF0818C9929B5926B7C4B52206C07B /* field_5x52_int128_impl.h */, - FC91C532ED6C11F022DF771E33CCF947 /* field_impl.h */, - 020E2E2655B54E4F841EFF5C78EC9A50 /* group.h */, - 30FDD3AC62CA96BD7F7AD357B4EB8451 /* group_impl.h */, - 12F764DC64AB0A601139422E4BD7D8DD /* hash.h */, - F5992D1E9BB1CFB5DB408C53D463F901 /* hash_impl.h */, - 40B3F6A51D76E5023588B1808D0D2CFD /* lax_der_parsing.c */, - 9EE9B27E2555D7296BEDCA963C73D0A0 /* lax_der_parsing.h */, - 7682731E182645966244278D49D23597 /* lax_der_privatekey_parsing.c */, - 8BAEB0D6C133C644E7C75BDC3DFEE150 /* lax_der_privatekey_parsing.h */, - BD6F8739BCF0EEA387E3315930C8D92C /* main_impl.h */, - BFEFDD7E3AFC5D34452BDC80FF8C105D /* main_impl.h */, - 30C3E0C8C874047E39DA7BED51AE62C1 /* num.h */, - C26C01C972A085F70B205170897B5C1F /* num_gmp.h */, - 5ED50921647C799CF8C0C1155F2016C5 /* num_gmp_impl.h */, - 6724980A57CFBD848FEB46934DDE16B9 /* num_impl.h */, - 78706BFF9BA2453C423D8604D9618A5B /* scalar.h */, - 919B3E391BC4CAC48C5484D88BFB3C12 /* scalar_4x64.h */, - 91EF3F22D1C57CC47DFFB0F19A072617 /* scalar_4x64_impl.h */, - 615FADBB13443F5FE8D2A69E2721F74F /* scalar_8x32.h */, - 3E7141D086ADC08DD965A7B5ABF52284 /* scalar_8x32_impl.h */, - BEFFF5D6FD42ADB3C141C0953170EE12 /* scalar_impl.h */, - 6015211FA3890EB6038D375C31DBF42B /* scalar_low.h */, - 8A163B49CEC0FA9E5225D5F50AF09BE8 /* scalar_low_impl.h */, - C70E337CA4A128EB792DA9A9A442B8B7 /* scratch.h */, - 4D375E3576E6E64D65FCA593C3095043 /* scratch_impl.h */, - 929B427A2A41FDB092BEB627145B4B1A /* secp256k1.c */, - 9E5B0BCCE1FF2FC9B4512991A323D3A0 /* secp256k1.h */, - 6522FBD7759B8D45FB77AAFC73C73FBE /* secp256k1-config.h */, - 3350D8405F9EC2E1C0C2506FBAD2BFAF /* secp256k1_ec_mult_static_context.h */, - 97C43CF8036DEAB3C7EA5E3B522581B3 /* secp256k1_ecdh.h */, - 086636E244AE50BDFE486B4C589EBFB6 /* secp256k1_main.h */, - 90B639CFCF2B6A84C803968A7D2E5CDC /* secp256k1_recovery.h */, - 2B0ACBB63147F28D8DF0C775E0E6084E /* util.h */, - D565F5919D55DB73CF1871536F5F7CAF /* Support Files */, - ); - name = secp256k1.swift; - path = secp256k1.swift; - sourceTree = ""; - }; - 7A10CDA4343EE1E2504BDEA602158E4D /* Foundation */ = { - isa = PBXGroup; - children = ( - FCD66DE5118D187C8CC9C5E32D84D478 /* afterlife.swift */, - C4B6453889D747D11C945C03DD14A0CC /* NSNotificationCenter+AnyPromise.h */, - BC941BDD0B41F2770D00A17E35D6D072 /* NSNotificationCenter+AnyPromise.m */, - 880E471F7AF0F5C6BA2D139745A4F983 /* NSNotificationCenter+Promise.swift */, - 54A13D98AB9A9135E521EBECC24086EC /* NSObject+Promise.swift */, - 704122C7E5DF0CA9090C8883F02C9543 /* NSTask+AnyPromise.h */, - 365F7CFC9000B66178A957AB3210DEAB /* NSTask+AnyPromise.m */, - 63D22F09D9D257B12174CF0AB13BE616 /* NSURLSession+AnyPromise.h */, - 501F3EDFAF27DF3750AD513AFA1AEC20 /* NSURLSession+AnyPromise.m */, - 5F2233FCB68A0ADAD892CE83D30BA631 /* NSURLSession+Promise.swift */, - 18997BD10C1E8709FA7DBCEA1EAB809B /* PMKFoundation.h */, - 6809224EF5DB3DA7107CCEE105A38DF1 /* Process+Promise.swift */, - ); - name = Foundation; - sourceTree = ""; - }; - 7CE2C665B01CD26B38DE90F16DAC215C /* GenericJSON */ = { - isa = PBXGroup; - children = ( - C0F6B30756599BFEB2256002FB64351A /* Initialization.swift */, - 6BE6225CB6454F56671574E097552251 /* JSON.swift */, - 7B1A4648778048C7F084EF95A356B165 /* Merging.swift */, - 735664226F470311D3170C899448F12C /* Querying.swift */, - 29730A4FD4D933CCD7BB97999595A5AE /* Support Files */, - ); - name = GenericJSON; - path = GenericJSON; - sourceTree = ""; - }; - 851E1243BAF2312A558720BAF4973925 /* BestLogger */ = { - isa = PBXGroup; - children = ( - 02F383D8B351FE17F6337BE5F127D5B9 /* BestLogger.swift */, - 41C4DBC9BB2BA46A7EF1BF285F38C4BF /* Support Files */, - ); - name = BestLogger; - path = BestLogger; - sourceTree = ""; - }; - 8946B0F832E89612072DF73C8AF6A243 /* Products */ = { - isa = PBXGroup; - children = ( - 26A30E0DA2419B1831A942110E9826A2 /* BestLogger.framework */, - 91BB24BA472AF523E913108C9AA301F2 /* BigInt.framework */, - F81274EDB681F11E7CB05F7DCA2BB33C /* CryptoSwift.framework */, - 36B22267AF4D657854BDCBC896BAA6BE /* FetchNodeDetails.framework */, - F629CE6C9A9092A215DE9415EA54DF90 /* GenericJSON.framework */, - 8B075CA53091CACB97CA1EC16B1B8CAC /* Pods_TestApplication.framework */, - 97241BE1FCAA933EA8779E01EEA25CB6 /* Pods_TestApplication_TestApplicationTests.framework */, - 002B1E88BA14EBF633CD66EBFBA107E9 /* PromiseKit.framework */, - 40CCE1281164DE769303759678296832 /* secp256k1.framework */, - 3936ADAF803ACF9C9AF43E3304CF7768 /* TorusUtils.framework */, - B7864C0A7DE1F82775DDFFFD201B1B4D /* web3.framework */, - ); - name = Products; - sourceTree = ""; - }; - 9B923C862246264DC0E9107C1093647C /* CorePromise */ = { - isa = PBXGroup; - children = ( - CC893128B2A1C355A1CEE4BC672363CF /* after.m */, - C3C8F8C1CEC18CFA6F4EC55EBA7631EA /* after.swift */, - F7E3A198A1E88DCFDE46C420D913D0C9 /* AnyPromise.h */, - BBEA3551AC22C8ACECBBDF0D9138CED4 /* AnyPromise.m */, - 50FB84D33D8C77943EFB343EC9BB5291 /* AnyPromise.swift */, - 6D404CFFB40C6756B0A4F0188ACB287F /* Box.swift */, - D7C6DDD94A2A8C545C4D1B69BA43D722 /* Catchable.swift */, - B0BB649A97D99A1DCFCFF30E68B7819B /* Configuration.swift */, - 0E885E5AEEACFBC1327D43BC77F5F1D7 /* CustomStringConvertible.swift */, - EF051FD5538DECBB1E8F994587A6FFCA /* Deprecations.swift */, - 2AB273F8448B5EB518156BD5C29F482D /* dispatch_promise.m */, - B83A95CDF79941CA7AE303C151E4FC8E /* Error.swift */, - BC25B6B0582755B0574E7ECD963EE102 /* firstly.swift */, - 8C94FF4B4412E542AFB463045F959791 /* fwd.h */, - C8FD54D6408CA1C36C029400070E1548 /* Guarantee.swift */, - B94DF005B2AC340384AF4050E05684F2 /* hang.m */, - EB2C6BED3D74ECE2DFC06B298D4AB6B9 /* hang.swift */, - 3E70E5624B6AE48004C699DCD7992DF8 /* join.m */, - 8F18EEA5FD4BA8416D39F7C9E2135452 /* LogEvent.swift */, - 2AC12F89264B908BC0B7226C60E10565 /* Promise.swift */, - 6719018827B4A984DE567135029C81E3 /* PromiseKit.h */, - AA9121CAD3263CE38A10D823D79DCC1F /* race.m */, - 5C73E21633622C0E540FECA763090CF5 /* race.swift */, - A1D946844EC50D20CE303CF4FD09C94F /* Resolver.swift */, - DF8CF5611E134E636443143FA67AD49F /* Thenable.swift */, - 0CF60EDD4B72C01DAAC4CCCAD27B8FAE /* when.m */, - C90089CDFD2E5F46FFA6886F81E2AF9C /* when.swift */, - ); - name = CorePromise; - sourceTree = ""; - }; - A15D84FBC186D019445F1DEAE83631FF /* Pods-TestApplication */ = { - isa = PBXGroup; - children = ( - 588AE181250B323137C9868209035ECB /* Pods-TestApplication.modulemap */, - B99D9981AEBF8D8652D52D14D95114E4 /* Pods-TestApplication-acknowledgements.markdown */, - 4E3960E268984162FF5DDA0F17BCE57F /* Pods-TestApplication-acknowledgements.plist */, - 9480EC5419F2059D80BD085B2DBF2323 /* Pods-TestApplication-dummy.m */, - F39B9C1518AEEE1320C383DE7547FB56 /* Pods-TestApplication-Info.plist */, - 1F35ACAD54CA4C8BA1628EEC5C9C803A /* Pods-TestApplication-umbrella.h */, - B5359F2F46F8C6AC35F1007EE324CE53 /* Pods-TestApplication.debug.xcconfig */, - 421F491B9F8AB1BC9C6616B284D46A65 /* Pods-TestApplication.release.xcconfig */, - ); - name = "Pods-TestApplication"; - path = "Target Support Files/Pods-TestApplication"; - sourceTree = ""; - }; - A98526F4175932496BBE771029600413 /* Support Files */ = { - isa = PBXGroup; - children = ( - F0A5B275CA1172B8D72802F34ECD80F6 /* CryptoSwift.modulemap */, - F88BD841AAF2BBBCC87952AC71F275A1 /* CryptoSwift-dummy.m */, - E679688A3BEC8D48600FB76F2343B7CD /* CryptoSwift-Info.plist */, - B0220B7E25CEBA4F0EB907B6FE0DF819 /* CryptoSwift-prefix.pch */, - 811EAB2E5D2E6254D06555584B240E1F /* CryptoSwift-umbrella.h */, - 7075F86F3428159E453A281B2BFF68D5 /* CryptoSwift.debug.xcconfig */, - E9270088A5D23A1E147E74F83B5FE060 /* CryptoSwift.release.xcconfig */, - ); - name = "Support Files"; - path = "../Target Support Files/CryptoSwift"; - sourceTree = ""; - }; - B47BC079D5D92757F6A55E544D4B3900 /* Convenience */ = { - isa = PBXGroup; - children = ( - 77B4019CF0ED9D3E11EDF90BBFC3B7EA /* Array+Extension.swift */, - 1F112A5A7A909BB7ED65DFE688D4915B /* Base58.swift */, - AA7DA7B4EC3D51F14B2FC3CAD3AC27B4 /* BigUInt+Extensions.swift */, - 7D1494809DCCBB6CA502E31B8E609B47 /* CryptoExtensions.swift */, - 658933927BCB31DC8575FD0DDB8C9DA6 /* Data+Extension.swift */, - 17018F72CB0DCA9668F767142D567866 /* Decodable+Extensions.swift */, - 79E446965E5C279D7C6E50209DEB6C0D /* Dictionary+Extension.swift */, - 1F2C5CF530973B84C4D04399387E1230 /* Encodable+Extensions.swift */, - 3468D17C11FA2ACBF38C9AB7C8271DF1 /* NativeTypesEncoding+Extensions.swift */, - BE12BB56CC283AE61B661B59E78E2647 /* NSRegularExpressionExtension.swift */, - C80291FFE1DDADC08B9AA9FA72564B27 /* RIPEMD160+StackOveflow.swift */, - 6FE3873D103E2F80F6F264DA52800BBE /* SECP256k1.swift */, - 1194DC381BEE0B2440EE0B4A82A0F088 /* String+Extension.swift */, - ); - name = Convenience; - path = Sources/TorusUtils/Convenience; - sourceTree = ""; - }; - B6F7A27D20A03BC1ACF0EDB6F6B63EBD /* iOS */ = { - isa = PBXGroup; - children = ( - FC7E69F413E2E84A65EFD752DBA31DFE /* Foundation.framework */, - ); - name = iOS; - sourceTree = ""; - }; - BDBF2DAAA2905334B0AC8C5542A021B6 /* BigInt */ = { - isa = PBXGroup; - children = ( - BF7620A9128591CAA508544D83743F8C /* Addition.swift */, - 95B90D18205E4BBF8F7B5D530A24432C /* BigInt.swift */, - E030D06A52E5961BA9BDF05F6F355AB5 /* BigUInt.swift */, - 60FC8BADF090E2274D64444DBD790789 /* Bitwise Ops.swift */, - C4AF2BDFB2BB94A418B23C286BB2CC72 /* Codable.swift */, - 853287A42273DF97CDFFA168111378E2 /* Comparable.swift */, - 1A2CC1CFCF251052ADDD09D9A0E7A75D /* Data Conversion.swift */, - 12766F44109AF015CE13EE9778402D45 /* Division.swift */, - B51EAFE66F27F1263D4E0F9F8EB304F7 /* Exponentiation.swift */, - 6622D8EA696B15B45675A77EC4B13318 /* Floating Point Conversion.swift */, - AAECE43379277130C24025534B502DE7 /* GCD.swift */, - 4271AA592AC70AD55ED2F6D63EE2D786 /* Hashable.swift */, - C37402F645C4D792CBB9A8A6632F2BA3 /* Integer Conversion.swift */, - 0CA3952C11FD519FD43BF4F8AC3C6A12 /* Multiplication.swift */, - A2B9392690B460036C89A882BD7FDFEC /* Prime Test.swift */, - 94D080D97613C26E3745753411FD283A /* Random.swift */, - FD3B53A6F28E087C361B3BE376595D74 /* Shifts.swift */, - 296E4589882C9C8517E9E35C6499028B /* Square Root.swift */, - BA8AD0C185FB85574DB51265FA838E1F /* Strideable.swift */, - 4584418C470BA7BFBBA87FDAEF488CF0 /* String Conversion.swift */, - 244569551C654FAD088C5BF1804BB0CF /* Subtraction.swift */, - 2170B31DD562445C083A20DDD6258F0F /* Words and Bits.swift */, - 29581CC9D4B87B5BA79682F96551F68C /* Support Files */, - ); - name = BigInt; - path = BigInt; - sourceTree = ""; - }; - CC8274A70A59040DF96A45FB356292D3 /* PromiseKit */ = { - isa = PBXGroup; - children = ( - 9B923C862246264DC0E9107C1093647C /* CorePromise */, - 7A10CDA4343EE1E2504BDEA602158E4D /* Foundation */, - FEF27F763587F7195A2DFD8946F46616 /* Support Files */, - ); - name = PromiseKit; - path = PromiseKit; - sourceTree = ""; - }; - CF1408CF629C7361332E53B88F7BD30C = { - isa = PBXGroup; - children = ( - 9D940727FF8FB9C785EB98E56350EF41 /* Podfile */, - 1FABA197481097E71470C1F536DC3BA7 /* Development Pods */, - 0DCA1E558115E357DE238EE47D500914 /* Frameworks */, - 1BC71CB59160AAA7F149C155FF8A703D /* Pods */, - 8946B0F832E89612072DF73C8AF6A243 /* Products */, - 02C5ECEA382E41FB54FF5DA325E18878 /* Targets Support Files */, - ); - sourceTree = ""; - }; - D0C6D82F51084E52B38229C3207D8F97 /* Support Files */ = { - isa = PBXGroup; - children = ( - 985D4AB624C9F8A7F64BE249D0E772FB /* Torus-utils.modulemap */, - 1A1951365C824097FACFD2902FB031AE /* Torus-utils-dummy.m */, - 3AFBD54D0B9B32E5B0BC7015E336A38F /* Torus-utils-Info.plist */, - 27D0825E11B5A7D6E7E5C8D5DEF69575 /* Torus-utils-prefix.pch */, - 17AC71C0FFE887141BD08505911E4117 /* Torus-utils-umbrella.h */, - 8F5E54573E582FDB933E2CA84A63D966 /* Torus-utils.debug.xcconfig */, - BDACFE7A3583DFE041775104F44CB1D7 /* Torus-utils.release.xcconfig */, - ); - name = "Support Files"; - path = "cocoapods/Pods/Target Support Files/Torus-utils"; - sourceTree = ""; - }; - D565F5919D55DB73CF1871536F5F7CAF /* Support Files */ = { - isa = PBXGroup; - children = ( - 39EFB01F3AD1DCD8F4BE85639B6D66E3 /* secp256k1.swift.modulemap */, - CE41E408EF124D3FE8262B5AE33B4E8B /* secp256k1.swift-dummy.m */, - A4833F9362F06B5EFCD67F73EA471827 /* secp256k1.swift-Info.plist */, - 3CD61CB140A0F2B5CEE7F5E3A43BE3F6 /* secp256k1.swift-prefix.pch */, - 94FCF9C0056EB6714CADF0D24C3EB969 /* secp256k1.swift-umbrella.h */, - E0B2A8CCC7949A112D2FC5ED86D86B75 /* secp256k1.swift.debug.xcconfig */, - 73827FA0B1D3AD8E863A736BD4486D2E /* secp256k1.swift.release.xcconfig */, - ); - name = "Support Files"; - path = "../Target Support Files/secp256k1.swift"; - sourceTree = ""; - }; - F8F58CB14E464D5479BFDAB6F9B97210 /* Extensions */ = { - isa = PBXGroup; - children = ( - 513AB290C01FB6EFD3DD680D835DEFD4 /* TorusUtils+extension.swift */, - ); - name = Extensions; - path = Sources/TorusUtils/Extensions; - sourceTree = ""; - }; - FEF27F763587F7195A2DFD8946F46616 /* Support Files */ = { - isa = PBXGroup; - children = ( - ABA186C57DF0065E462243C5B4466E49 /* PromiseKit.modulemap */, - E9E85AD994CB2DBE3E90AB2A6A9BEAAC /* PromiseKit-dummy.m */, - B565E4BAD69368B55E47510ED575AB6E /* PromiseKit-Info.plist */, - C9EA4C845BC2CE81BD34D14A2D66F68D /* PromiseKit-prefix.pch */, - 480FC0755DD71E0AF4F1428BBCEA2CEA /* PromiseKit-umbrella.h */, - 91408665F11F5DDBBE848E547FBA8C55 /* PromiseKit.debug.xcconfig */, - D83447A47EB9DC91613935D6EC994427 /* PromiseKit.release.xcconfig */, - ); - name = "Support Files"; - path = "../Target Support Files/PromiseKit"; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXHeadersBuildPhase section */ - 161A02771B21A722138EE16CEDF4ECF9 /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - 7EECE9FCF5E07473E6D0FE80BFCB94C9 /* BigInt-umbrella.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 24FAA8DD89261DB3F20E1F7416E786AE /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - 40C7317AB067266482EADD86E9103520 /* CryptoSwift-umbrella.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 4385185E6F9B5F547730FB3A35F56925 /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - 0A55CF7797537DE18E74D21C7339912A /* Torus-fetchNodeDetails-umbrella.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 6E3CE8488D67F34233BB741F16779BC2 /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - A388FDA4B69D62161C5980C6180FC0F8 /* GenericJSON-umbrella.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 6FDC0B9393E312777F655387C9019C5D /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - 5DF9A23D4B7045437B036DFE203B0A55 /* Torus-utils-umbrella.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 72F8C9C1ED59B975BF2A8B99D40EF77D /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - EB9DB3EF58017616CDD3CAF7D8D30EB8 /* basic-config.h in Headers */, - F96CBE93334B41996889A31796F6FB1B /* ecdsa.h in Headers */, - 43731713E2AD81A524F9C58E636D61AA /* ecdsa_impl.h in Headers */, - E3722732874689BBCD403DE3425D019A /* eckey.h in Headers */, - 0C3498480FBAB4A244F26415FFE39CC9 /* eckey_impl.h in Headers */, - A3537A0BF9EEDA0136E8DF0E4808A071 /* ecmult.h in Headers */, - EC1DA3E38FB8FE590C02877C47DA1AB2 /* ecmult_const.h in Headers */, - 9EA77F1E8739F22A5B035FEFEBE8DC68 /* ecmult_const_impl.h in Headers */, - 1F58F56685F0596CC453CF34FE413AA7 /* ecmult_gen.h in Headers */, - 8145C49CA35BCE3FCF5A99ADB87A0C55 /* ecmult_gen_impl.h in Headers */, - 3BEC49289F8F9C071DAA32E1E19ED869 /* ecmult_impl.h in Headers */, - 38389ABA71B46B9D63E18AB6FC8FDA65 /* field.h in Headers */, - A90954DFB72A64488E4E18A49D730154 /* field_10x26.h in Headers */, - E78B30F45F367D6221E889513C69A923 /* field_10x26_impl.h in Headers */, - AE2372913A8C944C35E666F215C4C763 /* field_5x52.h in Headers */, - 50E21F0AA22CF942624EEFC504647E9A /* field_5x52_asm_impl.h in Headers */, - E60B581E6046898D5951A8370A302235 /* field_5x52_impl.h in Headers */, - 38988B4D837A37F94B883DC379160962 /* field_5x52_int128_impl.h in Headers */, - 51241D74B6A9008CA3BBEB9EFB0D2939 /* field_impl.h in Headers */, - E8A219E1EA94951707277DEA902D7F34 /* group.h in Headers */, - E0A113D3E7F839B9A694BDF8F14B2350 /* group_impl.h in Headers */, - 71584F3629CA1159CDA2B9847FF46CBB /* hash.h in Headers */, - F1BAEBBEEAF4F9F5398650430D78BC70 /* hash_impl.h in Headers */, - E2BC9DCDF4C1F49FF55C72890D5B41EB /* lax_der_parsing.h in Headers */, - C440CB19EAD2250736F779723F9E1613 /* lax_der_privatekey_parsing.h in Headers */, - 91A11E1C87AA34B7ABFC47EA6E38851A /* main_impl.h in Headers */, - 1734A997E72E05790CA8D79606D1DE6F /* main_impl.h in Headers */, - 89C6C643663DB9E4B6648144D1C574AE /* num.h in Headers */, - F062C462EE76BCA476DB152B78DC48C5 /* num_gmp.h in Headers */, - D9D7A0D0519B6A5E325DF969ED8529D9 /* num_gmp_impl.h in Headers */, - DD4696B76C51BBE9D65FCCAA83E01CE8 /* num_impl.h in Headers */, - 619E26CDCCB3C36C908D99A776D538E9 /* scalar.h in Headers */, - 2BCE099C58114F2C7D7441E008D0E7B5 /* scalar_4x64.h in Headers */, - 6E8B7017BA811FA1DCC7EFBA8638AA0D /* scalar_4x64_impl.h in Headers */, - 6FD6CF7DDC0B8EFBEF4CBF125251637D /* scalar_8x32.h in Headers */, - 8BF40F940F98EAA18B30C0D52431212F /* scalar_8x32_impl.h in Headers */, - 373E4BEDB620E740B526FA7CC075BE19 /* scalar_impl.h in Headers */, - 711F7DADE06C01CCE27255852937611E /* scalar_low.h in Headers */, - 440D09BA7AA00FAB201009CE1D795385 /* scalar_low_impl.h in Headers */, - 88066B6FE11C9F717E534CF2F51B3565 /* scratch.h in Headers */, - 036BBC2EC351A45C0BDF7F24634520D3 /* scratch_impl.h in Headers */, - D2C3FD9079EB324D58353216251588FD /* secp256k1-config.h in Headers */, - 2E25D2D2F52A4161B26175ECD8F1E95F /* secp256k1.h in Headers */, - 6D891F07EE9F46527782BAC319839540 /* secp256k1.swift-umbrella.h in Headers */, - 5F7CEE7E5E88D08C281E3B05B919504D /* secp256k1_ec_mult_static_context.h in Headers */, - 90EABD413727D87F031910B7240F9191 /* secp256k1_ecdh.h in Headers */, - F620A7251AF3245C3D70DC5FFA8E078F /* secp256k1_main.h in Headers */, - E642797D563A605F28C3593EF0419DCC /* secp256k1_recovery.h in Headers */, - 282B19F3169FF0AE8CF9A53FFD11C7EF /* util.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 77A21E1C7F5685DF8F0990D92456D311 /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - 611450D9423EB6D78CBEBCBC60FC3BE4 /* BestLogger-umbrella.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 84F3C4E9D029A8BF5E955EC9ED11E565 /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - CF76E3D297B0996581A9DF7CCD2DEACB /* Pods-TestApplication-TestApplicationTests-umbrella.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - A94F152749CB615933A893724F4FF5BF /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - 215A46C16E5DFBEEFD96EE38C482AFC6 /* aes.h in Headers */, - 5FC50257647CF6C9FB0461EBB2ED2D56 /* keccak-tiny.h in Headers */, - 3847F05E7A71417D95298774B70A28B6 /* web3.swift-umbrella.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - AD7EF43B24634994F759176F682B1773 /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - 1983E925E6308EC562F6A4C4C9623DAC /* AnyPromise.h in Headers */, - 4560E105548564BD1DD6167698AE3C09 /* fwd.h in Headers */, - CB6CDE318AA7AAD6458065A310825787 /* NSNotificationCenter+AnyPromise.h in Headers */, - 03C52B3143C56AC7686FF1997AAE20E5 /* NSTask+AnyPromise.h in Headers */, - 57C8F5B66DFDCBB06D07CF3EC015DC96 /* NSURLSession+AnyPromise.h in Headers */, - F467CBAA37786202C18C606F7A0B533B /* PMKFoundation.h in Headers */, - ED65BF60F7C7CE93B7906AEB054A2352 /* PromiseKit-umbrella.h in Headers */, - 439DD81E2EDA3BD90D9B83DAD6775DED /* PromiseKit.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - BB0757BB325BB326F761097FB942C218 /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - 14E3C356BDD349B09F7239AD9E8616EB /* Pods-TestApplication-umbrella.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXHeadersBuildPhase section */ - -/* Begin PBXNativeTarget section */ - 09DD83B7D075842A3A5105AD410BD38A /* BigInt */ = { - isa = PBXNativeTarget; - buildConfigurationList = 5104F4CC467A363177DF298548DA476E /* Build configuration list for PBXNativeTarget "BigInt" */; - buildPhases = ( - 161A02771B21A722138EE16CEDF4ECF9 /* Headers */, - AD425074D950826A1AA1323039964E21 /* Sources */, - 11311D70953AC99174A763E25F665920 /* Frameworks */, - 5C193E54B44DAEF03EE281A99BB02E30 /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = BigInt; - productName = BigInt; - productReference = 91BB24BA472AF523E913108C9AA301F2 /* BigInt.framework */; - productType = "com.apple.product-type.framework"; - }; - 1365165D183E4C35E57FE0E71450F0E2 /* BestLogger */ = { - isa = PBXNativeTarget; - buildConfigurationList = 47DD81E71F994C9108524A55AAEEB9EC /* Build configuration list for PBXNativeTarget "BestLogger" */; - buildPhases = ( - 77A21E1C7F5685DF8F0990D92456D311 /* Headers */, - 61B656CA6111EF7346F0709ED4C73963 /* Sources */, - AD14A83BF9B6A00656C3E87EB8D818A2 /* Frameworks */, - 360BB160359946F8E60C262EE8C7D98F /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = BestLogger; - productName = BestLogger; - productReference = 26A30E0DA2419B1831A942110E9826A2 /* BestLogger.framework */; - productType = "com.apple.product-type.framework"; - }; - 3744C58A953D980BCF08B0FEAE449C91 /* Torus-fetchNodeDetails */ = { - isa = PBXNativeTarget; - buildConfigurationList = 20366819AE1B4070467196EF91DF7B52 /* Build configuration list for PBXNativeTarget "Torus-fetchNodeDetails" */; - buildPhases = ( - 4385185E6F9B5F547730FB3A35F56925 /* Headers */, - 3ADC8B70ED8B2EE5F3280815C8368899 /* Sources */, - A27B6EB416189F1A72C5F7FFA17E12EB /* Frameworks */, - D076C62E29FCD491AE5EC7D3B91848DA /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - 1DA0D716C7F5F51D0CD315F3526EE22C /* PBXTargetDependency */, - A1CF84377F8ACEACF77EDDCF9122BC5C /* PBXTargetDependency */, - 9C690427A2F26612D36997D2443F58AD /* PBXTargetDependency */, - ); - name = "Torus-fetchNodeDetails"; - productName = "Torus-fetchNodeDetails"; - productReference = 36B22267AF4D657854BDCBC896BAA6BE /* FetchNodeDetails.framework */; - productType = "com.apple.product-type.framework"; - }; - 4FF1EE5493800BD023263DE462914B83 /* secp256k1.swift */ = { - isa = PBXNativeTarget; - buildConfigurationList = BADF5EEA56C878BC98B4B72B51A39372 /* Build configuration list for PBXNativeTarget "secp256k1.swift" */; - buildPhases = ( - 72F8C9C1ED59B975BF2A8B99D40EF77D /* Headers */, - F790C764142C386E531EEEDD443647F2 /* Sources */, - C5B1A79FDA52911F0949E45FAAF57749 /* Frameworks */, - FC6897835178B39C42AD09DEB2C67D9B /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = secp256k1.swift; - productName = secp256k1.swift; - productReference = 40CCE1281164DE769303759678296832 /* secp256k1.framework */; - productType = "com.apple.product-type.framework"; - }; - 50BD5410DB90F893AE68CE9925FD066E /* Torus-utils */ = { - isa = PBXNativeTarget; - buildConfigurationList = D1C04C6861085658CB751A9B96512E68 /* Build configuration list for PBXNativeTarget "Torus-utils" */; - buildPhases = ( - 6FDC0B9393E312777F655387C9019C5D /* Headers */, - F55C89EB50B316112E693640DECD541C /* Sources */, - 7C11A9D918EE667C4AC018541C242DC2 /* Frameworks */, - 7E66DB14F8A4D4E3F13E9538D01A0944 /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - 65B6AB6EE908929762F4E55E116291D3 /* PBXTargetDependency */, - 04C8F52E5B72E3E1390DED71C9447446 /* PBXTargetDependency */, - 3EA00245487C7919AA52BD9BF47804F4 /* PBXTargetDependency */, - 3CA8587CB1DB74BA91D0ECDD6E53EF30 /* PBXTargetDependency */, - 372509F57EC87CE28E80ED4A24B9449B /* PBXTargetDependency */, - ); - name = "Torus-utils"; - productName = "Torus-utils"; - productReference = 3936ADAF803ACF9C9AF43E3304CF7768 /* TorusUtils.framework */; - productType = "com.apple.product-type.framework"; - }; - 7C579CE66A1E7A9AA33CA5F97F9C22C5 /* PromiseKit */ = { - isa = PBXNativeTarget; - buildConfigurationList = 2784FE7E46E8CE6B3B487FD10BEB5874 /* Build configuration list for PBXNativeTarget "PromiseKit" */; - buildPhases = ( - AD7EF43B24634994F759176F682B1773 /* Headers */, - 51974A05D17A673B2F356BF571A69A29 /* Sources */, - 0627735B01D8E22FAAF74169437F36C6 /* Frameworks */, - 2FFFE3D8158974ADCC26C7679AD9D1F5 /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = PromiseKit; - productName = PromiseKit; - productReference = 002B1E88BA14EBF633CD66EBFBA107E9 /* PromiseKit.framework */; - productType = "com.apple.product-type.framework"; - }; - 7F18A768FDF4947B6325776051521D6D /* GenericJSON */ = { - isa = PBXNativeTarget; - buildConfigurationList = 96FB936E918053D74727FD99557CB19F /* Build configuration list for PBXNativeTarget "GenericJSON" */; - buildPhases = ( - 6E3CE8488D67F34233BB741F16779BC2 /* Headers */, - ADEB4BF9DC564CAAF0626A1526F41316 /* Sources */, - 367556A5B9AD32E0982D8200E08144F0 /* Frameworks */, - 17876BB0D377193CB1F6DC2CDB4C7F0D /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = GenericJSON; - productName = GenericJSON; - productReference = F629CE6C9A9092A215DE9415EA54DF90 /* GenericJSON.framework */; - productType = "com.apple.product-type.framework"; - }; - 847B6D40CFA89C55F0587E1F1625AB4F /* Pods-TestApplication */ = { - isa = PBXNativeTarget; - buildConfigurationList = 1D212BBD92B6E80DDA063F10EF381EFD /* Build configuration list for PBXNativeTarget "Pods-TestApplication" */; - buildPhases = ( - BB0757BB325BB326F761097FB942C218 /* Headers */, - 1A3ACEDB30FED9956828742B44F3F340 /* Sources */, - 20F6716357184C89E8EE70C3073BE0F0 /* Frameworks */, - 58B5305E3C732BE739B01DC0B05A3F06 /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - 46D46245A5A1B383120D8EB53ED34C91 /* PBXTargetDependency */, - E562A524A0CF0A7F12EFFDF4A08D8A36 /* PBXTargetDependency */, - 946131845C24AF01EE80CC7C8E760D1E /* PBXTargetDependency */, - 5667456617FEBAD86902C63B58260435 /* PBXTargetDependency */, - E5419772D6014CEE5041473F79C1EA0F /* PBXTargetDependency */, - A5F9FDEE9A13A834656C9F4DBAD58E6A /* PBXTargetDependency */, - 37FE872AC222C27F356EADD2DD007B8F /* PBXTargetDependency */, - 0A384488AC464F0227BCC2A25215874B /* PBXTargetDependency */, - DAD2150F951BD3B16541AE80B400CC20 /* PBXTargetDependency */, - ); - name = "Pods-TestApplication"; - productName = "Pods-TestApplication"; - productReference = 8B075CA53091CACB97CA1EC16B1B8CAC /* Pods_TestApplication.framework */; - productType = "com.apple.product-type.framework"; - }; - 99313990C1D76A6D1D017868B6975CC8 /* CryptoSwift */ = { - isa = PBXNativeTarget; - buildConfigurationList = 69177BA8D965BC2E440CD8A59700936B /* Build configuration list for PBXNativeTarget "CryptoSwift" */; - buildPhases = ( - 24FAA8DD89261DB3F20E1F7416E786AE /* Headers */, - 9A6246C351B3D2B4F7A82A2A33BC83C4 /* Sources */, - 7BFF1D1636F8C4926CC42353281EBCD5 /* Frameworks */, - E2149F66D0A66C94CBE6CA18617FB82D /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = CryptoSwift; - productName = CryptoSwift; - productReference = F81274EDB681F11E7CB05F7DCA2BB33C /* CryptoSwift.framework */; - productType = "com.apple.product-type.framework"; - }; - AF0283A04CCE8FC5D2315224AFC78ECB /* Pods-TestApplication-TestApplicationTests */ = { - isa = PBXNativeTarget; - buildConfigurationList = DE4B179F6360380D78123BDAEB66179B /* Build configuration list for PBXNativeTarget "Pods-TestApplication-TestApplicationTests" */; - buildPhases = ( - 84F3C4E9D029A8BF5E955EC9ED11E565 /* Headers */, - BA42E8C31D69F77B706B1FD7524D306D /* Sources */, - 37EC3A014924225FC82F091D1F0ACE22 /* Frameworks */, - A2F51BDE49F40A41A1A195696B9B716A /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - D575755D4447CF5738018A57F341C310 /* PBXTargetDependency */, - B027A61C2897DBB87DAC179C6705777E /* PBXTargetDependency */, - 4BDD5B694854DE51378756CB911B1143 /* PBXTargetDependency */, - AA8DE2938233D62A3A6D2607E87BE314 /* PBXTargetDependency */, - C11A670275FF9CBCE58346ADE50EE3E1 /* PBXTargetDependency */, - 6EA0296B4312220FFA535C6BAD592514 /* PBXTargetDependency */, - 8B57C6F65617062296F133612C3D349C /* PBXTargetDependency */, - 0A571513ABB7784812485166B9AF78BE /* PBXTargetDependency */, - DC4A593B57BF0229B1B03392331BA778 /* PBXTargetDependency */, - ); - name = "Pods-TestApplication-TestApplicationTests"; - productName = "Pods-TestApplication-TestApplicationTests"; - productReference = 97241BE1FCAA933EA8779E01EEA25CB6 /* Pods_TestApplication_TestApplicationTests.framework */; - productType = "com.apple.product-type.framework"; - }; - D93330767C6CBDF516265779A4B9C299 /* web3.swift */ = { - isa = PBXNativeTarget; - buildConfigurationList = 7FC7D36717CCA6308E8F9D13E9D16B8D /* Build configuration list for PBXNativeTarget "web3.swift" */; - buildPhases = ( - A94F152749CB615933A893724F4FF5BF /* Headers */, - 30FA27DE88F7DCC5D20AA1A4726B0D34 /* Sources */, - D0D0B2B0DD24157AB160271F119CCC9B /* Frameworks */, - 7E33411B75989BCC829A04085BF68A84 /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - 7B1B5ED830575E6B6A2F8B63E54AB488 /* PBXTargetDependency */, - 103E23A40F912A2D82378195884B2D10 /* PBXTargetDependency */, - 4BCD1360A67CF867960982F0AC2F850B /* PBXTargetDependency */, - ); - name = web3.swift; - productName = web3.swift; - productReference = B7864C0A7DE1F82775DDFFFD201B1B4D /* web3.framework */; - productType = "com.apple.product-type.framework"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - BFDFE7DC352907FC980B868725387E98 /* Project object */ = { - isa = PBXProject; - attributes = { - LastSwiftUpdateCheck = 1100; - LastUpgradeCheck = 1100; - }; - buildConfigurationList = 4821239608C13582E20E6DA73FD5F1F9 /* Build configuration list for PBXProject "Pods" */; - compatibilityVersion = "Xcode 10.0"; - developmentRegion = en; - hasScannedForEncodings = 0; - knownRegions = ( - en, - Base, - ); - mainGroup = CF1408CF629C7361332E53B88F7BD30C; - productRefGroup = 8946B0F832E89612072DF73C8AF6A243 /* Products */; - projectDirPath = ""; - projectRoot = ""; - targets = ( - 1365165D183E4C35E57FE0E71450F0E2 /* BestLogger */, - 09DD83B7D075842A3A5105AD410BD38A /* BigInt */, - 99313990C1D76A6D1D017868B6975CC8 /* CryptoSwift */, - 7F18A768FDF4947B6325776051521D6D /* GenericJSON */, - 847B6D40CFA89C55F0587E1F1625AB4F /* Pods-TestApplication */, - AF0283A04CCE8FC5D2315224AFC78ECB /* Pods-TestApplication-TestApplicationTests */, - 7C579CE66A1E7A9AA33CA5F97F9C22C5 /* PromiseKit */, - 4FF1EE5493800BD023263DE462914B83 /* secp256k1.swift */, - 3744C58A953D980BCF08B0FEAE449C91 /* Torus-fetchNodeDetails */, - 50BD5410DB90F893AE68CE9925FD066E /* Torus-utils */, - D93330767C6CBDF516265779A4B9C299 /* web3.swift */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXResourcesBuildPhase section */ - 17876BB0D377193CB1F6DC2CDB4C7F0D /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 2FFFE3D8158974ADCC26C7679AD9D1F5 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 360BB160359946F8E60C262EE8C7D98F /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 58B5305E3C732BE739B01DC0B05A3F06 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 5C193E54B44DAEF03EE281A99BB02E30 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 7E33411B75989BCC829A04085BF68A84 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 7E66DB14F8A4D4E3F13E9538D01A0944 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - A2F51BDE49F40A41A1A195696B9B716A /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - D076C62E29FCD491AE5EC7D3B91848DA /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - E2149F66D0A66C94CBE6CA18617FB82D /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - FC6897835178B39C42AD09DEB2C67D9B /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXResourcesBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - 1A3ACEDB30FED9956828742B44F3F340 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - B63EE4EAB445C635F00B609985FA192E /* Pods-TestApplication-dummy.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 30FA27DE88F7DCC5D20AA1A4726B0D34 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 1E9EB83465BEDA02EC2AFB0A44615943 /* ABIDecoder+Static.swift in Sources */, - 20578BF0FAF32907B0C30C02A7126A5D /* ABIDecoder.swift in Sources */, - 659563D9902EB35CC2F452B3169320F5 /* ABIEncoder+Static.swift in Sources */, - 4765E6E1189C9A9A45DABFFB51475507 /* ABIEncoder.swift in Sources */, - C4A7224A219E0B1367D9B63B42CAFBFD /* ABIEvent.swift in Sources */, - 3FBDB6A5D6187B0DE160430842701539 /* ABIFunction.swift in Sources */, - 4212FA90B5582FC6D0D70FBC76409298 /* ABIFunctionEncoder.swift in Sources */, - 9FA61FB16C6D506091E47511D3ED3EC3 /* ABIRawType+JSON.swift in Sources */, - C3F9898CED558AA22503CDE7D1D6E3E6 /* ABIRawType+Static.swift in Sources */, - D040BB1F2A079E0A386DD7430D7BE500 /* ABIRawType.swift in Sources */, - 6C91CE1A9EAD935953C862AA01252B1F /* ABITuple.swift in Sources */, - 7A95B19EF8667BB6885CAB268B599ABB /* aes.c in Sources */, - 70025704C650165B9E49CCAA89287488 /* AesUtil.swift in Sources */, - 3EC038C4518CAB305CD874C44F084E4D /* ByteExtensions.swift in Sources */, - 38D927FEC10093DB6A4F6E330237E544 /* Data+Random.swift in Sources */, - BF1E13CA09A14498F682ED50CF7CE36D /* ENSContracts.swift in Sources */, - 28CBB9F6AB9CB25F81145E7729533416 /* ENSMultiResolver.swift in Sources */, - F86E40919AEA8ECAC98E54F65852ED8C /* ENSResponses.swift in Sources */, - B52AA98C7F96F4FFF6A03BB7E37A45EE /* ERC165.swift in Sources */, - AD3ADED2C7A356C48E090AB15B5791CF /* ERC20.swift in Sources */, - B5D2120553126FAD0CF14DBA77C57757 /* ERC20Events.swift in Sources */, - 1D48CF70EC724C97038761680D2C95AF /* ERC20Functions.swift in Sources */, - 69D7AA0BF494140F716D638A028B18E9 /* ERC20Responses.swift in Sources */, - 36EC4F2319ECCABD09DF923CB2433E4F /* ERC721.swift in Sources */, - CE94B77F92A93F3F68DB20AF5450581C /* ERC721Events.swift in Sources */, - 54C983A99664C3E5F18ACB7A51063EC3 /* ERC721Functions.swift in Sources */, - 3F0DCB81028C22B0B2E490F9E0227A32 /* ERC721Responses.swift in Sources */, - BC833904B48AB770E7152E060872FB04 /* EthereumAccount+SignTransaction.swift in Sources */, - 9250E2CA6532715FB44355DB435A8E41 /* EthereumAccount.swift in Sources */, - 0B274F516A67A0A0FE60AB22CF00DD1C /* EthereumAddress.swift in Sources */, - E82495B73C69BB82857EA6385809124D /* EthereumBlock.swift in Sources */, - A348AC80E688080DAF4D4E53E914635A /* EthereumBlockInfo.swift in Sources */, - BFA9B66AADC5D0968C1455A0C294F2CD /* EthereumClient+Static.swift in Sources */, - 56962E55CBEAB06A5A76A2C24CB4A1BB /* EthereumClient.swift in Sources */, - FB047EBB6933512478EC05C3AD983423 /* EthereumKeyStorage.swift in Sources */, - 13440B87A16A3A8EE7A7DDBDB282CD34 /* EthereumLog.swift in Sources */, - DAE8EDB9D21E460953216646F12A2574 /* EthereumNameService.swift in Sources */, - DF0D601BDFFD7CC0858A26A071C42A5F /* EthereumNetwork.swift in Sources */, - 3414125061419CC2955A14DA04B3EBE8 /* EthereumTransaction.swift in Sources */, - 25B926D32A9D0A3A70BE274F3EB756E1 /* EthereumTransactionReceipt.swift in Sources */, - 5FD5456D6D7848229F4D703DF3043744 /* Extensions.swift in Sources */, - 680EEC439CBC1CE07935EAF98B827B41 /* HexExtensions.swift in Sources */, - 930066A4A0897157ADD1F68ACAA03C26 /* HexUtil.swift in Sources */, - 129C9C093A35C90FB3089C3E5F093D6E /* JSONRPC.swift in Sources */, - D1F7E0C0020B441D5D28225421323A99 /* keccak-tiny.c in Sources */, - F5D4ACAC7F17C5124B8AEA17EE690EC8 /* KeccakExtensions.swift in Sources */, - C3DAA89D71AFFB9199C8B3792E195AE5 /* KeyDerivation.swift in Sources */, - C97B6559C68CDFA1815B21868A2C4FA4 /* KeystoreUtil.swift in Sources */, - 191DED6E67B79D0BB7C671980C15A68A /* KeyUtil.swift in Sources */, - 6F377530480B0D4A9EB4B7C0AE39EB40 /* Multicall.swift in Sources */, - 7A38D008736C3A493C41F02060F49B76 /* MulticallContract.swift in Sources */, - D45AEA0417E7C178F5A7A5B09B932B23 /* RecursiveLogCollector.swift in Sources */, - 74CFE6D4AD2B232D6D0E1F5F67BE42DA /* RLP.swift in Sources */, - 7B9BE1B91DA5293155B6D89171DC9CA8 /* String+Numeric.swift in Sources */, - BFE07B2163299AA613828BFD12E1DD30 /* TypedData.swift in Sources */, - DC59AEFA9BD4DC19BECC59F52A7E4903 /* web3.swift-dummy.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 3ADC8B70ED8B2EE5F3280815C8368899 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 0903F05BD43FB2E9AC392870F20F969E /* abi.json in Sources */, - D4E126CF3E55186DF8CD2D290C2E3EA1 /* abi.swift in Sources */, - 3C8E7E2C111B104576D259218BE727C3 /* allNodeDetails.swift in Sources */, - F73DD4C29235A28DC347A680FF5BE4A1 /* epochInfo.swift in Sources */, - 6327E3F7473B8EAEF127D6F523520167 /* ethereumNetwork.swift in Sources */, - 834CD9C366761EB93A388586921A99FF /* fetchNodeDetails+promise.swift in Sources */, - E8B3D8F1EF4C24881AC43D752840C782 /* fetchNodeDetails.swift in Sources */, - A5E9EF7703A91BC02825E074EEE9B073 /* nodeDetails.swift in Sources */, - 247C5F817B64F0A0756A425D12C9382F /* NodeListContract.swift in Sources */, - A7DBA8BAD821AE34BAA91D3BCFD395B5 /* String.swift in Sources */, - 92C9F58DC8D6679585C327524FFB113C /* Torus-fetchNodeDetails-dummy.m in Sources */, - CBA03B40B0121AF0860C099FB1055E88 /* torusNodePub.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 51974A05D17A673B2F356BF571A69A29 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - F6E1A005B24D3074F42E9338BB5F657B /* after.m in Sources */, - 839BC168E7632A2D9B19CF7152A9800C /* after.swift in Sources */, - 9BA1AD0AD7986535806976E7DD937797 /* afterlife.swift in Sources */, - 590D7E5F271EEB55A73F35F03A304A21 /* AnyPromise.m in Sources */, - 6200212FE506EE2AFA416A92FEAC3FE7 /* AnyPromise.swift in Sources */, - 3A91797F3507F57F48C1382CDBBB763D /* Box.swift in Sources */, - 8C26CE61F140552EBBDBBBDD57FCEF51 /* Catchable.swift in Sources */, - A523401DEFF98A31C5EA134D790C49B3 /* Configuration.swift in Sources */, - 6D80BF21C3FF0C29514142F1658F0FAE /* CustomStringConvertible.swift in Sources */, - 73EBE9A97699C85946EE53450A8084F8 /* Deprecations.swift in Sources */, - F53E5CF590A98D2D1DC018AAE121C9D4 /* dispatch_promise.m in Sources */, - 8B777214C4B99B729D4C0B702BF74D3A /* Error.swift in Sources */, - 3D0DA6DDD5E97C430C2B60ADA3C1C41D /* firstly.swift in Sources */, - 6090645471BF81CD036A42F9D9F4D622 /* Guarantee.swift in Sources */, - 3B233359DC56B3BFF843D8B13086D936 /* hang.m in Sources */, - BF4CFED16A01A443719C6A8AF12A1C66 /* hang.swift in Sources */, - 87E94A1679CE829C192A153716A10671 /* join.m in Sources */, - ED90D5F734B38ABB9C1C2988FD080D3B /* LogEvent.swift in Sources */, - F7F9EBF06192E6822ECC8DB05845561D /* NSNotificationCenter+AnyPromise.m in Sources */, - 16ADD1234E3CDDBC6D6D7B5C07B74BA7 /* NSNotificationCenter+Promise.swift in Sources */, - 6E0E7F750ECF358400C70C45A6F05FBC /* NSObject+Promise.swift in Sources */, - 89D080534ECA704573D2054947D42A7D /* NSTask+AnyPromise.m in Sources */, - A65208A5DE3D8A8F9803BF5CEE283243 /* NSURLSession+AnyPromise.m in Sources */, - D715D21943781AD4748F78D16C4274D3 /* NSURLSession+Promise.swift in Sources */, - A91A6DB1FA0CB11EC5E75C28353750AE /* Process+Promise.swift in Sources */, - DF229FD3411FEAF824277A8DAAC10952 /* Promise.swift in Sources */, - F8D373653E0C6B391F00FF841B852AFB /* PromiseKit-dummy.m in Sources */, - F8875970C85593CF5B7F835969188D56 /* race.m in Sources */, - 86C453ADE644FB9F9152248CE001666E /* race.swift in Sources */, - 451C30CBE6197C1F042FFEA5C89CF037 /* Resolver.swift in Sources */, - F247F979594173ADDCC0CCDC8D19F238 /* Thenable.swift in Sources */, - E76B7E1EBD06E27FBF0B8ED35AC9BE9B /* when.m in Sources */, - 687CD10C93F3E25966A91DE43F59402C /* when.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 61B656CA6111EF7346F0709ED4C73963 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - DBF232C5CC6FB8EDF32D69E0FF8A50BD /* BestLogger-dummy.m in Sources */, - FE0D3AEBDA7E74DCB8F81D86A89127B4 /* BestLogger.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 9A6246C351B3D2B4F7A82A2A33BC83C4 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 42AC21CBC10FBAA5D1F4052F1C1844D3 /* AEAD.swift in Sources */, - D9EC9F9D1CD3C150A8B4CDE6EC13053B /* AEADChaCha20Poly1305.swift in Sources */, - B84DD3D850DC526C180B85AB8085848E /* AES+Foundation.swift in Sources */, - 2D7AD7985E4D58086EF30A8E61A971DD /* AES.Cryptors.swift in Sources */, - 252DE76C85184A1E94ADED9F7C9ECD28 /* AES.swift in Sources */, - 7744550E93E9C5539458DD596AAF3588 /* Array+Extension.swift in Sources */, - 56CCB527EE2295657A8CDE856D88D7CC /* Array+Foundation.swift in Sources */, - 66084292CB9E91E8F90A1F62B788057E /* Authenticator.swift in Sources */, - 85C6907C9074A39986480244B05D9048 /* BatchedCollection.swift in Sources */, - 2ABD0B1EBEAA45896FBCBE41CB41D07D /* Bit.swift in Sources */, - FF4A7A417417DD3910A58A726E8442EA /* BlockCipher.swift in Sources */, - 133E3A2FC85C01A90EDCB77E4AA0D36B /* BlockDecryptor.swift in Sources */, - C80CFC41AB0D8C865EFB0107805B4063 /* BlockEncryptor.swift in Sources */, - 2A3F377071670B8A1E350056A5FB9269 /* BlockMode.swift in Sources */, - D6C6B941F5A8732E6E2D5C5DAD6F3CBD /* BlockModeOptions.swift in Sources */, - 7F3F9C47BD625CD3F2AD18B909973E04 /* Blowfish+Foundation.swift in Sources */, - 01039AFF7C506A85D46B9C8199A84124 /* Blowfish.swift in Sources */, - 017A621F27B7CDFE2B969558D374C8F3 /* CBC.swift in Sources */, - 4D4BFCA91BCB0CFD7F9D66E10EA01C3A /* CBCMAC.swift in Sources */, - 7429C276361E16E48BF59044AF27A028 /* CCM.swift in Sources */, - 6D03F395E21C63DF45A539A76A09B6F0 /* CFB.swift in Sources */, - 85F2B33BD5A52DB4D0AA52CD12D12167 /* ChaCha20+Foundation.swift in Sources */, - 1D0630A8A27DCAA15FE63E726FF3A6D0 /* ChaCha20.swift in Sources */, - 48261232D5511B897F9C9D438D7866CB /* Checksum.swift in Sources */, - 7047308CD74FCCD896CDF4B75484280B /* Cipher.swift in Sources */, - A39CDB9564FF499A726A124D54F288F0 /* CipherModeWorker.swift in Sources */, - 2811A8C5D0E5FB828FDDB53A589443D7 /* CMAC.swift in Sources */, - 796B95070EC9558D5E41E9EF7532BBA4 /* Collection+Extension.swift in Sources */, - 67400968A08C0F3E29D77DB95D5C80A8 /* CompactMap.swift in Sources */, - E332D1A462D6291A366BAFC5C4F4A738 /* Cryptor.swift in Sources */, - 3D8694431D0863BF8C2547D76C75432C /* Cryptors.swift in Sources */, - 0A316EE1C5FE173C8CE8C41DCD12558E /* CryptoSwift-dummy.m in Sources */, - 5EB4A8027C7C41C305B2373AC33BB6A1 /* CTR.swift in Sources */, - 70A76CA5133B694BA7F4221C1BF351A9 /* Data+Extension.swift in Sources */, - 0D7A70AF5A61D3F7507C37FD8BC2133D /* Digest.swift in Sources */, - 2167B1BF2790239A29DA9C88B3053452 /* DigestType.swift in Sources */, - D8A78CBD2EE8B5DE3645654085445B94 /* ECB.swift in Sources */, - A24347122645BA45628664A7150167EC /* GCM.swift in Sources */, - 18CF0A924F2F701685FC736E185C4DB0 /* Generics.swift in Sources */, - 5A3C959B46922E64F469EAA790385BDE /* HKDF.swift in Sources */, - 1E120275BC8D3B5A9BD313338E95A644 /* HMAC+Foundation.swift in Sources */, - 0D24860ECDD34C95BB6D15C4DAC82EF7 /* HMAC.swift in Sources */, - 03DEB78A7F45CCAB0D41E000D3D3D1F8 /* Int+Extension.swift in Sources */, - E39835938BABEC4BBE3C1C8016F5E1FB /* ISO10126Padding.swift in Sources */, - FCFE2FD4018717BBE9B36642559EA558 /* ISO78164Padding.swift in Sources */, - 171D5BE7660D69567CB5C7751CC58949 /* MD5.swift in Sources */, - A7D81AB5559FBF946A48825BCDDE8BCD /* NoPadding.swift in Sources */, - 2DC8D1BF773B1D0BFF796474DEB21A08 /* OCB.swift in Sources */, - 83EFCE89EFC023D35E82886D2E22DFC2 /* OFB.swift in Sources */, - B16EAB7D16914A5AB8DD6537096CA1C8 /* Operators.swift in Sources */, - 27C430B131DF6F7F239A3B6A62AA31F5 /* Padding.swift in Sources */, - CE67039F46FFA8530312AE1369E3410A /* PBKDF1.swift in Sources */, - 162A1368C72AA5B05A7DE7BC4215DC25 /* PBKDF2.swift in Sources */, - 0EAAB0D93349F7E7F41CF35CE8750422 /* PCBC.swift in Sources */, - 61962601852B03EE4ECA70CAFFD5C9C9 /* PKCS5.swift in Sources */, - 4B108A020552603ADAAAB2B687C4C276 /* PKCS7.swift in Sources */, - 0942026922B8B3717A509AE7ABAAD6C9 /* PKCS7Padding.swift in Sources */, - 5E033F7B93284FCC5D5344DA5A3D3252 /* Poly1305.swift in Sources */, - A6DF340F03B399DB1F02D5F75ADDE68E /* Rabbit+Foundation.swift in Sources */, - C58FAE6BAFB4B5977473EE7C6152D1F2 /* Rabbit.swift in Sources */, - 4E38490279CBA1C9BB87FD4D5C97E8C2 /* Scrypt.swift in Sources */, - 74E29584304FA048D1854662FD2C57A3 /* SecureBytes.swift in Sources */, - 883E03D5F63E4A5F9AC708633424896B /* SHA1.swift in Sources */, - 6B0A431CBE9613E7DEA2BFEE592DC602 /* SHA2.swift in Sources */, - 1BB9D5E7E19599CEBDE4754D05FD4A0C /* SHA3.swift in Sources */, - 958D884F07F2EF5A01763A4321F7706C /* StreamDecryptor.swift in Sources */, - 03A6C8B5712C52F098BB7D6864833657 /* StreamEncryptor.swift in Sources */, - F183C3591CE63C56EC75D429E079F2C8 /* String+Extension.swift in Sources */, - 8B0847B6C4AE3201E4BD3F16467D3651 /* String+FoundationExtension.swift in Sources */, - 196263FA3D93598348A60E7CB452DF2A /* UInt128.swift in Sources */, - 111905A8DF9F83FE3CEADA193AE439D8 /* UInt16+Extension.swift in Sources */, - 1FDA31E1656B19BE0275AA46AFB77713 /* UInt32+Extension.swift in Sources */, - AA7DF5E39E92D10C2365507B721890C5 /* UInt64+Extension.swift in Sources */, - 04C6E8384534DB0AAD235B3CA7667E76 /* UInt8+Extension.swift in Sources */, - E8A71945E0D647B185ACA6E7A8DCD353 /* Updatable.swift in Sources */, - 832410C57E709819C0AB90704B227D15 /* Utils+Foundation.swift in Sources */, - 20D6320DE2CEB25BAC00AF4550FB86F7 /* Utils.swift in Sources */, - CF9A1A2EC5F7514F80E89F5B21A90FA0 /* ZeroPadding.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - AD425074D950826A1AA1323039964E21 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 6002AD14210CBE9C34EB848031CFD7E6 /* Addition.swift in Sources */, - FFF7E224F5F3094210837EC8C7FE4960 /* BigInt-dummy.m in Sources */, - 5E2574B7162EED00A81237F56CDC0BE4 /* BigInt.swift in Sources */, - AC7DBF3AD44B3E7644068E6F09F9EBF2 /* BigUInt.swift in Sources */, - 04C4B5D00750E2E4DFD4C4C7CC47283A /* Bitwise Ops.swift in Sources */, - DBE9A6D9CB82D8605F4C25B9426B1557 /* Codable.swift in Sources */, - 16F71F20D31B7EEC6A60DB14135AB7A9 /* Comparable.swift in Sources */, - 39137B0D7B8FB5BF554BDE012BD85061 /* Data Conversion.swift in Sources */, - 3B9A2601095A9A72843D76CA44B37782 /* Division.swift in Sources */, - 0DF63A4C8FA0E53FB630F5B5429FF066 /* Exponentiation.swift in Sources */, - 2228B8549F0F5445D1B2D346E12A20CD /* Floating Point Conversion.swift in Sources */, - F13925E2206A7647AC326ECFA6ED2856 /* GCD.swift in Sources */, - 4A8B21596204A43258F4EC69A7AEC66E /* Hashable.swift in Sources */, - E0B84D75D0F7E7EA2E905C05774CC361 /* Integer Conversion.swift in Sources */, - D48A4410A7C8CE6B6A0787A0F4999DE5 /* Multiplication.swift in Sources */, - E93CF504980B3D653BB4530E7F98E9F6 /* Prime Test.swift in Sources */, - AC4E061C6A2D21210122B471D8BCC81E /* Random.swift in Sources */, - BE29AFA73FEDAFA471F35F8AB1C3EA99 /* Shifts.swift in Sources */, - 4362503059C68DFCDCB8621F4FD9E325 /* Square Root.swift in Sources */, - 99F35D362CDAA3F01D59E05FAB02907D /* Strideable.swift in Sources */, - E8ABBB87CFEBE721FC2D14B71A719BC2 /* String Conversion.swift in Sources */, - BAA052C302D45F8DAB72606E997CAD69 /* Subtraction.swift in Sources */, - 8599E23B2946C6F3F6DA3D63EC82C4A3 /* Words and Bits.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - ADEB4BF9DC564CAAF0626A1526F41316 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - E6A12ABF215E8E669D5EA34AD1C45982 /* GenericJSON-dummy.m in Sources */, - A86323DBBCC6F8D2CE33D8CC842D3914 /* Initialization.swift in Sources */, - 63C7030226E5447CF45FB89AC396BAEE /* JSON.swift in Sources */, - AACE9BF8828258FB9005920DD763A5D2 /* Merging.swift in Sources */, - 5E9B57DD15CD387784511C06798F069A /* Querying.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - BA42E8C31D69F77B706B1FD7524D306D /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 96CA755FC38BF83CAD18DF075332B351 /* Pods-TestApplication-TestApplicationTests-dummy.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - F55C89EB50B316112E693640DECD541C /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 5BD19233A11E60C2AE9089B354292534 /* AbstractTorusUtils.swift in Sources */, - AD4211DDE9CA6B31F727DDDB9A780C19 /* Array+Extension.swift in Sources */, - 22638D112878C799EA2A2D75D2B53FF6 /* Base58.swift in Sources */, - D95896401FF5E7F2BBFCD52D04D21A83 /* BigUInt+Extensions.swift in Sources */, - E26CD2D802212FB1C5846139BF2DAE18 /* CryptoExtensions.swift in Sources */, - 14827F6D8052EC82A63FB924346E318C /* Data+Extension.swift in Sources */, - 324E0088874131EBEEAA9C9D4ED0B4BC /* Decodable+Extensions.swift in Sources */, - B5E1DB7A4D9547DBDEE0A66050A4ECAA /* Dictionary+Extension.swift in Sources */, - E665DAA88F57178FFA8819BC4E88995A /* Encodable+Extensions.swift in Sources */, - 8252E005129B3142BADB46BCCFE94C7F /* Error.swift in Sources */, - 77733BE94B2273D0FD91AD5902FF399B /* JSONRPCRequest.swift in Sources */, - 2FB92AEFB1A745AC097C3F028E3B8703 /* KeyAssignRequestResponse.swift in Sources */, - F95D62F49B9E9BD40852B563742586BC /* NativeTypesEncoding+Extensions.swift in Sources */, - 85448A725FB5CA7ED4A57E4B5E1AEE17 /* NSRegularExpressionExtension.swift in Sources */, - 9249FA13BD9FB1D1B64124033450A3CE /* RIPEMD160+StackOveflow.swift in Sources */, - 122A5A84827F5BFE66FE48B44DE4BBD8 /* SECP256k1.swift in Sources */, - 1228CC95DF09DE1236397A3213EC3E83 /* String+Extension.swift in Sources */, - 79FD9B3E01769F3863DD3CCAD6A490C0 /* Torus-utils-dummy.m in Sources */, - 01D4275BFE81067C13521EB485FF8E43 /* TorusUtils+extension.swift in Sources */, - CB11C5BC6E27394D8A93CD42B788AEFB /* TorusUtils.swift in Sources */, - 64DD83A6F6EAA23D3B2AAB0491580078 /* Web3ERROR.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - F790C764142C386E531EEEDD443647F2 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ABF9D3029DDA1D3BF80E7CCC938FA423 /* lax_der_parsing.c in Sources */, - 17687E0F74C3541D41B6593C8A488002 /* lax_der_privatekey_parsing.c in Sources */, - A0D66E0AB4008821F396A7358341A790 /* secp256k1.c in Sources */, - 09B0AC1CCF8620F45AA85CB0D3F21AA2 /* secp256k1.swift-dummy.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin PBXTargetDependency section */ - 04C8F52E5B72E3E1390DED71C9447446 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = CryptoSwift; - target = 99313990C1D76A6D1D017868B6975CC8 /* CryptoSwift */; - targetProxy = C186EBC2180876831BC1B8235D13F661 /* PBXContainerItemProxy */; - }; - 0A384488AC464F0227BCC2A25215874B /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = secp256k1.swift; - target = 4FF1EE5493800BD023263DE462914B83 /* secp256k1.swift */; - targetProxy = 897976F5BE74C0BEB68F6B5DFA07836D /* PBXContainerItemProxy */; - }; - 0A571513ABB7784812485166B9AF78BE /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = secp256k1.swift; - target = 4FF1EE5493800BD023263DE462914B83 /* secp256k1.swift */; - targetProxy = 82241E47649BB7E61D3D066EA0578941 /* PBXContainerItemProxy */; - }; - 103E23A40F912A2D82378195884B2D10 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = GenericJSON; - target = 7F18A768FDF4947B6325776051521D6D /* GenericJSON */; - targetProxy = 936EE5C130945A7DE028EB5559605441 /* PBXContainerItemProxy */; - }; - 1DA0D716C7F5F51D0CD315F3526EE22C /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = BestLogger; - target = 1365165D183E4C35E57FE0E71450F0E2 /* BestLogger */; - targetProxy = A5B1343F88A2C8586221C6A7555C9787 /* PBXContainerItemProxy */; - }; - 372509F57EC87CE28E80ED4A24B9449B /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = secp256k1.swift; - target = 4FF1EE5493800BD023263DE462914B83 /* secp256k1.swift */; - targetProxy = C72049CFC060FC515A6D5EBE25B7D24D /* PBXContainerItemProxy */; - }; - 37FE872AC222C27F356EADD2DD007B8F /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = "Torus-utils"; - target = 50BD5410DB90F893AE68CE9925FD066E /* Torus-utils */; - targetProxy = EB0FBA9CFE902673A4F195B0964C1DD4 /* PBXContainerItemProxy */; - }; - 3CA8587CB1DB74BA91D0ECDD6E53EF30 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = "Torus-fetchNodeDetails"; - target = 3744C58A953D980BCF08B0FEAE449C91 /* Torus-fetchNodeDetails */; - targetProxy = 5F3198F9C954CF8E1047A417B2B65E35 /* PBXContainerItemProxy */; - }; - 3EA00245487C7919AA52BD9BF47804F4 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = PromiseKit; - target = 7C579CE66A1E7A9AA33CA5F97F9C22C5 /* PromiseKit */; - targetProxy = 15A2DC5773CCDED63B521DB4F2947BC9 /* PBXContainerItemProxy */; - }; - 46D46245A5A1B383120D8EB53ED34C91 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = BestLogger; - target = 1365165D183E4C35E57FE0E71450F0E2 /* BestLogger */; - targetProxy = 68154585206B6BCA5C512A03080A264E /* PBXContainerItemProxy */; - }; - 4BCD1360A67CF867960982F0AC2F850B /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = secp256k1.swift; - target = 4FF1EE5493800BD023263DE462914B83 /* secp256k1.swift */; - targetProxy = 416CB356B55F1C7A0637DFB098497EB6 /* PBXContainerItemProxy */; - }; - 4BDD5B694854DE51378756CB911B1143 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = CryptoSwift; - target = 99313990C1D76A6D1D017868B6975CC8 /* CryptoSwift */; - targetProxy = CD000446E8926E6E2D8ED1A66AF437E6 /* PBXContainerItemProxy */; - }; - 5667456617FEBAD86902C63B58260435 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = GenericJSON; - target = 7F18A768FDF4947B6325776051521D6D /* GenericJSON */; - targetProxy = 90A75D433C7027336E240834BAF8612A /* PBXContainerItemProxy */; - }; - 65B6AB6EE908929762F4E55E116291D3 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = BestLogger; - target = 1365165D183E4C35E57FE0E71450F0E2 /* BestLogger */; - targetProxy = 3BE18238C9086576A3E8AAC637F78FA8 /* PBXContainerItemProxy */; - }; - 6EA0296B4312220FFA535C6BAD592514 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = "Torus-fetchNodeDetails"; - target = 3744C58A953D980BCF08B0FEAE449C91 /* Torus-fetchNodeDetails */; - targetProxy = 88792E2313B2662E7B4EF765A770D451 /* PBXContainerItemProxy */; - }; - 7B1B5ED830575E6B6A2F8B63E54AB488 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = BigInt; - target = 09DD83B7D075842A3A5105AD410BD38A /* BigInt */; - targetProxy = 65768C76E385DE336D035606849952BF /* PBXContainerItemProxy */; - }; - 8B57C6F65617062296F133612C3D349C /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = "Torus-utils"; - target = 50BD5410DB90F893AE68CE9925FD066E /* Torus-utils */; - targetProxy = 38F07B50B699413D877EEF492B2A1C71 /* PBXContainerItemProxy */; - }; - 946131845C24AF01EE80CC7C8E760D1E /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = CryptoSwift; - target = 99313990C1D76A6D1D017868B6975CC8 /* CryptoSwift */; - targetProxy = 92E29CC4E92F47FF8F5F3B2BC38E51FA /* PBXContainerItemProxy */; - }; - 9C690427A2F26612D36997D2443F58AD /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = web3.swift; - target = D93330767C6CBDF516265779A4B9C299 /* web3.swift */; - targetProxy = 09BB928C46A93931EA0811BD1BE915AB /* PBXContainerItemProxy */; - }; - A1CF84377F8ACEACF77EDDCF9122BC5C /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = PromiseKit; - target = 7C579CE66A1E7A9AA33CA5F97F9C22C5 /* PromiseKit */; - targetProxy = B52708789A193C866BA8E887DD24D54C /* PBXContainerItemProxy */; - }; - A5F9FDEE9A13A834656C9F4DBAD58E6A /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = "Torus-fetchNodeDetails"; - target = 3744C58A953D980BCF08B0FEAE449C91 /* Torus-fetchNodeDetails */; - targetProxy = 0F3B2138BBE3A0CC95DC7760FAB078F3 /* PBXContainerItemProxy */; - }; - AA8DE2938233D62A3A6D2607E87BE314 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = GenericJSON; - target = 7F18A768FDF4947B6325776051521D6D /* GenericJSON */; - targetProxy = 5C0D90ACA3E33B78C1D6F82B88636E24 /* PBXContainerItemProxy */; - }; - B027A61C2897DBB87DAC179C6705777E /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = BigInt; - target = 09DD83B7D075842A3A5105AD410BD38A /* BigInt */; - targetProxy = 02ADBDC285C01C790B1F84C6800E2D15 /* PBXContainerItemProxy */; - }; - C11A670275FF9CBCE58346ADE50EE3E1 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = PromiseKit; - target = 7C579CE66A1E7A9AA33CA5F97F9C22C5 /* PromiseKit */; - targetProxy = FDA0B04EDC7EBEFB079AB405EA5C8522 /* PBXContainerItemProxy */; - }; - D575755D4447CF5738018A57F341C310 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = BestLogger; - target = 1365165D183E4C35E57FE0E71450F0E2 /* BestLogger */; - targetProxy = 7493120FAC27B898FD7BF521BE330AD3 /* PBXContainerItemProxy */; - }; - DAD2150F951BD3B16541AE80B400CC20 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = web3.swift; - target = D93330767C6CBDF516265779A4B9C299 /* web3.swift */; - targetProxy = 8F3D5B41697186FC71A6CB76FFA0EB8E /* PBXContainerItemProxy */; - }; - DC4A593B57BF0229B1B03392331BA778 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = web3.swift; - target = D93330767C6CBDF516265779A4B9C299 /* web3.swift */; - targetProxy = 7AA751022E5D40139B5EF7F069B27859 /* PBXContainerItemProxy */; - }; - E5419772D6014CEE5041473F79C1EA0F /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = PromiseKit; - target = 7C579CE66A1E7A9AA33CA5F97F9C22C5 /* PromiseKit */; - targetProxy = 8306C4533B00960C7C12A58C3404694A /* PBXContainerItemProxy */; - }; - E562A524A0CF0A7F12EFFDF4A08D8A36 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = BigInt; - target = 09DD83B7D075842A3A5105AD410BD38A /* BigInt */; - targetProxy = 19FFC6F4CBBBBDA95AA04EFF98E14563 /* PBXContainerItemProxy */; - }; -/* End PBXTargetDependency section */ - -/* Begin XCBuildConfiguration section */ - 07D40DC39273DD8472FCBE7FF8AE3176 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 73827FA0B1D3AD8E863A736BD4486D2E /* secp256k1.swift.release.xcconfig */; - buildSettings = { - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_PREFIX_HEADER = "Target Support Files/secp256k1.swift/secp256k1.swift-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/secp256k1.swift/secp256k1.swift-Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - MODULEMAP_FILE = "Target Support Files/secp256k1.swift/secp256k1.swift.modulemap"; - PRODUCT_MODULE_NAME = secp256k1; - PRODUCT_NAME = secp256k1; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Release; - }; - 0EFC5A57358E87EEA10274E7F681573C /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = E9270088A5D23A1E147E74F83B5FE060 /* CryptoSwift.release.xcconfig */; - buildSettings = { - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_PREFIX_HEADER = "Target Support Files/CryptoSwift/CryptoSwift-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/CryptoSwift/CryptoSwift-Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - MODULEMAP_FILE = "Target Support Files/CryptoSwift/CryptoSwift.modulemap"; - PRODUCT_MODULE_NAME = CryptoSwift; - PRODUCT_NAME = CryptoSwift; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 5.3; - TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Release; - }; - 3438F5EA935CC1BC986F8B699F68329D /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = A3ABFE3667AA01A217809D9BE0B80D1F /* Pods-TestApplication-TestApplicationTests.debug.xcconfig */; - buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; - CLANG_ENABLE_OBJC_WEAK = NO; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = "Target Support Files/Pods-TestApplication-TestApplicationTests/Pods-TestApplication-TestApplicationTests-Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - MACH_O_TYPE = staticlib; - MODULEMAP_FILE = "Target Support Files/Pods-TestApplication-TestApplicationTests/Pods-TestApplication-TestApplicationTests.modulemap"; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PODS_ROOT = "$(SRCROOT)"; - PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; - PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; - 35C2F793C02750734967630F3B95272B /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 9FA54E8E4D7DFF2A8548161D0E744A16 /* web3.swift.release.xcconfig */; - buildSettings = { - CLANG_ENABLE_OBJC_WEAK = NO; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_PREFIX_HEADER = "Target Support Files/web3.swift/web3.swift-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/web3.swift/web3.swift-Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - MODULEMAP_FILE = "Target Support Files/web3.swift/web3.swift.modulemap"; - PRODUCT_MODULE_NAME = web3; - PRODUCT_NAME = web3; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Release; - }; - 379A38D54224CE5CCCB650DD6D490308 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = FF04D3A6B1A00EEC32D8C2D98D1F6444 /* BestLogger.release.xcconfig */; - buildSettings = { - CLANG_ENABLE_OBJC_WEAK = NO; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_PREFIX_HEADER = "Target Support Files/BestLogger/BestLogger-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/BestLogger/BestLogger-Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 10.0; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - MODULEMAP_FILE = "Target Support Files/BestLogger/BestLogger.modulemap"; - PRODUCT_MODULE_NAME = BestLogger; - PRODUCT_NAME = BestLogger; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Release; - }; - 37DF8208956F36EBDF0808C00F2A449A /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 498F0D13322EB59CE7A2B26E805E760B /* BestLogger.debug.xcconfig */; - buildSettings = { - CLANG_ENABLE_OBJC_WEAK = NO; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_PREFIX_HEADER = "Target Support Files/BestLogger/BestLogger-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/BestLogger/BestLogger-Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 10.0; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - MODULEMAP_FILE = "Target Support Files/BestLogger/BestLogger.modulemap"; - PRODUCT_MODULE_NAME = BestLogger; - PRODUCT_NAME = BestLogger; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; - 395C89A75587B5B43F4300EE8EE2A584 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 7F673FD14D4ABF76640791855FBB0BB6 /* Pods-TestApplication-TestApplicationTests.release.xcconfig */; - buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; - CLANG_ENABLE_OBJC_WEAK = NO; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = "Target Support Files/Pods-TestApplication-TestApplicationTests/Pods-TestApplication-TestApplicationTests-Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - MACH_O_TYPE = staticlib; - MODULEMAP_FILE = "Target Support Files/Pods-TestApplication-TestApplicationTests/Pods-TestApplication-TestApplicationTests.modulemap"; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PODS_ROOT = "$(SRCROOT)"; - PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; - PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Release; - }; - 3BE0CA2BAB19A000867078C53C867438 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = D49541832200CE09F57E3391936FC65D /* BigInt.release.xcconfig */; - buildSettings = { - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_PREFIX_HEADER = "Target Support Files/BigInt/BigInt-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/BigInt/BigInt-Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - MODULEMAP_FILE = "Target Support Files/BigInt/BigInt.modulemap"; - PRODUCT_MODULE_NAME = BigInt; - PRODUCT_NAME = BigInt; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Release; - }; - 483224625C0C0114A34500869DBD8D6C /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 399721B8AC54458E4268EEBC19853764 /* Torus-fetchNodeDetails.debug.xcconfig */; - buildSettings = { - CLANG_ENABLE_OBJC_WEAK = NO; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_PREFIX_HEADER = "Target Support Files/Torus-fetchNodeDetails/Torus-fetchNodeDetails-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/Torus-fetchNodeDetails/Torus-fetchNodeDetails-Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - MODULEMAP_FILE = "Target Support Files/Torus-fetchNodeDetails/Torus-fetchNodeDetails.modulemap"; - PRODUCT_MODULE_NAME = FetchNodeDetails; - PRODUCT_NAME = FetchNodeDetails; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; - 57C239758A1C51A6952D04A4E52ECDC2 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = AABA2BCA10DB0489781C0BA4883729C1 /* BigInt.debug.xcconfig */; - buildSettings = { - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_PREFIX_HEADER = "Target Support Files/BigInt/BigInt-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/BigInt/BigInt-Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - MODULEMAP_FILE = "Target Support Files/BigInt/BigInt.modulemap"; - PRODUCT_MODULE_NAME = BigInt; - PRODUCT_NAME = BigInt; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; - 5ABF175CAA1513994542D195F1CA3EFC /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 421F491B9F8AB1BC9C6616B284D46A65 /* Pods-TestApplication.release.xcconfig */; - buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; - CLANG_ENABLE_OBJC_WEAK = NO; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = "Target Support Files/Pods-TestApplication/Pods-TestApplication-Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - MACH_O_TYPE = staticlib; - MODULEMAP_FILE = "Target Support Files/Pods-TestApplication/Pods-TestApplication.modulemap"; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PODS_ROOT = "$(SRCROOT)"; - PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; - PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Release; - }; - 5D4D812940A4A2A9924936577CBD6498 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = BDACFE7A3583DFE041775104F44CB1D7 /* Torus-utils.release.xcconfig */; - buildSettings = { - CLANG_ENABLE_OBJC_WEAK = NO; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_PREFIX_HEADER = "Target Support Files/Torus-utils/Torus-utils-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/Torus-utils/Torus-utils-Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - MODULEMAP_FILE = "Target Support Files/Torus-utils/Torus-utils.modulemap"; - PRODUCT_MODULE_NAME = TorusUtils; - PRODUCT_NAME = TorusUtils; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Release; - }; - 5EC694D3FA49ACD91A56EA84C41F76EB /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = B19CB2ADB2C8F8D3344E2769ECE3DCBE /* Torus-fetchNodeDetails.release.xcconfig */; - buildSettings = { - CLANG_ENABLE_OBJC_WEAK = NO; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_PREFIX_HEADER = "Target Support Files/Torus-fetchNodeDetails/Torus-fetchNodeDetails-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/Torus-fetchNodeDetails/Torus-fetchNodeDetails-Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - MODULEMAP_FILE = "Target Support Files/Torus-fetchNodeDetails/Torus-fetchNodeDetails.modulemap"; - PRODUCT_MODULE_NAME = FetchNodeDetails; - PRODUCT_NAME = FetchNodeDetails; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Release; - }; - 6555722EE092E0953F5C499F3D2035D9 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 8F5E54573E582FDB933E2CA84A63D966 /* Torus-utils.debug.xcconfig */; - buildSettings = { - CLANG_ENABLE_OBJC_WEAK = NO; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_PREFIX_HEADER = "Target Support Files/Torus-utils/Torus-utils-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/Torus-utils/Torus-utils-Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - MODULEMAP_FILE = "Target Support Files/Torus-utils/Torus-utils.modulemap"; - PRODUCT_MODULE_NAME = TorusUtils; - PRODUCT_NAME = TorusUtils; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; - 686575CE80238E828166F4F8566A97FE /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = E0B2A8CCC7949A112D2FC5ED86D86B75 /* secp256k1.swift.debug.xcconfig */; - buildSettings = { - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_PREFIX_HEADER = "Target Support Files/secp256k1.swift/secp256k1.swift-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/secp256k1.swift/secp256k1.swift-Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - MODULEMAP_FILE = "Target Support Files/secp256k1.swift/secp256k1.swift.modulemap"; - PRODUCT_MODULE_NAME = secp256k1; - PRODUCT_NAME = secp256k1; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; - 86C689162ED1E6D68C264B168E667E46 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 9D58A212C56633522402D90E876B70C0 /* web3.swift.debug.xcconfig */; - buildSettings = { - CLANG_ENABLE_OBJC_WEAK = NO; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_PREFIX_HEADER = "Target Support Files/web3.swift/web3.swift-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/web3.swift/web3.swift-Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - MODULEMAP_FILE = "Target Support Files/web3.swift/web3.swift.modulemap"; - PRODUCT_MODULE_NAME = web3; - PRODUCT_NAME = web3; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; - 903A0004D3E6651EFD5D2E16214D101B /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = arm64; - GCC_C_LANGUAGE_STANDARD = gnu11; - GCC_NO_COMMON_BLOCKS = YES; - GCC_PREPROCESSOR_DEFINITIONS = ( - "POD_CONFIGURATION_RELEASE=1", - "$(inherited)", - ); - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; - MTL_ENABLE_DEBUG_INFO = NO; - MTL_FAST_MATH = YES; - PRODUCT_NAME = "$(TARGET_NAME)"; - STRIP_INSTALLED_PRODUCT = NO; - SWIFT_COMPILATION_MODE = wholemodule; - SWIFT_OPTIMIZATION_LEVEL = "-O"; - SWIFT_VERSION = 5.0; - SYMROOT = "${SRCROOT}/../build"; - }; - name = Release; - }; - 92619810731C0E352777172F7F933C9A /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 7075F86F3428159E453A281B2BFF68D5 /* CryptoSwift.debug.xcconfig */; - buildSettings = { - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_PREFIX_HEADER = "Target Support Files/CryptoSwift/CryptoSwift-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/CryptoSwift/CryptoSwift-Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - MODULEMAP_FILE = "Target Support Files/CryptoSwift/CryptoSwift.modulemap"; - PRODUCT_MODULE_NAME = CryptoSwift; - PRODUCT_NAME = CryptoSwift; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 5.3; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; - 9477661192AC696CAAEE097A292322E1 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 91408665F11F5DDBBE848E547FBA8C55 /* PromiseKit.debug.xcconfig */; - buildSettings = { - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_PREFIX_HEADER = "Target Support Files/PromiseKit/PromiseKit-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/PromiseKit/PromiseKit-Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - MODULEMAP_FILE = "Target Support Files/PromiseKit/PromiseKit.modulemap"; - PRODUCT_MODULE_NAME = PromiseKit; - PRODUCT_NAME = PromiseKit; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 5.4; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; - 9A199710217CA66F60E7D5BC65C27D55 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = D83447A47EB9DC91613935D6EC994427 /* PromiseKit.release.xcconfig */; - buildSettings = { - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_PREFIX_HEADER = "Target Support Files/PromiseKit/PromiseKit-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/PromiseKit/PromiseKit-Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - MODULEMAP_FILE = "Target Support Files/PromiseKit/PromiseKit.modulemap"; - PRODUCT_MODULE_NAME = PromiseKit; - PRODUCT_NAME = PromiseKit; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 5.4; - TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Release; - }; - 9F968BD3A7C83D856F139FC44246CAC9 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = B5359F2F46F8C6AC35F1007EE324CE53 /* Pods-TestApplication.debug.xcconfig */; - buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; - CLANG_ENABLE_OBJC_WEAK = NO; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = "Target Support Files/Pods-TestApplication/Pods-TestApplication-Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - MACH_O_TYPE = staticlib; - MODULEMAP_FILE = "Target Support Files/Pods-TestApplication/Pods-TestApplication.modulemap"; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PODS_ROOT = "$(SRCROOT)"; - PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; - PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; - A51AB3F6BCF1D274462C5A9A0A75EA8F /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 4149DFD7C82A8AE682E718D3485E38F1 /* GenericJSON.debug.xcconfig */; - buildSettings = { - CLANG_ENABLE_OBJC_WEAK = NO; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_PREFIX_HEADER = "Target Support Files/GenericJSON/GenericJSON-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/GenericJSON/GenericJSON-Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 10.0; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - MODULEMAP_FILE = "Target Support Files/GenericJSON/GenericJSON.modulemap"; - PRODUCT_MODULE_NAME = GenericJSON; - PRODUCT_NAME = GenericJSON; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 4.1; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; - B4EFE046ACF8F37157F6E322C7FCFC28 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = dwarf; - ENABLE_STRICT_OBJC_MSGSEND = YES; - ENABLE_TESTABILITY = YES; - "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = arm64; - GCC_C_LANGUAGE_STANDARD = gnu11; - GCC_DYNAMIC_NO_PIC = NO; - GCC_NO_COMMON_BLOCKS = YES; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "POD_CONFIGURATION_DEBUG=1", - "DEBUG=1", - "$(inherited)", - ); - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; - MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; - MTL_FAST_MATH = YES; - ONLY_ACTIVE_ARCH = YES; - PRODUCT_NAME = "$(TARGET_NAME)"; - STRIP_INSTALLED_PRODUCT = NO; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 5.0; - SYMROOT = "${SRCROOT}/../build"; - }; - name = Debug; - }; - D956EC2C12C0C645CE6D38B25A8283BF /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 31D69897ADC12A0DCABDC5D85828E53C /* GenericJSON.release.xcconfig */; - buildSettings = { - CLANG_ENABLE_OBJC_WEAK = NO; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_PREFIX_HEADER = "Target Support Files/GenericJSON/GenericJSON-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/GenericJSON/GenericJSON-Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 10.0; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - MODULEMAP_FILE = "Target Support Files/GenericJSON/GenericJSON.modulemap"; - PRODUCT_MODULE_NAME = GenericJSON; - PRODUCT_NAME = GenericJSON; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 4.1; - TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - 1D212BBD92B6E80DDA063F10EF381EFD /* Build configuration list for PBXNativeTarget "Pods-TestApplication" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 9F968BD3A7C83D856F139FC44246CAC9 /* Debug */, - 5ABF175CAA1513994542D195F1CA3EFC /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 20366819AE1B4070467196EF91DF7B52 /* Build configuration list for PBXNativeTarget "Torus-fetchNodeDetails" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 483224625C0C0114A34500869DBD8D6C /* Debug */, - 5EC694D3FA49ACD91A56EA84C41F76EB /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 2784FE7E46E8CE6B3B487FD10BEB5874 /* Build configuration list for PBXNativeTarget "PromiseKit" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 9477661192AC696CAAEE097A292322E1 /* Debug */, - 9A199710217CA66F60E7D5BC65C27D55 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 47DD81E71F994C9108524A55AAEEB9EC /* Build configuration list for PBXNativeTarget "BestLogger" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 37DF8208956F36EBDF0808C00F2A449A /* Debug */, - 379A38D54224CE5CCCB650DD6D490308 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 4821239608C13582E20E6DA73FD5F1F9 /* Build configuration list for PBXProject "Pods" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - B4EFE046ACF8F37157F6E322C7FCFC28 /* Debug */, - 903A0004D3E6651EFD5D2E16214D101B /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 5104F4CC467A363177DF298548DA476E /* Build configuration list for PBXNativeTarget "BigInt" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 57C239758A1C51A6952D04A4E52ECDC2 /* Debug */, - 3BE0CA2BAB19A000867078C53C867438 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 69177BA8D965BC2E440CD8A59700936B /* Build configuration list for PBXNativeTarget "CryptoSwift" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 92619810731C0E352777172F7F933C9A /* Debug */, - 0EFC5A57358E87EEA10274E7F681573C /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 7FC7D36717CCA6308E8F9D13E9D16B8D /* Build configuration list for PBXNativeTarget "web3.swift" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 86C689162ED1E6D68C264B168E667E46 /* Debug */, - 35C2F793C02750734967630F3B95272B /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 96FB936E918053D74727FD99557CB19F /* Build configuration list for PBXNativeTarget "GenericJSON" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - A51AB3F6BCF1D274462C5A9A0A75EA8F /* Debug */, - D956EC2C12C0C645CE6D38B25A8283BF /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - BADF5EEA56C878BC98B4B72B51A39372 /* Build configuration list for PBXNativeTarget "secp256k1.swift" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 686575CE80238E828166F4F8566A97FE /* Debug */, - 07D40DC39273DD8472FCBE7FF8AE3176 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - D1C04C6861085658CB751A9B96512E68 /* Build configuration list for PBXNativeTarget "Torus-utils" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 6555722EE092E0953F5C499F3D2035D9 /* Debug */, - 5D4D812940A4A2A9924936577CBD6498 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - DE4B179F6360380D78123BDAEB66179B /* Build configuration list for PBXNativeTarget "Pods-TestApplication-TestApplicationTests" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 3438F5EA935CC1BC986F8B699F68329D /* Debug */, - 395C89A75587B5B43F4300EE8EE2A584 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - }; - rootObject = BFDFE7DC352907FC980B868725387E98 /* Project object */; -} diff --git a/cocoapods/Pods/PromiseKit/Extensions/Foundation/Sources/NSNotificationCenter+AnyPromise.h b/cocoapods/Pods/PromiseKit/Extensions/Foundation/Sources/NSNotificationCenter+AnyPromise.h deleted file mode 100644 index 351a93b9..00000000 --- a/cocoapods/Pods/PromiseKit/Extensions/Foundation/Sources/NSNotificationCenter+AnyPromise.h +++ /dev/null @@ -1,44 +0,0 @@ -#import -#import - - -/** - To import the `NSNotificationCenter` category: - - use_frameworks! - pod "PromiseKit/Foundation" - - Or `NSNotificationCenter` is one of the categories imported by the umbrella pod: - - use_frameworks! - pod "PromiseKit" - - And then in your sources: - - #import -*/ -@interface NSNotificationCenter (PromiseKit) -/** - Observe the named notification once. - - [NSNotificationCenter once:UIKeyboardWillShowNotification].then(^(id note, id userInfo){ - UIViewAnimationCurve curve = [userInfo[UIKeyboardAnimationCurveUserInfoKey] integerValue]; - CGFloat duration = [userInfo[UIKeyboardAnimationDurationUserInfoKey] floatValue]; - - return [UIView promiseWithDuration:duration delay:0.0 options:(curve << 16) animations:^{ - - }]; - }); - - @warning *Important* Promises only resolve once. If you need your block to execute more than once then use `-addObserverForName:object:queue:usingBlock:`. - - @param notificationName The name of the notification for which to register the observer. - - @return A promise that fulfills with two parameters: - - 1. The NSNotification object. - 2. The NSNotification’s userInfo property. -*/ -+ (AnyPromise *)once:(NSString *)notificationName NS_REFINED_FOR_SWIFT; - -@end diff --git a/cocoapods/Pods/PromiseKit/Extensions/Foundation/Sources/NSNotificationCenter+AnyPromise.m b/cocoapods/Pods/PromiseKit/Extensions/Foundation/Sources/NSNotificationCenter+AnyPromise.m deleted file mode 100644 index f8aee710..00000000 --- a/cocoapods/Pods/PromiseKit/Extensions/Foundation/Sources/NSNotificationCenter+AnyPromise.m +++ /dev/null @@ -1,18 +0,0 @@ -#import -#import -#import "PMKFoundation.h" - -@implementation NSNotificationCenter (PromiseKit) - -+ (AnyPromise *)once:(NSString *)name { - return [AnyPromise promiseWithResolverBlock:^(PMKResolver resolve) { - __block id identifier; - identifier = [[NSNotificationCenter defaultCenter] addObserverForName:name object:nil queue:[NSOperationQueue mainQueue] usingBlock:^(NSNotification *note) { - [[NSNotificationCenter defaultCenter] removeObserver:identifier name:name object:nil]; - identifier = nil; - resolve(PMKManifold(note, note.userInfo)); - }]; - }]; -} - -@end diff --git a/cocoapods/Pods/PromiseKit/Extensions/Foundation/Sources/NSNotificationCenter+Promise.swift b/cocoapods/Pods/PromiseKit/Extensions/Foundation/Sources/NSNotificationCenter+Promise.swift deleted file mode 100644 index 3b7f8434..00000000 --- a/cocoapods/Pods/PromiseKit/Extensions/Foundation/Sources/NSNotificationCenter+Promise.swift +++ /dev/null @@ -1,33 +0,0 @@ -import Foundation -#if !PMKCocoaPods -import PromiseKit -#endif - -/** - To import the `NSNotificationCenter` category: - - use_frameworks! - pod "PromiseKit/Foundation" - - Or `NSNotificationCenter` is one of the categories imported by the umbrella pod: - - use_frameworks! - pod "PromiseKit" - - And then in your sources: - - import PromiseKit -*/ -extension NotificationCenter { - /// Observe the named notification once - public func observe(once name: Notification.Name, object: Any? = nil) -> Guarantee { - let (promise, fulfill) = Guarantee.pending() - #if os(Linux) && ((swift(>=4.0) && !swift(>=4.0.1)) || (swift(>=3.0) && !swift(>=3.2.1))) - let id = addObserver(forName: name, object: object, queue: nil, usingBlock: fulfill) - #else - let id = addObserver(forName: name, object: object, queue: nil, using: fulfill) - #endif - promise.done { _ in self.removeObserver(id) } - return promise - } -} diff --git a/cocoapods/Pods/PromiseKit/Extensions/Foundation/Sources/NSObject+Promise.swift b/cocoapods/Pods/PromiseKit/Extensions/Foundation/Sources/NSObject+Promise.swift deleted file mode 100644 index 135719bf..00000000 --- a/cocoapods/Pods/PromiseKit/Extensions/Foundation/Sources/NSObject+Promise.swift +++ /dev/null @@ -1,57 +0,0 @@ -import Foundation -#if !PMKCocoaPods -import PromiseKit -#endif - -/** - To import the `NSObject` category: - - use_frameworks! - pod "PromiseKit/Foundation" - - Or `NSObject` is one of the categories imported by the umbrella pod: - - use_frameworks! - pod "PromiseKit" - - And then in your sources: - - import PromiseKit -*/ -extension NSObject { - /** - - Returns: A promise that resolves when the provided keyPath changes. - - Warning: *Important* The promise must not outlive the object under observation. - - SeeAlso: Apple’s KVO documentation. - */ - public func observe(_: PMKNamespacer, keyPath: String) -> Guarantee { - return Guarantee { KVOProxy(observee: self, keyPath: keyPath, resolve: $0) } - } -} - -private class KVOProxy: NSObject { - var retainCycle: KVOProxy? - let fulfill: (Any?) -> Void - - @discardableResult - init(observee: NSObject, keyPath: String, resolve: @escaping (Any?) -> Void) { - fulfill = resolve - super.init() - observee.addObserver(self, forKeyPath: keyPath, options: NSKeyValueObservingOptions.new, context: pointer) - retainCycle = self - } - - fileprivate override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) { - if let change = change, context == pointer { - defer { retainCycle = nil } - fulfill(change[NSKeyValueChangeKey.newKey]) - if let object = object as? NSObject, let keyPath = keyPath { - object.removeObserver(self, forKeyPath: keyPath) - } - } - } - - private lazy var pointer: UnsafeMutableRawPointer = { - return Unmanaged.passUnretained(self).toOpaque() - }() -} diff --git a/cocoapods/Pods/PromiseKit/Extensions/Foundation/Sources/NSTask+AnyPromise.h b/cocoapods/Pods/PromiseKit/Extensions/Foundation/Sources/NSTask+AnyPromise.h deleted file mode 100644 index 60368977..00000000 --- a/cocoapods/Pods/PromiseKit/Extensions/Foundation/Sources/NSTask+AnyPromise.h +++ /dev/null @@ -1,53 +0,0 @@ -#if TARGET_OS_MAC && !TARGET_OS_EMBEDDED && !TARGET_OS_SIMULATOR && !TARGET_OS_UIKITFORMAC - -#import -#import - -#define PMKTaskErrorLaunchPathKey @"PMKTaskErrorLaunchPathKey" -#define PMKTaskErrorArgumentsKey @"PMKTaskErrorArgumentsKey" -#define PMKTaskErrorStandardOutputKey @"PMKTaskErrorStandardOutputKey" -#define PMKTaskErrorStandardErrorKey @"PMKTaskErrorStandardErrorKey" -#define PMKTaskErrorExitStatusKey @"PMKTaskErrorExitStatusKey" - -/** - To import the `NSTask` category: - - use_frameworks! - pod "PromiseKit/Foundation" - - Or `NSTask` is one of the categories imported by the umbrella pod: - - use_frameworks! - pod "PromiseKit" - - And then in your sources: - - #import -*/ -@interface NSTask (PromiseKit) - -/** - Launches the receiver and resolves when it exits. - - If the task fails the promise is rejected with code `PMKTaskError`, and - `userInfo` keys: `PMKTaskErrorStandardOutputKey`, - `PMKTaskErrorStandardErrorKey` and `PMKTaskErrorExitStatusKey`. - - NSTask *task = [NSTask new]; - task.launchPath = @"/usr/bin/basename"; - task.arguments = @[@"/usr/bin/sleep"]; - [task promise].then(^(NSString *stdout){ - //… - }); - - @return A promise that fulfills with three parameters: - - 1) The stdout interpreted as a UTF8 string. - 2) The stderr interpreted as a UTF8 string. - 3) The stdout as `NSData`. -*/ -- (AnyPromise *)promise NS_REFINED_FOR_SWIFT; - -@end - -#endif diff --git a/cocoapods/Pods/PromiseKit/Extensions/Foundation/Sources/NSTask+AnyPromise.m b/cocoapods/Pods/PromiseKit/Extensions/Foundation/Sources/NSTask+AnyPromise.m deleted file mode 100644 index fa291d36..00000000 --- a/cocoapods/Pods/PromiseKit/Extensions/Foundation/Sources/NSTask+AnyPromise.m +++ /dev/null @@ -1,59 +0,0 @@ -#import -#import -#import -#import -#import - -#if TARGET_OS_MAC && !TARGET_OS_EMBEDDED && !TARGET_OS_SIMULATOR && !TARGET_OS_UIKITFORMAC - -#import "NSTask+AnyPromise.h" - -@implementation NSTask (PromiseKit) - -- (AnyPromise *)promise { - return [AnyPromise promiseWithResolverBlock:^(PMKResolver resolve) { - self.standardOutput = [NSPipe pipe]; - self.standardError = [NSPipe pipe]; - self.terminationHandler = ^(NSTask *task){ - id stdoutData = [[task.standardOutput fileHandleForReading] readDataToEndOfFile]; - id stdoutString = [[NSString alloc] initWithData:stdoutData encoding:NSUTF8StringEncoding]; - id stderrData = [[task.standardError fileHandleForReading] readDataToEndOfFile]; - id stderrString = [[NSString alloc] initWithData:stderrData encoding:NSUTF8StringEncoding]; - - if (task.terminationReason == NSTaskTerminationReasonExit && self.terminationStatus == 0) { - resolve(PMKManifold(stdoutString, stderrString, stdoutData)); - } else { - id cmd = [NSMutableArray arrayWithObject:task.launchPath]; - [cmd addObjectsFromArray:task.arguments]; - cmd = [cmd componentsJoinedByString:@" "]; - - id info = @{ - NSLocalizedDescriptionKey:[NSString stringWithFormat:@"Failed executing: %@.", cmd], - PMKTaskErrorStandardOutputKey: stdoutString, - PMKTaskErrorStandardErrorKey: stderrString, - PMKTaskErrorExitStatusKey: @(task.terminationStatus), - }; - - resolve([NSError errorWithDomain:PMKErrorDomain code:PMKTaskError userInfo:info]); - } - }; - - #if __clang_major__ >= 9 - if (@available(macOS 10.13, *)) { - NSError *error = nil; - - if (![self launchAndReturnError:&error]) { - resolve(error); - } - } else { - [self launch]; - } - #else - [self launch]; // might @throw - #endif - }]; -} - -@end - -#endif diff --git a/cocoapods/Pods/PromiseKit/Extensions/Foundation/Sources/NSURLSession+AnyPromise.h b/cocoapods/Pods/PromiseKit/Extensions/Foundation/Sources/NSURLSession+AnyPromise.h deleted file mode 100644 index 71952d48..00000000 --- a/cocoapods/Pods/PromiseKit/Extensions/Foundation/Sources/NSURLSession+AnyPromise.h +++ /dev/null @@ -1,79 +0,0 @@ -#import -#import -#import -#import - -#define PMKURLErrorFailingURLResponseKey @"PMKURLErrorFailingURLResponseKey" -#define PMKURLErrorFailingDataKey @"PMKURLErrorFailingDataKey" -#define PMKURLErrorFailingStringKey @"PMKURLErrorFailingStringKey" -#define PMKJSONErrorJSONObjectKey @"PMKJSONErrorJSONObjectKey" - -/** - Really we shouldn’t assume JSON for (application|text)/(x-)javascript, - really we should return a String of Javascript. However in practice - for the apps we write it *will be* JSON. Thus if you actually want - a Javascript String, use the promise variant of our category functions. - */ -#define PMKHTTPURLResponseIsJSON(rsp) [@[@"application/json", @"text/json", @"text/javascript", @"application/x-javascript", @"application/javascript"] containsObject:[rsp MIMEType]] -#define PMKHTTPURLResponseIsImage(rsp) [@[@"image/tiff", @"image/jpeg", @"image/gif", @"image/png", @"image/ico", @"image/x-icon", @"image/bmp", @"image/x-bmp", @"image/x-xbitmap", @"image/x-win-bitmap"] containsObject:[rsp MIMEType]] -#define PMKHTTPURLResponseIsText(rsp) [[rsp MIMEType] hasPrefix:@"text/"] - -#define PMKJSONDeserializationOptions ((NSJSONReadingOptions)(NSJSONReadingAllowFragments | NSJSONReadingMutableContainers)) - - -/** - To import the `NSURLSession` category: - - use_frameworks! - pod "PromiseKit/Foundation" - - Or `NSURLConnection` is one of the categories imported by the umbrella pod: - - use_frameworks! - pod "PromiseKit" - - And then in your sources: - - #import -*/ -@interface NSURLSession (PromiseKit) - -/** - Creates a task that retrieves the contents of a URL based on the - specified URL request object. - - PromiseKit automatically deserializes the raw HTTP data response into the - appropriate rich data type based on the mime type the server provides. - Thus if the response is JSON you will get the deserialized JSON response. - PromiseKit supports decoding into strings, JSON and UIImages. - - However if your server does not provide a rich content-type, you will - just get `NSData`. This is rare, but a good example we came across was - downloading files from Dropbox. - - PromiseKit goes to quite some lengths to provide good `NSError` objects - for error conditions at all stages of the HTTP to rich-data type - pipeline. We provide the following additional `userInfo` keys as - appropriate: - - - `PMKURLErrorFailingDataKey` - - `PMKURLErrorFailingStringKey` - - `PMKURLErrorFailingURLResponseKey` - - [[NSURLConnection sharedSession] promiseDataTaskWithRequest:rq].then(^(id response){ - // response is probably an NSDictionary deserialized from JSON - }); - - @param request The URL request. - - @return A promise that fulfills with three parameters: - - 1) The deserialized data response. - 2) The `NSHTTPURLResponse`. - 3) The raw `NSData` response. - - @see https://github.com/mxcl/OMGHTTPURLRQ -*/ -- (AnyPromise *)promiseDataTaskWithRequest:(NSURLRequest *)request NS_REFINED_FOR_SWIFT; - -@end diff --git a/cocoapods/Pods/PromiseKit/Extensions/Foundation/Sources/NSURLSession+AnyPromise.m b/cocoapods/Pods/PromiseKit/Extensions/Foundation/Sources/NSURLSession+AnyPromise.m deleted file mode 100644 index 901eb281..00000000 --- a/cocoapods/Pods/PromiseKit/Extensions/Foundation/Sources/NSURLSession+AnyPromise.m +++ /dev/null @@ -1,113 +0,0 @@ -#import -#import -#import -#import "NSURLSession+AnyPromise.h" -#import -#import -#import -#import -#import -#import -#import -#import - -@implementation NSURLSession (PromiseKit) - -- (AnyPromise *)promiseDataTaskWithRequest:(NSURLRequest *)rq { - return [AnyPromise promiseWithResolverBlock:^(PMKResolver resolve) { - [[self dataTaskWithRequest:rq completionHandler:^(NSData *data, id rsp, NSError *urlError){ - assert(![NSThread isMainThread]); - - PMKResolver fulfiller = ^(id responseObject){ - resolve(PMKManifold(responseObject, rsp, data)); - }; - PMKResolver rejecter = ^(NSError *error){ - id userInfo = error.userInfo.mutableCopy ?: [NSMutableDictionary new]; - if (data) userInfo[PMKURLErrorFailingDataKey] = data; - if (rsp) userInfo[PMKURLErrorFailingURLResponseKey] = rsp; - error = [NSError errorWithDomain:error.domain code:error.code userInfo:userInfo]; - resolve(error); - }; - - NSStringEncoding (^stringEncoding)(void) = ^NSStringEncoding{ - id encodingName = [rsp textEncodingName]; - if (encodingName) { - CFStringEncoding encoding = CFStringConvertIANACharSetNameToEncoding((CFStringRef)encodingName); - if (encoding != kCFStringEncodingInvalidId) - return CFStringConvertEncodingToNSStringEncoding(encoding); - } - return NSUTF8StringEncoding; - }; - - if (urlError) { - rejecter(urlError); - } else if (![rsp isKindOfClass:[NSHTTPURLResponse class]]) { - fulfiller(data); - } else if ([rsp statusCode] < 200 || [rsp statusCode] >= 300) { - id info = @{ - NSLocalizedDescriptionKey: @"The server returned a bad HTTP response code", - NSURLErrorFailingURLStringErrorKey: rq.URL.absoluteString, - NSURLErrorFailingURLErrorKey: rq.URL - }; - id err = [NSError errorWithDomain:NSURLErrorDomain code:NSURLErrorBadServerResponse userInfo:info]; - rejecter(err); - } else if (PMKHTTPURLResponseIsJSON(rsp)) { - // work around ever-so-common Rails workaround: https://github.com/rails/rails/issues/1742 - if ([rsp expectedContentLength] == 1 && [data isEqualToData:[NSData dataWithBytes:" " length:1]]) - return fulfiller(nil); - - NSError *err = nil; - id json = [NSJSONSerialization JSONObjectWithData:data options:PMKJSONDeserializationOptions error:&err]; - if (!err) { - fulfiller(json); - } else { - id userInfo = err.userInfo.mutableCopy; - if (data) { - NSString *string = [[NSString alloc] initWithData:data encoding:stringEncoding()]; - if (string) - userInfo[PMKURLErrorFailingStringKey] = string; - } - long long length = [rsp expectedContentLength]; - id bytes = length <= 0 ? @"" : [NSString stringWithFormat:@"%lld bytes", length]; - id fmt = @"The server claimed a %@ JSON response, but decoding failed with: %@"; - userInfo[NSLocalizedDescriptionKey] = [NSString stringWithFormat:fmt, bytes, userInfo[NSLocalizedDescriptionKey]]; - err = [NSError errorWithDomain:err.domain code:err.code userInfo:userInfo]; - rejecter(err); - } - #ifdef UIKIT_EXTERN - } else if (PMKHTTPURLResponseIsImage(rsp)) { - UIImage *image = [[UIImage alloc] initWithData:data]; - image = [[UIImage alloc] initWithCGImage:[image CGImage] scale:image.scale orientation:image.imageOrientation]; - if (image) - fulfiller(image); - else { - id info = @{ - NSLocalizedDescriptionKey: @"The server returned invalid image data", - NSURLErrorFailingURLStringErrorKey: rq.URL.absoluteString, - NSURLErrorFailingURLErrorKey: rq.URL - }; - id err = [NSError errorWithDomain:NSURLErrorDomain code:NSURLErrorCannotDecodeContentData userInfo:info]; - rejecter(err); - } - #endif - } else if (PMKHTTPURLResponseIsText(rsp)) { - id str = [[NSString alloc] initWithData:data encoding:stringEncoding()]; - if (str) - fulfiller(str); - else { - id info = @{ - NSLocalizedDescriptionKey: @"The server returned invalid string data", - NSURLErrorFailingURLStringErrorKey: rq.URL.absoluteString, - NSURLErrorFailingURLErrorKey: rq.URL - }; - id err = [NSError errorWithDomain:NSURLErrorDomain code:NSURLErrorCannotDecodeContentData userInfo:info]; - rejecter(err); - } - } else { - fulfiller(data); - } - }] resume]; - }]; -} - -@end diff --git a/cocoapods/Pods/PromiseKit/Extensions/Foundation/Sources/NSURLSession+Promise.swift b/cocoapods/Pods/PromiseKit/Extensions/Foundation/Sources/NSURLSession+Promise.swift deleted file mode 100644 index 150654fb..00000000 --- a/cocoapods/Pods/PromiseKit/Extensions/Foundation/Sources/NSURLSession+Promise.swift +++ /dev/null @@ -1,246 +0,0 @@ -import Foundation -#if !PMKCocoaPods -import PromiseKit -#endif -#if swift(>=4.1) -#if canImport(FoundationNetworking) -import FoundationNetworking -#endif -#endif - -/** - To import the `NSURLSession` category: - - use_frameworks! - pod "PromiseKit/Foundation" - - Or `NSURLSession` is one of the categories imported by the umbrella pod: - - use_frameworks! - pod "PromiseKit" - - And then in your sources: - - import PromiseKit -*/ -extension URLSession { - /** - Example usage: - - firstly { - URLSession.shared.dataTask(.promise, with: rq) - }.compactMap { data, _ in - try JSONSerialization.jsonObject(with: data) as? [String: Any] - }.then { json in - //… - } - - We recommend the use of [OMGHTTPURLRQ] which allows you to construct correct REST requests: - - firstly { - let rq = OMGHTTPURLRQ.POST(url, json: parameters) - URLSession.shared.dataTask(.promise, with: rq) - }.then { data, urlResponse in - //… - } - - We provide a convenience initializer for `String` specifically for this promise: - - firstly { - URLSession.shared.dataTask(.promise, with: rq) - }.compactMap(String.init).then { string in - // decoded per the string encoding specified by the server - }.then { string in - print("response: string") - } - - Other common types can be easily decoded using compactMap also: - - firstly { - URLSession.shared.dataTask(.promise, with: rq) - }.compactMap { - UIImage(data: $0) - }.then { - self.imageView.image = $0 - } - - Though if you do decode the image this way, we recommend inflating it on a background thread - first as this will improve main thread performance when rendering the image: - - firstly { - URLSession.shared.dataTask(.promise, with: rq) - }.compactMap(on: QoS.userInitiated) { data, _ in - guard let img = UIImage(data: data) else { return nil } - _ = cgImage?.dataProvider?.data - return img - }.then { - self.imageView.image = $0 - } - - - Parameter convertible: A URL or URLRequest. - - Returns: A promise that represents the URL request. - - SeeAlso: [OMGHTTPURLRQ] - - Remark: We deliberately don’t provide a `URLRequestConvertible` for `String` because in our experience, you should be explicit with this error path to make good apps. - - [OMGHTTPURLRQ]: https://github.com/mxcl/OMGHTTPURLRQ - */ - public func dataTask(_: PMKNamespacer, with convertible: URLRequestConvertible) -> Promise<(data: Data, response: URLResponse)> { - return Promise { dataTask(with: convertible.pmkRequest, completionHandler: adapter($0)).resume() } - } - - public func uploadTask(_: PMKNamespacer, with convertible: URLRequestConvertible, from data: Data) -> Promise<(data: Data, response: URLResponse)> { - return Promise { uploadTask(with: convertible.pmkRequest, from: data, completionHandler: adapter($0)).resume() } - } - - public func uploadTask(_: PMKNamespacer, with convertible: URLRequestConvertible, fromFile file: URL) -> Promise<(data: Data, response: URLResponse)> { - return Promise { uploadTask(with: convertible.pmkRequest, fromFile: file, completionHandler: adapter($0)).resume() } - } - - /// - Remark: we force a `to` parameter because Apple deletes the downloaded file immediately after the underyling completion handler returns. - /// - Note: we do not create the destination directory for you, because we move the file with FileManager.moveItem which changes it behavior depending on the directory status of the URL you provide. So create your own directory first! - public func downloadTask(_: PMKNamespacer, with convertible: URLRequestConvertible, to saveLocation: URL) -> Promise<(saveLocation: URL, response: URLResponse)> { - return Promise { seal in - downloadTask(with: convertible.pmkRequest, completionHandler: { tmp, rsp, err in - if let error = err { - seal.reject(error) - } else if let rsp = rsp, let tmp = tmp { - do { - try FileManager.default.moveItem(at: tmp, to: saveLocation) - seal.fulfill((saveLocation, rsp)) - } catch { - seal.reject(error) - } - } else { - seal.reject(PMKError.invalidCallingConvention) - } - }).resume() - } - } -} - - -public protocol URLRequestConvertible { - var pmkRequest: URLRequest { get } -} -extension URLRequest: URLRequestConvertible { - public var pmkRequest: URLRequest { return self } -} -extension URL: URLRequestConvertible { - public var pmkRequest: URLRequest { return URLRequest(url: self) } -} - - -#if !os(Linux) -public extension String { - /** - - Remark: useful when converting a `URLSession` response into a `String` - - firstly { - URLSession.shared.dataTask(.promise, with: rq) - }.map(String.init).done { - print($0) - } - */ - init?(data: Data, urlResponse: URLResponse) { - guard let str = String(bytes: data, encoding: urlResponse.stringEncoding ?? .utf8) else { - return nil - } - self.init(str) - } -} - -private extension URLResponse { - var stringEncoding: String.Encoding? { - guard let encodingName = textEncodingName else { return nil } - let encoding = CFStringConvertIANACharSetNameToEncoding(encodingName as CFString) - guard encoding != kCFStringEncodingInvalidId else { return nil } - return String.Encoding(rawValue: CFStringConvertEncodingToNSStringEncoding(encoding)) - } -} -#endif - -private func adapter(_ seal: Resolver<(data: T, response: U)>) -> (T?, U?, Error?) -> Void { - return { t, u, e in - if let t = t, let u = u { - seal.fulfill((t, u)) - } else if let e = e { - seal.reject(e) - } else { - seal.reject(PMKError.invalidCallingConvention) - } - } -} - - -#if swift(>=3.1) -public enum PMKHTTPError: Error, LocalizedError, CustomStringConvertible { - case badStatusCode(Int, Data, HTTPURLResponse) - - public var errorDescription: String? { - func url(_ rsp: URLResponse) -> String { - return rsp.url?.absoluteString ?? "nil" - } - switch self { - case .badStatusCode(401, _, let response): - return "Unauthorized (\(url(response))" - case .badStatusCode(let code, _, let response): - return "Invalid HTTP response (\(code)) for \(url(response))." - } - } - -#if swift(>=4.0) - public func decodeResponse(_ t: T.Type, decoder: JSONDecoder = JSONDecoder()) -> T? { - switch self { - case .badStatusCode(_, let data, _): - return try? decoder.decode(t, from: data) - } - } -#endif - - //TODO rename responseJSON - public var jsonDictionary: Any? { - switch self { - case .badStatusCode(_, let data, _): - return try? JSONSerialization.jsonObject(with: data) - } - } - - var responseBodyString: String? { - switch self { - case .badStatusCode(_, let data, _): - return String(data: data, encoding: .utf8) - } - } - - public var failureReason: String? { - return responseBodyString - } - - public var description: String { - switch self { - case .badStatusCode(let code, let data, let response): - var dict: [String: Any] = [ - "Status Code": code, - "Body": String(data: data, encoding: .utf8) ?? "\(data.count) bytes" - ] - dict["URL"] = response.url - dict["Headers"] = response.allHeaderFields - return " \(NSDictionary(dictionary: dict))" // as NSDictionary makes the output look like NSHTTPURLResponse looks - } - } -} - -public extension Promise where T == (data: Data, response: URLResponse) { - func validate() -> Promise { - return map { - guard let response = $0.response as? HTTPURLResponse else { return $0 } - switch response.statusCode { - case 200..<300: - return $0 - case let code: - throw PMKHTTPError.badStatusCode(code, $0.data, response) - } - } - } -} -#endif diff --git a/cocoapods/Pods/PromiseKit/Extensions/Foundation/Sources/PMKFoundation.h b/cocoapods/Pods/PromiseKit/Extensions/Foundation/Sources/PMKFoundation.h deleted file mode 100644 index 8796c0d1..00000000 --- a/cocoapods/Pods/PromiseKit/Extensions/Foundation/Sources/PMKFoundation.h +++ /dev/null @@ -1,3 +0,0 @@ -#import "NSNotificationCenter+AnyPromise.h" -#import "NSURLSession+AnyPromise.h" -#import "NSTask+AnyPromise.h" diff --git a/cocoapods/Pods/PromiseKit/Extensions/Foundation/Sources/Process+Promise.swift b/cocoapods/Pods/PromiseKit/Extensions/Foundation/Sources/Process+Promise.swift deleted file mode 100644 index 03cab3cf..00000000 --- a/cocoapods/Pods/PromiseKit/Extensions/Foundation/Sources/Process+Promise.swift +++ /dev/null @@ -1,190 +0,0 @@ -import Foundation -#if !PMKCocoaPods -import PromiseKit -#endif - -#if os(macOS) - -/** - To import the `Process` category: - - use_frameworks! - pod "PromiseKit/Foundation" - - Or `Process` is one of the categories imported by the umbrella pod: - - use_frameworks! - pod "PromiseKit" - - And then in your sources: - - import PromiseKit - */ -extension Process { - /** - Launches the receiver and resolves when it exits. - - let proc = Process() - proc.launchPath = "/bin/ls" - proc.arguments = ["/bin"] - proc.launch(.promise).compactMap { std in - String(data: std.out.fileHandleForReading.readDataToEndOfFile(), encoding: .utf8) - }.then { stdout in - print(str) - } - */ - public func launch(_: PMKNamespacer) -> Promise<(out: Pipe, err: Pipe)> { - let (stdout, stderr) = (Pipe(), Pipe()) - - do { - standardOutput = stdout - standardError = stderr - - #if swift(>=4.0) - if #available(OSX 10.13, *) { - try run() - } else if let path = launchPath, FileManager.default.isExecutableFile(atPath: path) { - launch() - } else { - throw PMKError.notExecutable(launchPath) - } - #else - guard let path = launchPath, FileManager.default.isExecutableFile(atPath: path) else { - throw PMKError.notExecutable(launchPath) - } - launch() - #endif - } catch { - return Promise(error: error) - } - - - var q: DispatchQueue { - if #available(macOS 10.10, iOS 8.0, tvOS 9.0, watchOS 2.0, *) { - return DispatchQueue.global(qos: .default) - } else { - return DispatchQueue.global(priority: .default) - } - } - - return Promise { seal in - q.async { - self.waitUntilExit() - - guard self.terminationReason == .exit, self.terminationStatus == 0 else { - let stdoutData = try? self.readDataFromPipe(stdout) - let stderrData = try? self.readDataFromPipe(stderr) - - let stdoutString = stdoutData.flatMap { (data: Data) -> String? in String(data: data, encoding: .utf8) } - let stderrString = stderrData.flatMap { (data: Data) -> String? in String(data: data, encoding: .utf8) } - - return seal.reject(PMKError.execution(process: self, standardOutput: stdoutString, standardError: stderrString)) - } - seal.fulfill((stdout, stderr)) - } - } - } - - private func readDataFromPipe(_ pipe: Pipe) throws -> Data { - let handle = pipe.fileHandleForReading - defer { handle.closeFile() } - - // Someday, NSFileHandle will probably be updated with throwing equivalents to its read and write methods, - // as NSTask has, to avoid raising exceptions and crashing the app. - // Unfortunately that day has not yet come, so use the underlying BSD calls for now. - - let fd = handle.fileDescriptor - - let bufsize = 1024 * 8 - let buf = UnsafeMutablePointer.allocate(capacity: bufsize) - - #if swift(>=4.1) - defer { buf.deallocate() } - #else - defer { buf.deallocate(capacity: bufsize) } - #endif - - var data = Data() - - while true { - let bytesRead = read(fd, buf, bufsize) - - if bytesRead == 0 { - break - } - - if bytesRead < 0 { - throw POSIXError.Code(rawValue: errno).map { POSIXError($0) } ?? CocoaError(.fileReadUnknown) - } - - data.append(buf, count: bytesRead) - } - - return data - } - - /** - The error generated by PromiseKit’s `Process` extension - */ - public enum PMKError { - /// NOT AVAILABLE ON 10.13 and above because Apple provide this error handling themselves - case notExecutable(String?) - case execution(process: Process, standardOutput: String?, standardError: String?) - } -} - - -extension Process.PMKError: LocalizedError { - public var errorDescription: String? { - switch self { - case .notExecutable(let path?): - return "File not executable: \(path)" - case .notExecutable(nil): - return "No launch path specified" - case .execution(process: let task, standardOutput: _, standardError: _): - return "Failed executing: `\(task)` (\(task.terminationStatus))." - } - } -} - -public extension Promise where T == (out: Pipe, err: Pipe) { - func print() -> Promise { - return tap { result in - switch result { - case .fulfilled(let raw): - let stdout = String(data: raw.out.fileHandleForReading.readDataToEndOfFile(), encoding: .utf8) - let stderr = String(data: raw.err.fileHandleForReading.readDataToEndOfFile(), encoding: .utf8) - Swift.print("stdout: `\(stdout ?? "")`") - Swift.print("stderr: `\(stderr ?? "")`") - case .rejected(let err): - Swift.print(err) - } - } - } -} - -extension Process { - /// Provided because Foundation’s is USELESS - open override var description: String { - let launchPath = self.launchPath ?? "$0" - var args = [launchPath] - arguments.flatMap{ args += $0 } - return args.map { arg in - let contains: Bool - #if swift(>=3.2) - contains = arg.contains(" ") - #else - contains = arg.characters.contains(" ") - #endif - if contains { - return "\"\(arg)\"" - } else if arg == "" { - return "\"\"" - } else { - return arg - } - }.joined(separator: " ") - } -} - -#endif diff --git a/cocoapods/Pods/PromiseKit/Extensions/Foundation/Sources/afterlife.swift b/cocoapods/Pods/PromiseKit/Extensions/Foundation/Sources/afterlife.swift deleted file mode 100644 index 232c8da9..00000000 --- a/cocoapods/Pods/PromiseKit/Extensions/Foundation/Sources/afterlife.swift +++ /dev/null @@ -1,26 +0,0 @@ -import Foundation -#if !PMKCocoaPods -import PromiseKit -#endif - -/** - - Returns: A promise that resolves when the provided object deallocates - - Important: The promise is not guarenteed to resolve immediately when the provided object is deallocated. So you cannot write code that depends on exact timing. - */ -public func after(life object: NSObject) -> Guarantee { - var reaper = objc_getAssociatedObject(object, &handle) as? GrimReaper - if reaper == nil { - reaper = GrimReaper() - objc_setAssociatedObject(object, &handle, reaper, .OBJC_ASSOCIATION_RETAIN_NONATOMIC) - } - return reaper!.promise -} - -private var handle: UInt8 = 0 - -private class GrimReaper: NSObject { - deinit { - fulfill(()) - } - let (promise, fulfill) = Guarantee.pending() -} diff --git a/cocoapods/Pods/PromiseKit/LICENSE b/cocoapods/Pods/PromiseKit/LICENSE deleted file mode 100644 index 50f758c8..00000000 --- a/cocoapods/Pods/PromiseKit/LICENSE +++ /dev/null @@ -1,20 +0,0 @@ -Copyright 2016-present, Max Howell; mxcl@me.com - -Permission is hereby granted, free of charge, to any person obtaining a -copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be included -in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/cocoapods/Pods/PromiseKit/README.md b/cocoapods/Pods/PromiseKit/README.md deleted file mode 100644 index d4b675d8..00000000 --- a/cocoapods/Pods/PromiseKit/README.md +++ /dev/null @@ -1,211 +0,0 @@ -![PromiseKit](../gh-pages/public/img/logo-tight.png) - -[![badge-pod][]][cocoapods] ![badge-languages][] ![badge-pms][] ![badge-platforms][] [![badge-travis][]][travis] - ---- - -Promises simplify asynchronous programming, freeing you up to focus on the more -important things. They are easy to learn, easy to master and result in clearer, -more readable code. Your co-workers will thank you. - -```swift -UIApplication.shared.isNetworkActivityIndicatorVisible = true - -let fetchImage = URLSession.shared.dataTask(.promise, with: url).compactMap{ UIImage(data: $0.data) } -let fetchLocation = CLLocationManager.requestLocation().lastValue - -firstly { - when(fulfilled: fetchImage, fetchLocation) -}.done { image, location in - self.imageView.image = image - self.label.text = "\(location)" -}.ensure { - UIApplication.shared.isNetworkActivityIndicatorVisible = false -}.catch { error in - self.show(UIAlertController(for: error), sender: self) -} -``` - -PromiseKit is a thoughtful and complete implementation of promises for any -platform that has a `swiftc`. It has *excellent* Objective-C bridging and -*delightful* specializations for iOS, macOS, tvOS and watchOS. It is a top-100 -pod used in many of the most popular apps in the world. - -[![codecov](https://codecov.io/gh/mxcl/PromiseKit/branch/master/graph/badge.svg)](https://codecov.io/gh/mxcl/PromiseKit) - -# PromiseKit 7 Alpha - -We are testing PromiseKit 7 alpha, it is Swift 5 only. It is tagged and thus -importable in all package managers. - -# PromiseKit 6 - -[Release notes and migration guide][PMK6]. - -# Quick Start - -In your [Podfile]: - -```ruby -use_frameworks! - -target "Change Me!" do - pod "PromiseKit", "~> 6.8" -end -``` - -> The above gives an Xcode warning? See our [Installation Guide]. - -PromiseKit 6, 5 and 4 support Xcode 8.3, 9.x and 10.0; Swift 3.1, -3.2, 3.3, 3.4, 4.0, 4.1, 4.2, 4.3 and 5.0 (development snapshots); iOS, macOS, -tvOS, watchOS, Linux and Android; CocoaPods, Carthage and SwiftPM; -([CI Matrix](https://travis-ci.org/mxcl/PromiseKit)). - -For Carthage, SwiftPM, Accio, etc., or for instructions when using older Swifts or Xcodes, see our [Installation Guide]. We recommend -[Carthage](https://github.com/Carthage/Carthage) or -[Accio](https://github.com/JamitLabs/Accio). - -# Professionally Supported PromiseKit is Now Available - -TideLift gives software development teams a single source for purchasing -and maintaining their software, with professional grade assurances from -the experts who know it best, while seamlessly integrating with existing -tools. - -[Get Professional Support for PromiseKit with TideLift](https://tidelift.com/subscription/pkg/cocoapods-promisekit?utm_source=cocoapods-promisekit&utm_medium=referral&utm_campaign=readme). - -# PromiseKit is Thousands of Hours of Work - -Hey there, I’m Max Howell. I’m a prolific producer of open source software and -probably you already use some of it (I created [`brew`]). I work full-time on -open source and it’s hard; currently *I earn less than minimum wage*. Please -help me continue my work, I appreciate it 🙏🏻 - - - - - -[Other ways to say thanks](http://mxcl.dev/#donate). - -[`brew`]: https://brew.sh - -# Documentation - -* Handbook - * [Getting Started](Documentation/GettingStarted.md) - * [Promises: Common Patterns](Documentation/CommonPatterns.md) - * [Frequently Asked Questions](Documentation/FAQ.md) -* Manual - * [Installation Guide](Documentation/Installation.md) - * [Objective-C Guide](Documentation/ObjectiveC.md) - * [Troubleshooting](Documentation/Troubleshooting.md) (e.g., solutions to common compile errors) - * [Appendix](Documentation/Appendix.md) -* [API Reference](https://mxcl.dev/PromiseKit/reference/v6/Classes/Promise.html) - -# Extensions - -Promises are only as useful as the asynchronous tasks they represent. Thus, we -have converted (almost) all of Apple’s APIs to promises. The default CocoaPod -provides Promises and the extensions for Foundation and UIKit. The other -extensions are available by specifying additional subspecs in your `Podfile`, -e.g.: - -```ruby -pod "PromiseKit/MapKit" # MKDirections().calculate().then { /*…*/ } -pod "PromiseKit/CoreLocation" # CLLocationManager.requestLocation().then { /*…*/ } -``` - -All our extensions are separate repositories at the [PromiseKit organization]. - -## I don't want the extensions! - -Then don’t have them: - -```ruby -pod "PromiseKit/CorePromise", "~> 6.8" -``` - -> *Note:* Carthage installations come with no extensions by default. - -## Choose Your Networking Library - -Promise chains commonly start with a network operation. Thus, we offer -extensions for `URLSession`: - -```swift -// pod 'PromiseKit/Foundation' # https://github.com/PromiseKit/Foundation - -firstly { - URLSession.shared.dataTask(.promise, with: try makeUrlRequest()).validate() - // ^^ we provide `.validate()` so that eg. 404s get converted to errors -}.map { - try JSONDecoder().decode(Foo.self, with: $0.data) -}.done { foo in - //… -}.catch { error in - //… -} - -func makeUrlRequest() throws -> URLRequest { - var rq = URLRequest(url: url) - rq.httpMethod = "POST" - rq.addValue("application/json", forHTTPHeaderField: "Content-Type") - rq.addValue("application/json", forHTTPHeaderField: "Accept") - rq.httpBody = try JSONEncoder().encode(obj) - return rq -} -``` - -And [Alamofire]: - -```swift -// pod 'PromiseKit/Alamofire' # https://github.com/PromiseKit/Alamofire- - -firstly { - Alamofire - .request("http://example.com", method: .post, parameters: params) - .responseDecodable(Foo.self) -}.done { foo in - //… -}.catch { error in - //… -} -``` - -Nowadays, considering that: - -* We almost always POST JSON -* We now have `JSONDecoder` -* PromiseKit now has `map` and other functional primitives -* PromiseKit (like Alamofire, but not raw-`URLSession`) also defaults to having - callbacks go to the main thread - -We recommend vanilla `URLSession`. It uses fewer black boxes and sticks closer to the metal. Alamofire was essential until the three bullet points above -became true, but nowadays it isn’t really necessary. - -# Support - -Please check our [Troubleshooting Guide](Documentation/Troubleshooting.md), and -if after that you still have a question, ask at our [Gitter chat channel] or on [our bug tracker]. - -## Security & Vulnerability Reporting or Disclosure - -https://tidelift.com/security - - -[badge-pod]: https://img.shields.io/cocoapods/v/PromiseKit.svg?label=version -[badge-pms]: https://img.shields.io/badge/supports-CocoaPods%20%7C%20Carthage%20%7C%20Accio%20%7C%20SwiftPM-green.svg -[badge-languages]: https://img.shields.io/badge/languages-Swift%20%7C%20ObjC-orange.svg -[badge-platforms]: https://img.shields.io/badge/platforms-macOS%20%7C%20iOS%20%7C%20watchOS%20%7C%20tvOS%20%7C%20Linux-lightgrey.svg -[badge-mit]: https://img.shields.io/badge/license-MIT-blue.svg -[OMGHTTPURLRQ]: https://github.com/PromiseKit/OMGHTTPURLRQ -[Alamofire]: http://github.com/PromiseKit/Alamofire- -[PromiseKit organization]: https://github.com/PromiseKit -[Gitter chat channel]: https://gitter.im/mxcl/PromiseKit -[our bug tracker]: https://github.com/mxcl/PromiseKit/issues/new -[Podfile]: https://guides.cocoapods.org/syntax/podfile.html -[PMK6]: http://mxcl.dev/PromiseKit/news/2018/02/PromiseKit-6.0-Released/ -[Installation Guide]: Documentation/Installation.md -[badge-travis]: https://travis-ci.org/mxcl/PromiseKit.svg?branch=master -[travis]: https://travis-ci.org/mxcl/PromiseKit -[cocoapods]: https://cocoapods.org/pods/PromiseKit diff --git a/cocoapods/Pods/PromiseKit/Sources/AnyPromise+Private.h b/cocoapods/Pods/PromiseKit/Sources/AnyPromise+Private.h deleted file mode 100644 index cd28c418..00000000 --- a/cocoapods/Pods/PromiseKit/Sources/AnyPromise+Private.h +++ /dev/null @@ -1,32 +0,0 @@ -@import Foundation.NSError; -@import Foundation.NSPointerArray; - -#if TARGET_OS_IPHONE - #define NSPointerArrayMake(N) ({ \ - NSPointerArray *aa = [NSPointerArray strongObjectsPointerArray]; \ - aa.count = N; \ - aa; \ - }) -#else - static inline NSPointerArray * __nonnull NSPointerArrayMake(NSUInteger count) { - #pragma clang diagnostic push - #pragma clang diagnostic ignored "-Wdeprecated-declarations" - NSPointerArray *aa = [[NSPointerArray class] respondsToSelector:@selector(strongObjectsPointerArray)] - ? [NSPointerArray strongObjectsPointerArray] - : [NSPointerArray pointerArrayWithStrongObjects]; - #pragma clang diagnostic pop - aa.count = count; - return aa; - } -#endif - -#define IsError(o) [o isKindOfClass:[NSError class]] -#define IsPromise(o) [o isKindOfClass:[AnyPromise class]] - -#import "AnyPromise.h" - -@class PMKArray; - -@interface AnyPromise () -- (void)__pipe:(void(^ __nonnull)(__nullable id))block NS_REFINED_FOR_SWIFT; -@end diff --git a/cocoapods/Pods/PromiseKit/Sources/AnyPromise.h b/cocoapods/Pods/PromiseKit/Sources/AnyPromise.h deleted file mode 100644 index 75352d55..00000000 --- a/cocoapods/Pods/PromiseKit/Sources/AnyPromise.h +++ /dev/null @@ -1,308 +0,0 @@ -#import -#import -#import - -/// INTERNAL DO NOT USE -@class __AnyPromise; - -/// Provided to simplify some usage sites -typedef void (^PMKResolver)(id __nullable) NS_REFINED_FOR_SWIFT; - - -/// An Objective-C implementation of the promise pattern. -@interface AnyPromise: NSObject - -/** - Create a new promise that resolves with the provided block. - - Use this method when wrapping asynchronous code that does *not* use promises so that this code can be used in promise chains. - - If `resolve` is called with an `NSError` object, the promise is rejected, otherwise the promise is fulfilled. - - Don’t use this method if you already have promises! Instead, just return your promise. - - Should you need to fulfill a promise but have no sensical value to use: your promise is a `void` promise: fulfill with `nil`. - - The block you pass is executed immediately on the calling thread. - - - Parameter block: The provided block is immediately executed, inside the block call `resolve` to resolve this promise and cause any attached handlers to execute. If you are wrapping a delegate-based system, we recommend instead to use: initWithResolver: - - Returns: A new promise. - - Warning: Resolving a promise with `nil` fulfills it. - - SeeAlso: https://github.com/mxcl/PromiseKit/blob/master/Documentation/GettingStarted.md#making-promises - - SeeAlso: https://github.com/mxcl/PromiseKit/blob/master/Documentation/CommonPatterns.md#wrapping-delegate-systems - */ -+ (instancetype __nonnull)promiseWithResolverBlock:(void (^ __nonnull)(__nonnull PMKResolver))resolveBlock NS_REFINED_FOR_SWIFT; - - -/// INTERNAL DO NOT USE -- (instancetype __nonnull)initWith__D:(__AnyPromise * __nonnull)d; - -/** - Creates a resolved promise. - - When developing your own promise systems, it is occasionally useful to be able to return an already resolved promise. - - - Parameter value: The value with which to resolve this promise. Passing an `NSError` will cause the promise to be rejected, passing an AnyPromise will return a new AnyPromise bound to that promise, otherwise the promise will be fulfilled with the value passed. - - Returns: A resolved promise. - */ -+ (instancetype __nonnull)promiseWithValue:(__nullable id)value NS_REFINED_FOR_SWIFT; - -/** - The value of the asynchronous task this promise represents. - - A promise has `nil` value if the asynchronous task it represents has not finished. If the value is `nil` the promise is still `pending`. - - - Warning: *Note* Our Swift variant’s value property returns nil if the promise is rejected where AnyPromise will return the error object. This fits with the pattern where AnyPromise is not strictly typed and is more dynamic, but you should be aware of the distinction. - - - Note: If the AnyPromise was fulfilled with a `PMKManifold`, returns only the first fulfillment object. - - - Returns: The value with which this promise was resolved or `nil` if this promise is pending. - */ -@property (nonatomic, readonly) __nullable id value NS_REFINED_FOR_SWIFT; - -/// - Returns: if the promise is pending resolution. -@property (nonatomic, readonly) BOOL pending NS_REFINED_FOR_SWIFT; - -/// - Returns: if the promise is resolved and fulfilled. -@property (nonatomic, readonly) BOOL fulfilled NS_REFINED_FOR_SWIFT; - -/// - Returns: if the promise is resolved and rejected. -@property (nonatomic, readonly) BOOL rejected NS_REFINED_FOR_SWIFT; - - -/** - The provided block is executed when its receiver is fulfilled. - - If you provide a block that takes a parameter, the value of the receiver will be passed as that parameter. - - [NSURLSession GET:url].then(^(NSData *data){ - // do something with data - }); - - @return A new promise that is resolved with the value returned from the provided block. For example: - - [NSURLSession GET:url].then(^(NSData *data){ - return data.length; - }).then(^(NSNumber *number){ - //… - }); - - @warning *Important* The block passed to `then` may take zero, one, two or three arguments, and return an object or return nothing. This flexibility is why the method signature for then is `id`, which means you will not get completion for the block parameter, and must type it yourself. It is safe to type any block syntax here, so to start with try just: `^{}`. - - @warning *Important* If an `NSError` or `NSString` is thrown inside your block, or you return an `NSError` object the next `Promise` will be rejected. See `catch` for documentation on error handling. - - @warning *Important* `then` is always executed on the main queue. - - @see thenOn - @see thenInBackground -*/ -- (AnyPromise * __nonnull (^ __nonnull)(id __nonnull))then NS_REFINED_FOR_SWIFT; - - -/** - The provided block is executed on the default queue when the receiver is fulfilled. - - This method is provided as a convenience for `thenOn`. - - @see then - @see thenOn -*/ -- (AnyPromise * __nonnull(^ __nonnull)(id __nonnull))thenInBackground NS_REFINED_FOR_SWIFT; - -/** - The provided block is executed on the dispatch queue of your choice when the receiver is fulfilled. - - @see then - @see thenInBackground -*/ -- (AnyPromise * __nonnull(^ __nonnull)(dispatch_queue_t __nonnull, id __nonnull))thenOn NS_REFINED_FOR_SWIFT; - -#ifndef __cplusplus -/** - The provided block is executed when the receiver is rejected. - - Provide a block of form `^(NSError *){}` or simply `^{}`. The parameter has type `id` to give you the freedom to choose either. - - The provided block always runs on the main queue. - - @warning *Note* Cancellation errors are not caught. - - @warning *Note* Since catch is a c++ keyword, this method is not available in Objective-C++ files. Instead use catchOn. - - @see catchOn - @see catchInBackground -*/ -- (AnyPromise * __nonnull(^ __nonnull)(id __nonnull))catch NS_REFINED_FOR_SWIFT; -#endif - -/** - The provided block is executed when the receiver is rejected. - - Provide a block of form `^(NSError *){}` or simply `^{}`. The parameter has type `id` to give you the freedom to choose either. - - The provided block always runs on the global background queue. - - @warning *Note* Cancellation errors are not caught. - - @warning *Note* Since catch is a c++ keyword, this method is not available in Objective-C++ files. Instead use catchWithPolicy. - - @see catch - @see catchOn - */ -- (AnyPromise * __nonnull(^ __nonnull)(id __nonnull))catchInBackground NS_REFINED_FOR_SWIFT; - - -/** - The provided block is executed when the receiver is rejected. - - Provide a block of form `^(NSError *){}` or simply `^{}`. The parameter has type `id` to give you the freedom to choose either. - - The provided block always runs on queue provided. - - @warning *Note* Cancellation errors are not caught. - - @see catch - @see catchInBackground - */ -- (AnyPromise * __nonnull(^ __nonnull)(dispatch_queue_t __nonnull, id __nonnull))catchOn NS_REFINED_FOR_SWIFT; - -/** - The provided block is executed when the receiver is resolved. - - The provided block always runs on the main queue. - - @see ensureOn -*/ -- (AnyPromise * __nonnull(^ __nonnull)(dispatch_block_t __nonnull))ensure NS_REFINED_FOR_SWIFT; - -/** - The provided block is executed on the dispatch queue of your choice when the receiver is resolved. - - @see ensure - */ -- (AnyPromise * __nonnull(^ __nonnull)(dispatch_queue_t __nonnull, dispatch_block_t __nonnull))ensureOn NS_REFINED_FOR_SWIFT; - -/** - Wait until the promise is resolved. - - @return Value if fulfilled or error if rejected. - */ -- (id __nullable)wait NS_REFINED_FOR_SWIFT; - -/** - Create a new promise with an associated resolver. - - Use this method when wrapping asynchronous code that does *not* use - promises so that this code can be used in promise chains. Generally, - prefer `promiseWithResolverBlock:` as the resulting code is more elegant. - - PMKResolver resolve; - AnyPromise *promise = [[AnyPromise alloc] initWithResolver:&resolve]; - - // later - resolve(@"foo"); - - @param resolver A reference to a block pointer of PMKResolver type. - You can then call your resolver to resolve this promise. - - @return A new promise. - - @warning *Important* The resolver strongly retains the promise. - - @see promiseWithResolverBlock: -*/ -- (instancetype __nonnull)initWithResolver:(PMKResolver __strong __nonnull * __nonnull)resolver NS_REFINED_FOR_SWIFT; - -/** - Unavailable methods - */ - -- (instancetype __nonnull)init __attribute__((unavailable("It is illegal to create an unresolvable promise."))); -+ (instancetype __nonnull)new __attribute__((unavailable("It is illegal to create an unresolvable promise."))); -- (AnyPromise * __nonnull(^ __nonnull)(dispatch_block_t __nonnull))always __attribute__((unavailable("See -ensure"))); -- (AnyPromise * __nonnull(^ __nonnull)(dispatch_block_t __nonnull))alwaysOn __attribute__((unavailable("See -ensureOn"))); -- (AnyPromise * __nonnull(^ __nonnull)(dispatch_block_t __nonnull))finally __attribute__((unavailable("See -ensure"))); -- (AnyPromise * __nonnull(^ __nonnull)(dispatch_block_t __nonnull, dispatch_block_t __nonnull))finallyOn __attribute__((unavailable("See -ensureOn"))); - -@end - - -typedef void (^PMKAdapter)(id __nullable, NSError * __nullable) NS_REFINED_FOR_SWIFT; -typedef void (^PMKIntegerAdapter)(NSInteger, NSError * __nullable) NS_REFINED_FOR_SWIFT; -typedef void (^PMKBooleanAdapter)(BOOL, NSError * __nullable) NS_REFINED_FOR_SWIFT; - - -@interface AnyPromise (Adapters) - -/** - Create a new promise by adapting an existing asynchronous system. - - The pattern of a completion block that passes two parameters, the first - the result and the second an `NSError` object is so common that we - provide this convenience adapter to make wrapping such systems more - elegant. - - return [PMKPromise promiseWithAdapterBlock:^(PMKAdapter adapter){ - PFQuery *query = [PFQuery …]; - [query findObjectsInBackgroundWithBlock:adapter]; - }]; - - @warning *Important* If both parameters are nil, the promise fulfills, - if both are non-nil the promise rejects. This is per the convention. - - @see https://github.com/mxcl/PromiseKit/blob/master/Documentation/GettingStarted.md#making-promises - */ -+ (instancetype __nonnull)promiseWithAdapterBlock:(void (^ __nonnull)(PMKAdapter __nonnull adapter))block NS_REFINED_FOR_SWIFT; - -/** - Create a new promise by adapting an existing asynchronous system. - - Adapts asynchronous systems that complete with `^(NSInteger, NSError *)`. - NSInteger will cast to enums provided the enum has been wrapped with - `NS_ENUM`. All of Apple’s enums are, so if you find one that hasn’t you - may need to make a pull-request. - - @see promiseWithAdapter - */ -+ (instancetype __nonnull)promiseWithIntegerAdapterBlock:(void (^ __nonnull)(PMKIntegerAdapter __nonnull adapter))block NS_REFINED_FOR_SWIFT; - -/** - Create a new promise by adapting an existing asynchronous system. - - Adapts asynchronous systems that complete with `^(BOOL, NSError *)`. - - @see promiseWithAdapter - */ -+ (instancetype __nonnull)promiseWithBooleanAdapterBlock:(void (^ __nonnull)(PMKBooleanAdapter __nonnull adapter))block NS_REFINED_FOR_SWIFT; - -@end - - -#ifdef __cplusplus -extern "C" { -#endif - -/** - Whenever resolving a promise you may resolve with a tuple, eg. - returning from a `then` or `catch` handler or resolving a new promise. - - Consumers of your Promise are not compelled to consume any arguments and - in fact will often only consume the first parameter. Thus ensure the - order of parameters is: from most-important to least-important. - - Currently PromiseKit limits you to THREE parameters to the manifold. -*/ -#define PMKManifold(...) __PMKManifold(__VA_ARGS__, 3, 2, 1) -#define __PMKManifold(_1, _2, _3, N, ...) __PMKArrayWithCount(N, _1, _2, _3) -extern id __nonnull __PMKArrayWithCount(NSUInteger, ...); - -#ifdef __cplusplus -} // Extern C -#endif - - - - -__attribute__((unavailable("See AnyPromise"))) -@interface PMKPromise -@end diff --git a/cocoapods/Pods/PromiseKit/Sources/AnyPromise.m b/cocoapods/Pods/PromiseKit/Sources/AnyPromise.m deleted file mode 100644 index 3725beac..00000000 --- a/cocoapods/Pods/PromiseKit/Sources/AnyPromise.m +++ /dev/null @@ -1,179 +0,0 @@ -#if __has_include("PromiseKit-Swift.h") - #import "PromiseKit-Swift.h" -#else - #import -#endif -#import "PMKCallVariadicBlock.m" -#import "AnyPromise+Private.h" -#import "AnyPromise.h" - -NSString *const PMKErrorDomain = @"PMKErrorDomain"; - - -@implementation AnyPromise { - __AnyPromise *d; -} - -- (instancetype)initWith__D:(__AnyPromise *)dd { - self = [super init]; - if (self) self->d = dd; - return self; -} - -- (instancetype)initWithResolver:(PMKResolver __strong *)resolver { - self = [super init]; - if (self) - d = [[__AnyPromise alloc] initWithResolver:^(void (^resolve)(id)) { - *resolver = resolve; - }]; - return self; -} - -+ (instancetype)promiseWithResolverBlock:(void (^)(PMKResolver _Nonnull))resolveBlock { - id d = [[__AnyPromise alloc] initWithResolver:resolveBlock]; - return [[self alloc] initWith__D:d]; -} - -+ (instancetype)promiseWithValue:(id)value { - //TODO provide a more efficient route for sealed promises - id d = [[__AnyPromise alloc] initWithResolver:^(void (^resolve)(id)) { - resolve(value); - }]; - return [[self alloc] initWith__D:d]; -} - -//TODO remove if possible, but used by when.m -- (void)__pipe:(void (^)(id _Nullable))block { - [d __pipe:block]; -} - -//NOTE used by AnyPromise.swift -- (id)__d { - return d; -} - -- (AnyPromise *(^)(id))then { - return ^(id block) { - return [self->d __thenOn:dispatch_get_main_queue() execute:^(id obj) { - return PMKCallVariadicBlock(block, obj); - }]; - }; -} - -- (AnyPromise *(^)(dispatch_queue_t, id))thenOn { - return ^(dispatch_queue_t queue, id block) { - return [self->d __thenOn:queue execute:^(id obj) { - return PMKCallVariadicBlock(block, obj); - }]; - }; -} - -- (AnyPromise *(^)(id))thenInBackground { - return ^(id block) { - return [self->d __thenOn:dispatch_get_global_queue(0, 0) execute:^(id obj) { - return PMKCallVariadicBlock(block, obj); - }]; - }; -} - -- (AnyPromise *(^)(dispatch_queue_t, id))catchOn { - return ^(dispatch_queue_t q, id block) { - return [self->d __catchOn:q execute:^(id obj) { - return PMKCallVariadicBlock(block, obj); - }]; - }; -} - -- (AnyPromise *(^)(id))catch { - return ^(id block) { - return [self->d __catchOn:dispatch_get_main_queue() execute:^(id obj) { - return PMKCallVariadicBlock(block, obj); - }]; - }; -} - -- (AnyPromise *(^)(id))catchInBackground { - return ^(id block) { - return [self->d __catchOn:dispatch_get_global_queue(0, 0) execute:^(id obj) { - return PMKCallVariadicBlock(block, obj); - }]; - }; -} - -- (AnyPromise *(^)(dispatch_block_t))ensure { - return ^(dispatch_block_t block) { - return [self->d __ensureOn:dispatch_get_main_queue() execute:block]; - }; -} - -- (AnyPromise *(^)(dispatch_queue_t, dispatch_block_t))ensureOn { - return ^(dispatch_queue_t queue, dispatch_block_t block) { - return [self->d __ensureOn:queue execute:block]; - }; -} - -- (id)wait { - return [d __wait]; -} - -- (BOOL)pending { - return [[d valueForKey:@"__pending"] boolValue]; -} - -- (BOOL)rejected { - return IsError([d __value]); -} - -- (BOOL)fulfilled { - return !self.rejected; -} - -- (id)value { - id obj = [d __value]; - - if ([obj isKindOfClass:[PMKArray class]]) { - return obj[0]; - } else { - return obj; - } -} - -@end - - - -@implementation AnyPromise (Adapters) - -+ (instancetype)promiseWithAdapterBlock:(void (^)(PMKAdapter))block { - return [self promiseWithResolverBlock:^(PMKResolver resolve) { - block(^(id value, id error){ - resolve(error ?: value); - }); - }]; -} - -+ (instancetype)promiseWithIntegerAdapterBlock:(void (^)(PMKIntegerAdapter))block { - return [self promiseWithResolverBlock:^(PMKResolver resolve) { - block(^(NSInteger value, id error){ - if (error) { - resolve(error); - } else { - resolve(@(value)); - } - }); - }]; -} - -+ (instancetype)promiseWithBooleanAdapterBlock:(void (^)(PMKBooleanAdapter adapter))block { - return [self promiseWithResolverBlock:^(PMKResolver resolve) { - block(^(BOOL value, id error){ - if (error) { - resolve(error); - } else { - resolve(@(value)); - } - }); - }]; -} - -@end diff --git a/cocoapods/Pods/PromiseKit/Sources/AnyPromise.swift b/cocoapods/Pods/PromiseKit/Sources/AnyPromise.swift deleted file mode 100644 index d7e575d2..00000000 --- a/cocoapods/Pods/PromiseKit/Sources/AnyPromise.swift +++ /dev/null @@ -1,224 +0,0 @@ -import Foundation - -/** - __AnyPromise is an implementation detail. - - Because of how ObjC/Swift compatibility work we have to compose our AnyPromise - with this internal object, however this is still part of the public interface. - Sadly. Please don’t use it. -*/ -@objc(__AnyPromise) public class __AnyPromise: NSObject { - fileprivate let box: Box - - @objc public init(resolver body: (@escaping (Any?) -> Void) -> Void) { - box = EmptyBox() - super.init() - body { - if let p = $0 as? AnyPromise { - p.d.__pipe(self.box.seal) - } else { - self.box.seal($0) - } - } - } - - @objc public func __thenOn(_ q: DispatchQueue, execute: @escaping (Any?) -> Any?) -> AnyPromise { - return AnyPromise(__D: __AnyPromise(resolver: { resolve in - self.__pipe { obj in - if !(obj is NSError) { - q.async { - resolve(execute(obj)) - } - } else { - resolve(obj) - } - } - })) - } - - @objc public func __catchOn(_ q: DispatchQueue, execute: @escaping (Any?) -> Any?) -> AnyPromise { - return AnyPromise(__D: __AnyPromise(resolver: { resolve in - self.__pipe { obj in - if obj is NSError { - q.async { - resolve(execute(obj)) - } - } else { - resolve(obj) - } - } - })) - } - - @objc public func __ensureOn(_ q: DispatchQueue, execute: @escaping () -> Void) -> AnyPromise { - return AnyPromise(__D: __AnyPromise(resolver: { resolve in - self.__pipe { obj in - q.async { - execute() - resolve(obj) - } - } - })) - } - - @objc public func __wait() -> Any? { - if Thread.isMainThread { - conf.logHandler(.waitOnMainThread) - } - - var result = __value - - if result == nil { - let group = DispatchGroup() - group.enter() - self.__pipe { obj in - result = obj - group.leave() - } - group.wait() - } - - return result - } - - /// Internal, do not use! Some behaviors undefined. - @objc public func __pipe(_ to: @escaping (Any?) -> Void) { - let to = { (obj: Any?) -> Void in - if obj is NSError { - to(obj) // or we cannot determine if objects are errors in objc land - } else { - to(obj) - } - } - switch box.inspect() { - case .pending: - box.inspect { - switch $0 { - case .pending(let handlers): - handlers.append { obj in - to(obj) - } - case .resolved(let obj): - to(obj) - } - } - case .resolved(let obj): - to(obj) - } - } - - @objc public var __value: Any? { - switch box.inspect() { - case .resolved(let obj): - return obj - default: - return nil - } - } - - @objc public var __pending: Bool { - switch box.inspect() { - case .pending: - return true - case .resolved: - return false - } - } -} - -extension AnyPromise: Thenable, CatchMixin { - - /// - Returns: A new `AnyPromise` bound to a `Promise`. - public convenience init(_ bridge: U) { - self.init(__D: __AnyPromise(resolver: { resolve in - bridge.pipe { - switch $0 { - case .rejected(let error): - resolve(error as NSError) - case .fulfilled(let value): - resolve(value) - } - } - })) - } - - public func pipe(to body: @escaping (Result) -> Void) { - - func fulfill() { - // calling through to the ObjC `value` property unwraps (any) PMKManifold - // and considering this is the Swift pipe; we want that. - body(.fulfilled(self.value(forKey: "value"))) - } - - switch box.inspect() { - case .pending: - box.inspect { - switch $0 { - case .pending(let handlers): - handlers.append { - if let error = $0 as? Error { - body(.rejected(error)) - } else { - fulfill() - } - } - case .resolved(let error as Error): - body(.rejected(error)) - case .resolved: - fulfill() - } - } - case .resolved(let error as Error): - body(.rejected(error)) - case .resolved: - fulfill() - } - } - - fileprivate var d: __AnyPromise { - return value(forKey: "__d") as! __AnyPromise - } - - var box: Box { - return d.box - } - - public var result: Result? { - guard let value = __value else { - return nil - } - if let error = value as? Error { - return .rejected(error) - } else { - return .fulfilled(value) - } - } - - public typealias T = Any? -} - - -#if swift(>=3.1) -public extension Promise where T == Any? { - convenience init(_ anyPromise: AnyPromise) { - self.init { - anyPromise.pipe(to: $0.resolve) - } - } -} -#else -extension AnyPromise { - public func asPromise() -> Promise { - return Promise(.pending, resolver: { resolve in - pipe { result in - switch result { - case .rejected(let error): - resolve.reject(error) - case .fulfilled(let obj): - resolve.fulfill(obj) - } - } - }) - } -} -#endif diff --git a/cocoapods/Pods/PromiseKit/Sources/Box.swift b/cocoapods/Pods/PromiseKit/Sources/Box.swift deleted file mode 100644 index 43cd3d1b..00000000 --- a/cocoapods/Pods/PromiseKit/Sources/Box.swift +++ /dev/null @@ -1,101 +0,0 @@ -import Dispatch - -enum Sealant { - case pending(Handlers) - case resolved(R) -} - -final class Handlers { - var bodies: [(R) -> Void] = [] - func append(_ item: @escaping(R) -> Void) { bodies.append(item) } -} - -/// - Remark: not protocol ∵ http://www.russbishop.net/swift-associated-types-cont -class Box { - func inspect() -> Sealant { fatalError() } - func inspect(_: (Sealant) -> Void) { fatalError() } - func seal(_: T) {} -} - -final class SealedBox: Box { - let value: T - - init(value: T) { - self.value = value - } - - override func inspect() -> Sealant { - return .resolved(value) - } -} - -class EmptyBox: Box { - private var sealant = Sealant.pending(.init()) - private let barrier = DispatchQueue(label: "org.promisekit.barrier", attributes: .concurrent) - - override func seal(_ value: T) { - var handlers: Handlers! - barrier.sync(flags: .barrier) { - guard case .pending(let _handlers) = self.sealant else { - return // already fulfilled! - } - handlers = _handlers - self.sealant = .resolved(value) - } - - //FIXME we are resolved so should `pipe(to:)` be called at this instant, “thens are called in order” would be invalid - //NOTE we don’t do this in the above `sync` because that could potentially deadlock - //THOUGH since `then` etc. typically invoke after a run-loop cycle, this issue is somewhat less severe - - if let handlers = handlers { - handlers.bodies.forEach{ $0(value) } - } - - //TODO solution is an unfortunate third state “sealed” where then's get added - // to a separate handler pool for that state - // any other solution has potential races - } - - override func inspect() -> Sealant { - var rv: Sealant! - barrier.sync { - rv = self.sealant - } - return rv - } - - override func inspect(_ body: (Sealant) -> Void) { - var sealed = false - barrier.sync(flags: .barrier) { - switch sealant { - case .pending: - // body will append to handlers, so we must stay barrier’d - body(sealant) - case .resolved: - sealed = true - } - } - if sealed { - // we do this outside the barrier to prevent potential deadlocks - // it's safe because we never transition away from this state - body(sealant) - } - } -} - - -extension Optional where Wrapped: DispatchQueue { - @inline(__always) - func async(flags: DispatchWorkItemFlags?, _ body: @escaping() -> Void) { - switch self { - case .none: - body() - case .some(let q): - if let flags = flags { - q.async(flags: flags, execute: body) - } else { - q.async(execute: body) - } - } - } -} diff --git a/cocoapods/Pods/PromiseKit/Sources/Catchable.swift b/cocoapods/Pods/PromiseKit/Sources/Catchable.swift deleted file mode 100644 index 596abdcb..00000000 --- a/cocoapods/Pods/PromiseKit/Sources/Catchable.swift +++ /dev/null @@ -1,256 +0,0 @@ -import Dispatch - -/// Provides `catch` and `recover` to your object that conforms to `Thenable` -public protocol CatchMixin: Thenable -{} - -public extension CatchMixin { - - /** - The provided closure executes when this promise rejects. - - Rejecting a promise cascades: rejecting all subsequent promises (unless - recover is invoked) thus you will typically place your catch at the end - of a chain. Often utility promises will not have a catch, instead - delegating the error handling to the caller. - - - Parameter on: The queue to which the provided closure dispatches. - - Parameter policy: The default policy does not execute your handler for cancellation errors. - - Parameter execute: The handler to execute if this promise is rejected. - - Returns: A promise finalizer. - - SeeAlso: [Cancellation](https://github.com/mxcl/PromiseKit/blob/master/Documentation/CommonPatterns.md#cancellation) - */ - @discardableResult - func `catch`(on: DispatchQueue? = conf.Q.return, flags: DispatchWorkItemFlags? = nil, policy: CatchPolicy = conf.catchPolicy, _ body: @escaping(Error) -> Void) -> PMKFinalizer { - let finalizer = PMKFinalizer() - pipe { - switch $0 { - case .rejected(let error): - guard policy == .allErrors || !error.isCancelled else { - fallthrough - } - on.async(flags: flags) { - body(error) - finalizer.pending.resolve(()) - } - case .fulfilled: - finalizer.pending.resolve(()) - } - } - return finalizer - } -} - -public class PMKFinalizer { - let pending = Guarantee.pending() - - /// `finally` is the same as `ensure`, but it is not chainable - public func finally(on: DispatchQueue? = conf.Q.return, flags: DispatchWorkItemFlags? = nil, _ body: @escaping () -> Void) { - pending.guarantee.done(on: on, flags: flags) { - body() - } - } -} - - -public extension CatchMixin { - - /** - The provided closure executes when this promise rejects. - - Unlike `catch`, `recover` continues the chain. - Use `recover` in circumstances where recovering the chain from certain errors is a possibility. For example: - - firstly { - CLLocationManager.requestLocation() - }.recover { error in - guard error == CLError.unknownLocation else { throw error } - return .value(CLLocation.chicago) - } - - - Parameter on: The queue to which the provided closure dispatches. - - Parameter body: The handler to execute if this promise is rejected. - - SeeAlso: [Cancellation](https://github.com/mxcl/PromiseKit/blob/master/Documentation/CommonPatterns.md#cancellation) - */ - func recover(on: DispatchQueue? = conf.Q.map, flags: DispatchWorkItemFlags? = nil, policy: CatchPolicy = conf.catchPolicy, _ body: @escaping(Error) throws -> U) -> Promise where U.T == T { - let rp = Promise(.pending) - pipe { - switch $0 { - case .fulfilled(let value): - rp.box.seal(.fulfilled(value)) - case .rejected(let error): - if policy == .allErrors || !error.isCancelled { - on.async(flags: flags) { - do { - let rv = try body(error) - guard rv !== rp else { throw PMKError.returnedSelf } - rv.pipe(to: rp.box.seal) - } catch { - rp.box.seal(.rejected(error)) - } - } - } else { - rp.box.seal(.rejected(error)) - } - } - } - return rp - } - - /** - The provided closure executes when this promise rejects. - This variant of `recover` requires the handler to return a Guarantee, thus it returns a Guarantee itself and your closure cannot `throw`. - - Note it is logically impossible for this to take a `catchPolicy`, thus `allErrors` are handled. - - Parameter on: The queue to which the provided closure dispatches. - - Parameter body: The handler to execute if this promise is rejected. - - SeeAlso: [Cancellation](https://github.com/mxcl/PromiseKit/blob/master/Documentation/CommonPatterns.md#cancellation) - */ - @discardableResult - func recover(on: DispatchQueue? = conf.Q.map, flags: DispatchWorkItemFlags? = nil, _ body: @escaping(Error) -> Guarantee) -> Guarantee { - let rg = Guarantee(.pending) - pipe { - switch $0 { - case .fulfilled(let value): - rg.box.seal(value) - case .rejected(let error): - on.async(flags: flags) { - body(error).pipe(to: rg.box.seal) - } - } - } - return rg - } - - /** - The provided closure executes when this promise resolves, whether it rejects or not. - - firstly { - UIApplication.shared.networkActivityIndicatorVisible = true - }.done { - //… - }.ensure { - UIApplication.shared.networkActivityIndicatorVisible = false - }.catch { - //… - } - - - Parameter on: The queue to which the provided closure dispatches. - - Parameter body: The closure that executes when this promise resolves. - - Returns: A new promise, resolved with this promise’s resolution. - */ - func ensure(on: DispatchQueue? = conf.Q.return, flags: DispatchWorkItemFlags? = nil, _ body: @escaping () -> Void) -> Promise { - let rp = Promise(.pending) - pipe { result in - on.async(flags: flags) { - body() - rp.box.seal(result) - } - } - return rp - } - - /** - The provided closure executes when this promise resolves, whether it rejects or not. - The chain waits on the returned `Guarantee`. - - firstly { - setup() - }.done { - //… - }.ensureThen { - teardown() // -> Guarante - }.catch { - //… - } - - - Parameter on: The queue to which the provided closure dispatches. - - Parameter body: The closure that executes when this promise resolves. - - Returns: A new promise, resolved with this promise’s resolution. - */ - func ensureThen(on: DispatchQueue? = conf.Q.return, flags: DispatchWorkItemFlags? = nil, _ body: @escaping () -> Guarantee) -> Promise { - let rp = Promise(.pending) - pipe { result in - on.async(flags: flags) { - body().done { - rp.box.seal(result) - } - } - } - return rp - } - - - - /** - Consumes the Swift unused-result warning. - - Note: You should `catch`, but in situations where you know you don’t need a `catch`, `cauterize` makes your intentions clear. - */ - @discardableResult - func cauterize() -> PMKFinalizer { - return self.catch { - conf.logHandler(.cauterized($0)) - } - } -} - - -public extension CatchMixin where T == Void { - - /** - The provided closure executes when this promise rejects. - - This variant of `recover` is specialized for `Void` promises and de-errors your chain returning a `Guarantee`, thus you cannot `throw` and you must handle all errors including cancellation. - - - Parameter on: The queue to which the provided closure dispatches. - - Parameter body: The handler to execute if this promise is rejected. - - SeeAlso: [Cancellation](https://github.com/mxcl/PromiseKit/blob/master/Documentation/CommonPatterns.md#cancellation) - */ - @discardableResult - func recover(on: DispatchQueue? = conf.Q.map, flags: DispatchWorkItemFlags? = nil, _ body: @escaping(Error) -> Void) -> Guarantee { - let rg = Guarantee(.pending) - pipe { - switch $0 { - case .fulfilled: - rg.box.seal(()) - case .rejected(let error): - on.async(flags: flags) { - body(error) - rg.box.seal(()) - } - } - } - return rg - } - - /** - The provided closure executes when this promise rejects. - - This variant of `recover` ensures that no error is thrown from the handler and allows specifying a catch policy. - - - Parameter on: The queue to which the provided closure dispatches. - - Parameter body: The handler to execute if this promise is rejected. - - SeeAlso: [Cancellation](https://github.com/mxcl/PromiseKit/blob/master/Documentation/CommonPatterns.md#cancellation) - */ - func recover(on: DispatchQueue? = conf.Q.map, flags: DispatchWorkItemFlags? = nil, policy: CatchPolicy = conf.catchPolicy, _ body: @escaping(Error) throws -> Void) -> Promise { - let rg = Promise(.pending) - pipe { - switch $0 { - case .fulfilled: - rg.box.seal(.fulfilled(())) - case .rejected(let error): - if policy == .allErrors || !error.isCancelled { - on.async(flags: flags) { - do { - rg.box.seal(.fulfilled(try body(error))) - } catch { - rg.box.seal(.rejected(error)) - } - } - } else { - rg.box.seal(.rejected(error)) - } - } - } - return rg - } -} diff --git a/cocoapods/Pods/PromiseKit/Sources/Configuration.swift b/cocoapods/Pods/PromiseKit/Sources/Configuration.swift deleted file mode 100644 index 4db52323..00000000 --- a/cocoapods/Pods/PromiseKit/Sources/Configuration.swift +++ /dev/null @@ -1,35 +0,0 @@ -import Dispatch - -/** - PromiseKit’s configurable parameters. - - Do not change these after any Promise machinery executes as the configuration object is not thread-safe. - - We would like it to be, but sadly `Swift` does not expose `dispatch_once` et al. which is what we used to use in order to make the configuration immutable once first used. -*/ -public struct PMKConfiguration { - /// The default queues that promises handlers dispatch to - public var Q: (map: DispatchQueue?, return: DispatchQueue?) = (map: DispatchQueue.main, return: DispatchQueue.main) - - /// The default catch-policy for all `catch` and `resolve` - public var catchPolicy = CatchPolicy.allErrorsExceptCancellation - - /// The closure used to log PromiseKit events. - /// Not thread safe; change before processing any promises. - /// - Note: The default handler calls `print()` - public var logHandler: (LogEvent) -> Void = { event in - switch event { - case .waitOnMainThread: - print("PromiseKit: warning: `wait()` called on main thread!") - case .pendingPromiseDeallocated: - print("PromiseKit: warning: pending promise deallocated") - case .pendingGuaranteeDeallocated: - print("PromiseKit: warning: pending guarantee deallocated") - case .cauterized (let error): - print("PromiseKit:cauterized-error: \(error)") - } - } -} - -/// Modify this as soon as possible in your application’s lifetime -public var conf = PMKConfiguration() diff --git a/cocoapods/Pods/PromiseKit/Sources/CustomStringConvertible.swift b/cocoapods/Pods/PromiseKit/Sources/CustomStringConvertible.swift deleted file mode 100644 index eee0b020..00000000 --- a/cocoapods/Pods/PromiseKit/Sources/CustomStringConvertible.swift +++ /dev/null @@ -1,44 +0,0 @@ - -extension Promise: CustomStringConvertible { - /// - Returns: A description of the state of this promise. - public var description: String { - switch result { - case nil: - return "Promise(…\(T.self))" - case .rejected(let error)?: - return "Promise(\(error))" - case .fulfilled(let value)?: - return "Promise(\(value))" - } - } -} - -extension Promise: CustomDebugStringConvertible { - /// - Returns: A debug-friendly description of the state of this promise. - public var debugDescription: String { - switch box.inspect() { - case .pending(let handlers): - return "Promise<\(T.self)>.pending(handlers: \(handlers.bodies.count))" - case .resolved(.rejected(let error)): - return "Promise<\(T.self)>.rejected(\(type(of: error)).\(error))" - case .resolved(.fulfilled(let value)): - return "Promise<\(T.self)>.fulfilled(\(value))" - } - } -} - -#if !SWIFT_PACKAGE -extension AnyPromise { - /// - Returns: A description of the state of this promise. - override open var description: String { - switch box.inspect() { - case .pending: - return "AnyPromise(…)" - case .resolved(let obj?): - return "AnyPromise(\(obj))" - case .resolved(nil): - return "AnyPromise(nil)" - } - } -} -#endif diff --git a/cocoapods/Pods/PromiseKit/Sources/Deprecations.swift b/cocoapods/Pods/PromiseKit/Sources/Deprecations.swift deleted file mode 100644 index a837dcb8..00000000 --- a/cocoapods/Pods/PromiseKit/Sources/Deprecations.swift +++ /dev/null @@ -1,93 +0,0 @@ -import Dispatch - -@available(*, deprecated, message: "See `init(resolver:)`") -public func wrap(_ body: (@escaping (T?, Error?) -> Void) throws -> Void) -> Promise { - return Promise { seal in - try body(seal.resolve) - } -} - -@available(*, deprecated, message: "See `init(resolver:)`") -public func wrap(_ body: (@escaping (T, Error?) -> Void) throws -> Void) -> Promise { - return Promise { seal in - try body(seal.resolve) - } -} - -@available(*, deprecated, message: "See `init(resolver:)`") -public func wrap(_ body: (@escaping (Error?, T?) -> Void) throws -> Void) -> Promise { - return Promise { seal in - try body(seal.resolve) - } -} - -@available(*, deprecated, message: "See `init(resolver:)`") -public func wrap(_ body: (@escaping (Error?) -> Void) throws -> Void) -> Promise { - return Promise { seal in - try body(seal.resolve) - } -} - -@available(*, deprecated, message: "See `init(resolver:)`") -public func wrap(_ body: (@escaping (T) -> Void) throws -> Void) -> Promise { - return Promise { seal in - try body(seal.fulfill) - } -} - -public extension Promise { - @available(*, deprecated, message: "See `ensure`") - func always(on q: DispatchQueue = .main, execute body: @escaping () -> Void) -> Promise { - return ensure(on: q, body) - } -} - -public extension Thenable { -#if PMKFullDeprecations - /// disabled due to ambiguity with the other `.flatMap` - @available(*, deprecated, message: "See: `compactMap`") - func flatMap(on: DispatchQueue? = conf.Q.map, _ transform: @escaping(T) throws -> U?) -> Promise { - return compactMap(on: on, transform) - } -#endif -} - -public extension Thenable where T: Sequence { -#if PMKFullDeprecations - /// disabled due to ambiguity with the other `.map` - @available(*, deprecated, message: "See: `mapValues`") - func map(on: DispatchQueue? = conf.Q.map, _ transform: @escaping(T.Iterator.Element) throws -> U) -> Promise<[U]> { - return mapValues(on: on, transform) - } - - /// disabled due to ambiguity with the other `.flatMap` - @available(*, deprecated, message: "See: `flatMapValues`") - func flatMap(on: DispatchQueue? = conf.Q.map, _ transform: @escaping(T.Iterator.Element) throws -> U) -> Promise<[U.Iterator.Element]> { - return flatMapValues(on: on, transform) - } -#endif - - @available(*, deprecated, message: "See: `filterValues`") - func filter(on: DispatchQueue? = conf.Q.map, test: @escaping (T.Iterator.Element) -> Bool) -> Promise<[T.Iterator.Element]> { - return filterValues(on: on, test) - } -} - -public extension Thenable where T: Collection { - @available(*, deprecated, message: "See: `firstValue`") - var first: Promise { - return firstValue - } - - @available(*, deprecated, message: "See: `lastValue`") - var last: Promise { - return lastValue - } -} - -public extension Thenable where T: Sequence, T.Iterator.Element: Comparable { - @available(*, deprecated, message: "See: `sortedValues`") - func sorted(on: DispatchQueue? = conf.Q.map) -> Promise<[T.Iterator.Element]> { - return sortedValues(on: on) - } -} diff --git a/cocoapods/Pods/PromiseKit/Sources/Error.swift b/cocoapods/Pods/PromiseKit/Sources/Error.swift deleted file mode 100644 index be22f6b4..00000000 --- a/cocoapods/Pods/PromiseKit/Sources/Error.swift +++ /dev/null @@ -1,111 +0,0 @@ -import Foundation - -public enum PMKError: Error { - /** - The completionHandler with form `(T?, Error?)` was called with `(nil, nil)`. - This is invalid as per Cocoa/Apple calling conventions. - */ - case invalidCallingConvention - - /** - A handler returned its own promise. 99% of the time, this is likely a - programming error. It is also invalid per Promises/A+. - */ - case returnedSelf - - /** `when()`, `race()` etc. were called with invalid parameters, eg. an empty array. */ - case badInput - - /// The operation was cancelled - case cancelled - - /// `nil` was returned from `flatMap` - @available(*, deprecated, message: "See: `compactMap`") - case flatMap(Any, Any.Type) - - /// `nil` was returned from `compactMap` - case compactMap(Any, Any.Type) - - /** - The lastValue or firstValue of a sequence was requested but the sequence was empty. - - Also used if all values of this collection failed the test passed to `firstValue(where:)`. - */ - case emptySequence - - /// no winner in `race(fulfilled:)` - case noWinner -} - -extension PMKError: CustomDebugStringConvertible { - public var debugDescription: String { - switch self { - case .flatMap(let obj, let type): - return "Could not `flatMap<\(type)>`: \(obj)" - case .compactMap(let obj, let type): - return "Could not `compactMap<\(type)>`: \(obj)" - case .invalidCallingConvention: - return "A closure was called with an invalid calling convention, probably (nil, nil)" - case .returnedSelf: - return "A promise handler returned itself" - case .badInput: - return "Bad input was provided to a PromiseKit function" - case .cancelled: - return "The asynchronous sequence was cancelled" - case .emptySequence: - return "The first or last element was requested for an empty sequence" - case .noWinner: - return "All thenables passed to race(fulfilled:) were rejected" - } - } -} - -extension PMKError: LocalizedError { - public var errorDescription: String? { - return debugDescription - } -} - - -//////////////////////////////////////////////////////////// Cancellation - -/// An error that may represent the cancelled condition -public protocol CancellableError: Error { - /// returns true if this Error represents a cancelled condition - var isCancelled: Bool { get } -} - -extension Error { - public var isCancelled: Bool { - do { - throw self - } catch PMKError.cancelled { - return true - } catch let error as CancellableError { - return error.isCancelled - } catch URLError.cancelled { - return true - } catch CocoaError.userCancelled { - return true - } catch let error as NSError { - #if os(macOS) || os(iOS) || os(tvOS) || os(watchOS) - let domain = error.domain - let code = error.code - return ("SKErrorDomain", 2) == (domain, code) - #else - return false - #endif - } catch { - return false - } - } -} - -/// Used by `catch` and `recover` -public enum CatchPolicy { - /// Indicates that `catch` or `recover` handle all error types including cancellable-errors. - case allErrors - - /// Indicates that `catch` or `recover` handle all error except cancellable-errors. - case allErrorsExceptCancellation -} diff --git a/cocoapods/Pods/PromiseKit/Sources/Guarantee.swift b/cocoapods/Pods/PromiseKit/Sources/Guarantee.swift deleted file mode 100644 index ce887cdc..00000000 --- a/cocoapods/Pods/PromiseKit/Sources/Guarantee.swift +++ /dev/null @@ -1,390 +0,0 @@ -import class Foundation.Thread -import Dispatch - -/** - A `Guarantee` is a functional abstraction around an asynchronous operation that cannot error. - - See: `Thenable` -*/ -public final class Guarantee: Thenable { - let box: PromiseKit.Box - - fileprivate init(box: SealedBox) { - self.box = box - } - - /// Returns a `Guarantee` sealed with the provided value. - public static func value(_ value: T) -> Guarantee { - return .init(box: SealedBox(value: value)) - } - - /// Returns a pending `Guarantee` that can be resolved with the provided closure’s parameter. - public init(resolver body: (@escaping(T) -> Void) -> Void) { - box = Box() - body(box.seal) - } - - /// - See: `Thenable.pipe` - public func pipe(to: @escaping(Result) -> Void) { - pipe{ to(.fulfilled($0)) } - } - - func pipe(to: @escaping(T) -> Void) { - switch box.inspect() { - case .pending: - box.inspect { - switch $0 { - case .pending(let handlers): - handlers.append(to) - case .resolved(let value): - to(value) - } - } - case .resolved(let value): - to(value) - } - } - - /// - See: `Thenable.result` - public var result: Result? { - switch box.inspect() { - case .pending: - return nil - case .resolved(let value): - return .fulfilled(value) - } - } - - final private class Box: EmptyBox { - deinit { - switch inspect() { - case .pending: - PromiseKit.conf.logHandler(.pendingGuaranteeDeallocated) - case .resolved: - break - } - } - } - - init(_: PMKUnambiguousInitializer) { - box = Box() - } - - /// Returns a tuple of a pending `Guarantee` and a function that resolves it. - public class func pending() -> (guarantee: Guarantee, resolve: (T) -> Void) { - return { ($0, $0.box.seal) }(Guarantee(.pending)) - } -} - -public extension Guarantee { - @discardableResult - func done(on: DispatchQueue? = conf.Q.return, flags: DispatchWorkItemFlags? = nil, _ body: @escaping(T) -> Void) -> Guarantee { - let rg = Guarantee(.pending) - pipe { (value: T) in - on.async(flags: flags) { - body(value) - rg.box.seal(()) - } - } - return rg - } - - func get(on: DispatchQueue? = conf.Q.return, flags: DispatchWorkItemFlags? = nil, _ body: @escaping (T) -> Void) -> Guarantee { - return map(on: on, flags: flags) { - body($0) - return $0 - } - } - - func map(on: DispatchQueue? = conf.Q.map, flags: DispatchWorkItemFlags? = nil, _ body: @escaping(T) -> U) -> Guarantee { - let rg = Guarantee(.pending) - pipe { value in - on.async(flags: flags) { - rg.box.seal(body(value)) - } - } - return rg - } - - #if swift(>=4) && !swift(>=5.2) - func map(on: DispatchQueue? = conf.Q.map, flags: DispatchWorkItemFlags? = nil, _ keyPath: KeyPath) -> Guarantee { - let rg = Guarantee(.pending) - pipe { value in - on.async(flags: flags) { - rg.box.seal(value[keyPath: keyPath]) - } - } - return rg - } - #endif - - @discardableResult - func then(on: DispatchQueue? = conf.Q.map, flags: DispatchWorkItemFlags? = nil, _ body: @escaping(T) -> Guarantee) -> Guarantee { - let rg = Guarantee(.pending) - pipe { value in - on.async(flags: flags) { - body(value).pipe(to: rg.box.seal) - } - } - return rg - } - - func asVoid() -> Guarantee { - return map(on: nil) { _ in } - } - - /** - Blocks this thread, so you know, don’t call this on a serial thread that - any part of your chain may use. Like the main thread for example. - */ - func wait() -> T { - - if Thread.isMainThread { - conf.logHandler(.waitOnMainThread) - } - - var result = value - - if result == nil { - let group = DispatchGroup() - group.enter() - pipe { (foo: T) in result = foo; group.leave() } - group.wait() - } - - return result! - } -} - -public extension Guarantee where T: Sequence { - /** - `Guarantee<[T]>` => `T` -> `U` => `Guarantee<[U]>` - - Guarantee.value([1,2,3]) - .mapValues { integer in integer * 2 } - .done { - // $0 => [2,4,6] - } - */ - func mapValues(on: DispatchQueue? = conf.Q.map, flags: DispatchWorkItemFlags? = nil, _ transform: @escaping(T.Iterator.Element) -> U) -> Guarantee<[U]> { - return map(on: on, flags: flags) { $0.map(transform) } - } - - #if swift(>=4) && !swift(>=5.2) - /** - `Guarantee<[T]>` => `KeyPath` => `Guarantee<[U]>` - - Guarantee.value([Person(name: "Max"), Person(name: "Roman"), Person(name: "John")]) - .mapValues(\.name) - .done { - // $0 => ["Max", "Roman", "John"] - } - */ - func mapValues(on: DispatchQueue? = conf.Q.map, flags: DispatchWorkItemFlags? = nil, _ keyPath: KeyPath) -> Guarantee<[U]> { - return map(on: on, flags: flags) { $0.map { $0[keyPath: keyPath] } } - } - #endif - - /** - `Guarantee<[T]>` => `T` -> `[U]` => `Guarantee<[U]>` - - Guarantee.value([1,2,3]) - .flatMapValues { integer in [integer, integer] } - .done { - // $0 => [1,1,2,2,3,3] - } - */ - func flatMapValues(on: DispatchQueue? = conf.Q.map, flags: DispatchWorkItemFlags? = nil, _ transform: @escaping(T.Iterator.Element) -> U) -> Guarantee<[U.Iterator.Element]> { - return map(on: on, flags: flags) { (foo: T) in - foo.flatMap { transform($0) } - } - } - - /** - `Guarantee<[T]>` => `T` -> `U?` => `Guarantee<[U]>` - - Guarantee.value(["1","2","a","3"]) - .compactMapValues { Int($0) } - .done { - // $0 => [1,2,3] - } - */ - func compactMapValues(on: DispatchQueue? = conf.Q.map, flags: DispatchWorkItemFlags? = nil, _ transform: @escaping(T.Iterator.Element) -> U?) -> Guarantee<[U]> { - return map(on: on, flags: flags) { foo -> [U] in - #if !swift(>=3.3) || (swift(>=4) && !swift(>=4.1)) - return foo.flatMap(transform) - #else - return foo.compactMap(transform) - #endif - } - } - - #if swift(>=4) && !swift(>=5.2) - /** - `Guarantee<[T]>` => `KeyPath` => `Guarantee<[U]>` - - Guarantee.value([Person(name: "Max"), Person(name: "Roman", age: 26), Person(name: "John", age: 23)]) - .compactMapValues(\.age) - .done { - // $0 => [26, 23] - } - */ - func compactMapValues(on: DispatchQueue? = conf.Q.map, flags: DispatchWorkItemFlags? = nil, _ keyPath: KeyPath) -> Guarantee<[U]> { - return map(on: on, flags: flags) { foo -> [U] in - #if !swift(>=4.1) - return foo.flatMap { $0[keyPath: keyPath] } - #else - return foo.compactMap { $0[keyPath: keyPath] } - #endif - } - } - #endif - - /** - `Guarantee<[T]>` => `T` -> `Guarantee` => `Guaranetee<[U]>` - - Guarantee.value([1,2,3]) - .thenMap { .value($0 * 2) } - .done { - // $0 => [2,4,6] - } - */ - func thenMap(on: DispatchQueue? = conf.Q.map, flags: DispatchWorkItemFlags? = nil, _ transform: @escaping(T.Iterator.Element) -> Guarantee) -> Guarantee<[U]> { - return then(on: on, flags: flags) { - when(fulfilled: $0.map(transform)) - }.recover { - // if happens then is bug inside PromiseKit - fatalError(String(describing: $0)) - } - } - - /** - `Guarantee<[T]>` => `T` -> `Guarantee<[U]>` => `Guarantee<[U]>` - - Guarantee.value([1,2,3]) - .thenFlatMap { integer in .value([integer, integer]) } - .done { - // $0 => [1,1,2,2,3,3] - } - */ - func thenFlatMap(on: DispatchQueue? = conf.Q.map, flags: DispatchWorkItemFlags? = nil, _ transform: @escaping(T.Iterator.Element) -> U) -> Guarantee<[U.T.Iterator.Element]> where U.T: Sequence { - return then(on: on, flags: flags) { - when(fulfilled: $0.map(transform)) - }.map(on: nil) { - $0.flatMap { $0 } - }.recover { - // if happens then is bug inside PromiseKit - fatalError(String(describing: $0)) - } - } - - /** - `Guarantee<[T]>` => `T` -> Bool => `Guarantee<[T]>` - - Guarantee.value([1,2,3]) - .filterValues { $0 > 1 } - .done { - // $0 => [2,3] - } - */ - func filterValues(on: DispatchQueue? = conf.Q.map, flags: DispatchWorkItemFlags? = nil, _ isIncluded: @escaping(T.Iterator.Element) -> Bool) -> Guarantee<[T.Iterator.Element]> { - return map(on: on, flags: flags) { - $0.filter(isIncluded) - } - } - - #if swift(>=4) && !swift(>=5.2) - /** - `Guarantee<[T]>` => `KeyPath` => `Guarantee<[T]>` - - Guarantee.value([Person(name: "Max"), Person(name: "Roman", age: 26, isStudent: false), Person(name: "John", age: 23, isStudent: true)]) - .filterValues(\.isStudent) - .done { - // $0 => [Person(name: "John", age: 23, isStudent: true)] - } - */ - func filterValues(on: DispatchQueue? = conf.Q.map, flags: DispatchWorkItemFlags? = nil, _ keyPath: KeyPath) -> Guarantee<[T.Iterator.Element]> { - return map(on: on, flags: flags) { - $0.filter { $0[keyPath: keyPath] } - } - } - #endif - - /** - `Guarantee<[T]>` => (`T`, `T`) -> Bool => `Guarantee<[T]>` - - Guarantee.value([5,2,3,4,1]) - .sortedValues { $0 > $1 } - .done { - // $0 => [5,4,3,2,1] - } - */ - func sortedValues(on: DispatchQueue? = conf.Q.map, flags: DispatchWorkItemFlags? = nil, _ areInIncreasingOrder: @escaping(T.Iterator.Element, T.Iterator.Element) -> Bool) -> Guarantee<[T.Iterator.Element]> { - return map(on: on, flags: flags) { - $0.sorted(by: areInIncreasingOrder) - } - } -} - -public extension Guarantee where T: Sequence, T.Iterator.Element: Comparable { - /** - `Guarantee<[T]>` => `Guarantee<[T]>` - - Guarantee.value([5,2,3,4,1]) - .sortedValues() - .done { - // $0 => [1,2,3,4,5] - } - */ - func sortedValues(on: DispatchQueue? = conf.Q.map, flags: DispatchWorkItemFlags? = nil) -> Guarantee<[T.Iterator.Element]> { - return map(on: on, flags: flags) { $0.sorted() } - } -} - -#if swift(>=3.1) -public extension Guarantee where T == Void { - convenience init() { - self.init(box: SealedBox(value: Void())) - } - - static var value: Guarantee { - return .value(Void()) - } -} -#endif - - -public extension DispatchQueue { - /** - Asynchronously executes the provided closure on a dispatch queue. - - DispatchQueue.global().async(.promise) { - md5(input) - }.done { md5 in - //… - } - - - Parameter body: The closure that resolves this promise. - - Returns: A new `Guarantee` resolved by the result of the provided closure. - - Note: There is no Promise/Thenable version of this due to Swift compiler ambiguity issues. - */ - @available(macOS 10.10, iOS 2.0, tvOS 10.0, watchOS 2.0, *) - final func async(_: PMKNamespacer, group: DispatchGroup? = nil, qos: DispatchQoS = .default, flags: DispatchWorkItemFlags = [], execute body: @escaping () -> T) -> Guarantee { - let rg = Guarantee(.pending) - async(group: group, qos: qos, flags: flags) { - rg.box.seal(body()) - } - return rg - } -} - - -#if os(Linux) -import func CoreFoundation._CFIsMainThread - -extension Thread { - // `isMainThread` is not implemented yet in swift-corelibs-foundation. - static var isMainThread: Bool { - return _CFIsMainThread() - } -} -#endif diff --git a/cocoapods/Pods/PromiseKit/Sources/LogEvent.swift b/cocoapods/Pods/PromiseKit/Sources/LogEvent.swift deleted file mode 100644 index 99683bdb..00000000 --- a/cocoapods/Pods/PromiseKit/Sources/LogEvent.swift +++ /dev/null @@ -1,30 +0,0 @@ -/** - The PromiseKit events which may be logged. - - ```` - /// A promise or guarantee has blocked the main thread - case waitOnMainThread - - /// A promise has been deallocated without being resolved - case pendingPromiseDeallocated - - /// An error which occurred while fulfilling a promise was swallowed - case cauterized(Error) - - /// Errors which give a string error message - case misc (String) - ```` -*/ -public enum LogEvent { - /// A promise or guarantee has blocked the main thread - case waitOnMainThread - - /// A promise has been deallocated without being resolved - case pendingPromiseDeallocated - - /// A guarantee has been deallocated without being resolved - case pendingGuaranteeDeallocated - - /// An error which occurred while resolving a promise was swallowed - case cauterized(Error) -} diff --git a/cocoapods/Pods/PromiseKit/Sources/NSMethodSignatureForBlock.m b/cocoapods/Pods/PromiseKit/Sources/NSMethodSignatureForBlock.m deleted file mode 100644 index 700c1b37..00000000 --- a/cocoapods/Pods/PromiseKit/Sources/NSMethodSignatureForBlock.m +++ /dev/null @@ -1,77 +0,0 @@ -#import - -struct PMKBlockLiteral { - void *isa; // initialized to &_NSConcreteStackBlock or &_NSConcreteGlobalBlock - int flags; - int reserved; - void (*invoke)(void *, ...); - struct block_descriptor { - unsigned long int reserved; // NULL - unsigned long int size; // sizeof(struct Block_literal_1) - // optional helper functions - void (*copy_helper)(void *dst, void *src); // IFF (1<<25) - void (*dispose_helper)(void *src); // IFF (1<<25) - // required ABI.2010.3.16 - const char *signature; // IFF (1<<30) - } *descriptor; - // imported variables -}; - -typedef NS_OPTIONS(NSUInteger, PMKBlockDescriptionFlags) { - PMKBlockDescriptionFlagsHasCopyDispose = (1 << 25), - PMKBlockDescriptionFlagsHasCtor = (1 << 26), // helpers have C++ code - PMKBlockDescriptionFlagsIsGlobal = (1 << 28), - PMKBlockDescriptionFlagsHasStret = (1 << 29), // IFF BLOCK_HAS_SIGNATURE - PMKBlockDescriptionFlagsHasSignature = (1 << 30) -}; - -// It appears 10.7 doesn't support quotes in method signatures. Remove them -// via @rabovik's method. See https://github.com/OliverLetterer/SLObjectiveCRuntimeAdditions/pull/2 -#if defined(__MAC_OS_X_VERSION_MIN_REQUIRED) && __MAC_OS_X_VERSION_MIN_REQUIRED < __MAC_10_8 -NS_INLINE static const char * pmk_removeQuotesFromMethodSignature(const char *str){ - char *result = malloc(strlen(str) + 1); - BOOL skip = NO; - char *to = result; - char c; - while ((c = *str++)) { - if ('"' == c) { - skip = !skip; - continue; - } - if (skip) continue; - *to++ = c; - } - *to = '\0'; - return result; -} -#endif - -static NSMethodSignature *NSMethodSignatureForBlock(id block) { - if (!block) - return nil; - - struct PMKBlockLiteral *blockRef = (__bridge struct PMKBlockLiteral *)block; - PMKBlockDescriptionFlags flags = (PMKBlockDescriptionFlags)blockRef->flags; - - if (flags & PMKBlockDescriptionFlagsHasSignature) { - void *signatureLocation = blockRef->descriptor; - signatureLocation += sizeof(unsigned long int); - signatureLocation += sizeof(unsigned long int); - - if (flags & PMKBlockDescriptionFlagsHasCopyDispose) { - signatureLocation += sizeof(void(*)(void *dst, void *src)); - signatureLocation += sizeof(void (*)(void *src)); - } - - const char *signature = (*(const char **)signatureLocation); -#if defined(__MAC_OS_X_VERSION_MIN_REQUIRED) && __MAC_OS_X_VERSION_MIN_REQUIRED < __MAC_10_8 - signature = pmk_removeQuotesFromMethodSignature(signature); - NSMethodSignature *nsSignature = [NSMethodSignature signatureWithObjCTypes:signature]; - free((void *)signature); - - return nsSignature; -#endif - return [NSMethodSignature signatureWithObjCTypes:signature]; - } - return 0; -} diff --git a/cocoapods/Pods/PromiseKit/Sources/PMKCallVariadicBlock.m b/cocoapods/Pods/PromiseKit/Sources/PMKCallVariadicBlock.m deleted file mode 100644 index 1453a7d2..00000000 --- a/cocoapods/Pods/PromiseKit/Sources/PMKCallVariadicBlock.m +++ /dev/null @@ -1,120 +0,0 @@ -#import "NSMethodSignatureForBlock.m" -#import -#import -#import "AnyPromise+Private.h" -#import -#import -#import - -#ifndef PMKLog -#define PMKLog NSLog -#endif - -@interface PMKArray : NSObject { -@public - id objs[3]; - NSUInteger count; -} @end - -@implementation PMKArray - -- (id)objectAtIndexedSubscript:(NSUInteger)idx { - if (count <= idx) { - // this check is necessary due to lack of checks in `pmk_safely_call_block` - return nil; - } - return objs[idx]; -} - -@end - -id __PMKArrayWithCount(NSUInteger count, ...) { - PMKArray *this = [PMKArray new]; - this->count = count; - va_list args; - va_start(args, count); - for (NSUInteger x = 0; x < count; ++x) - this->objs[x] = va_arg(args, id); - va_end(args); - return this; -} - - -static inline id _PMKCallVariadicBlock(id frock, id result) { - NSCAssert(frock, @""); - - NSMethodSignature *sig = NSMethodSignatureForBlock(frock); - const NSUInteger nargs = sig.numberOfArguments; - const char rtype = sig.methodReturnType[0]; - - #define call_block_with_rtype(type) ({^type{ \ - switch (nargs) { \ - case 1: \ - return ((type(^)(void))frock)(); \ - case 2: { \ - const id arg = [result class] == [PMKArray class] ? result[0] : result; \ - return ((type(^)(id))frock)(arg); \ - } \ - case 3: { \ - type (^block)(id, id) = frock; \ - return [result class] == [PMKArray class] \ - ? block(result[0], result[1]) \ - : block(result, nil); \ - } \ - case 4: { \ - type (^block)(id, id, id) = frock; \ - return [result class] == [PMKArray class] \ - ? block(result[0], result[1], result[2]) \ - : block(result, nil, nil); \ - } \ - default: \ - @throw [NSException exceptionWithName:NSInvalidArgumentException reason:@"PromiseKit: The provided block’s argument count is unsupported." userInfo:nil]; \ - }}();}) - - switch (rtype) { - case 'v': - call_block_with_rtype(void); - return nil; - case '@': - return call_block_with_rtype(id) ?: nil; - case '*': { - char *str = call_block_with_rtype(char *); - return str ? @(str) : nil; - } - case 'c': return @(call_block_with_rtype(char)); - case 'i': return @(call_block_with_rtype(int)); - case 's': return @(call_block_with_rtype(short)); - case 'l': return @(call_block_with_rtype(long)); - case 'q': return @(call_block_with_rtype(long long)); - case 'C': return @(call_block_with_rtype(unsigned char)); - case 'I': return @(call_block_with_rtype(unsigned int)); - case 'S': return @(call_block_with_rtype(unsigned short)); - case 'L': return @(call_block_with_rtype(unsigned long)); - case 'Q': return @(call_block_with_rtype(unsigned long long)); - case 'f': return @(call_block_with_rtype(float)); - case 'd': return @(call_block_with_rtype(double)); - case 'B': return @(call_block_with_rtype(_Bool)); - case '^': - if (strcmp(sig.methodReturnType, "^v") == 0) { - call_block_with_rtype(void); - return nil; - } - // else fall through! - default: - @throw [NSException exceptionWithName:@"PromiseKit" reason:@"PromiseKit: Unsupported method signature." userInfo:nil]; - } -} - -static id PMKCallVariadicBlock(id frock, id result) { - @try { - return _PMKCallVariadicBlock(frock, result); - } @catch (id thrown) { - if ([thrown isKindOfClass:[NSString class]]) - return thrown; - if ([thrown isKindOfClass:[NSError class]]) - return thrown; - - // we don’t catch objc exceptions: they are meant to crash your app - @throw thrown; - } -} diff --git a/cocoapods/Pods/PromiseKit/Sources/Promise.swift b/cocoapods/Pods/PromiseKit/Sources/Promise.swift deleted file mode 100644 index ef573522..00000000 --- a/cocoapods/Pods/PromiseKit/Sources/Promise.swift +++ /dev/null @@ -1,184 +0,0 @@ -import class Foundation.Thread -import Dispatch - -/** - A `Promise` is a functional abstraction around a failable asynchronous operation. - - See: `Thenable` - */ -public final class Promise: Thenable, CatchMixin { - let box: Box> - - fileprivate init(box: SealedBox>) { - self.box = box - } - - /** - Initialize a new fulfilled promise. - - We do not provide `init(value:)` because Swift is “greedy” - and would pick that initializer in cases where it should pick - one of the other more specific options leading to Promises with - `T` that is eg: `Error` or worse `(T->Void,Error->Void)` for - uses of our PMK < 4 pending initializer due to Swift trailing - closure syntax (nothing good comes without pain!). - - Though often easy to detect, sometimes these issues would be - hidden by other type inference leading to some nasty bugs in - production. - - In PMK5 we tried to work around this by making the pending - initializer take the form `Promise(.pending)` but this led to - bad migration errors for PMK4 users. Hence instead we quickly - released PMK6 and now only provide this initializer for making - sealed & fulfilled promises. - - Usage is still (usually) good: - - guard foo else { - return .value(bar) - } - */ - public static func value(_ value: T) -> Promise { - return Promise(box: SealedBox(value: .fulfilled(value))) - } - - /// Initialize a new rejected promise. - public init(error: Error) { - box = SealedBox(value: .rejected(error)) - } - - /// Initialize a new promise bound to the provided `Thenable`. - public init(_ bridge: U) where U.T == T { - box = EmptyBox() - bridge.pipe(to: box.seal) - } - - /// Initialize a new promise that can be resolved with the provided `Resolver`. - public init(resolver body: (Resolver) throws -> Void) { - box = EmptyBox() - let resolver = Resolver(box) - do { - try body(resolver) - } catch { - resolver.reject(error) - } - } - - /// - Returns: a tuple of a new pending promise and its `Resolver`. - public class func pending() -> (promise: Promise, resolver: Resolver) { - return { ($0, Resolver($0.box)) }(Promise(.pending)) - } - - /// - See: `Thenable.pipe` - public func pipe(to: @escaping(Result) -> Void) { - switch box.inspect() { - case .pending: - box.inspect { - switch $0 { - case .pending(let handlers): - handlers.append(to) - case .resolved(let value): - to(value) - } - } - case .resolved(let value): - to(value) - } - } - - /// - See: `Thenable.result` - public var result: Result? { - switch box.inspect() { - case .pending: - return nil - case .resolved(let result): - return result - } - } - - init(_: PMKUnambiguousInitializer) { - box = EmptyBox() - } -} - -public extension Promise { - /** - Blocks this thread, so—you know—don’t call this on a serial thread that - any part of your chain may use. Like the main thread for example. - */ - func wait() throws -> T { - - if Thread.isMainThread { - conf.logHandler(LogEvent.waitOnMainThread) - } - - var result = self.result - - if result == nil { - let group = DispatchGroup() - group.enter() - pipe { result = $0; group.leave() } - group.wait() - } - - switch result! { - case .rejected(let error): - throw error - case .fulfilled(let value): - return value - } - } -} - -#if swift(>=3.1) -extension Promise where T == Void { - /// Initializes a new promise fulfilled with `Void` - public convenience init() { - self.init(box: SealedBox(value: .fulfilled(Void()))) - } - - /// Returns a new promise fulfilled with `Void` - public static var value: Promise { - return .value(Void()) - } -} -#endif - - -public extension DispatchQueue { - /** - Asynchronously executes the provided closure on a dispatch queue. - - DispatchQueue.global().async(.promise) { - try md5(input) - }.done { md5 in - //… - } - - - Parameter body: The closure that resolves this promise. - - Returns: A new `Promise` resolved by the result of the provided closure. - - Note: There is no Promise/Thenable version of this due to Swift compiler ambiguity issues. - */ - @available(macOS 10.10, iOS 8.0, tvOS 9.0, watchOS 2.0, *) - final func async(_: PMKNamespacer, group: DispatchGroup? = nil, qos: DispatchQoS = .default, flags: DispatchWorkItemFlags = [], execute body: @escaping () throws -> T) -> Promise { - let promise = Promise(.pending) - async(group: group, qos: qos, flags: flags) { - do { - promise.box.seal(.fulfilled(try body())) - } catch { - promise.box.seal(.rejected(error)) - } - } - return promise - } -} - - -/// used by our extensions to provide unambiguous functions with the same name as the original function -public enum PMKNamespacer { - case promise -} - -enum PMKUnambiguousInitializer { - case pending -} diff --git a/cocoapods/Pods/PromiseKit/Sources/PromiseKit.h b/cocoapods/Pods/PromiseKit/Sources/PromiseKit.h deleted file mode 100644 index c30d9376..00000000 --- a/cocoapods/Pods/PromiseKit/Sources/PromiseKit.h +++ /dev/null @@ -1,7 +0,0 @@ -#import -#import - -#import // `FOUNDATION_EXPORT` - -FOUNDATION_EXPORT double PromiseKitVersionNumber; -FOUNDATION_EXPORT const unsigned char PromiseKitVersionString[]; diff --git a/cocoapods/Pods/PromiseKit/Sources/Resolver.swift b/cocoapods/Pods/PromiseKit/Sources/Resolver.swift deleted file mode 100644 index c6b339fc..00000000 --- a/cocoapods/Pods/PromiseKit/Sources/Resolver.swift +++ /dev/null @@ -1,111 +0,0 @@ -/// An object for resolving promises -public final class Resolver { - let box: Box> - - init(_ box: Box>) { - self.box = box - } - - deinit { - if case .pending = box.inspect() { - conf.logHandler(.pendingPromiseDeallocated) - } - } -} - -public extension Resolver { - /// Fulfills the promise with the provided value - func fulfill(_ value: T) { - box.seal(.fulfilled(value)) - } - - /// Rejects the promise with the provided error - func reject(_ error: Error) { - box.seal(.rejected(error)) - } - - /// Resolves the promise with the provided result - func resolve(_ result: Result) { - box.seal(result) - } - - /// Resolves the promise with the provided value or error - func resolve(_ obj: T?, _ error: Error?) { - if let error = error { - reject(error) - } else if let obj = obj { - fulfill(obj) - } else { - reject(PMKError.invalidCallingConvention) - } - } - - /// Fulfills the promise with the provided value unless the provided error is non-nil - func resolve(_ obj: T, _ error: Error?) { - if let error = error { - reject(error) - } else { - fulfill(obj) - } - } - - /// Resolves the promise, provided for non-conventional value-error ordered completion handlers. - func resolve(_ error: Error?, _ obj: T?) { - resolve(obj, error) - } -} - -#if swift(>=3.1) -extension Resolver where T == Void { - /// Fulfills the promise unless error is non-nil - public func resolve(_ error: Error?) { - if let error = error { - reject(error) - } else { - fulfill(()) - } - } -#if false - // disabled ∵ https://github.com/mxcl/PromiseKit/issues/990 - - /// Fulfills the promise - public func fulfill() { - self.fulfill(()) - } -#else - /// Fulfills the promise - /// - Note: underscore is present due to: https://github.com/mxcl/PromiseKit/issues/990 - public func fulfill_() { - self.fulfill(()) - } -#endif -} -#endif - -#if swift(>=5.0) -extension Resolver { - /// Resolves the promise with the provided result - public func resolve(_ result: Swift.Result) { - switch result { - case .failure(let error): self.reject(error) - case .success(let value): self.fulfill(value) - } - } -} -#endif - -public enum Result { - case fulfilled(T) - case rejected(Error) -} - -public extension PromiseKit.Result { - var isFulfilled: Bool { - switch self { - case .fulfilled: - return true - case .rejected: - return false - } - } -} diff --git a/cocoapods/Pods/PromiseKit/Sources/Thenable.swift b/cocoapods/Pods/PromiseKit/Sources/Thenable.swift deleted file mode 100644 index 7d88ea6e..00000000 --- a/cocoapods/Pods/PromiseKit/Sources/Thenable.swift +++ /dev/null @@ -1,533 +0,0 @@ -import Dispatch - -/// Thenable represents an asynchronous operation that can be chained. -public protocol Thenable: AnyObject { - /// The type of the wrapped value - associatedtype T - - /// `pipe` is immediately executed when this `Thenable` is resolved - func pipe(to: @escaping(Result) -> Void) - - /// The resolved result or nil if pending. - var result: Result? { get } -} - -public extension Thenable { - /** - The provided closure executes when this promise is fulfilled. - - This allows chaining promises. The promise returned by the provided closure is resolved before the promise returned by this closure resolves. - - - Parameter on: The queue to which the provided closure dispatches. - - Parameter body: The closure that executes when this promise is fulfilled. It must return a promise. - - Returns: A new promise that resolves when the promise returned from the provided closure resolves. For example: - - firstly { - URLSession.shared.dataTask(.promise, with: url1) - }.then { response in - transform(data: response.data) - }.done { transformation in - //… - } - */ - func then(on: DispatchQueue? = conf.Q.map, flags: DispatchWorkItemFlags? = nil, _ body: @escaping(T) throws -> U) -> Promise { - let rp = Promise(.pending) - pipe { - switch $0 { - case .fulfilled(let value): - on.async(flags: flags) { - do { - let rv = try body(value) - guard rv !== rp else { throw PMKError.returnedSelf } - rv.pipe(to: rp.box.seal) - } catch { - rp.box.seal(.rejected(error)) - } - } - case .rejected(let error): - rp.box.seal(.rejected(error)) - } - } - return rp - } - - /** - The provided closure is executed when this promise is fulfilled. - - This is like `then` but it requires the closure to return a non-promise. - - - Parameter on: The queue to which the provided closure dispatches. - - Parameter transform: The closure that is executed when this Promise is fulfilled. It must return a non-promise. - - Returns: A new promise that is fulfilled with the value returned from the provided closure or rejected if the provided closure throws. For example: - - firstly { - URLSession.shared.dataTask(.promise, with: url1) - }.map { response in - response.data.length - }.done { length in - //… - } - */ - func map(on: DispatchQueue? = conf.Q.map, flags: DispatchWorkItemFlags? = nil, _ transform: @escaping(T) throws -> U) -> Promise { - let rp = Promise(.pending) - pipe { - switch $0 { - case .fulfilled(let value): - on.async(flags: flags) { - do { - rp.box.seal(.fulfilled(try transform(value))) - } catch { - rp.box.seal(.rejected(error)) - } - } - case .rejected(let error): - rp.box.seal(.rejected(error)) - } - } - return rp - } - - #if swift(>=4) && !swift(>=5.2) - /** - Similar to func `map(on: DispatchQueue? = conf.Q.map, flags: DispatchWorkItemFlags? = nil, _ transform: @escaping(T) throws -> U) -> Promise`, but accepts a key path instead of a closure. - - - Parameter on: The queue to which the provided key path for value dispatches. - - Parameter keyPath: The key path to the value that is using when this Promise is fulfilled. - - Returns: A new promise that is fulfilled with the value for the provided key path. - */ - func map(on: DispatchQueue? = conf.Q.map, flags: DispatchWorkItemFlags? = nil, _ keyPath: KeyPath) -> Promise { - let rp = Promise(.pending) - pipe { - switch $0 { - case .fulfilled(let value): - on.async(flags: flags) { - rp.box.seal(.fulfilled(value[keyPath: keyPath])) - } - case .rejected(let error): - rp.box.seal(.rejected(error)) - } - } - return rp - } - #endif - - /** - The provided closure is executed when this promise is fulfilled. - - In your closure return an `Optional`, if you return `nil` the resulting promise is rejected with `PMKError.compactMap`, otherwise the promise is fulfilled with the unwrapped value. - - firstly { - URLSession.shared.dataTask(.promise, with: url) - }.compactMap { - try JSONSerialization.jsonObject(with: $0.data) as? [String: String] - }.done { dictionary in - //… - }.catch { - // either `PMKError.compactMap` or a `JSONError` - } - */ - func compactMap(on: DispatchQueue? = conf.Q.map, flags: DispatchWorkItemFlags? = nil, _ transform: @escaping(T) throws -> U?) -> Promise { - let rp = Promise(.pending) - pipe { - switch $0 { - case .fulfilled(let value): - on.async(flags: flags) { - do { - if let rv = try transform(value) { - rp.box.seal(.fulfilled(rv)) - } else { - throw PMKError.compactMap(value, U.self) - } - } catch { - rp.box.seal(.rejected(error)) - } - } - case .rejected(let error): - rp.box.seal(.rejected(error)) - } - } - return rp - } - - #if swift(>=4) && !swift(>=5.2) - /** - Similar to func `compactMap(on: DispatchQueue? = conf.Q.map, flags: DispatchWorkItemFlags? = nil, _ transform: @escaping(T) throws -> U?) -> Promise`, but accepts a key path instead of a closure. - - - Parameter on: The queue to which the provided key path for value dispatches. - - Parameter keyPath: The key path to the value that is using when this Promise is fulfilled. If the value for `keyPath` is `nil` the resulting promise is rejected with `PMKError.compactMap`. - - Returns: A new promise that is fulfilled with the value for the provided key path. - */ - func compactMap(on: DispatchQueue? = conf.Q.map, flags: DispatchWorkItemFlags? = nil, _ keyPath: KeyPath) -> Promise { - let rp = Promise(.pending) - pipe { - switch $0 { - case .fulfilled(let value): - on.async(flags: flags) { - do { - if let rv = value[keyPath: keyPath] { - rp.box.seal(.fulfilled(rv)) - } else { - throw PMKError.compactMap(value, U.self) - } - } catch { - rp.box.seal(.rejected(error)) - } - } - case .rejected(let error): - rp.box.seal(.rejected(error)) - } - } - return rp - } - #endif - - /** - The provided closure is executed when this promise is fulfilled. - - Equivalent to `map { x -> Void in`, but since we force the `Void` return Swift - is happier and gives you less hassle about your closure’s qualification. - - - Parameter on: The queue to which the provided closure dispatches. - - Parameter body: The closure that is executed when this Promise is fulfilled. - - Returns: A new promise fulfilled as `Void` or rejected if the provided closure throws. - - firstly { - URLSession.shared.dataTask(.promise, with: url) - }.done { response in - print(response.data) - } - */ - func done(on: DispatchQueue? = conf.Q.return, flags: DispatchWorkItemFlags? = nil, _ body: @escaping(T) throws -> Void) -> Promise { - let rp = Promise(.pending) - pipe { - switch $0 { - case .fulfilled(let value): - on.async(flags: flags) { - do { - try body(value) - rp.box.seal(.fulfilled(())) - } catch { - rp.box.seal(.rejected(error)) - } - } - case .rejected(let error): - rp.box.seal(.rejected(error)) - } - } - return rp - } - - /** - The provided closure is executed when this promise is fulfilled. - - This is like `done` but it returns the same value that the handler is fed. - `get` immutably accesses the fulfilled value; the returned Promise maintains that value. - - - Parameter on: The queue to which the provided closure dispatches. - - Parameter body: The closure that is executed when this Promise is fulfilled. - - Returns: A new promise that is fulfilled with the value that the handler is fed or rejected if the provided closure throws. For example: - - firstly { - .value(1) - }.get { foo in - print(foo, " is 1") - }.done { foo in - print(foo, " is 1") - }.done { foo in - print(foo, " is Void") - } - */ - func get(on: DispatchQueue? = conf.Q.return, flags: DispatchWorkItemFlags? = nil, _ body: @escaping (T) throws -> Void) -> Promise { - return map(on: on, flags: flags) { - try body($0) - return $0 - } - } - - /** - The provided closure is executed with promise result. - - This is like `get` but provides the Result of the Promise so you can inspect the value of the chain at this point without causing any side effects. - - - Parameter on: The queue to which the provided closure dispatches. - - Parameter body: The closure that is executed with Result of Promise. - - Returns: A new promise that is resolved with the result that the handler is fed. For example: - - promise.tap{ print($0) }.then{ /*…*/ } - */ - func tap(on: DispatchQueue? = conf.Q.map, flags: DispatchWorkItemFlags? = nil, _ body: @escaping(Result) -> Void) -> Promise { - return Promise { seal in - pipe { result in - on.async(flags: flags) { - body(result) - seal.resolve(result) - } - } - } - } - - /// - Returns: a new promise chained off this promise but with its value discarded. - func asVoid() -> Promise { - return map(on: nil) { _ in } - } -} - -public extension Thenable { - /** - - Returns: The error with which this promise was rejected; `nil` if this promise is not rejected. - */ - var error: Error? { - switch result { - case .none: - return nil - case .some(.fulfilled): - return nil - case .some(.rejected(let error)): - return error - } - } - - /** - - Returns: `true` if the promise has not yet resolved. - */ - var isPending: Bool { - return result == nil - } - - /** - - Returns: `true` if the promise has resolved. - */ - var isResolved: Bool { - return !isPending - } - - /** - - Returns: `true` if the promise was fulfilled. - */ - var isFulfilled: Bool { - return value != nil - } - - /** - - Returns: `true` if the promise was rejected. - */ - var isRejected: Bool { - return error != nil - } - - /** - - Returns: The value with which this promise was fulfilled or `nil` if this promise is pending or rejected. - */ - var value: T? { - switch result { - case .none: - return nil - case .some(.fulfilled(let value)): - return value - case .some(.rejected): - return nil - } - } -} - -public extension Thenable where T: Sequence { - /** - `Promise<[T]>` => `T` -> `U` => `Promise<[U]>` - - firstly { - .value([1,2,3]) - }.mapValues { integer in - integer * 2 - }.done { - // $0 => [2,4,6] - } - */ - func mapValues(on: DispatchQueue? = conf.Q.map, flags: DispatchWorkItemFlags? = nil, _ transform: @escaping(T.Iterator.Element) throws -> U) -> Promise<[U]> { - return map(on: on, flags: flags){ try $0.map(transform) } - } - - #if swift(>=4) && !swift(>=5.2) - /** - `Promise<[T]>` => `KeyPath` => `Promise<[U]>` - - firstly { - .value([Person(name: "Max"), Person(name: "Roman"), Person(name: "John")]) - }.mapValues(\.name).done { - // $0 => ["Max", "Roman", "John"] - } - */ - func mapValues(on: DispatchQueue? = conf.Q.map, flags: DispatchWorkItemFlags? = nil, _ keyPath: KeyPath) -> Promise<[U]> { - return map(on: on, flags: flags){ $0.map { $0[keyPath: keyPath] } } - } - #endif - - /** - `Promise<[T]>` => `T` -> `[U]` => `Promise<[U]>` - - firstly { - .value([1,2,3]) - }.flatMapValues { integer in - [integer, integer] - }.done { - // $0 => [1,1,2,2,3,3] - } - */ - func flatMapValues(on: DispatchQueue? = conf.Q.map, flags: DispatchWorkItemFlags? = nil, _ transform: @escaping(T.Iterator.Element) throws -> U) -> Promise<[U.Iterator.Element]> { - return map(on: on, flags: flags){ (foo: T) in - try foo.flatMap{ try transform($0) } - } - } - - /** - `Promise<[T]>` => `T` -> `U?` => `Promise<[U]>` - - firstly { - .value(["1","2","a","3"]) - }.compactMapValues { - Int($0) - }.done { - // $0 => [1,2,3] - } - */ - func compactMapValues(on: DispatchQueue? = conf.Q.map, flags: DispatchWorkItemFlags? = nil, _ transform: @escaping(T.Iterator.Element) throws -> U?) -> Promise<[U]> { - return map(on: on, flags: flags) { foo -> [U] in - #if !swift(>=3.3) || (swift(>=4) && !swift(>=4.1)) - return try foo.flatMap(transform) - #else - return try foo.compactMap(transform) - #endif - } - } - - #if swift(>=4) && !swift(>=5.2) - /** - `Promise<[T]>` => `KeyPath` => `Promise<[U]>` - - firstly { - .value([Person(name: "Max"), Person(name: "Roman", age: 26), Person(name: "John", age: 23)]) - }.compactMapValues(\.age).done { - // $0 => [26, 23] - } - */ - func compactMapValues(on: DispatchQueue? = conf.Q.map, flags: DispatchWorkItemFlags? = nil, _ keyPath: KeyPath) -> Promise<[U]> { - return map(on: on, flags: flags) { foo -> [U] in - #if !swift(>=4.1) - return foo.flatMap { $0[keyPath: keyPath] } - #else - return foo.compactMap { $0[keyPath: keyPath] } - #endif - } - } - #endif - - /** - `Promise<[T]>` => `T` -> `Promise` => `Promise<[U]>` - - firstly { - .value([1,2,3]) - }.thenMap { integer in - .value(integer * 2) - }.done { - // $0 => [2,4,6] - } - */ - func thenMap(on: DispatchQueue? = conf.Q.map, flags: DispatchWorkItemFlags? = nil, _ transform: @escaping(T.Iterator.Element) throws -> U) -> Promise<[U.T]> { - return then(on: on, flags: flags) { - when(fulfilled: try $0.map(transform)) - } - } - - /** - `Promise<[T]>` => `T` -> `Promise<[U]>` => `Promise<[U]>` - - firstly { - .value([1,2,3]) - }.thenFlatMap { integer in - .value([integer, integer]) - }.done { - // $0 => [1,1,2,2,3,3] - } - */ - func thenFlatMap(on: DispatchQueue? = conf.Q.map, flags: DispatchWorkItemFlags? = nil, _ transform: @escaping(T.Iterator.Element) throws -> U) -> Promise<[U.T.Iterator.Element]> where U.T: Sequence { - return then(on: on, flags: flags) { - when(fulfilled: try $0.map(transform)) - }.map(on: nil) { - $0.flatMap{ $0 } - } - } - - /** - `Promise<[T]>` => `T` -> Bool => `Promise<[T]>` - - firstly { - .value([1,2,3]) - }.filterValues { - $0 > 1 - }.done { - // $0 => [2,3] - } - */ - func filterValues(on: DispatchQueue? = conf.Q.map, flags: DispatchWorkItemFlags? = nil, _ isIncluded: @escaping (T.Iterator.Element) -> Bool) -> Promise<[T.Iterator.Element]> { - return map(on: on, flags: flags) { - $0.filter(isIncluded) - } - } - - #if swift(>=4) && !swift(>=5.2) - /** - `Promise<[T]>` => `KeyPath` => `Promise<[T]>` - - firstly { - .value([Person(name: "Max"), Person(name: "Roman", age: 26, isStudent: false), Person(name: "John", age: 23, isStudent: true)]) - }.filterValues(\.isStudent).done { - // $0 => [Person(name: "John", age: 23, isStudent: true)] - } - */ - func filterValues(on: DispatchQueue? = conf.Q.map, flags: DispatchWorkItemFlags? = nil, _ keyPath: KeyPath) -> Promise<[T.Iterator.Element]> { - return map(on: on, flags: flags) { - $0.filter { $0[keyPath: keyPath] } - } - } - #endif -} - -public extension Thenable where T: Collection { - /// - Returns: a promise fulfilled with the first value of this `Collection` or, if empty, a promise rejected with PMKError.emptySequence. - var firstValue: Promise { - return map(on: nil) { aa in - if let a1 = aa.first { - return a1 - } else { - throw PMKError.emptySequence - } - } - } - - func firstValue(on: DispatchQueue? = conf.Q.map, flags: DispatchWorkItemFlags? = nil, where test: @escaping (T.Iterator.Element) -> Bool) -> Promise { - return map(on: on, flags: flags) { - for x in $0 where test(x) { - return x - } - throw PMKError.emptySequence - } - } - - /// - Returns: a promise fulfilled with the last value of this `Collection` or, if empty, a promise rejected with PMKError.emptySequence. - var lastValue: Promise { - return map(on: nil) { aa in - if aa.isEmpty { - throw PMKError.emptySequence - } else { - let i = aa.index(aa.endIndex, offsetBy: -1) - return aa[i] - } - } - } -} - -public extension Thenable where T: Sequence, T.Iterator.Element: Comparable { - /// - Returns: a promise fulfilled with the sorted values of this `Sequence`. - func sortedValues(on: DispatchQueue? = conf.Q.map, flags: DispatchWorkItemFlags? = nil) -> Promise<[T.Iterator.Element]> { - return map(on: on, flags: flags){ $0.sorted() } - } -} diff --git a/cocoapods/Pods/PromiseKit/Sources/after.m b/cocoapods/Pods/PromiseKit/Sources/after.m deleted file mode 100644 index 25f9966f..00000000 --- a/cocoapods/Pods/PromiseKit/Sources/after.m +++ /dev/null @@ -1,14 +0,0 @@ -#import "AnyPromise.h" -@import Dispatch; -@import Foundation.NSDate; -@import Foundation.NSValue; - -/// @return A promise that fulfills after the specified duration. -AnyPromise *PMKAfter(NSTimeInterval duration) { - return [AnyPromise promiseWithResolverBlock:^(PMKResolver resolve) { - dispatch_time_t time = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(duration * NSEC_PER_SEC)); - dispatch_after(time, dispatch_get_global_queue(0, 0), ^{ - resolve(@(duration)); - }); - }]; -} diff --git a/cocoapods/Pods/PromiseKit/Sources/after.swift b/cocoapods/Pods/PromiseKit/Sources/after.swift deleted file mode 100644 index cdaeccd9..00000000 --- a/cocoapods/Pods/PromiseKit/Sources/after.swift +++ /dev/null @@ -1,46 +0,0 @@ -import struct Foundation.TimeInterval -import Dispatch - -/** - after(seconds: 1.5).then { - //… - } - -- Returns: A guarantee that resolves after the specified duration. -*/ -public func after(seconds: TimeInterval) -> Guarantee { - let (rg, seal) = Guarantee.pending() - let when = DispatchTime.now() + seconds -#if swift(>=4.0) - q.asyncAfter(deadline: when) { seal(()) } -#else - q.asyncAfter(deadline: when, execute: seal) -#endif - return rg -} - -/** - after(.seconds(2)).then { - //… - } - - - Returns: A guarantee that resolves after the specified duration. -*/ -public func after(_ interval: DispatchTimeInterval) -> Guarantee { - let (rg, seal) = Guarantee.pending() - let when = DispatchTime.now() + interval -#if swift(>=4.0) - q.asyncAfter(deadline: when) { seal(()) } -#else - q.asyncAfter(deadline: when, execute: seal) -#endif - return rg -} - -private var q: DispatchQueue { - if #available(macOS 10.10, iOS 8.0, tvOS 9.0, watchOS 2.0, *) { - return DispatchQueue.global(qos: .default) - } else { - return DispatchQueue.global(priority: .default) - } -} diff --git a/cocoapods/Pods/PromiseKit/Sources/dispatch_promise.m b/cocoapods/Pods/PromiseKit/Sources/dispatch_promise.m deleted file mode 100644 index ecb89f71..00000000 --- a/cocoapods/Pods/PromiseKit/Sources/dispatch_promise.m +++ /dev/null @@ -1,10 +0,0 @@ -#import "AnyPromise.h" -@import Dispatch; - -AnyPromise *dispatch_promise_on(dispatch_queue_t queue, id block) { - return [AnyPromise promiseWithValue:nil].thenOn(queue, block); -} - -AnyPromise *dispatch_promise(id block) { - return dispatch_promise_on(dispatch_get_global_queue(0, 0), block); -} diff --git a/cocoapods/Pods/PromiseKit/Sources/firstly.swift b/cocoapods/Pods/PromiseKit/Sources/firstly.swift deleted file mode 100644 index 4bfc0385..00000000 --- a/cocoapods/Pods/PromiseKit/Sources/firstly.swift +++ /dev/null @@ -1,39 +0,0 @@ -import Dispatch - -/** - Judicious use of `firstly` *may* make chains more readable. - - Compare: - - URLSession.shared.dataTask(url: url1).then { - URLSession.shared.dataTask(url: url2) - }.then { - URLSession.shared.dataTask(url: url3) - } - - With: - - firstly { - URLSession.shared.dataTask(url: url1) - }.then { - URLSession.shared.dataTask(url: url2) - }.then { - URLSession.shared.dataTask(url: url3) - } - - - Note: the block you pass executes immediately on the current thread/queue. - */ -public func firstly(execute body: () throws -> U) -> Promise { - do { - let rp = Promise(.pending) - try body().pipe(to: rp.box.seal) - return rp - } catch { - return Promise(error: error) - } -} - -/// - See: firstly() -public func firstly(execute body: () -> Guarantee) -> Guarantee { - return body() -} diff --git a/cocoapods/Pods/PromiseKit/Sources/fwd.h b/cocoapods/Pods/PromiseKit/Sources/fwd.h deleted file mode 100644 index 480d1480..00000000 --- a/cocoapods/Pods/PromiseKit/Sources/fwd.h +++ /dev/null @@ -1,165 +0,0 @@ -#import -#import - -@class AnyPromise; -extern NSString * __nonnull const PMKErrorDomain; - -#define PMKFailingPromiseIndexKey @"PMKFailingPromiseIndexKey" -#define PMKJoinPromisesKey @"PMKJoinPromisesKey" - -#define PMKUnexpectedError 1l -#define PMKInvalidUsageError 3l -#define PMKAccessDeniedError 4l -#define PMKOperationFailed 8l -#define PMKTaskError 9l -#define PMKJoinError 10l - - -#ifdef __cplusplus -extern "C" { -#endif - -/** - @return A new promise that resolves after the specified duration. - - @parameter duration The duration in seconds to wait before this promise is resolve. - - For example: - - PMKAfter(1).then(^{ - //… - }); -*/ -extern AnyPromise * __nonnull PMKAfter(NSTimeInterval duration) NS_REFINED_FOR_SWIFT; - - - -/** - `when` is a mechanism for waiting more than one asynchronous task and responding when they are all complete. - - `PMKWhen` accepts varied input. If an array is passed then when those promises fulfill, when’s promise fulfills with an array of fulfillment values. If a dictionary is passed then the same occurs, but when’s promise fulfills with a dictionary of fulfillments keyed as per the input. - - Interestingly, if a single promise is passed then when waits on that single promise, and if a single non-promise object is passed then when fulfills immediately with that object. If the array or dictionary that is passed contains objects that are not promises, then these objects are considered fulfilled promises. The reason we do this is to allow a pattern know as "abstracting away asynchronicity". - - If *any* of the provided promises reject, the returned promise is immediately rejected with that promise’s rejection. The error’s `userInfo` object is supplemented with `PMKFailingPromiseIndexKey`. - - For example: - - PMKWhen(@[promise1, promise2]).then(^(NSArray *results){ - //… - }); - - @warning *Important* In the event of rejection the other promises will continue to resolve and as per any other promise will either fulfill or reject. This is the right pattern for `getter` style asynchronous tasks, but often for `setter` tasks (eg. storing data on a server), you most likely will need to wait on all tasks and then act based on which have succeeded and which have failed. In such situations use `PMKJoin`. - - @param input The input upon which to wait before resolving this promise. - - @return A promise that is resolved with either: - - 1. An array of values from the provided array of promises. - 2. The value from the provided promise. - 3. The provided non-promise object. - - @see PMKJoin - -*/ -extern AnyPromise * __nonnull PMKWhen(id __nonnull input) NS_REFINED_FOR_SWIFT; - - - -/** - Creates a new promise that resolves only when all provided promises have resolved. - - Typically, you should use `PMKWhen`. - - For example: - - PMKJoin(@[promise1, promise2]).then(^(NSArray *resultingValues){ - //… - }).catch(^(NSError *error){ - assert(error.domain == PMKErrorDomain); - assert(error.code == PMKJoinError); - - NSArray *promises = error.userInfo[PMKJoinPromisesKey]; - for (AnyPromise *promise in promises) { - if (promise.rejected) { - //… - } - } - }); - - @param promises An array of promises. - - @return A promise that thens three parameters: - - 1) An array of mixed values and errors from the resolved input. - 2) An array of values from the promises that fulfilled. - 3) An array of errors from the promises that rejected or nil if all promises fulfilled. - - @see when -*/ -AnyPromise *__nonnull PMKJoin(NSArray * __nonnull promises) NS_REFINED_FOR_SWIFT; - - - -/** - Literally hangs this thread until the promise has resolved. - - Do not use hang… unless you are testing, playing or debugging. - - If you use it in production code I will literally and honestly cry like a child. - - @return The resolved value of the promise. - - @warning T SAFE. IT IS NOT SAFE. IT IS NOT SAFE. IT IS NOT SAFE. IT IS NO -*/ -extern id __nullable PMKHang(AnyPromise * __nonnull promise); - - - -/** - Executes the provided block on a background queue. - - dispatch_promise is a convenient way to start a promise chain where the - first step needs to run synchronously on a background queue. - - dispatch_promise(^{ - return md5(input); - }).then(^(NSString *md5){ - NSLog(@"md5: %@", md5); - }); - - @param block The block to be executed in the background. Returning an `NSError` will reject the promise, everything else (including void) fulfills the promise. - - @return A promise resolved with the return value of the provided block. - - @see dispatch_async -*/ -extern AnyPromise * __nonnull dispatch_promise(id __nonnull block) NS_SWIFT_UNAVAILABLE("Use our `DispatchQueue.async` override instead"); - - - -/** - Executes the provided block on the specified background queue. - - dispatch_promise_on(myDispatchQueue, ^{ - return md5(input); - }).then(^(NSString *md5){ - NSLog(@"md5: %@", md5); - }); - - @param block The block to be executed in the background. Returning an `NSError` will reject the promise, everything else (including void) fulfills the promise. - - @return A promise resolved with the return value of the provided block. - - @see dispatch_promise -*/ -extern AnyPromise * __nonnull dispatch_promise_on(dispatch_queue_t __nonnull queue, id __nonnull block) NS_SWIFT_UNAVAILABLE("Use our `DispatchQueue.async` override instead"); - -/** - Returns a new promise that resolves when the value of the first resolved promise in the provided array of promises. -*/ -extern AnyPromise * __nonnull PMKRace(NSArray * __nonnull promises) NS_REFINED_FOR_SWIFT; - -#ifdef __cplusplus -} // Extern C -#endif diff --git a/cocoapods/Pods/PromiseKit/Sources/hang.m b/cocoapods/Pods/PromiseKit/Sources/hang.m deleted file mode 100644 index 913339e5..00000000 --- a/cocoapods/Pods/PromiseKit/Sources/hang.m +++ /dev/null @@ -1,29 +0,0 @@ -#import "AnyPromise.h" -#import "AnyPromise+Private.h" -@import CoreFoundation.CFRunLoop; - -/** - Suspends the active thread waiting on the provided promise. - - @return The value of the provided promise once resolved. - */ -id PMKHang(AnyPromise *promise) { - if (promise.pending) { - static CFRunLoopSourceContext context; - - CFRunLoopRef runLoop = CFRunLoopGetCurrent(); - CFRunLoopSourceRef runLoopSource = CFRunLoopSourceCreate(NULL, 0, &context); - CFRunLoopAddSource(runLoop, runLoopSource, kCFRunLoopDefaultMode); - - promise.ensure(^{ - CFRunLoopStop(runLoop); - }); - while (promise.pending) { - CFRunLoopRun(); - } - CFRunLoopRemoveSource(runLoop, runLoopSource, kCFRunLoopDefaultMode); - CFRelease(runLoopSource); - } - - return promise.value; -} diff --git a/cocoapods/Pods/PromiseKit/Sources/hang.swift b/cocoapods/Pods/PromiseKit/Sources/hang.swift deleted file mode 100644 index 1022dcad..00000000 --- a/cocoapods/Pods/PromiseKit/Sources/hang.swift +++ /dev/null @@ -1,55 +0,0 @@ -import Foundation -import CoreFoundation - -/** - Runs the active run-loop until the provided promise resolves. - - This is for debug and is not a generally safe function to use in your applications. We mostly provide it for use in testing environments. - - Still if you like, study how it works (by reading the sources!) and use at your own risk. - - - Returns: The value of the resolved promise - - Throws: An error, should the promise be rejected - - See: `wait()` -*/ -public func hang(_ promise: Promise) throws -> T { -#if os(Linux) || os(Android) -#if swift(>=4) - let runLoopMode: CFRunLoopMode = kCFRunLoopDefaultMode -#else - // isMainThread is not yet implemented on Linux. - let runLoopModeRaw = RunLoopMode.defaultRunLoopMode.rawValue._bridgeToObjectiveC() - let runLoopMode: CFString = unsafeBitCast(runLoopModeRaw, to: CFString.self) -#endif -#else - guard Thread.isMainThread else { - // hang doesn't make sense on threads that aren't the main thread. - // use `.wait()` on those threads. - fatalError("Only call hang() on the main thread.") - } - let runLoopMode: CFRunLoopMode = CFRunLoopMode.defaultMode -#endif - - if promise.isPending { - var context = CFRunLoopSourceContext() - let runLoop = CFRunLoopGetCurrent() - let runLoopSource = CFRunLoopSourceCreate(nil, 0, &context) - CFRunLoopAddSource(runLoop, runLoopSource, runLoopMode) - - _ = promise.ensure { - CFRunLoopStop(runLoop) - } - - while promise.isPending { - CFRunLoopRun() - } - CFRunLoopRemoveSource(runLoop, runLoopSource, runLoopMode) - } - - switch promise.result! { - case .rejected(let error): - throw error - case .fulfilled(let value): - return value - } -} diff --git a/cocoapods/Pods/PromiseKit/Sources/join.m b/cocoapods/Pods/PromiseKit/Sources/join.m deleted file mode 100644 index 979f092d..00000000 --- a/cocoapods/Pods/PromiseKit/Sources/join.m +++ /dev/null @@ -1,54 +0,0 @@ -@import Foundation.NSDictionary; -#import "AnyPromise+Private.h" -#import -@import Foundation.NSError; -@import Foundation.NSNull; -#import "PromiseKit.h" -#import - -/** - Waits on all provided promises. - - `PMKWhen` rejects as soon as one of the provided promises rejects. `PMKJoin` waits on all provided promises, then rejects if any of those promises rejects, otherwise it fulfills with values from the provided promises. - - - Returns: A new promise that resolves once all the provided promises resolve. -*/ -AnyPromise *PMKJoin(NSArray *promises) { - if (promises == nil) - return [AnyPromise promiseWithValue:[NSError errorWithDomain:PMKErrorDomain code:PMKInvalidUsageError userInfo:@{NSLocalizedDescriptionKey: @"PMKJoin(nil)"}]]; - - if (promises.count == 0) - return [AnyPromise promiseWithValue:promises]; - - return [AnyPromise promiseWithResolverBlock:^(PMKResolver resolve) { - NSPointerArray *results = NSPointerArrayMake(promises.count); - __block atomic_int countdown = promises.count; - __block BOOL rejected = NO; - - [promises enumerateObjectsUsingBlock:^(AnyPromise *promise, NSUInteger ii, BOOL *stop) { - [promise __pipe:^(id value) { - - if (IsError(value)) { - rejected = YES; - } - - //FIXME surely this isn't thread safe on multiple cores? - [results replacePointerAtIndex:ii withPointer:(__bridge void *)(value ?: [NSNull null])]; - - atomic_fetch_sub_explicit(&countdown, 1, memory_order_relaxed); - - if (countdown == 0) { - if (!rejected) { - resolve(results.allObjects); - } else { - id userInfo = @{PMKJoinPromisesKey: promises}; - id err = [NSError errorWithDomain:PMKErrorDomain code:PMKJoinError userInfo:userInfo]; - resolve(err); - } - } - }]; - - (void) stop; - }]; - }]; -} diff --git a/cocoapods/Pods/PromiseKit/Sources/race.m b/cocoapods/Pods/PromiseKit/Sources/race.m deleted file mode 100644 index cab38ec1..00000000 --- a/cocoapods/Pods/PromiseKit/Sources/race.m +++ /dev/null @@ -1,9 +0,0 @@ -#import "AnyPromise+Private.h" - -AnyPromise *PMKRace(NSArray *promises) { - return [AnyPromise promiseWithResolverBlock:^(PMKResolver resolve) { - for (AnyPromise *promise in promises) { - [promise __pipe:resolve]; - } - }]; -} diff --git a/cocoapods/Pods/PromiseKit/Sources/race.swift b/cocoapods/Pods/PromiseKit/Sources/race.swift deleted file mode 100644 index 76ae96d0..00000000 --- a/cocoapods/Pods/PromiseKit/Sources/race.swift +++ /dev/null @@ -1,102 +0,0 @@ -import Dispatch - -@inline(__always) -private func _race(_ thenables: [U]) -> Promise { - let rp = Promise(.pending) - for thenable in thenables { - thenable.pipe(to: rp.box.seal) - } - return rp -} - -/** - Waits for one promise to resolve - - race(promise1, promise2, promise3).then { winner in - //… - } - - - Returns: The promise that resolves first - - Warning: If the first resolution is a rejection, the returned promise is rejected -*/ -public func race(_ thenables: U...) -> Promise { - return _race(thenables) -} - -/** - Waits for one promise to resolve - - race(promise1, promise2, promise3).then { winner in - //… - } - - - Returns: The promise that resolves first - - Warning: If the first resolution is a rejection, the returned promise is rejected - - Remark: If the provided array is empty the returned promise is rejected with PMKError.badInput -*/ -public func race(_ thenables: [U]) -> Promise { - guard !thenables.isEmpty else { - return Promise(error: PMKError.badInput) - } - return _race(thenables) -} - -/** - Waits for one guarantee to resolve - - race(promise1, promise2, promise3).then { winner in - //… - } - - - Returns: The guarantee that resolves first -*/ -public func race(_ guarantees: Guarantee...) -> Guarantee { - let rg = Guarantee(.pending) - for guarantee in guarantees { - guarantee.pipe(to: rg.box.seal) - } - return rg -} - -/** - Waits for one promise to fulfill - - race(fulfilled: [promise1, promise2, promise3]).then { winner in - //… - } - - - Returns: The promise that was fulfilled first. - - Warning: Skips all rejected promises. - - Remark: If the provided array is empty, the returned promise is rejected with `PMKError.badInput`. If there are no fulfilled promises, the returned promise is rejected with `PMKError.noWinner`. -*/ -public func race(fulfilled thenables: [U]) -> Promise { - var countdown = thenables.count - guard countdown > 0 else { - return Promise(error: PMKError.badInput) - } - - let rp = Promise(.pending) - - let barrier = DispatchQueue(label: "org.promisekit.barrier.race", attributes: .concurrent) - - for promise in thenables { - promise.pipe { result in - barrier.sync(flags: .barrier) { - switch result { - case .rejected: - guard rp.isPending else { return } - countdown -= 1 - if countdown == 0 { - rp.box.seal(.rejected(PMKError.noWinner)) - } - case .fulfilled(let value): - guard rp.isPending else { return } - countdown = 0 - rp.box.seal(.fulfilled(value)) - } - } - } - } - - return rp -} diff --git a/cocoapods/Pods/PromiseKit/Sources/when.m b/cocoapods/Pods/PromiseKit/Sources/when.m deleted file mode 100644 index 43e5fedd..00000000 --- a/cocoapods/Pods/PromiseKit/Sources/when.m +++ /dev/null @@ -1,107 +0,0 @@ -@import Foundation.NSDictionary; -#import "AnyPromise+Private.h" -@import Foundation.NSProgress; -#import -@import Foundation.NSError; -@import Foundation.NSNull; -#import "PromiseKit.h" - -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wdeprecated-declarations" -// ^^ OSAtomicDecrement32 is deprecated on watchOS - - -// NSProgress resources: -// * https://robots.thoughtbot.com/asynchronous-nsprogress -// * http://oleb.net/blog/2014/03/nsprogress/ -// NSProgress! Beware! -// * https://github.com/AFNetworking/AFNetworking/issues/2261 - -/** - Wait for all promises in a set to resolve. - - @note If *any* of the provided promises reject, the returned promise is immediately rejected with that error. - @warning In the event of rejection the other promises will continue to resolve and, as per any other promise, will either fulfill or reject. This is the right pattern for `getter` style asynchronous tasks, but often for `setter` tasks (eg. storing data on a server), you most likely will need to wait on all tasks and then act based on which have succeeded and which have failed, in such situations use `when(resolved:)`. - @param promises The promises upon which to wait before the returned promise resolves. - @note PMKWhen provides NSProgress. - @return A new promise that resolves when all the provided promises fulfill or one of the provided promises rejects. -*/ -AnyPromise *PMKWhen(id promises) { - if (promises == nil) - return [AnyPromise promiseWithValue:[NSError errorWithDomain:PMKErrorDomain code:PMKInvalidUsageError userInfo:@{NSLocalizedDescriptionKey: @"PMKWhen(nil)"}]]; - - if ([promises isKindOfClass:[NSArray class]] || [promises isKindOfClass:[NSDictionary class]]) { - if ([promises count] == 0) - return [AnyPromise promiseWithValue:promises]; - } else if ([promises isKindOfClass:[AnyPromise class]]) { - promises = @[promises]; - } else { - return [AnyPromise promiseWithValue:promises]; - } - -#ifndef PMKDisableProgress - NSProgress *progress = [NSProgress progressWithTotalUnitCount:(int64_t)[promises count]]; - progress.pausable = NO; - progress.cancellable = NO; -#else - struct PMKProgress { - int completedUnitCount; - int totalUnitCount; - double fractionCompleted; - }; - __block struct PMKProgress progress; -#endif - - __block int32_t countdown = (int32_t)[promises count]; - BOOL const isdict = [promises isKindOfClass:[NSDictionary class]]; - - return [AnyPromise promiseWithResolverBlock:^(PMKResolver resolve) { - NSInteger index = 0; - - for (__strong id key in promises) { - AnyPromise *promise = isdict ? promises[key] : key; - if (!isdict) key = @(index); - - if (![promise isKindOfClass:[AnyPromise class]]) - promise = [AnyPromise promiseWithValue:promise]; - - [promise __pipe:^(id value){ - if (progress.fractionCompleted >= 1) - return; - - if (IsError(value)) { - progress.completedUnitCount = progress.totalUnitCount; - - NSMutableDictionary *userInfo = [NSMutableDictionary dictionaryWithDictionary:[(NSError *)value userInfo] ?: @{}]; - userInfo[PMKFailingPromiseIndexKey] = key; - [userInfo setObject:value forKey:NSUnderlyingErrorKey]; - id err = [[NSError alloc] initWithDomain:[value domain] code:[value code] userInfo:userInfo]; - resolve(err); - } - else if (OSAtomicDecrement32(&countdown) == 0) { - progress.completedUnitCount = progress.totalUnitCount; - - id results; - if (isdict) { - results = [NSMutableDictionary new]; - for (id key in promises) { - id promise = promises[key]; - results[key] = IsPromise(promise) ? ((AnyPromise *)promise).value : promise; - } - } else { - results = [NSMutableArray new]; - for (AnyPromise *promise in promises) { - id value = IsPromise(promise) ? (promise.value ?: [NSNull null]) : promise; - [results addObject:value]; - } - } - resolve(results); - } else { - progress.completedUnitCount++; - } - }]; - } - }]; -} - -#pragma GCC diagnostic pop diff --git a/cocoapods/Pods/PromiseKit/Sources/when.swift b/cocoapods/Pods/PromiseKit/Sources/when.swift deleted file mode 100644 index 44335b84..00000000 --- a/cocoapods/Pods/PromiseKit/Sources/when.swift +++ /dev/null @@ -1,363 +0,0 @@ -import Foundation -import Dispatch - -private func _when(_ thenables: [U]) -> Promise { - var countdown = thenables.count - guard countdown > 0 else { - return .value(Void()) - } - - let rp = Promise(.pending) - -#if PMKDisableProgress || os(Linux) - var progress: (completedUnitCount: Int, totalUnitCount: Int) = (0, 0) -#else - let progress = Progress(totalUnitCount: Int64(thenables.count)) - progress.isCancellable = false - progress.isPausable = false -#endif - - let barrier = DispatchQueue(label: "org.promisekit.barrier.when", attributes: .concurrent) - - for promise in thenables { - promise.pipe { result in - barrier.sync(flags: .barrier) { - switch result { - case .rejected(let error): - if rp.isPending { - progress.completedUnitCount = progress.totalUnitCount - rp.box.seal(.rejected(error)) - } - case .fulfilled: - guard rp.isPending else { return } - progress.completedUnitCount += 1 - countdown -= 1 - if countdown == 0 { - rp.box.seal(.fulfilled(())) - } - } - } - } - } - - return rp -} - -/** - Wait for all promises in a set to fulfill. - - For example: - - when(fulfilled: promise1, promise2).then { results in - //… - }.catch { error in - switch error { - case URLError.notConnectedToInternet: - //… - case CLError.denied: - //… - } - } - - - Note: If *any* of the provided promises reject, the returned promise is immediately rejected with that error. - - Warning: In the event of rejection the other promises will continue to resolve and, as per any other promise, will either fulfill or reject. This is the right pattern for `getter` style asynchronous tasks, but often for `setter` tasks (eg. storing data on a server), you most likely will need to wait on all tasks and then act based on which have succeeded and which have failed, in such situations use `when(resolved:)`. - - Parameter promises: The promises upon which to wait before the returned promise resolves. - - Returns: A new promise that resolves when all the provided promises fulfill or one of the provided promises rejects. - - Note: `when` provides `NSProgress`. - - SeeAlso: `when(resolved:)` -*/ -public func when(fulfilled thenables: [U]) -> Promise<[U.T]> { - return _when(thenables).map(on: nil) { thenables.map{ $0.value! } } -} - -/// Wait for all promises in a set to fulfill. -public func when(fulfilled promises: U...) -> Promise where U.T == Void { - return _when(promises) -} - -/// Wait for all promises in a set to fulfill. -public func when(fulfilled promises: [U]) -> Promise where U.T == Void { - return _when(promises) -} - -/// Wait for all promises in a set to fulfill. -public func when(fulfilled pu: U, _ pv: V) -> Promise<(U.T, V.T)> { - return _when([pu.asVoid(), pv.asVoid()]).map(on: nil) { (pu.value!, pv.value!) } -} - -/// Wait for all promises in a set to fulfill. -public func when(fulfilled pu: U, _ pv: V, _ pw: W) -> Promise<(U.T, V.T, W.T)> { - return _when([pu.asVoid(), pv.asVoid(), pw.asVoid()]).map(on: nil) { (pu.value!, pv.value!, pw.value!) } -} - -/// Wait for all promises in a set to fulfill. -public func when(fulfilled pu: U, _ pv: V, _ pw: W, _ px: X) -> Promise<(U.T, V.T, W.T, X.T)> { - return _when([pu.asVoid(), pv.asVoid(), pw.asVoid(), px.asVoid()]).map(on: nil) { (pu.value!, pv.value!, pw.value!, px.value!) } -} - -/// Wait for all promises in a set to fulfill. -public func when(fulfilled pu: U, _ pv: V, _ pw: W, _ px: X, _ py: Y) -> Promise<(U.T, V.T, W.T, X.T, Y.T)> { - return _when([pu.asVoid(), pv.asVoid(), pw.asVoid(), px.asVoid(), py.asVoid()]).map(on: nil) { (pu.value!, pv.value!, pw.value!, px.value!, py.value!) } -} - -/** - Generate promises at a limited rate and wait for all to fulfill. - - For example: - - func downloadFile(url: URL) -> Promise { - // ... - } - - let urls: [URL] = /*…*/ - let urlGenerator = urls.makeIterator() - - let generator = AnyIterator> { - guard url = urlGenerator.next() else { - return nil - } - return downloadFile(url) - } - - when(generator, concurrently: 3).done { datas in - // ... - } - - No more than three downloads will occur simultaneously. - - - Note: The generator is called *serially* on a *background* queue. - - Warning: Refer to the warnings on `when(fulfilled:)` - - Parameter promiseGenerator: Generator of promises. - - Returns: A new promise that resolves when all the provided promises fulfill or one of the provided promises rejects. - - SeeAlso: `when(resolved:)` - */ - -public func when(fulfilled promiseIterator: It, concurrently: Int) -> Promise<[It.Element.T]> where It.Element: Thenable { - - guard concurrently > 0 else { - return Promise(error: PMKError.badInput) - } - - var generator = promiseIterator - let root = Promise<[It.Element.T]>.pending() - var pendingPromises = 0 - var promises: [It.Element] = [] - - let barrier = DispatchQueue(label: "org.promisekit.barrier.when", attributes: [.concurrent]) - - func dequeue() { - guard root.promise.isPending else { return } // don’t continue dequeueing if root has been rejected - - var shouldDequeue = false - barrier.sync { - shouldDequeue = pendingPromises < concurrently - } - guard shouldDequeue else { return } - - var promise: It.Element! - - barrier.sync(flags: .barrier) { - guard let next = generator.next() else { return } - promise = next - pendingPromises += 1 - promises.append(next) - } - - func testDone() { - barrier.sync { - if pendingPromises == 0 { - #if !swift(>=3.3) || (swift(>=4) && !swift(>=4.1)) - root.resolver.fulfill(promises.flatMap{ $0.value }) - #else - root.resolver.fulfill(promises.compactMap{ $0.value }) - #endif - } - } - } - - guard promise != nil else { - return testDone() - } - - promise.pipe { resolution in - barrier.sync(flags: .barrier) { - pendingPromises -= 1 - } - - switch resolution { - case .fulfilled: - dequeue() - testDone() - case .rejected(let error): - root.resolver.reject(error) - } - } - - dequeue() - } - - dequeue() - - return root.promise -} - -/** - Waits on all provided promises. - - `when(fulfilled:)` rejects as soon as one of the provided promises rejects. `when(resolved:)` waits on all provided promises whatever their result, and then provides an array of `Result` so you can individually inspect the results. As a consequence this function returns a `Guarantee`, ie. errors are lifted from the individual promises into the results array of the returned `Guarantee`. - - when(resolved: promise1, promise2, promise3).then { results in - for result in results where case .fulfilled(let value) { - //… - } - }.catch { error in - // invalid! Never rejects - } - - - Returns: A new promise that resolves once all the provided promises resolve. The array is ordered the same as the input, ie. the result order is *not* resolution order. - - Note: we do not provide tuple variants for `when(resolved:)` but will accept a pull-request - - Remark: Doesn't take Thenable due to protocol `associatedtype` paradox -*/ -public func when(resolved promises: Promise...) -> Guarantee<[Result]> { - return when(resolved: promises) -} - -/// - See: `when(resolved: Promise...)` -public func when(resolved promises: [Promise]) -> Guarantee<[Result]> { - guard !promises.isEmpty else { - return .value([]) - } - - var countdown = promises.count - let barrier = DispatchQueue(label: "org.promisekit.barrier.join", attributes: .concurrent) - - let rg = Guarantee<[Result]>(.pending) - for promise in promises { - promise.pipe { result in - barrier.sync(flags: .barrier) { - countdown -= 1 - } - barrier.sync { - if countdown == 0 { - rg.box.seal(promises.map{ $0.result! }) - } - } - } - } - return rg -} - -/** -Generate promises at a limited rate and wait for all to resolve. - -For example: - - func downloadFile(url: URL) -> Promise { - // ... - } - - let urls: [URL] = /*…*/ - let urlGenerator = urls.makeIterator() - - let generator = AnyIterator> { - guard url = urlGenerator.next() else { - return nil - } - return downloadFile(url) - } - - when(resolved: generator, concurrently: 3).done { results in - // ... - } - -No more than three downloads will occur simultaneously. Downloads will continue if one of them fails - -- Note: The generator is called *serially* on a *background* queue. -- Warning: Refer to the warnings on `when(resolved:)` -- Parameter promiseGenerator: Generator of promises. -- Returns: A new promise that resolves once all the provided promises resolve. The array is ordered the same as the input, ie. the result order is *not* resolution order. -- SeeAlso: `when(resolved:)` -*/ -#if swift(>=5.3) -public func when(resolved promiseIterator: It, concurrently: Int) - -> Guarantee<[Result]> where It.Element: Thenable { - guard concurrently > 0 else { - return Guarantee.value([Result.rejected(PMKError.badInput)]) - } - - var generator = promiseIterator - let root = Guarantee<[Result]>.pending() - var pendingPromises = 0 - var promises: [It.Element] = [] - - let barrier = DispatchQueue(label: "org.promisekit.barrier.when", attributes: [.concurrent]) - - func dequeue() { - guard root.guarantee.isPending else { - return - } // don’t continue dequeueing if root has been rejected - - var shouldDequeue = false - barrier.sync { - shouldDequeue = pendingPromises < concurrently - } - guard shouldDequeue else { - return - } - - var promise: It.Element! - - barrier.sync(flags: .barrier) { - guard let next = generator.next() else { - return - } - - promise = next - - pendingPromises += 1 - promises.append(next) - } - - func testDone() { - barrier.sync { - if pendingPromises == 0 { - #if !swift(>=3.3) || (swift(>=4) && !swift(>=4.1)) - root.resolve(promises.flatMap { $0.result }) - #else - root.resolve(promises.compactMap { $0.result }) - #endif - } - } - } - - guard promise != nil else { - return testDone() - } - - promise.pipe { _ in - barrier.sync(flags: .barrier) { - pendingPromises -= 1 - } - - dequeue() - testDone() - } - - dequeue() - } - - dequeue() - - return root.guarantee -} -#endif - -/// Waits on all provided Guarantees. -public func when(_ guarantees: Guarantee...) -> Guarantee { - return when(guarantees: guarantees) -} - -// Waits on all provided Guarantees. -public func when(guarantees: [Guarantee]) -> Guarantee { - return when(fulfilled: guarantees).recover{ _ in }.asVoid() -} diff --git a/cocoapods/Pods/Target Support Files/BestLogger/BestLogger-Info.plist b/cocoapods/Pods/Target Support Files/BestLogger/BestLogger-Info.plist deleted file mode 100644 index 3f038707..00000000 --- a/cocoapods/Pods/Target Support Files/BestLogger/BestLogger-Info.plist +++ /dev/null @@ -1,26 +0,0 @@ - - - - - CFBundleDevelopmentRegion - en - CFBundleExecutable - ${EXECUTABLE_NAME} - CFBundleIdentifier - ${PRODUCT_BUNDLE_IDENTIFIER} - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - ${PRODUCT_NAME} - CFBundlePackageType - FMWK - CFBundleShortVersionString - 0.0.3 - CFBundleSignature - ???? - CFBundleVersion - ${CURRENT_PROJECT_VERSION} - NSPrincipalClass - - - diff --git a/cocoapods/Pods/Target Support Files/BestLogger/BestLogger-dummy.m b/cocoapods/Pods/Target Support Files/BestLogger/BestLogger-dummy.m deleted file mode 100644 index 4cc344d6..00000000 --- a/cocoapods/Pods/Target Support Files/BestLogger/BestLogger-dummy.m +++ /dev/null @@ -1,5 +0,0 @@ -#import -@interface PodsDummy_BestLogger : NSObject -@end -@implementation PodsDummy_BestLogger -@end diff --git a/cocoapods/Pods/Target Support Files/BestLogger/BestLogger-prefix.pch b/cocoapods/Pods/Target Support Files/BestLogger/BestLogger-prefix.pch deleted file mode 100644 index beb2a244..00000000 --- a/cocoapods/Pods/Target Support Files/BestLogger/BestLogger-prefix.pch +++ /dev/null @@ -1,12 +0,0 @@ -#ifdef __OBJC__ -#import -#else -#ifndef FOUNDATION_EXPORT -#if defined(__cplusplus) -#define FOUNDATION_EXPORT extern "C" -#else -#define FOUNDATION_EXPORT extern -#endif -#endif -#endif - diff --git a/cocoapods/Pods/Target Support Files/BestLogger/BestLogger-umbrella.h b/cocoapods/Pods/Target Support Files/BestLogger/BestLogger-umbrella.h deleted file mode 100644 index b50986fc..00000000 --- a/cocoapods/Pods/Target Support Files/BestLogger/BestLogger-umbrella.h +++ /dev/null @@ -1,16 +0,0 @@ -#ifdef __OBJC__ -#import -#else -#ifndef FOUNDATION_EXPORT -#if defined(__cplusplus) -#define FOUNDATION_EXPORT extern "C" -#else -#define FOUNDATION_EXPORT extern -#endif -#endif -#endif - - -FOUNDATION_EXPORT double BestLoggerVersionNumber; -FOUNDATION_EXPORT const unsigned char BestLoggerVersionString[]; - diff --git a/cocoapods/Pods/Target Support Files/BestLogger/BestLogger.debug.xcconfig b/cocoapods/Pods/Target Support Files/BestLogger/BestLogger.debug.xcconfig deleted file mode 100644 index d722054d..00000000 --- a/cocoapods/Pods/Target Support Files/BestLogger/BestLogger.debug.xcconfig +++ /dev/null @@ -1,12 +0,0 @@ -CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO -CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/BestLogger -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -PODS_BUILD_DIR = ${BUILD_DIR} -PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) -PODS_ROOT = ${SRCROOT} -PODS_TARGET_SRCROOT = ${PODS_ROOT}/BestLogger -PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates -PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} -SKIP_INSTALL = YES -USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/cocoapods/Pods/Target Support Files/BestLogger/BestLogger.modulemap b/cocoapods/Pods/Target Support Files/BestLogger/BestLogger.modulemap deleted file mode 100644 index 5f37c7c5..00000000 --- a/cocoapods/Pods/Target Support Files/BestLogger/BestLogger.modulemap +++ /dev/null @@ -1,6 +0,0 @@ -framework module BestLogger { - umbrella header "BestLogger-umbrella.h" - - export * - module * { export * } -} diff --git a/cocoapods/Pods/Target Support Files/BestLogger/BestLogger.release.xcconfig b/cocoapods/Pods/Target Support Files/BestLogger/BestLogger.release.xcconfig deleted file mode 100644 index d722054d..00000000 --- a/cocoapods/Pods/Target Support Files/BestLogger/BestLogger.release.xcconfig +++ /dev/null @@ -1,12 +0,0 @@ -CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO -CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/BestLogger -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -PODS_BUILD_DIR = ${BUILD_DIR} -PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) -PODS_ROOT = ${SRCROOT} -PODS_TARGET_SRCROOT = ${PODS_ROOT}/BestLogger -PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates -PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} -SKIP_INSTALL = YES -USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/cocoapods/Pods/Target Support Files/BigInt/BigInt-Info.plist b/cocoapods/Pods/Target Support Files/BigInt/BigInt-Info.plist deleted file mode 100644 index e2771ff4..00000000 --- a/cocoapods/Pods/Target Support Files/BigInt/BigInt-Info.plist +++ /dev/null @@ -1,26 +0,0 @@ - - - - - CFBundleDevelopmentRegion - en - CFBundleExecutable - ${EXECUTABLE_NAME} - CFBundleIdentifier - ${PRODUCT_BUNDLE_IDENTIFIER} - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - ${PRODUCT_NAME} - CFBundlePackageType - FMWK - CFBundleShortVersionString - 5.0.0 - CFBundleSignature - ???? - CFBundleVersion - ${CURRENT_PROJECT_VERSION} - NSPrincipalClass - - - diff --git a/cocoapods/Pods/Target Support Files/BigInt/BigInt-dummy.m b/cocoapods/Pods/Target Support Files/BigInt/BigInt-dummy.m deleted file mode 100644 index 7367f860..00000000 --- a/cocoapods/Pods/Target Support Files/BigInt/BigInt-dummy.m +++ /dev/null @@ -1,5 +0,0 @@ -#import -@interface PodsDummy_BigInt : NSObject -@end -@implementation PodsDummy_BigInt -@end diff --git a/cocoapods/Pods/Target Support Files/BigInt/BigInt-prefix.pch b/cocoapods/Pods/Target Support Files/BigInt/BigInt-prefix.pch deleted file mode 100644 index beb2a244..00000000 --- a/cocoapods/Pods/Target Support Files/BigInt/BigInt-prefix.pch +++ /dev/null @@ -1,12 +0,0 @@ -#ifdef __OBJC__ -#import -#else -#ifndef FOUNDATION_EXPORT -#if defined(__cplusplus) -#define FOUNDATION_EXPORT extern "C" -#else -#define FOUNDATION_EXPORT extern -#endif -#endif -#endif - diff --git a/cocoapods/Pods/Target Support Files/BigInt/BigInt-umbrella.h b/cocoapods/Pods/Target Support Files/BigInt/BigInt-umbrella.h deleted file mode 100644 index e3d2506e..00000000 --- a/cocoapods/Pods/Target Support Files/BigInt/BigInt-umbrella.h +++ /dev/null @@ -1,16 +0,0 @@ -#ifdef __OBJC__ -#import -#else -#ifndef FOUNDATION_EXPORT -#if defined(__cplusplus) -#define FOUNDATION_EXPORT extern "C" -#else -#define FOUNDATION_EXPORT extern -#endif -#endif -#endif - - -FOUNDATION_EXPORT double BigIntVersionNumber; -FOUNDATION_EXPORT const unsigned char BigIntVersionString[]; - diff --git a/cocoapods/Pods/Target Support Files/BigInt/BigInt.debug.xcconfig b/cocoapods/Pods/Target Support Files/BigInt/BigInt.debug.xcconfig deleted file mode 100644 index 14420073..00000000 --- a/cocoapods/Pods/Target Support Files/BigInt/BigInt.debug.xcconfig +++ /dev/null @@ -1,12 +0,0 @@ -CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO -CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/BigInt -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -PODS_BUILD_DIR = ${BUILD_DIR} -PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) -PODS_ROOT = ${SRCROOT} -PODS_TARGET_SRCROOT = ${PODS_ROOT}/BigInt -PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates -PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} -SKIP_INSTALL = YES -USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/cocoapods/Pods/Target Support Files/BigInt/BigInt.modulemap b/cocoapods/Pods/Target Support Files/BigInt/BigInt.modulemap deleted file mode 100644 index 48a38d1c..00000000 --- a/cocoapods/Pods/Target Support Files/BigInt/BigInt.modulemap +++ /dev/null @@ -1,6 +0,0 @@ -framework module BigInt { - umbrella header "BigInt-umbrella.h" - - export * - module * { export * } -} diff --git a/cocoapods/Pods/Target Support Files/BigInt/BigInt.release.xcconfig b/cocoapods/Pods/Target Support Files/BigInt/BigInt.release.xcconfig deleted file mode 100644 index 14420073..00000000 --- a/cocoapods/Pods/Target Support Files/BigInt/BigInt.release.xcconfig +++ /dev/null @@ -1,12 +0,0 @@ -CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO -CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/BigInt -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -PODS_BUILD_DIR = ${BUILD_DIR} -PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) -PODS_ROOT = ${SRCROOT} -PODS_TARGET_SRCROOT = ${PODS_ROOT}/BigInt -PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates -PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} -SKIP_INSTALL = YES -USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/cocoapods/Pods/Target Support Files/CryptoSwift/CryptoSwift-Info.plist b/cocoapods/Pods/Target Support Files/CryptoSwift/CryptoSwift-Info.plist deleted file mode 100644 index 93197ee7..00000000 --- a/cocoapods/Pods/Target Support Files/CryptoSwift/CryptoSwift-Info.plist +++ /dev/null @@ -1,26 +0,0 @@ - - - - - CFBundleDevelopmentRegion - en - CFBundleExecutable - ${EXECUTABLE_NAME} - CFBundleIdentifier - ${PRODUCT_BUNDLE_IDENTIFIER} - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - ${PRODUCT_NAME} - CFBundlePackageType - FMWK - CFBundleShortVersionString - 1.4.1 - CFBundleSignature - ???? - CFBundleVersion - ${CURRENT_PROJECT_VERSION} - NSPrincipalClass - - - diff --git a/cocoapods/Pods/Target Support Files/CryptoSwift/CryptoSwift-dummy.m b/cocoapods/Pods/Target Support Files/CryptoSwift/CryptoSwift-dummy.m deleted file mode 100644 index 657061bc..00000000 --- a/cocoapods/Pods/Target Support Files/CryptoSwift/CryptoSwift-dummy.m +++ /dev/null @@ -1,5 +0,0 @@ -#import -@interface PodsDummy_CryptoSwift : NSObject -@end -@implementation PodsDummy_CryptoSwift -@end diff --git a/cocoapods/Pods/Target Support Files/CryptoSwift/CryptoSwift-prefix.pch b/cocoapods/Pods/Target Support Files/CryptoSwift/CryptoSwift-prefix.pch deleted file mode 100644 index beb2a244..00000000 --- a/cocoapods/Pods/Target Support Files/CryptoSwift/CryptoSwift-prefix.pch +++ /dev/null @@ -1,12 +0,0 @@ -#ifdef __OBJC__ -#import -#else -#ifndef FOUNDATION_EXPORT -#if defined(__cplusplus) -#define FOUNDATION_EXPORT extern "C" -#else -#define FOUNDATION_EXPORT extern -#endif -#endif -#endif - diff --git a/cocoapods/Pods/Target Support Files/CryptoSwift/CryptoSwift-umbrella.h b/cocoapods/Pods/Target Support Files/CryptoSwift/CryptoSwift-umbrella.h deleted file mode 100644 index e93efa88..00000000 --- a/cocoapods/Pods/Target Support Files/CryptoSwift/CryptoSwift-umbrella.h +++ /dev/null @@ -1,16 +0,0 @@ -#ifdef __OBJC__ -#import -#else -#ifndef FOUNDATION_EXPORT -#if defined(__cplusplus) -#define FOUNDATION_EXPORT extern "C" -#else -#define FOUNDATION_EXPORT extern -#endif -#endif -#endif - - -FOUNDATION_EXPORT double CryptoSwiftVersionNumber; -FOUNDATION_EXPORT const unsigned char CryptoSwiftVersionString[]; - diff --git a/cocoapods/Pods/Target Support Files/CryptoSwift/CryptoSwift.debug.xcconfig b/cocoapods/Pods/Target Support Files/CryptoSwift/CryptoSwift.debug.xcconfig deleted file mode 100644 index bcef6f0e..00000000 --- a/cocoapods/Pods/Target Support Files/CryptoSwift/CryptoSwift.debug.xcconfig +++ /dev/null @@ -1,12 +0,0 @@ -CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO -CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -PODS_BUILD_DIR = ${BUILD_DIR} -PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) -PODS_ROOT = ${SRCROOT} -PODS_TARGET_SRCROOT = ${PODS_ROOT}/CryptoSwift -PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates -PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} -SKIP_INSTALL = YES -USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/cocoapods/Pods/Target Support Files/CryptoSwift/CryptoSwift.modulemap b/cocoapods/Pods/Target Support Files/CryptoSwift/CryptoSwift.modulemap deleted file mode 100644 index f090f6a3..00000000 --- a/cocoapods/Pods/Target Support Files/CryptoSwift/CryptoSwift.modulemap +++ /dev/null @@ -1,6 +0,0 @@ -framework module CryptoSwift { - umbrella header "CryptoSwift-umbrella.h" - - export * - module * { export * } -} diff --git a/cocoapods/Pods/Target Support Files/CryptoSwift/CryptoSwift.release.xcconfig b/cocoapods/Pods/Target Support Files/CryptoSwift/CryptoSwift.release.xcconfig deleted file mode 100644 index bcef6f0e..00000000 --- a/cocoapods/Pods/Target Support Files/CryptoSwift/CryptoSwift.release.xcconfig +++ /dev/null @@ -1,12 +0,0 @@ -CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO -CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -PODS_BUILD_DIR = ${BUILD_DIR} -PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) -PODS_ROOT = ${SRCROOT} -PODS_TARGET_SRCROOT = ${PODS_ROOT}/CryptoSwift -PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates -PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} -SKIP_INSTALL = YES -USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/cocoapods/Pods/Target Support Files/Pods-TestApplication-TestApplicationTests/Pods-TestApplication-TestApplicationTests-Info.plist b/cocoapods/Pods/Target Support Files/Pods-TestApplication-TestApplicationTests/Pods-TestApplication-TestApplicationTests-Info.plist deleted file mode 100644 index 2243fe6e..00000000 --- a/cocoapods/Pods/Target Support Files/Pods-TestApplication-TestApplicationTests/Pods-TestApplication-TestApplicationTests-Info.plist +++ /dev/null @@ -1,26 +0,0 @@ - - - - - CFBundleDevelopmentRegion - en - CFBundleExecutable - ${EXECUTABLE_NAME} - CFBundleIdentifier - ${PRODUCT_BUNDLE_IDENTIFIER} - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - ${PRODUCT_NAME} - CFBundlePackageType - FMWK - CFBundleShortVersionString - 1.0.0 - CFBundleSignature - ???? - CFBundleVersion - ${CURRENT_PROJECT_VERSION} - NSPrincipalClass - - - diff --git a/cocoapods/Pods/Target Support Files/Pods-TestApplication-TestApplicationTests/Pods-TestApplication-TestApplicationTests-acknowledgements.markdown b/cocoapods/Pods/Target Support Files/Pods-TestApplication-TestApplicationTests/Pods-TestApplication-TestApplicationTests-acknowledgements.markdown deleted file mode 100644 index a58bf8a4..00000000 --- a/cocoapods/Pods/Target Support Files/Pods-TestApplication-TestApplicationTests/Pods-TestApplication-TestApplicationTests-acknowledgements.markdown +++ /dev/null @@ -1,182 +0,0 @@ -# Acknowledgements -This application makes use of the following third party libraries: - -## BestLogger - -Copyright 2020 Shubham Rathi - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - -## BigInt - - -Copyright (c) 2016-2017 Károly Lőrentey - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - -## CryptoSwift - -Copyright (C) 2014-2017 Marcin Krzyżanowski -This software is provided 'as-is', without any express or implied warranty. - -In no event will the authors be held liable for any damages arising from the use of this software. - -Permission is granted to anyone to use this software for any purpose,including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: - -- The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation is required. -- Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -- This notice may not be removed or altered from any source or binary distribution. -- Redistributions of any form whatsoever must retain the following acknowledgment: 'This product includes software developed by the "Marcin Krzyzanowski" (http://krzyzanowskim.com/).' - - -## GenericJSON - -MIT License - -Copyright (c) 2017 Tomáš Znamenáček - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - -## PromiseKit - -Copyright 2016-present, Max Howell; mxcl@me.com - -Permission is hereby granted, free of charge, to any person obtaining a -copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be included -in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - -## Torus-fetchNodeDetails - -Copyright (c) 2020 Torus Labs Private Limited (https://tor.us) - -Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: - -1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. - -2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. - -3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - -## Torus-utils - -Copyright (c) 2020 Torus Labs Private Limited (https://tor.us) - -Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: - -1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. - -2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. - -3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - -## secp256k1.swift - -The MIT License (MIT) - -Copyright (c) 2018 Boilertalk Ltd. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - - -## web3.swift - -MIT License - -Copyright (c) 2018 Argent Labs Limited - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - -Generated by CocoaPods - https://cocoapods.org diff --git a/cocoapods/Pods/Target Support Files/Pods-TestApplication-TestApplicationTests/Pods-TestApplication-TestApplicationTests-acknowledgements.plist b/cocoapods/Pods/Target Support Files/Pods-TestApplication-TestApplicationTests/Pods-TestApplication-TestApplicationTests-acknowledgements.plist deleted file mode 100644 index 9e90d246..00000000 --- a/cocoapods/Pods/Target Support Files/Pods-TestApplication-TestApplicationTests/Pods-TestApplication-TestApplicationTests-acknowledgements.plist +++ /dev/null @@ -1,262 +0,0 @@ - - - - - PreferenceSpecifiers - - - FooterText - This application makes use of the following third party libraries: - Title - Acknowledgements - Type - PSGroupSpecifier - - - FooterText - Copyright 2020 Shubham Rathi - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - License - MIT - Title - BestLogger - Type - PSGroupSpecifier - - - FooterText - -Copyright (c) 2016-2017 Károly Lőrentey - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - License - MIT - Title - BigInt - Type - PSGroupSpecifier - - - FooterText - Copyright (C) 2014-2017 Marcin Krzyżanowski <marcin.krzyzanowski@gmail.com> -This software is provided 'as-is', without any express or implied warranty. - -In no event will the authors be held liable for any damages arising from the use of this software. - -Permission is granted to anyone to use this software for any purpose,including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: - -- The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation is required. -- Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -- This notice may not be removed or altered from any source or binary distribution. -- Redistributions of any form whatsoever must retain the following acknowledgment: 'This product includes software developed by the "Marcin Krzyzanowski" (http://krzyzanowskim.com/).' - - License - Attribution - Title - CryptoSwift - Type - PSGroupSpecifier - - - FooterText - MIT License - -Copyright (c) 2017 Tomáš Znamenáček - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - License - MIT - Title - GenericJSON - Type - PSGroupSpecifier - - - FooterText - Copyright 2016-present, Max Howell; mxcl@me.com - -Permission is hereby granted, free of charge, to any person obtaining a -copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be included -in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - License - MIT - Title - PromiseKit - Type - PSGroupSpecifier - - - FooterText - Copyright (c) 2020 Torus Labs Private Limited (https://tor.us) - -Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: - -1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. - -2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. - -3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - License - BSD - Title - Torus-fetchNodeDetails - Type - PSGroupSpecifier - - - FooterText - Copyright (c) 2020 Torus Labs Private Limited (https://tor.us) - -Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: - -1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. - -2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. - -3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - License - BSD - Title - Torus-utils - Type - PSGroupSpecifier - - - FooterText - The MIT License (MIT) - -Copyright (c) 2018 Boilertalk Ltd. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - - License - MIT - Title - secp256k1.swift - Type - PSGroupSpecifier - - - FooterText - MIT License - -Copyright (c) 2018 Argent Labs Limited - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - License - MIT - Title - web3.swift - Type - PSGroupSpecifier - - - FooterText - Generated by CocoaPods - https://cocoapods.org - Title - - Type - PSGroupSpecifier - - - StringsTable - Acknowledgements - Title - Acknowledgements - - diff --git a/cocoapods/Pods/Target Support Files/Pods-TestApplication-TestApplicationTests/Pods-TestApplication-TestApplicationTests-dummy.m b/cocoapods/Pods/Target Support Files/Pods-TestApplication-TestApplicationTests/Pods-TestApplication-TestApplicationTests-dummy.m deleted file mode 100644 index f4bf837c..00000000 --- a/cocoapods/Pods/Target Support Files/Pods-TestApplication-TestApplicationTests/Pods-TestApplication-TestApplicationTests-dummy.m +++ /dev/null @@ -1,5 +0,0 @@ -#import -@interface PodsDummy_Pods_TestApplication_TestApplicationTests : NSObject -@end -@implementation PodsDummy_Pods_TestApplication_TestApplicationTests -@end diff --git a/cocoapods/Pods/Target Support Files/Pods-TestApplication-TestApplicationTests/Pods-TestApplication-TestApplicationTests-frameworks-Debug-input-files.xcfilelist b/cocoapods/Pods/Target Support Files/Pods-TestApplication-TestApplicationTests/Pods-TestApplication-TestApplicationTests-frameworks-Debug-input-files.xcfilelist deleted file mode 100644 index 0117b140..00000000 --- a/cocoapods/Pods/Target Support Files/Pods-TestApplication-TestApplicationTests/Pods-TestApplication-TestApplicationTests-frameworks-Debug-input-files.xcfilelist +++ /dev/null @@ -1,10 +0,0 @@ -${PODS_ROOT}/Target Support Files/Pods-TestApplication-TestApplicationTests/Pods-TestApplication-TestApplicationTests-frameworks.sh -${BUILT_PRODUCTS_DIR}/BestLogger/BestLogger.framework -${BUILT_PRODUCTS_DIR}/BigInt/BigInt.framework -${BUILT_PRODUCTS_DIR}/CryptoSwift/CryptoSwift.framework -${BUILT_PRODUCTS_DIR}/GenericJSON/GenericJSON.framework -${BUILT_PRODUCTS_DIR}/PromiseKit/PromiseKit.framework -${BUILT_PRODUCTS_DIR}/Torus-fetchNodeDetails/FetchNodeDetails.framework -${BUILT_PRODUCTS_DIR}/Torus-utils/TorusUtils.framework -${BUILT_PRODUCTS_DIR}/secp256k1.swift/secp256k1.framework -${BUILT_PRODUCTS_DIR}/web3.swift/web3.framework \ No newline at end of file diff --git a/cocoapods/Pods/Target Support Files/Pods-TestApplication-TestApplicationTests/Pods-TestApplication-TestApplicationTests-frameworks-Debug-output-files.xcfilelist b/cocoapods/Pods/Target Support Files/Pods-TestApplication-TestApplicationTests/Pods-TestApplication-TestApplicationTests-frameworks-Debug-output-files.xcfilelist deleted file mode 100644 index 770027ec..00000000 --- a/cocoapods/Pods/Target Support Files/Pods-TestApplication-TestApplicationTests/Pods-TestApplication-TestApplicationTests-frameworks-Debug-output-files.xcfilelist +++ /dev/null @@ -1,9 +0,0 @@ -${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/BestLogger.framework -${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/BigInt.framework -${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/CryptoSwift.framework -${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/GenericJSON.framework -${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/PromiseKit.framework -${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FetchNodeDetails.framework -${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/TorusUtils.framework -${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/secp256k1.framework -${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/web3.framework \ No newline at end of file diff --git a/cocoapods/Pods/Target Support Files/Pods-TestApplication-TestApplicationTests/Pods-TestApplication-TestApplicationTests-frameworks-Release-input-files.xcfilelist b/cocoapods/Pods/Target Support Files/Pods-TestApplication-TestApplicationTests/Pods-TestApplication-TestApplicationTests-frameworks-Release-input-files.xcfilelist deleted file mode 100644 index 0117b140..00000000 --- a/cocoapods/Pods/Target Support Files/Pods-TestApplication-TestApplicationTests/Pods-TestApplication-TestApplicationTests-frameworks-Release-input-files.xcfilelist +++ /dev/null @@ -1,10 +0,0 @@ -${PODS_ROOT}/Target Support Files/Pods-TestApplication-TestApplicationTests/Pods-TestApplication-TestApplicationTests-frameworks.sh -${BUILT_PRODUCTS_DIR}/BestLogger/BestLogger.framework -${BUILT_PRODUCTS_DIR}/BigInt/BigInt.framework -${BUILT_PRODUCTS_DIR}/CryptoSwift/CryptoSwift.framework -${BUILT_PRODUCTS_DIR}/GenericJSON/GenericJSON.framework -${BUILT_PRODUCTS_DIR}/PromiseKit/PromiseKit.framework -${BUILT_PRODUCTS_DIR}/Torus-fetchNodeDetails/FetchNodeDetails.framework -${BUILT_PRODUCTS_DIR}/Torus-utils/TorusUtils.framework -${BUILT_PRODUCTS_DIR}/secp256k1.swift/secp256k1.framework -${BUILT_PRODUCTS_DIR}/web3.swift/web3.framework \ No newline at end of file diff --git a/cocoapods/Pods/Target Support Files/Pods-TestApplication-TestApplicationTests/Pods-TestApplication-TestApplicationTests-frameworks-Release-output-files.xcfilelist b/cocoapods/Pods/Target Support Files/Pods-TestApplication-TestApplicationTests/Pods-TestApplication-TestApplicationTests-frameworks-Release-output-files.xcfilelist deleted file mode 100644 index 770027ec..00000000 --- a/cocoapods/Pods/Target Support Files/Pods-TestApplication-TestApplicationTests/Pods-TestApplication-TestApplicationTests-frameworks-Release-output-files.xcfilelist +++ /dev/null @@ -1,9 +0,0 @@ -${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/BestLogger.framework -${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/BigInt.framework -${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/CryptoSwift.framework -${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/GenericJSON.framework -${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/PromiseKit.framework -${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FetchNodeDetails.framework -${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/TorusUtils.framework -${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/secp256k1.framework -${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/web3.framework \ No newline at end of file diff --git a/cocoapods/Pods/Target Support Files/Pods-TestApplication-TestApplicationTests/Pods-TestApplication-TestApplicationTests-frameworks.sh b/cocoapods/Pods/Target Support Files/Pods-TestApplication-TestApplicationTests/Pods-TestApplication-TestApplicationTests-frameworks.sh deleted file mode 100755 index e050abaa..00000000 --- a/cocoapods/Pods/Target Support Files/Pods-TestApplication-TestApplicationTests/Pods-TestApplication-TestApplicationTests-frameworks.sh +++ /dev/null @@ -1,201 +0,0 @@ -#!/bin/sh -set -e -set -u -set -o pipefail - -function on_error { - echo "$(realpath -mq "${0}"):$1: error: Unexpected failure" -} -trap 'on_error $LINENO' ERR - -if [ -z ${FRAMEWORKS_FOLDER_PATH+x} ]; then - # If FRAMEWORKS_FOLDER_PATH is not set, then there's nowhere for us to copy - # frameworks to, so exit 0 (signalling the script phase was successful). - exit 0 -fi - -echo "mkdir -p ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" -mkdir -p "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" - -COCOAPODS_PARALLEL_CODE_SIGN="${COCOAPODS_PARALLEL_CODE_SIGN:-false}" -SWIFT_STDLIB_PATH="${DT_TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" -BCSYMBOLMAP_DIR="BCSymbolMaps" - - -# This protects against multiple targets copying the same framework dependency at the same time. The solution -# was originally proposed here: https://lists.samba.org/archive/rsync/2008-February/020158.html -RSYNC_PROTECT_TMP_FILES=(--filter "P .*.??????") - -# Copies and strips a vendored framework -install_framework() -{ - if [ -r "${BUILT_PRODUCTS_DIR}/$1" ]; then - local source="${BUILT_PRODUCTS_DIR}/$1" - elif [ -r "${BUILT_PRODUCTS_DIR}/$(basename "$1")" ]; then - local source="${BUILT_PRODUCTS_DIR}/$(basename "$1")" - elif [ -r "$1" ]; then - local source="$1" - fi - - local destination="${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" - - if [ -L "${source}" ]; then - echo "Symlinked..." - source="$(readlink "${source}")" - fi - - if [ -d "${source}/${BCSYMBOLMAP_DIR}" ]; then - # Locate and install any .bcsymbolmaps if present, and remove them from the .framework before the framework is copied - find "${source}/${BCSYMBOLMAP_DIR}" -name "*.bcsymbolmap"|while read f; do - echo "Installing $f" - install_bcsymbolmap "$f" "$destination" - rm "$f" - done - rmdir "${source}/${BCSYMBOLMAP_DIR}" - fi - - # Use filter instead of exclude so missing patterns don't throw errors. - echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --links --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${destination}\"" - rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --links --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${destination}" - - local basename - basename="$(basename -s .framework "$1")" - binary="${destination}/${basename}.framework/${basename}" - - if ! [ -r "$binary" ]; then - binary="${destination}/${basename}" - elif [ -L "${binary}" ]; then - echo "Destination binary is symlinked..." - dirname="$(dirname "${binary}")" - binary="${dirname}/$(readlink "${binary}")" - fi - - # Strip invalid architectures so "fat" simulator / device frameworks work on device - if [[ "$(file "$binary")" == *"dynamically linked shared library"* ]]; then - strip_invalid_archs "$binary" - fi - - # Resign the code if required by the build settings to avoid unstable apps - code_sign_if_enabled "${destination}/$(basename "$1")" - - # Embed linked Swift runtime libraries. No longer necessary as of Xcode 7. - if [ "${XCODE_VERSION_MAJOR}" -lt 7 ]; then - local swift_runtime_libs - swift_runtime_libs=$(xcrun otool -LX "$binary" | grep --color=never @rpath/libswift | sed -E s/@rpath\\/\(.+dylib\).*/\\1/g | uniq -u) - for lib in $swift_runtime_libs; do - echo "rsync -auv \"${SWIFT_STDLIB_PATH}/${lib}\" \"${destination}\"" - rsync -auv "${SWIFT_STDLIB_PATH}/${lib}" "${destination}" - code_sign_if_enabled "${destination}/${lib}" - done - fi -} -# Copies and strips a vendored dSYM -install_dsym() { - local source="$1" - warn_missing_arch=${2:-true} - if [ -r "$source" ]; then - # Copy the dSYM into the targets temp dir. - echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${DERIVED_FILES_DIR}\"" - rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${DERIVED_FILES_DIR}" - - local basename - basename="$(basename -s .dSYM "$source")" - binary_name="$(ls "$source/Contents/Resources/DWARF")" - binary="${DERIVED_FILES_DIR}/${basename}.dSYM/Contents/Resources/DWARF/${binary_name}" - - # Strip invalid architectures from the dSYM. - if [[ "$(file "$binary")" == *"Mach-O "*"dSYM companion"* ]]; then - strip_invalid_archs "$binary" "$warn_missing_arch" - fi - if [[ $STRIP_BINARY_RETVAL == 0 ]]; then - # Move the stripped file into its final destination. - echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --links --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${DERIVED_FILES_DIR}/${basename}.framework.dSYM\" \"${DWARF_DSYM_FOLDER_PATH}\"" - rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --links --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${DERIVED_FILES_DIR}/${basename}.dSYM" "${DWARF_DSYM_FOLDER_PATH}" - else - # The dSYM was not stripped at all, in this case touch a fake folder so the input/output paths from Xcode do not reexecute this script because the file is missing. - touch "${DWARF_DSYM_FOLDER_PATH}/${basename}.dSYM" - fi - fi -} - -# Used as a return value for each invocation of `strip_invalid_archs` function. -STRIP_BINARY_RETVAL=0 - -# Strip invalid architectures -strip_invalid_archs() { - binary="$1" - warn_missing_arch=${2:-true} - # Get architectures for current target binary - binary_archs="$(lipo -info "$binary" | rev | cut -d ':' -f1 | awk '{$1=$1;print}' | rev)" - # Intersect them with the architectures we are building for - intersected_archs="$(echo ${ARCHS[@]} ${binary_archs[@]} | tr ' ' '\n' | sort | uniq -d)" - # If there are no archs supported by this binary then warn the user - if [[ -z "$intersected_archs" ]]; then - if [[ "$warn_missing_arch" == "true" ]]; then - echo "warning: [CP] Vendored binary '$binary' contains architectures ($binary_archs) none of which match the current build architectures ($ARCHS)." - fi - STRIP_BINARY_RETVAL=1 - return - fi - stripped="" - for arch in $binary_archs; do - if ! [[ "${ARCHS}" == *"$arch"* ]]; then - # Strip non-valid architectures in-place - lipo -remove "$arch" -output "$binary" "$binary" - stripped="$stripped $arch" - fi - done - if [[ "$stripped" ]]; then - echo "Stripped $binary of architectures:$stripped" - fi - STRIP_BINARY_RETVAL=0 -} - -# Copies the bcsymbolmap files of a vendored framework -install_bcsymbolmap() { - local bcsymbolmap_path="$1" - local destination="${BUILT_PRODUCTS_DIR}" - echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${bcsymbolmap_path}" "${destination}"" - rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${bcsymbolmap_path}" "${destination}" -} - -# Signs a framework with the provided identity -code_sign_if_enabled() { - if [ -n "${EXPANDED_CODE_SIGN_IDENTITY:-}" -a "${CODE_SIGNING_REQUIRED:-}" != "NO" -a "${CODE_SIGNING_ALLOWED}" != "NO" ]; then - # Use the current code_sign_identity - echo "Code Signing $1 with Identity ${EXPANDED_CODE_SIGN_IDENTITY_NAME}" - local code_sign_cmd="/usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} ${OTHER_CODE_SIGN_FLAGS:-} --preserve-metadata=identifier,entitlements '$1'" - - if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then - code_sign_cmd="$code_sign_cmd &" - fi - echo "$code_sign_cmd" - eval "$code_sign_cmd" - fi -} - -if [[ "$CONFIGURATION" == "Debug" ]]; then - install_framework "${BUILT_PRODUCTS_DIR}/BestLogger/BestLogger.framework" - install_framework "${BUILT_PRODUCTS_DIR}/BigInt/BigInt.framework" - install_framework "${BUILT_PRODUCTS_DIR}/CryptoSwift/CryptoSwift.framework" - install_framework "${BUILT_PRODUCTS_DIR}/GenericJSON/GenericJSON.framework" - install_framework "${BUILT_PRODUCTS_DIR}/PromiseKit/PromiseKit.framework" - install_framework "${BUILT_PRODUCTS_DIR}/Torus-fetchNodeDetails/FetchNodeDetails.framework" - install_framework "${BUILT_PRODUCTS_DIR}/Torus-utils/TorusUtils.framework" - install_framework "${BUILT_PRODUCTS_DIR}/secp256k1.swift/secp256k1.framework" - install_framework "${BUILT_PRODUCTS_DIR}/web3.swift/web3.framework" -fi -if [[ "$CONFIGURATION" == "Release" ]]; then - install_framework "${BUILT_PRODUCTS_DIR}/BestLogger/BestLogger.framework" - install_framework "${BUILT_PRODUCTS_DIR}/BigInt/BigInt.framework" - install_framework "${BUILT_PRODUCTS_DIR}/CryptoSwift/CryptoSwift.framework" - install_framework "${BUILT_PRODUCTS_DIR}/GenericJSON/GenericJSON.framework" - install_framework "${BUILT_PRODUCTS_DIR}/PromiseKit/PromiseKit.framework" - install_framework "${BUILT_PRODUCTS_DIR}/Torus-fetchNodeDetails/FetchNodeDetails.framework" - install_framework "${BUILT_PRODUCTS_DIR}/Torus-utils/TorusUtils.framework" - install_framework "${BUILT_PRODUCTS_DIR}/secp256k1.swift/secp256k1.framework" - install_framework "${BUILT_PRODUCTS_DIR}/web3.swift/web3.framework" -fi -if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then - wait -fi diff --git a/cocoapods/Pods/Target Support Files/Pods-TestApplication-TestApplicationTests/Pods-TestApplication-TestApplicationTests-umbrella.h b/cocoapods/Pods/Target Support Files/Pods-TestApplication-TestApplicationTests/Pods-TestApplication-TestApplicationTests-umbrella.h deleted file mode 100644 index a55dc480..00000000 --- a/cocoapods/Pods/Target Support Files/Pods-TestApplication-TestApplicationTests/Pods-TestApplication-TestApplicationTests-umbrella.h +++ /dev/null @@ -1,16 +0,0 @@ -#ifdef __OBJC__ -#import -#else -#ifndef FOUNDATION_EXPORT -#if defined(__cplusplus) -#define FOUNDATION_EXPORT extern "C" -#else -#define FOUNDATION_EXPORT extern -#endif -#endif -#endif - - -FOUNDATION_EXPORT double Pods_TestApplication_TestApplicationTestsVersionNumber; -FOUNDATION_EXPORT const unsigned char Pods_TestApplication_TestApplicationTestsVersionString[]; - diff --git a/cocoapods/Pods/Target Support Files/Pods-TestApplication-TestApplicationTests/Pods-TestApplication-TestApplicationTests.debug.xcconfig b/cocoapods/Pods/Target Support Files/Pods-TestApplication-TestApplicationTests/Pods-TestApplication-TestApplicationTests.debug.xcconfig deleted file mode 100644 index b91a737e..00000000 --- a/cocoapods/Pods/Target Support Files/Pods-TestApplication-TestApplicationTests/Pods-TestApplication-TestApplicationTests.debug.xcconfig +++ /dev/null @@ -1,15 +0,0 @@ -ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES -CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO -EXCLUDED_ARCHS[sdk=iphonesimulator*] = arm64 -FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/BestLogger" "${PODS_CONFIGURATION_BUILD_DIR}/BigInt" "${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift" "${PODS_CONFIGURATION_BUILD_DIR}/GenericJSON" "${PODS_CONFIGURATION_BUILD_DIR}/PromiseKit" "${PODS_CONFIGURATION_BUILD_DIR}/Torus-fetchNodeDetails" "${PODS_CONFIGURATION_BUILD_DIR}/Torus-utils" "${PODS_CONFIGURATION_BUILD_DIR}/secp256k1.swift" "${PODS_CONFIGURATION_BUILD_DIR}/web3.swift" -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/BestLogger/BestLogger.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/BigInt/BigInt.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift/CryptoSwift.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/GenericJSON/GenericJSON.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/PromiseKit/PromiseKit.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Torus-fetchNodeDetails/FetchNodeDetails.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Torus-utils/TorusUtils.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/secp256k1.swift/secp256k1.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/web3.swift/web3.framework/Headers" -LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' -OTHER_LDFLAGS = $(inherited) -framework "BestLogger" -framework "BigInt" -framework "CryptoSwift" -framework "FetchNodeDetails" -framework "Foundation" -framework "GenericJSON" -framework "PromiseKit" -framework "TorusUtils" -framework "secp256k1" -framework "web3" -OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -PODS_BUILD_DIR = ${BUILD_DIR} -PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) -PODS_PODFILE_DIR_PATH = ${SRCROOT}/. -PODS_ROOT = ${SRCROOT}/Pods -PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates -USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/cocoapods/Pods/Target Support Files/Pods-TestApplication-TestApplicationTests/Pods-TestApplication-TestApplicationTests.modulemap b/cocoapods/Pods/Target Support Files/Pods-TestApplication-TestApplicationTests/Pods-TestApplication-TestApplicationTests.modulemap deleted file mode 100644 index a11a866b..00000000 --- a/cocoapods/Pods/Target Support Files/Pods-TestApplication-TestApplicationTests/Pods-TestApplication-TestApplicationTests.modulemap +++ /dev/null @@ -1,6 +0,0 @@ -framework module Pods_TestApplication_TestApplicationTests { - umbrella header "Pods-TestApplication-TestApplicationTests-umbrella.h" - - export * - module * { export * } -} diff --git a/cocoapods/Pods/Target Support Files/Pods-TestApplication-TestApplicationTests/Pods-TestApplication-TestApplicationTests.release.xcconfig b/cocoapods/Pods/Target Support Files/Pods-TestApplication-TestApplicationTests/Pods-TestApplication-TestApplicationTests.release.xcconfig deleted file mode 100644 index b91a737e..00000000 --- a/cocoapods/Pods/Target Support Files/Pods-TestApplication-TestApplicationTests/Pods-TestApplication-TestApplicationTests.release.xcconfig +++ /dev/null @@ -1,15 +0,0 @@ -ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES -CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO -EXCLUDED_ARCHS[sdk=iphonesimulator*] = arm64 -FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/BestLogger" "${PODS_CONFIGURATION_BUILD_DIR}/BigInt" "${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift" "${PODS_CONFIGURATION_BUILD_DIR}/GenericJSON" "${PODS_CONFIGURATION_BUILD_DIR}/PromiseKit" "${PODS_CONFIGURATION_BUILD_DIR}/Torus-fetchNodeDetails" "${PODS_CONFIGURATION_BUILD_DIR}/Torus-utils" "${PODS_CONFIGURATION_BUILD_DIR}/secp256k1.swift" "${PODS_CONFIGURATION_BUILD_DIR}/web3.swift" -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/BestLogger/BestLogger.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/BigInt/BigInt.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift/CryptoSwift.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/GenericJSON/GenericJSON.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/PromiseKit/PromiseKit.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Torus-fetchNodeDetails/FetchNodeDetails.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Torus-utils/TorusUtils.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/secp256k1.swift/secp256k1.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/web3.swift/web3.framework/Headers" -LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' -OTHER_LDFLAGS = $(inherited) -framework "BestLogger" -framework "BigInt" -framework "CryptoSwift" -framework "FetchNodeDetails" -framework "Foundation" -framework "GenericJSON" -framework "PromiseKit" -framework "TorusUtils" -framework "secp256k1" -framework "web3" -OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -PODS_BUILD_DIR = ${BUILD_DIR} -PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) -PODS_PODFILE_DIR_PATH = ${SRCROOT}/. -PODS_ROOT = ${SRCROOT}/Pods -PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates -USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/cocoapods/Pods/Target Support Files/Pods-TestApplication/Pods-TestApplication-Info.plist b/cocoapods/Pods/Target Support Files/Pods-TestApplication/Pods-TestApplication-Info.plist deleted file mode 100644 index 2243fe6e..00000000 --- a/cocoapods/Pods/Target Support Files/Pods-TestApplication/Pods-TestApplication-Info.plist +++ /dev/null @@ -1,26 +0,0 @@ - - - - - CFBundleDevelopmentRegion - en - CFBundleExecutable - ${EXECUTABLE_NAME} - CFBundleIdentifier - ${PRODUCT_BUNDLE_IDENTIFIER} - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - ${PRODUCT_NAME} - CFBundlePackageType - FMWK - CFBundleShortVersionString - 1.0.0 - CFBundleSignature - ???? - CFBundleVersion - ${CURRENT_PROJECT_VERSION} - NSPrincipalClass - - - diff --git a/cocoapods/Pods/Target Support Files/Pods-TestApplication/Pods-TestApplication-acknowledgements.markdown b/cocoapods/Pods/Target Support Files/Pods-TestApplication/Pods-TestApplication-acknowledgements.markdown deleted file mode 100644 index a58bf8a4..00000000 --- a/cocoapods/Pods/Target Support Files/Pods-TestApplication/Pods-TestApplication-acknowledgements.markdown +++ /dev/null @@ -1,182 +0,0 @@ -# Acknowledgements -This application makes use of the following third party libraries: - -## BestLogger - -Copyright 2020 Shubham Rathi - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - -## BigInt - - -Copyright (c) 2016-2017 Károly Lőrentey - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - -## CryptoSwift - -Copyright (C) 2014-2017 Marcin Krzyżanowski -This software is provided 'as-is', without any express or implied warranty. - -In no event will the authors be held liable for any damages arising from the use of this software. - -Permission is granted to anyone to use this software for any purpose,including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: - -- The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation is required. -- Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -- This notice may not be removed or altered from any source or binary distribution. -- Redistributions of any form whatsoever must retain the following acknowledgment: 'This product includes software developed by the "Marcin Krzyzanowski" (http://krzyzanowskim.com/).' - - -## GenericJSON - -MIT License - -Copyright (c) 2017 Tomáš Znamenáček - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - -## PromiseKit - -Copyright 2016-present, Max Howell; mxcl@me.com - -Permission is hereby granted, free of charge, to any person obtaining a -copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be included -in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - -## Torus-fetchNodeDetails - -Copyright (c) 2020 Torus Labs Private Limited (https://tor.us) - -Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: - -1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. - -2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. - -3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - -## Torus-utils - -Copyright (c) 2020 Torus Labs Private Limited (https://tor.us) - -Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: - -1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. - -2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. - -3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - -## secp256k1.swift - -The MIT License (MIT) - -Copyright (c) 2018 Boilertalk Ltd. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - - -## web3.swift - -MIT License - -Copyright (c) 2018 Argent Labs Limited - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - -Generated by CocoaPods - https://cocoapods.org diff --git a/cocoapods/Pods/Target Support Files/Pods-TestApplication/Pods-TestApplication-acknowledgements.plist b/cocoapods/Pods/Target Support Files/Pods-TestApplication/Pods-TestApplication-acknowledgements.plist deleted file mode 100644 index 9e90d246..00000000 --- a/cocoapods/Pods/Target Support Files/Pods-TestApplication/Pods-TestApplication-acknowledgements.plist +++ /dev/null @@ -1,262 +0,0 @@ - - - - - PreferenceSpecifiers - - - FooterText - This application makes use of the following third party libraries: - Title - Acknowledgements - Type - PSGroupSpecifier - - - FooterText - Copyright 2020 Shubham Rathi - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - License - MIT - Title - BestLogger - Type - PSGroupSpecifier - - - FooterText - -Copyright (c) 2016-2017 Károly Lőrentey - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - License - MIT - Title - BigInt - Type - PSGroupSpecifier - - - FooterText - Copyright (C) 2014-2017 Marcin Krzyżanowski <marcin.krzyzanowski@gmail.com> -This software is provided 'as-is', without any express or implied warranty. - -In no event will the authors be held liable for any damages arising from the use of this software. - -Permission is granted to anyone to use this software for any purpose,including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: - -- The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation is required. -- Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -- This notice may not be removed or altered from any source or binary distribution. -- Redistributions of any form whatsoever must retain the following acknowledgment: 'This product includes software developed by the "Marcin Krzyzanowski" (http://krzyzanowskim.com/).' - - License - Attribution - Title - CryptoSwift - Type - PSGroupSpecifier - - - FooterText - MIT License - -Copyright (c) 2017 Tomáš Znamenáček - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - License - MIT - Title - GenericJSON - Type - PSGroupSpecifier - - - FooterText - Copyright 2016-present, Max Howell; mxcl@me.com - -Permission is hereby granted, free of charge, to any person obtaining a -copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be included -in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - License - MIT - Title - PromiseKit - Type - PSGroupSpecifier - - - FooterText - Copyright (c) 2020 Torus Labs Private Limited (https://tor.us) - -Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: - -1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. - -2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. - -3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - License - BSD - Title - Torus-fetchNodeDetails - Type - PSGroupSpecifier - - - FooterText - Copyright (c) 2020 Torus Labs Private Limited (https://tor.us) - -Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: - -1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. - -2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. - -3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - License - BSD - Title - Torus-utils - Type - PSGroupSpecifier - - - FooterText - The MIT License (MIT) - -Copyright (c) 2018 Boilertalk Ltd. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - - License - MIT - Title - secp256k1.swift - Type - PSGroupSpecifier - - - FooterText - MIT License - -Copyright (c) 2018 Argent Labs Limited - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - License - MIT - Title - web3.swift - Type - PSGroupSpecifier - - - FooterText - Generated by CocoaPods - https://cocoapods.org - Title - - Type - PSGroupSpecifier - - - StringsTable - Acknowledgements - Title - Acknowledgements - - diff --git a/cocoapods/Pods/Target Support Files/Pods-TestApplication/Pods-TestApplication-dummy.m b/cocoapods/Pods/Target Support Files/Pods-TestApplication/Pods-TestApplication-dummy.m deleted file mode 100644 index 4c310b7b..00000000 --- a/cocoapods/Pods/Target Support Files/Pods-TestApplication/Pods-TestApplication-dummy.m +++ /dev/null @@ -1,5 +0,0 @@ -#import -@interface PodsDummy_Pods_TestApplication : NSObject -@end -@implementation PodsDummy_Pods_TestApplication -@end diff --git a/cocoapods/Pods/Target Support Files/Pods-TestApplication/Pods-TestApplication-umbrella.h b/cocoapods/Pods/Target Support Files/Pods-TestApplication/Pods-TestApplication-umbrella.h deleted file mode 100644 index 5365201d..00000000 --- a/cocoapods/Pods/Target Support Files/Pods-TestApplication/Pods-TestApplication-umbrella.h +++ /dev/null @@ -1,16 +0,0 @@ -#ifdef __OBJC__ -#import -#else -#ifndef FOUNDATION_EXPORT -#if defined(__cplusplus) -#define FOUNDATION_EXPORT extern "C" -#else -#define FOUNDATION_EXPORT extern -#endif -#endif -#endif - - -FOUNDATION_EXPORT double Pods_TestApplicationVersionNumber; -FOUNDATION_EXPORT const unsigned char Pods_TestApplicationVersionString[]; - diff --git a/cocoapods/Pods/Target Support Files/Pods-TestApplication/Pods-TestApplication.debug.xcconfig b/cocoapods/Pods/Target Support Files/Pods-TestApplication/Pods-TestApplication.debug.xcconfig deleted file mode 100644 index 67b9658f..00000000 --- a/cocoapods/Pods/Target Support Files/Pods-TestApplication/Pods-TestApplication.debug.xcconfig +++ /dev/null @@ -1,14 +0,0 @@ -CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO -EXCLUDED_ARCHS[sdk=iphonesimulator*] = arm64 -FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/BestLogger" "${PODS_CONFIGURATION_BUILD_DIR}/BigInt" "${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift" "${PODS_CONFIGURATION_BUILD_DIR}/GenericJSON" "${PODS_CONFIGURATION_BUILD_DIR}/PromiseKit" "${PODS_CONFIGURATION_BUILD_DIR}/Torus-fetchNodeDetails" "${PODS_CONFIGURATION_BUILD_DIR}/Torus-utils" "${PODS_CONFIGURATION_BUILD_DIR}/secp256k1.swift" "${PODS_CONFIGURATION_BUILD_DIR}/web3.swift" -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/BestLogger/BestLogger.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/BigInt/BigInt.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift/CryptoSwift.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/GenericJSON/GenericJSON.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/PromiseKit/PromiseKit.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Torus-fetchNodeDetails/FetchNodeDetails.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Torus-utils/TorusUtils.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/secp256k1.swift/secp256k1.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/web3.swift/web3.framework/Headers" -LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' '@executable_path/../../Frameworks' -OTHER_LDFLAGS = $(inherited) -framework "BestLogger" -framework "BigInt" -framework "CryptoSwift" -framework "FetchNodeDetails" -framework "Foundation" -framework "GenericJSON" -framework "PromiseKit" -framework "TorusUtils" -framework "secp256k1" -framework "web3" -OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -PODS_BUILD_DIR = ${BUILD_DIR} -PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) -PODS_PODFILE_DIR_PATH = ${SRCROOT}/. -PODS_ROOT = ${SRCROOT}/Pods -PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates -USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/cocoapods/Pods/Target Support Files/Pods-TestApplication/Pods-TestApplication.modulemap b/cocoapods/Pods/Target Support Files/Pods-TestApplication/Pods-TestApplication.modulemap deleted file mode 100644 index a18fd9b7..00000000 --- a/cocoapods/Pods/Target Support Files/Pods-TestApplication/Pods-TestApplication.modulemap +++ /dev/null @@ -1,6 +0,0 @@ -framework module Pods_TestApplication { - umbrella header "Pods-TestApplication-umbrella.h" - - export * - module * { export * } -} diff --git a/cocoapods/Pods/Target Support Files/Pods-TestApplication/Pods-TestApplication.release.xcconfig b/cocoapods/Pods/Target Support Files/Pods-TestApplication/Pods-TestApplication.release.xcconfig deleted file mode 100644 index 67b9658f..00000000 --- a/cocoapods/Pods/Target Support Files/Pods-TestApplication/Pods-TestApplication.release.xcconfig +++ /dev/null @@ -1,14 +0,0 @@ -CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO -EXCLUDED_ARCHS[sdk=iphonesimulator*] = arm64 -FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/BestLogger" "${PODS_CONFIGURATION_BUILD_DIR}/BigInt" "${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift" "${PODS_CONFIGURATION_BUILD_DIR}/GenericJSON" "${PODS_CONFIGURATION_BUILD_DIR}/PromiseKit" "${PODS_CONFIGURATION_BUILD_DIR}/Torus-fetchNodeDetails" "${PODS_CONFIGURATION_BUILD_DIR}/Torus-utils" "${PODS_CONFIGURATION_BUILD_DIR}/secp256k1.swift" "${PODS_CONFIGURATION_BUILD_DIR}/web3.swift" -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/BestLogger/BestLogger.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/BigInt/BigInt.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift/CryptoSwift.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/GenericJSON/GenericJSON.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/PromiseKit/PromiseKit.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Torus-fetchNodeDetails/FetchNodeDetails.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Torus-utils/TorusUtils.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/secp256k1.swift/secp256k1.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/web3.swift/web3.framework/Headers" -LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' '@executable_path/../../Frameworks' -OTHER_LDFLAGS = $(inherited) -framework "BestLogger" -framework "BigInt" -framework "CryptoSwift" -framework "FetchNodeDetails" -framework "Foundation" -framework "GenericJSON" -framework "PromiseKit" -framework "TorusUtils" -framework "secp256k1" -framework "web3" -OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -PODS_BUILD_DIR = ${BUILD_DIR} -PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) -PODS_PODFILE_DIR_PATH = ${SRCROOT}/. -PODS_ROOT = ${SRCROOT}/Pods -PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates -USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/cocoapods/Pods/Target Support Files/PromiseKit/PromiseKit-Info.plist b/cocoapods/Pods/Target Support Files/PromiseKit/PromiseKit-Info.plist deleted file mode 100644 index 5ba79616..00000000 --- a/cocoapods/Pods/Target Support Files/PromiseKit/PromiseKit-Info.plist +++ /dev/null @@ -1,26 +0,0 @@ - - - - - CFBundleDevelopmentRegion - en - CFBundleExecutable - ${EXECUTABLE_NAME} - CFBundleIdentifier - ${PRODUCT_BUNDLE_IDENTIFIER} - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - ${PRODUCT_NAME} - CFBundlePackageType - FMWK - CFBundleShortVersionString - 6.15.3 - CFBundleSignature - ???? - CFBundleVersion - ${CURRENT_PROJECT_VERSION} - NSPrincipalClass - - - diff --git a/cocoapods/Pods/Target Support Files/PromiseKit/PromiseKit-dummy.m b/cocoapods/Pods/Target Support Files/PromiseKit/PromiseKit-dummy.m deleted file mode 100644 index ce924513..00000000 --- a/cocoapods/Pods/Target Support Files/PromiseKit/PromiseKit-dummy.m +++ /dev/null @@ -1,5 +0,0 @@ -#import -@interface PodsDummy_PromiseKit : NSObject -@end -@implementation PodsDummy_PromiseKit -@end diff --git a/cocoapods/Pods/Target Support Files/PromiseKit/PromiseKit-prefix.pch b/cocoapods/Pods/Target Support Files/PromiseKit/PromiseKit-prefix.pch deleted file mode 100644 index beb2a244..00000000 --- a/cocoapods/Pods/Target Support Files/PromiseKit/PromiseKit-prefix.pch +++ /dev/null @@ -1,12 +0,0 @@ -#ifdef __OBJC__ -#import -#else -#ifndef FOUNDATION_EXPORT -#if defined(__cplusplus) -#define FOUNDATION_EXPORT extern "C" -#else -#define FOUNDATION_EXPORT extern -#endif -#endif -#endif - diff --git a/cocoapods/Pods/Target Support Files/PromiseKit/PromiseKit-umbrella.h b/cocoapods/Pods/Target Support Files/PromiseKit/PromiseKit-umbrella.h deleted file mode 100644 index 809dfdce..00000000 --- a/cocoapods/Pods/Target Support Files/PromiseKit/PromiseKit-umbrella.h +++ /dev/null @@ -1,23 +0,0 @@ -#ifdef __OBJC__ -#import -#else -#ifndef FOUNDATION_EXPORT -#if defined(__cplusplus) -#define FOUNDATION_EXPORT extern "C" -#else -#define FOUNDATION_EXPORT extern -#endif -#endif -#endif - -#import "fwd.h" -#import "AnyPromise.h" -#import "PromiseKit.h" -#import "NSURLSession+AnyPromise.h" -#import "NSTask+AnyPromise.h" -#import "NSNotificationCenter+AnyPromise.h" -#import "PMKFoundation.h" - -FOUNDATION_EXPORT double PromiseKitVersionNumber; -FOUNDATION_EXPORT const unsigned char PromiseKitVersionString[]; - diff --git a/cocoapods/Pods/Target Support Files/PromiseKit/PromiseKit.debug.xcconfig b/cocoapods/Pods/Target Support Files/PromiseKit/PromiseKit.debug.xcconfig deleted file mode 100644 index 920e1fe3..00000000 --- a/cocoapods/Pods/Target Support Files/PromiseKit/PromiseKit.debug.xcconfig +++ /dev/null @@ -1,13 +0,0 @@ -CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO -CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/PromiseKit -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -OTHER_LDFLAGS = $(inherited) -framework "Foundation" -OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -DPMKCocoaPods -PODS_BUILD_DIR = ${BUILD_DIR} -PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) -PODS_ROOT = ${SRCROOT} -PODS_TARGET_SRCROOT = ${PODS_ROOT}/PromiseKit -PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates -PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} -SKIP_INSTALL = YES -USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/cocoapods/Pods/Target Support Files/PromiseKit/PromiseKit.modulemap b/cocoapods/Pods/Target Support Files/PromiseKit/PromiseKit.modulemap deleted file mode 100644 index 2b26033e..00000000 --- a/cocoapods/Pods/Target Support Files/PromiseKit/PromiseKit.modulemap +++ /dev/null @@ -1,6 +0,0 @@ -framework module PromiseKit { - umbrella header "PromiseKit-umbrella.h" - - export * - module * { export * } -} diff --git a/cocoapods/Pods/Target Support Files/PromiseKit/PromiseKit.release.xcconfig b/cocoapods/Pods/Target Support Files/PromiseKit/PromiseKit.release.xcconfig deleted file mode 100644 index 920e1fe3..00000000 --- a/cocoapods/Pods/Target Support Files/PromiseKit/PromiseKit.release.xcconfig +++ /dev/null @@ -1,13 +0,0 @@ -CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO -CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/PromiseKit -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -OTHER_LDFLAGS = $(inherited) -framework "Foundation" -OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -DPMKCocoaPods -PODS_BUILD_DIR = ${BUILD_DIR} -PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) -PODS_ROOT = ${SRCROOT} -PODS_TARGET_SRCROOT = ${PODS_ROOT}/PromiseKit -PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates -PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} -SKIP_INSTALL = YES -USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/cocoapods/Pods/Target Support Files/Torus-fetchNodeDetails/Torus-fetchNodeDetails-Info.plist b/cocoapods/Pods/Target Support Files/Torus-fetchNodeDetails/Torus-fetchNodeDetails-Info.plist deleted file mode 100644 index 2243fe6e..00000000 --- a/cocoapods/Pods/Target Support Files/Torus-fetchNodeDetails/Torus-fetchNodeDetails-Info.plist +++ /dev/null @@ -1,26 +0,0 @@ - - - - - CFBundleDevelopmentRegion - en - CFBundleExecutable - ${EXECUTABLE_NAME} - CFBundleIdentifier - ${PRODUCT_BUNDLE_IDENTIFIER} - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - ${PRODUCT_NAME} - CFBundlePackageType - FMWK - CFBundleShortVersionString - 1.0.0 - CFBundleSignature - ???? - CFBundleVersion - ${CURRENT_PROJECT_VERSION} - NSPrincipalClass - - - diff --git a/cocoapods/Pods/Target Support Files/Torus-fetchNodeDetails/Torus-fetchNodeDetails-dummy.m b/cocoapods/Pods/Target Support Files/Torus-fetchNodeDetails/Torus-fetchNodeDetails-dummy.m deleted file mode 100644 index 82d0a187..00000000 --- a/cocoapods/Pods/Target Support Files/Torus-fetchNodeDetails/Torus-fetchNodeDetails-dummy.m +++ /dev/null @@ -1,5 +0,0 @@ -#import -@interface PodsDummy_Torus_fetchNodeDetails : NSObject -@end -@implementation PodsDummy_Torus_fetchNodeDetails -@end diff --git a/cocoapods/Pods/Target Support Files/Torus-fetchNodeDetails/Torus-fetchNodeDetails-prefix.pch b/cocoapods/Pods/Target Support Files/Torus-fetchNodeDetails/Torus-fetchNodeDetails-prefix.pch deleted file mode 100644 index beb2a244..00000000 --- a/cocoapods/Pods/Target Support Files/Torus-fetchNodeDetails/Torus-fetchNodeDetails-prefix.pch +++ /dev/null @@ -1,12 +0,0 @@ -#ifdef __OBJC__ -#import -#else -#ifndef FOUNDATION_EXPORT -#if defined(__cplusplus) -#define FOUNDATION_EXPORT extern "C" -#else -#define FOUNDATION_EXPORT extern -#endif -#endif -#endif - diff --git a/cocoapods/Pods/Target Support Files/Torus-fetchNodeDetails/Torus-fetchNodeDetails-umbrella.h b/cocoapods/Pods/Target Support Files/Torus-fetchNodeDetails/Torus-fetchNodeDetails-umbrella.h deleted file mode 100644 index c914edb9..00000000 --- a/cocoapods/Pods/Target Support Files/Torus-fetchNodeDetails/Torus-fetchNodeDetails-umbrella.h +++ /dev/null @@ -1,16 +0,0 @@ -#ifdef __OBJC__ -#import -#else -#ifndef FOUNDATION_EXPORT -#if defined(__cplusplus) -#define FOUNDATION_EXPORT extern "C" -#else -#define FOUNDATION_EXPORT extern -#endif -#endif -#endif - - -FOUNDATION_EXPORT double FetchNodeDetailsVersionNumber; -FOUNDATION_EXPORT const unsigned char FetchNodeDetailsVersionString[]; - diff --git a/cocoapods/Pods/Target Support Files/Torus-fetchNodeDetails/Torus-fetchNodeDetails.debug.xcconfig b/cocoapods/Pods/Target Support Files/Torus-fetchNodeDetails/Torus-fetchNodeDetails.debug.xcconfig deleted file mode 100644 index 151e540c..00000000 --- a/cocoapods/Pods/Target Support Files/Torus-fetchNodeDetails/Torus-fetchNodeDetails.debug.xcconfig +++ /dev/null @@ -1,14 +0,0 @@ -CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO -CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/Torus-fetchNodeDetails -EXCLUDED_ARCHS[sdk=iphonesimulator*] = arm64 -FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/BestLogger" "${PODS_CONFIGURATION_BUILD_DIR}/BigInt" "${PODS_CONFIGURATION_BUILD_DIR}/GenericJSON" "${PODS_CONFIGURATION_BUILD_DIR}/PromiseKit" "${PODS_CONFIGURATION_BUILD_DIR}/secp256k1.swift" "${PODS_CONFIGURATION_BUILD_DIR}/web3.swift" -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -PODS_BUILD_DIR = ${BUILD_DIR} -PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) -PODS_ROOT = ${SRCROOT} -PODS_TARGET_SRCROOT = ${PODS_ROOT}/Torus-fetchNodeDetails -PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates -PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} -SKIP_INSTALL = YES -USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/cocoapods/Pods/Target Support Files/Torus-fetchNodeDetails/Torus-fetchNodeDetails.modulemap b/cocoapods/Pods/Target Support Files/Torus-fetchNodeDetails/Torus-fetchNodeDetails.modulemap deleted file mode 100644 index 5d5f414f..00000000 --- a/cocoapods/Pods/Target Support Files/Torus-fetchNodeDetails/Torus-fetchNodeDetails.modulemap +++ /dev/null @@ -1,6 +0,0 @@ -framework module FetchNodeDetails { - umbrella header "Torus-fetchNodeDetails-umbrella.h" - - export * - module * { export * } -} diff --git a/cocoapods/Pods/Target Support Files/Torus-fetchNodeDetails/Torus-fetchNodeDetails.release.xcconfig b/cocoapods/Pods/Target Support Files/Torus-fetchNodeDetails/Torus-fetchNodeDetails.release.xcconfig deleted file mode 100644 index 151e540c..00000000 --- a/cocoapods/Pods/Target Support Files/Torus-fetchNodeDetails/Torus-fetchNodeDetails.release.xcconfig +++ /dev/null @@ -1,14 +0,0 @@ -CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO -CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/Torus-fetchNodeDetails -EXCLUDED_ARCHS[sdk=iphonesimulator*] = arm64 -FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/BestLogger" "${PODS_CONFIGURATION_BUILD_DIR}/BigInt" "${PODS_CONFIGURATION_BUILD_DIR}/GenericJSON" "${PODS_CONFIGURATION_BUILD_DIR}/PromiseKit" "${PODS_CONFIGURATION_BUILD_DIR}/secp256k1.swift" "${PODS_CONFIGURATION_BUILD_DIR}/web3.swift" -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -PODS_BUILD_DIR = ${BUILD_DIR} -PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) -PODS_ROOT = ${SRCROOT} -PODS_TARGET_SRCROOT = ${PODS_ROOT}/Torus-fetchNodeDetails -PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates -PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} -SKIP_INSTALL = YES -USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/cocoapods/Pods/Target Support Files/Torus-utils/Torus-utils-Info.plist b/cocoapods/Pods/Target Support Files/Torus-utils/Torus-utils-Info.plist deleted file mode 100644 index 2243fe6e..00000000 --- a/cocoapods/Pods/Target Support Files/Torus-utils/Torus-utils-Info.plist +++ /dev/null @@ -1,26 +0,0 @@ - - - - - CFBundleDevelopmentRegion - en - CFBundleExecutable - ${EXECUTABLE_NAME} - CFBundleIdentifier - ${PRODUCT_BUNDLE_IDENTIFIER} - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - ${PRODUCT_NAME} - CFBundlePackageType - FMWK - CFBundleShortVersionString - 1.0.0 - CFBundleSignature - ???? - CFBundleVersion - ${CURRENT_PROJECT_VERSION} - NSPrincipalClass - - - diff --git a/cocoapods/Pods/Target Support Files/Torus-utils/Torus-utils-dummy.m b/cocoapods/Pods/Target Support Files/Torus-utils/Torus-utils-dummy.m deleted file mode 100644 index dddd9d0a..00000000 --- a/cocoapods/Pods/Target Support Files/Torus-utils/Torus-utils-dummy.m +++ /dev/null @@ -1,5 +0,0 @@ -#import -@interface PodsDummy_Torus_utils : NSObject -@end -@implementation PodsDummy_Torus_utils -@end diff --git a/cocoapods/Pods/Target Support Files/Torus-utils/Torus-utils-prefix.pch b/cocoapods/Pods/Target Support Files/Torus-utils/Torus-utils-prefix.pch deleted file mode 100644 index beb2a244..00000000 --- a/cocoapods/Pods/Target Support Files/Torus-utils/Torus-utils-prefix.pch +++ /dev/null @@ -1,12 +0,0 @@ -#ifdef __OBJC__ -#import -#else -#ifndef FOUNDATION_EXPORT -#if defined(__cplusplus) -#define FOUNDATION_EXPORT extern "C" -#else -#define FOUNDATION_EXPORT extern -#endif -#endif -#endif - diff --git a/cocoapods/Pods/Target Support Files/Torus-utils/Torus-utils-umbrella.h b/cocoapods/Pods/Target Support Files/Torus-utils/Torus-utils-umbrella.h deleted file mode 100644 index ef1b3428..00000000 --- a/cocoapods/Pods/Target Support Files/Torus-utils/Torus-utils-umbrella.h +++ /dev/null @@ -1,16 +0,0 @@ -#ifdef __OBJC__ -#import -#else -#ifndef FOUNDATION_EXPORT -#if defined(__cplusplus) -#define FOUNDATION_EXPORT extern "C" -#else -#define FOUNDATION_EXPORT extern -#endif -#endif -#endif - - -FOUNDATION_EXPORT double TorusUtilsVersionNumber; -FOUNDATION_EXPORT const unsigned char TorusUtilsVersionString[]; - diff --git a/cocoapods/Pods/Target Support Files/Torus-utils/Torus-utils.debug.xcconfig b/cocoapods/Pods/Target Support Files/Torus-utils/Torus-utils.debug.xcconfig deleted file mode 100644 index cdedf97e..00000000 --- a/cocoapods/Pods/Target Support Files/Torus-utils/Torus-utils.debug.xcconfig +++ /dev/null @@ -1,14 +0,0 @@ -CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO -CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/Torus-utils -EXCLUDED_ARCHS[sdk=iphonesimulator*] = arm64 -FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/BestLogger" "${PODS_CONFIGURATION_BUILD_DIR}/BigInt" "${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift" "${PODS_CONFIGURATION_BUILD_DIR}/GenericJSON" "${PODS_CONFIGURATION_BUILD_DIR}/PromiseKit" "${PODS_CONFIGURATION_BUILD_DIR}/Torus-fetchNodeDetails" "${PODS_CONFIGURATION_BUILD_DIR}/secp256k1.swift" "${PODS_CONFIGURATION_BUILD_DIR}/web3.swift" -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -PODS_BUILD_DIR = ${BUILD_DIR} -PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) -PODS_ROOT = ${SRCROOT} -PODS_TARGET_SRCROOT = ${PODS_ROOT}/../.. -PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates -PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} -SKIP_INSTALL = YES -USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/cocoapods/Pods/Target Support Files/Torus-utils/Torus-utils.modulemap b/cocoapods/Pods/Target Support Files/Torus-utils/Torus-utils.modulemap deleted file mode 100644 index fb3cff6d..00000000 --- a/cocoapods/Pods/Target Support Files/Torus-utils/Torus-utils.modulemap +++ /dev/null @@ -1,6 +0,0 @@ -framework module TorusUtils { - umbrella header "Torus-utils-umbrella.h" - - export * - module * { export * } -} diff --git a/cocoapods/Pods/Target Support Files/Torus-utils/Torus-utils.release.xcconfig b/cocoapods/Pods/Target Support Files/Torus-utils/Torus-utils.release.xcconfig deleted file mode 100644 index cdedf97e..00000000 --- a/cocoapods/Pods/Target Support Files/Torus-utils/Torus-utils.release.xcconfig +++ /dev/null @@ -1,14 +0,0 @@ -CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO -CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/Torus-utils -EXCLUDED_ARCHS[sdk=iphonesimulator*] = arm64 -FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/BestLogger" "${PODS_CONFIGURATION_BUILD_DIR}/BigInt" "${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift" "${PODS_CONFIGURATION_BUILD_DIR}/GenericJSON" "${PODS_CONFIGURATION_BUILD_DIR}/PromiseKit" "${PODS_CONFIGURATION_BUILD_DIR}/Torus-fetchNodeDetails" "${PODS_CONFIGURATION_BUILD_DIR}/secp256k1.swift" "${PODS_CONFIGURATION_BUILD_DIR}/web3.swift" -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -PODS_BUILD_DIR = ${BUILD_DIR} -PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) -PODS_ROOT = ${SRCROOT} -PODS_TARGET_SRCROOT = ${PODS_ROOT}/../.. -PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates -PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} -SKIP_INSTALL = YES -USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/cocoapods/Pods/Torus-fetchNodeDetails/License.md b/cocoapods/Pods/Torus-fetchNodeDetails/License.md deleted file mode 100644 index 5eec43ec..00000000 --- a/cocoapods/Pods/Torus-fetchNodeDetails/License.md +++ /dev/null @@ -1,11 +0,0 @@ -Copyright (c) 2020 Torus Labs Private Limited (https://tor.us) - -Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: - -1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. - -2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. - -3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/cocoapods/Pods/Torus-fetchNodeDetails/README.md b/cocoapods/Pods/Torus-fetchNodeDetails/README.md deleted file mode 100644 index 1686a24c..00000000 --- a/cocoapods/Pods/Torus-fetchNodeDetails/README.md +++ /dev/null @@ -1,11 +0,0 @@ -# fetch-node-details - -A description of this package. - -## Installation - -### Swift Package Manage - -``` -.package(url: "https://github.com/torusresearch/fetch-node-details-swift.git", from: "0.0.1"), -``` diff --git a/cocoapods/Pods/Torus-fetchNodeDetails/Sources/FetchNodeDetails/contract/abi.json b/cocoapods/Pods/Torus-fetchNodeDetails/Sources/FetchNodeDetails/contract/abi.json deleted file mode 100644 index f5e6f92b..00000000 --- a/cocoapods/Pods/Torus-fetchNodeDetails/Sources/FetchNodeDetails/contract/abi.json +++ /dev/null @@ -1,116 +0,0 @@ -{ - "abi": [ - { - "constant": true, - "inputs": [], - "name": "currentEpoch", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "uint256", - "name": "epoch", - "type": "uint256" - } - ], - "name": "getEpochInfo", - "outputs": [ - { - "internalType": "uint256", - "name": "id", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "n", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "k", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "t", - "type": "uint256" - }, - { - "internalType": "address[]", - "name": "nodeList", - "type": "address[]" - }, - { - "internalType": "uint256", - "name": "prevEpoch", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "nextEpoch", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "nodeAddress", - "type": "address" - } - ], - "name": "getNodeDetails", - "outputs": [ - { - "internalType": "string", - "name": "declaredIp", - "type": "string" - }, - { - "internalType": "uint256", - "name": "position", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "pubKx", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "pubKy", - "type": "uint256" - }, - { - "internalType": "string", - "name": "tmP2PListenAddress", - "type": "string" - }, - { - "internalType": "string", - "name": "p2pListenAddress", - "type": "string" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - } - ] -} diff --git a/cocoapods/Pods/Torus-fetchNodeDetails/Sources/FetchNodeDetails/contract/abi.swift b/cocoapods/Pods/Torus-fetchNodeDetails/Sources/FetchNodeDetails/contract/abi.swift deleted file mode 100644 index 3f5b555b..00000000 --- a/cocoapods/Pods/Torus-fetchNodeDetails/Sources/FetchNodeDetails/contract/abi.swift +++ /dev/null @@ -1,10 +0,0 @@ -// -// contractABIString.swift -// -// -// Created by Shubham on 13/3/20. -// - -import Foundation - -var contractABIString = "[{\"constant\":true,\"inputs\":[],\"name\":\"currentEpoch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"}],\"name\":\"getEpochInfo\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"n\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"k\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"t\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"nodeList\",\"type\":\"address[]\"},{\"internalType\":\"uint256\",\"name\":\"prevEpoch\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nextEpoch\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"nodeAddress\",\"type\":\"address\"}],\"name\":\"getNodeDetails\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"declaredIp\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"position\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"pubKx\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"pubKy\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"tmP2PListenAddress\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"p2pListenAddress\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}]" diff --git a/cocoapods/Pods/Torus-fetchNodeDetails/Sources/FetchNodeDetails/epochInfo.swift b/cocoapods/Pods/Torus-fetchNodeDetails/Sources/FetchNodeDetails/epochInfo.swift deleted file mode 100644 index c740bb16..00000000 --- a/cocoapods/Pods/Torus-fetchNodeDetails/Sources/FetchNodeDetails/epochInfo.swift +++ /dev/null @@ -1,91 +0,0 @@ -// -// epochInfo.swift -// -// -// Created by Shubham on 13/3/20. -// - -import Foundation -import web3 -import BigInt - -public struct EpochInfo: ABITuple { - - public static var types: [ABIType.Type] { [BigInt.self, BigInt.self, BigInt.self, BigInt.self, ABIArray.self, BigInt.self, BigInt.self] } - - var id: BigInt - var n: BigInt - var k: BigInt - var t: BigInt - var nodeList: [EthereumAddress] - var prevEpoch: BigInt - var nextEpoch: BigInt - - init(id: BigInt, - n: BigInt, - k: BigInt, - t: BigInt, - nodeList: [EthereumAddress], - prevEpoch: BigInt, - nextEpoch: BigInt) { - self.id = id - self.n = n - self.k = k - self.t = t - self.nodeList = nodeList - self.prevEpoch = prevEpoch - self.nextEpoch = nextEpoch - } - - public init?(values: [ABIDecoder.DecodedValue]) throws { - self.nodeList = try values.dropLast(2).dropFirst(4).map{try $0.decoded() } - - self.id = try values[0].decoded() - self.n = try values[1].decoded() - self.k = try values[2].decoded() - self.t = try values[3].decoded() - self.prevEpoch = try values[values.count-2].decoded() - self.nextEpoch = try values[values.count-1].decoded() - - } - - public func encode(to encoder: ABIFunctionEncoder) throws { - try encoder.encode(id) - try encoder.encode(n) - try encoder.encode(k) - try encoder.encode(t) - try encoder.encode(nodeList) - try encoder.encode(prevEpoch) - try encoder.encode(nextEpoch) - } - - public var encodableValues: [ABIType] { [id, n, k, t, ABIArray(values: nodeList), prevEpoch, nextEpoch] } - - public func getId() -> BigInt { - return self.id; - } - - public func getK() -> BigInt{ - return self.k; - } - - public func getN() -> BigInt{ - return self.n; - } - - public func getNextEpoch() -> BigInt{ - return self.nextEpoch; - } - - public func getPrevEpoch() -> BigInt{ - return self.prevEpoch; - } - - public func getT() -> BigInt{ - return self.t; - } - - public func getNodeList() -> [EthereumAddress] { - return self.nodeList; - } -} diff --git a/cocoapods/Pods/Torus-fetchNodeDetails/Sources/FetchNodeDetails/ethereumNetwork.swift b/cocoapods/Pods/Torus-fetchNodeDetails/Sources/FetchNodeDetails/ethereumNetwork.swift deleted file mode 100644 index 7f92f6ca..00000000 --- a/cocoapods/Pods/Torus-fetchNodeDetails/Sources/FetchNodeDetails/ethereumNetwork.swift +++ /dev/null @@ -1,16 +0,0 @@ -// -// ethereumNetwork.swift -// -// -// Created by Shubham on 13/3/20. -// - -import Foundation - -public enum EthereumNetwork : String{ - case MAINNET = "mainnet" - case RINKEBY = "rinkeby" - case ROPSTEN = "ropsten" - case KOVAN = "kovan" - case GOERLI = "goerli" -} diff --git a/cocoapods/Pods/Torus-fetchNodeDetails/Sources/FetchNodeDetails/extensions/String.swift b/cocoapods/Pods/Torus-fetchNodeDetails/Sources/FetchNodeDetails/extensions/String.swift deleted file mode 100644 index 6cd633c1..00000000 --- a/cocoapods/Pods/Torus-fetchNodeDetails/Sources/FetchNodeDetails/extensions/String.swift +++ /dev/null @@ -1,12 +0,0 @@ -// -// String.swift -// -// -// Created by Shubham on 18/3/20. -// -import Foundation - -// Used in error thrown from guard let -extension String: LocalizedError { - public var errorDescription: String? { return self } -} diff --git a/cocoapods/Pods/Torus-fetchNodeDetails/Sources/FetchNodeDetails/fetchNodeDetails+promise.swift b/cocoapods/Pods/Torus-fetchNodeDetails/Sources/FetchNodeDetails/fetchNodeDetails+promise.swift deleted file mode 100644 index eed78f8b..00000000 --- a/cocoapods/Pods/Torus-fetchNodeDetails/Sources/FetchNodeDetails/fetchNodeDetails+promise.swift +++ /dev/null @@ -1,120 +0,0 @@ -// -// File.swift -// -// -// Created by Shubham on 13/3/20. -// - -import Foundation -import web3 -import BigInt -import PromiseKit - -extension FetchNodeDetails { - public func getCurrentEpochPromise() -> Promise{ - let function = NodeListProxyContract.CurrentEpoch(contract: self.proxyAddress) - let transaction = try! function.transaction() - let (tempPromise, seal) = Promise.pending() - - client.eth_call(transaction, block: .Latest) { (error, epoch) in - if let epoch = epoch { - let b = Int(hex: epoch) ?? -1 - seal.fulfill(b) - } else{ - seal.reject(FNDError.currentEpochFailed) - } - } - - return tempPromise - } - - public func getEpochInfoPromise(epoch: BigInt) -> Promise{ - let function = NodeListProxyContract.getEpochInfo(contract: self.proxyAddress, epoch: epoch) - let transaction = try! function.transaction() - let (tempPromise, seal) = Promise.pending() - - client.eth_call(transaction, block: .Latest) { (error, epoch) in - if let epoch = epoch { - let a = epoch.components(separatedBy: "0x") - let b = "0x0000000000000000000000000000000000000000000000000000000000000020" + a[1] - - let el = try! ABIDecoder.decodeData(b, types: [EpochInfo.self]) - let decodedTuple: EpochInfo = try! el[0].decoded() - seal.fulfill(decodedTuple) - }else{ - seal.reject(FNDError.epochInfoFailed) - } - } - - return tempPromise - } - - public func getNodeDetails(nodeEthAddress: String) -> Promise { - let function = NodeListProxyContract.getNodeDetails(contract: self.proxyAddress, address: EthereumAddress(nodeEthAddress)) - let transaction = try! function.transaction() - let (tempPromise, seal) = Promise.pending() - - client.eth_call(transaction, block: .Latest) { (error, info) in - if let info = info { - let a = info.components(separatedBy: "0x") - let b = "0x0000000000000000000000000000000000000000000000000000000000000020" + a[1] - - let el = try! ABIDecoder.decodeData(b, types: [EpochInfo.self]) - let decodedTuple: NodeDetails = try! el[0].decoded() - seal.fulfill(decodedTuple) - }else{ - seal.reject(FNDError.nodeDetailsFailed) - } - } - - return tempPromise - } - - - public func getAllNodeDetails() -> Promise{ - let (tempPromise, seal) = Promise.pending() - var torusIndexes:[BigInt] = Array() - let currentEpoch: Int = -1; - - self.getCurrentEpochPromise().then{ epoch in - return self.getEpochInfoPromise(epoch: BigInt(epoch)) - }.then{ epochInfo -> Guarantee<[Result]> in - let nodeList = epochInfo.nodeList - var getNodeDetailsPromiseArray:[Promise] = Array() - - for i in 0.. = Array() - var updatedNodePub:Array = Array() - - for result in results{ - switch result { - case .fulfilled(let value): - let endPointElement: NodeDetails = value; - let endpoint = "https://" + endPointElement.getDeclaredIp().split(separator: ":")[0] + "/jrpc"; - updatedEndpoints.append(endpoint) - - let hexPubX = endPointElement.getPubKx() - let hexPubY = endPointElement.getPubKy() - updatedNodePub.append(TorusNodePub(_X: hexPubX.description , _Y: hexPubY.description)) - default: - seal.reject("error with node info") - } - - } - - let allNodeDetails = AllNodeDetails(_currentEpoch: "\(currentEpoch)", _nodeListAddress: self.proxyAddress.value, _torusNodeEndpoints: updatedEndpoints, _torusIndexes: torusIndexes, _torusNodePub: updatedNodePub, _updated: true) - - seal.fulfill(allNodeDetails) - }.catch{error in - print(error) - seal.reject(FNDError.allNodeDetailsFailed) - } - - return tempPromise - } -} diff --git a/cocoapods/Pods/Torus-fetchNodeDetails/Sources/FetchNodeDetails/fetchNodeDetails.swift b/cocoapods/Pods/Torus-fetchNodeDetails/Sources/FetchNodeDetails/fetchNodeDetails.swift deleted file mode 100644 index 2570b15c..00000000 --- a/cocoapods/Pods/Torus-fetchNodeDetails/Sources/FetchNodeDetails/fetchNodeDetails.swift +++ /dev/null @@ -1,42 +0,0 @@ -// -// File.swift -// -// -// Created by Shubham on 13/3/20. -// - -import Foundation -import web3 -import BigInt -import BestLogger - -public final class FetchNodeDetails { - - var client: EthereumClientProtocol - var network : EthereumNetwork = EthereumNetwork.ROPSTEN; - var proxyAddress : EthereumAddress - var walletAddress : EthereumAddress = EthereumAddress("0x5F7A02a42bF621da3211aCE9c120a47AA5229fBA") - let yourContractABI: String = contractABIString -// var contract : web3.web3contract - var nodeDetails : NodeDetails? - let logger: BestLogger? - - public init(proxyAddress: String, network: EthereumNetwork, logLevel: BestLogger.Level = .none){ - - // mainnet proxy contract address - 0x638646503746d5456209e33a2ff5e3226d698bea - // testnet proxt contract address - 0x4023d2a0D330bF11426B12C6144Cfb96B7fa6183 - self.proxyAddress = EthereumAddress(proxyAddress) - self.network = network - - if(network == EthereumNetwork.MAINNET){ - let clientUrl = URL(string: "https://mainnet.infura.io/v3/b8cdb0e4cff24599a286bf8e87ff1c96")! - self.client = EthereumClient(url: clientUrl) - }else{ - let clientUrl = URL(string: "https://ropsten.infura.io/v3/b8cdb0e4cff24599a286bf8e87ff1c96")! - self.client = EthereumClient(url: clientUrl) - } - - self.logger = BestLogger(label: "fetch node details", level: logLevel) - } - -} diff --git a/cocoapods/Pods/Torus-fetchNodeDetails/Sources/FetchNodeDetails/nodeDetails.swift b/cocoapods/Pods/Torus-fetchNodeDetails/Sources/FetchNodeDetails/nodeDetails.swift deleted file mode 100644 index 061fb0f8..00000000 --- a/cocoapods/Pods/Torus-fetchNodeDetails/Sources/FetchNodeDetails/nodeDetails.swift +++ /dev/null @@ -1,120 +0,0 @@ -// -// nodeInfo.swift -// -// -// Created by Shubham on 13/3/20. -// - -import Foundation -import web3 -import BigInt - -public struct NodeDetails: ABITuple { - public var encodableValues: [ABIType] {[declaredIp, position, pubKx, pubKy, tmP2PListenAddress, p2pListenAddress]} - public static var types: [ABIType.Type] { [String.self, BigInt.self, BigInt.self, BigInt.self, String.self, String.self] } - - var declaredIp: String; - var position: BigInt; - var pubKx: BigInt; - var pubKy: BigInt; - var tmP2PListenAddress: String; - var p2pListenAddress: String; - - init( declaredIp: String, - position: BigInt, - pubKx: BigInt, - pubKy: BigInt, - tmP2PListenAddress: String, - p2pListenAddress: String) { - self.declaredIp = declaredIp - self.position = position - self.pubKx = pubKx - self.pubKy = pubKy - self.tmP2PListenAddress = tmP2PListenAddress - self.p2pListenAddress = p2pListenAddress - } - - public init?(values: [ABIDecoder.DecodedValue]) throws { - self.declaredIp = try values[0].decoded() - self.position = try values[1].decoded() - self.pubKx = try values[2].decoded() - self.pubKy = try values[3].decoded() - self.tmP2PListenAddress = try values[4].decoded() - self.p2pListenAddress = try values[5].decoded() - } - - public func encode(to encoder: ABIFunctionEncoder) throws { - try encoder.encode(declaredIp) - try encoder.encode(position) - try encoder.encode(pubKx) - try encoder.encode(pubKy) - try encoder.encode(tmP2PListenAddress) - try encoder.encode(p2pListenAddress) - } - - public func getDeclaredIp() -> String { - return declaredIp; - } - - public func getP2pListenAddress() -> String { - return p2pListenAddress; - } - - public func getPosition() -> BigInt { - return position; - } - - public func getPubKx() -> BigInt { - return pubKx; - } - - public func getPubKy() -> BigInt { - return pubKy; - } - - public func getTmP2PListenAddress() -> String { - return tmP2PListenAddress; - } -} -// -//public class NodeInfo { -// private var declaredIp: String; -// private var position: String; -// private var pubKx: String; -// private var pubKy: String; -// private var tmP2PListenAddress: String; -// private var p2pListenAddress: String; -// -// public init(_declaredIp : String, _position : String, _pubKx : String, _pubKy : String, _tmP2PListenAddress : String, _p2pListenAddress : String) { -// self.declaredIp = _declaredIp; -// self.position = _position; -// self.pubKx = _pubKx; -// self.pubKy = _pubKy; -// self.tmP2PListenAddress = _tmP2PListenAddress; -// self.p2pListenAddress = _p2pListenAddress; -// } -// -// public func getDeclaredIp() -> String { -// return declaredIp; -// } -// -// public func getP2pListenAddress() -> String { -// return p2pListenAddress; -// } -// -// public func getPosition() -> String { -// return position; -// } -// -// public func getPubKx() -> String { -// return pubKx; -// } -// -// public func getPubKy() -> String { -// return pubKy; -// } -// -// public func getTmP2PListenAddress() -> String { -// return tmP2PListenAddress; -// } -//} diff --git a/cocoapods/Pods/Torus-fetchNodeDetails/Sources/FetchNodeDetails/torusNodePub.swift b/cocoapods/Pods/Torus-fetchNodeDetails/Sources/FetchNodeDetails/torusNodePub.swift deleted file mode 100644 index b4727206..00000000 --- a/cocoapods/Pods/Torus-fetchNodeDetails/Sources/FetchNodeDetails/torusNodePub.swift +++ /dev/null @@ -1,26 +0,0 @@ -// -// TorusNodePub.swift -// -// -// Created by Shubham on 13/3/20. -// - -import Foundation - -public class TorusNodePub { - private let X : String; - private let Y : String; - - public init(_X : String, _Y : String) { - self.X = _X; - self.Y = _Y; - } - - public func getX() -> String { - return X; - } - - public func getY() -> String { - return Y; - } -}