From d0f0f68e2b805a43c33212429855d6bc79d0729e Mon Sep 17 00:00:00 2001 From: fengshuo <963787902@qq.com> Date: Sat, 24 Feb 2024 13:49:51 +0800 Subject: [PATCH] qingqiu chegngong --- Podfile | 4 + Podfile.lock | 15 +- Pods/Alamofire/README.md | 61 +- Pods/Alamofire/Source/AFError.swift | 20 +- Pods/Alamofire/Source/Alamofire.swift | 2 +- .../Source/AuthenticationInterceptor.swift | 15 +- Pods/Alamofire/Source/Combine.swift | 35 +- Pods/Alamofire/Source/Concurrency.swift | 220 +- Pods/Alamofire/Source/EventMonitor.swift | 15 + Pods/Alamofire/Source/HTTPHeaders.swift | 8 +- Pods/Alamofire/Source/MultipartFormData.swift | 31 +- Pods/Alamofire/Source/MultipartUpload.swift | 14 +- .../Source/NetworkReachabilityManager.swift | 16 +- Pods/Alamofire/Source/Protected.swift | 67 +- Pods/Alamofire/Source/Request.swift | 334 +- Pods/Alamofire/Source/RequestTaskMap.swift | 2 +- .../Source/ResponseSerialization.swift | 8 +- .../Source/ServerTrustEvaluation.swift | 66 +- Pods/Alamofire/Source/SessionDelegate.swift | 25 +- .../Source/URLEncodedFormEncoder.swift | 68 + Pods/Manifest.lock | 15 +- Pods/Pods.xcodeproj/project.pbxproj | 5068 +++++++++-------- .../xcschemes/xcschememanagement.plist | 48 +- .../Alamofire/Alamofire-Info.plist | 2 +- ...Pods-yinmeng-ios-acknowledgements.markdown | 48 + .../Pods-yinmeng-ios-acknowledgements.plist | 60 + ...os-frameworks-Debug-input-files.xcfilelist | 2 + ...s-frameworks-Debug-output-files.xcfilelist | 2 + ...-frameworks-Release-input-files.xcfilelist | 2 + ...frameworks-Release-output-files.xcfilelist | 2 + .../Pods-yinmeng-ios-frameworks.sh | 4 + .../Pods-yinmeng-ios.debug.xcconfig | 6 +- .../Pods-yinmeng-ios.release.xcconfig | 6 +- yinmeng-ios.xcodeproj/project.pbxproj | 160 +- .../xcschemes/xcschememanagement.plist | 2 +- .../UserInterfaceState.xcuserstate | Bin 105506 -> 187340 bytes .../xcdebugger/Breakpoints_v2.xcbkptlist | 34 + yinmeng-ios/AppDelegate.swift | 6 +- yinmeng-ios/Base/Hud/HUDTool.swift | 145 + yinmeng-ios/Base/Request/Deserialized.swift | 37 + .../Base/Request/YMNetworkHelper.swift | 134 + yinmeng-ios/Base/Request/YMRequestX.swift | 99 + yinmeng-ios/Base/Security/Base64.h | 16 + yinmeng-ios/Base/Security/Base64.m | 133 + yinmeng-ios/Base/Security/MAIDESEncryptTool.h | 16 + yinmeng-ios/Base/Security/MAIDESEncryptTool.m | 63 + .../Security/yinmeng-ios-Bridging-Header.h | 5 + yinmeng-ios/Base/Utils/APPUtils.swift | 47 + yinmeng-ios/Base/Utils/Utils.swift | 3 + .../ViewController/BaseViewController.swift | 1 - yinmeng-ios/Extension/List/List+.swift | 49 + yinmeng-ios/Extension/String/String+.swift | 68 + .../HttpRequest/HeadstreamRequest.swift | 38 - .../LevelStatusBarWindowController.swift | 190 - yinmeng-ios/HttpRequest/NetworkRequest.swift | 139 - .../Plugins/YMRequestLoadingPlugin.swift | 167 - yinmeng-ios/HttpRequest/SharedDriver.swift | 169 - .../HttpRequest/YMLastNeverResult.swift | 69 - yinmeng-ios/HttpRequest/YMNetworkAPI.swift | 34 - yinmeng-ios/HttpRequest/YMPluginSubType.swift | 73 - yinmeng-ios/HttpRequest/YMRequestConfig.swift | 56 - yinmeng-ios/HttpRequest/YMRequestX.swift | 228 - yinmeng-ios/Info.plist | 5 + .../Modules/Auth/Model/AppConfigObject.swift | 15 + yinmeng-ios/Modules/Auth/VC/AuthLoginVC.swift | 75 +- yinmeng-ios/Modules/Auth/VM/AuthAPI.swift | 48 +- yinmeng-ios/Modules/Auth/VM/AuthManager.swift | 67 + .../Modules/Auth/VM/AuthViewModel.swift | 28 + .../Modules/Auth/VM/UserTokenObject.swift | 15 + 69 files changed, 4861 insertions(+), 3864 deletions(-) create mode 100644 yinmeng-ios/Base/Hud/HUDTool.swift create mode 100644 yinmeng-ios/Base/Request/Deserialized.swift create mode 100644 yinmeng-ios/Base/Request/YMNetworkHelper.swift create mode 100644 yinmeng-ios/Base/Request/YMRequestX.swift create mode 100755 yinmeng-ios/Base/Security/Base64.h create mode 100755 yinmeng-ios/Base/Security/Base64.m create mode 100755 yinmeng-ios/Base/Security/MAIDESEncryptTool.h create mode 100755 yinmeng-ios/Base/Security/MAIDESEncryptTool.m create mode 100644 yinmeng-ios/Base/Security/yinmeng-ios-Bridging-Header.h create mode 100644 yinmeng-ios/Base/Utils/APPUtils.swift create mode 100644 yinmeng-ios/Extension/List/List+.swift create mode 100644 yinmeng-ios/Extension/String/String+.swift delete mode 100644 yinmeng-ios/HttpRequest/HeadstreamRequest.swift delete mode 100644 yinmeng-ios/HttpRequest/LevelStatusBarWindowController.swift delete mode 100644 yinmeng-ios/HttpRequest/NetworkRequest.swift delete mode 100644 yinmeng-ios/HttpRequest/Plugins/YMRequestLoadingPlugin.swift delete mode 100644 yinmeng-ios/HttpRequest/SharedDriver.swift delete mode 100644 yinmeng-ios/HttpRequest/YMLastNeverResult.swift delete mode 100644 yinmeng-ios/HttpRequest/YMNetworkAPI.swift delete mode 100644 yinmeng-ios/HttpRequest/YMPluginSubType.swift delete mode 100644 yinmeng-ios/HttpRequest/YMRequestConfig.swift delete mode 100644 yinmeng-ios/HttpRequest/YMRequestX.swift create mode 100644 yinmeng-ios/Modules/Auth/Model/AppConfigObject.swift create mode 100644 yinmeng-ios/Modules/Auth/VM/AuthManager.swift create mode 100644 yinmeng-ios/Modules/Auth/VM/AuthViewModel.swift create mode 100644 yinmeng-ios/Modules/Auth/VM/UserTokenObject.swift diff --git a/Podfile b/Podfile index 8d7563d..7032dff 100644 --- a/Podfile +++ b/Podfile @@ -15,6 +15,10 @@ target 'yinmeng-ios' do pod 'Reusable' #约束 pod 'SnapKit', '~> 5.6.0' + #获取设备信息 + pod 'DeviceKit', '~> 4.0' + + pod "NSObject+Rx" # Pods for yinmeng-ios end diff --git a/Podfile.lock b/Podfile.lock index ce84de4..8868ae5 100644 --- a/Podfile.lock +++ b/Podfile.lock @@ -1,5 +1,6 @@ PODS: - - Alamofire (5.7.1) + - Alamofire (5.8.1) + - DeviceKit (4.9.0) - HandyJSON (5.0.2) - Kingfisher (7.10.2) - MBProgressHUD (1.2.0) @@ -7,6 +8,8 @@ PODS: - Moya/Core (= 15.0.0) - Moya/Core (15.0.0): - Alamofire (~> 5.0) + - "NSObject+Rx (5.2.2)": + - RxSwift (~> 6.2) - Reusable (4.1.2): - Reusable/Storyboard (= 4.1.2) - Reusable/View (= 4.1.2) @@ -21,10 +24,12 @@ PODS: - SnapKit (5.6.0) DEPENDENCIES: + - DeviceKit (~> 4.0) - HandyJSON - Kingfisher - MBProgressHUD - Moya + - "NSObject+Rx" - Reusable - RxCocoa - RxSwift @@ -33,10 +38,12 @@ DEPENDENCIES: SPEC REPOS: https://mirrors.tuna.tsinghua.edu.cn/git/CocoaPods/Specs.git: - Alamofire + - DeviceKit - HandyJSON - Kingfisher - MBProgressHUD - Moya + - "NSObject+Rx" - Reusable - RxCocoa - RxRelay @@ -44,17 +51,19 @@ SPEC REPOS: - SnapKit SPEC CHECKSUMS: - Alamofire: 0123a34370cb170936ae79a8df46cc62b2edeb88 + Alamofire: 3ca42e259043ee0dc5c0cdd76c4bc568b8e42af7 + DeviceKit: 847709bf70b78fd9ab765bd571fb9f5f815c3fc1 HandyJSON: 9e4e236f5d2dbefad5155a77417bbea438201c03 Kingfisher: 99edc495d3b7607e6425f0d6f6847b2abd6d716d MBProgressHUD: 3ee5efcc380f6a79a7cc9b363dd669c5e1ae7406 Moya: 138f0573e53411fb3dc17016add0b748dfbd78ee + "NSObject+Rx": 61cf1f7306a73dcef8b36649198af0813ec18dfd Reusable: 6bae6a5e8aa793c9c441db0213c863a64bce9136 RxCocoa: 94f817b71c07517321eb4f9ad299112ca8af743b RxRelay: 1de1523e604c72b6c68feadedd1af3b1b4d0ecbd RxSwift: 5710a9e6b17f3c3d6e40d6e559b9fa1e813b2ef8 SnapKit: e01d52ebb8ddbc333eefe2132acf85c8227d9c25 -PODFILE CHECKSUM: e291658151a1fcada5c9dd297587942ae9475225 +PODFILE CHECKSUM: c70d2998947e71f4b799d573fbe428797987a5b9 COCOAPODS: 1.12.1 diff --git a/Pods/Alamofire/README.md b/Pods/Alamofire/README.md index b0ba4d5..c9adb9f 100644 --- a/Pods/Alamofire/README.md +++ b/Pods/Alamofire/README.md @@ -1,11 +1,10 @@ ![Alamofire: Elegant Networking in Swift](https://raw.githubusercontent.com/Alamofire/Alamofire/master/Resources/AlamofireLogo.png) -[![Swift](https://img.shields.io/badge/Swift-5.5_5.6_5.7_5.8-orange?style=flat-square)](https://img.shields.io/badge/Swift-5.5_5.6_5.7_5.8-Orange?style=flat-square) -[![Platforms](https://img.shields.io/badge/Platforms-macOS_iOS_tvOS_watchOS_Linux_Windows-yellowgreen?style=flat-square)](https://img.shields.io/badge/Platforms-macOS_iOS_tvOS_watchOS_Linux_Windows-Green?style=flat-square) +[![Swift](https://img.shields.io/badge/Swift-5.6_5.7_5.8_5.9-orange?style=flat-square)](https://img.shields.io/badge/Swift-5.6_5.7_5.8_5.9-Orange?style=flat-square) +[![Platforms](https://img.shields.io/badge/Platforms-macOS_iOS_tvOS_watchOS_visionOS_Linux_Windows_Android-yellowgreen?style=flat-square)](https://img.shields.io/badge/Platforms-macOS_iOS_tvOS_watchOS_vision_OS_Linux_Windows_Android-Green?style=flat-square) [![CocoaPods Compatible](https://img.shields.io/cocoapods/v/Alamofire.svg?style=flat-square)](https://img.shields.io/cocoapods/v/Alamofire.svg) [![Carthage Compatible](https://img.shields.io/badge/Carthage-compatible-4BC51D.svg?style=flat-square)](https://github.com/Carthage/Carthage) [![Swift Package Manager](https://img.shields.io/badge/Swift_Package_Manager-compatible-orange?style=flat-square)](https://img.shields.io/badge/Swift_Package_Manager-compatible-orange?style=flat-square) -[![Twitter](https://img.shields.io/badge/twitter-@AlamofireSF-blue.svg?style=flat-square)](https://twitter.com/AlamofireSF) [![Swift Forums](https://img.shields.io/badge/Swift_Forums-Alamofire-orange?style=flat-square)](https://forums.swift.org/c/related-projects/alamofire/37) Alamofire is an HTTP networking library written in Swift. @@ -52,6 +51,33 @@ Alamofire is an HTTP networking library written in Swift. - [x] Comprehensive Unit and Integration Test Coverage - [x] [Complete Documentation](https://alamofire.github.io/Alamofire) +## Write Requests Fast! + +Alamofire's compact syntax and extensive feature set allow requests with powerful features like automatic retry to be written in just a few lines of code. + +```swift +// Automatic String to URL conversion, Swift concurrency support, and automatic retry. +let response = await AF.request("https://httpbin.org/get", interceptor: .retryPolicy) + // Automatic HTTP Basic Auth. + .authenticate(username: "user", password: "pass") + // Caching customization. + .cacheResponse(using: .cache) + // Redirect customization. + .redirect(using: .follow) + // Validate response code and Content-Type. + .validate() + // Produce a cURL command for the request. + .cURLDescription { description in + print(description) + } + // Automatic Decodable support with background parsing. + .serializingDecodable(DecodableType.self) + // Await the full response with metrics and a parsed body. + .response +// Detailed response description for easy debugging. +debugPrint(response) +``` + ## Component Libraries In order to keep Alamofire focused specifically on core networking implementations, additional component libraries have been created by the [Alamofire Software Foundation](https://github.com/Alamofire/Foundation) to bring additional functionality to the Alamofire ecosystem. @@ -61,21 +87,23 @@ In order to keep Alamofire focused specifically on core networking implementatio ## Requirements -| Platform | Minimum Swift Version | Installation | Status | -| --- | --- | --- | --- | -| iOS 10.0+ / macOS 10.12+ / tvOS 10.0+ / watchOS 3.0+ | 5.5 | [CocoaPods](#cocoapods), [Carthage](#carthage), [Swift Package Manager](#swift-package-manager), [Manual](#manually) | Fully Tested | -| Linux | Latest Only | [Swift Package Manager](#swift-package-manager) | Building But Unsupported | -| Windows | Latest Only | [Swift Package Manager](#swift-package-manager) | Building But Unsupported | +| Platform | Minimum Swift Version | Installation | Status | +| ---------------------------------------------------- | --------------------- | -------------------------------------------------------------------------------------------------------------------- | ------------------------ | +| iOS 10.0+ / macOS 10.12+ / tvOS 10.0+ / watchOS 3.0+ | 5.6 | [CocoaPods](#cocoapods), [Carthage](#carthage), [Swift Package Manager](#swift-package-manager), [Manual](#manually) | Fully Tested | +| Linux | Latest Only | [Swift Package Manager](#swift-package-manager) | Building But Unsupported | +| Windows | Latest Only | [Swift Package Manager](#swift-package-manager) | Building But Unsupported | +| Android | Latest Only | [Swift Package Manager](#swift-package-manager) | Building But Unsupported | #### Known Issues on Linux and Windows -Alamofire builds on Linux and Windows but there are missing features and many issues in the underlying `swift-corelibs-foundation` that prevent full functionality and may cause crashes. These include: +Alamofire builds on Linux, Windows, and Android but there are missing features and many issues in the underlying `swift-corelibs-foundation` that prevent full functionality and may cause crashes. These include: + - `ServerTrustManager` and associated certificate functionality is unavailable, so there is no certificate pinning and no client certificate support. - Various methods of HTTP authentication may crash, including HTTP Basic and HTTP Digest. Crashes may occur if responses contain server challenges. - Cache control through `CachedResponseHandler` and associated APIs is unavailable, as the underlying delegate methods aren't called. - `URLSessionTaskMetrics` are never gathered. -Due to these issues, Alamofire is unsupported on Linux and Windows. Please report any crashes to the [Swift bug reporter](https://bugs.swift.org). +Due to these issues, Alamofire is unsupported on Linux, Windows, and Android. Please report any crashes to the [Swift bug reporter](https://bugs.swift.org). ## Migration Guides @@ -85,11 +113,12 @@ Due to these issues, Alamofire is unsupported on Linux and Windows. Please repor - [Alamofire 2.0 Migration Guide](https://github.com/Alamofire/Alamofire/blob/master/Documentation/Alamofire%202.0%20Migration%20Guide.md) ## Communication + - If you **need help with making network requests** using Alamofire, use [Stack Overflow](https://stackoverflow.com/questions/tagged/alamofire) and tag `alamofire`. - If you need to **find or understand an API**, check [our documentation](http://alamofire.github.io/Alamofire/) or [Apple's documentation for `URLSession`](https://developer.apple.com/documentation/foundation/url_loading_system), on top of which Alamofire is built. - If you need **help with an Alamofire feature**, use [our forum on swift.org](https://forums.swift.org/c/related-projects/alamofire). - If you'd like to **discuss Alamofire best practices**, use [our forum on swift.org](https://forums.swift.org/c/related-projects/alamofire). -- If you'd like to **discuss a feature request**, use [our forum on swift.org](https://forums.swift.org/c/related-projects/alamofire). +- If you'd like to **discuss a feature request**, use [our forum on swift.org](https://forums.swift.org/c/related-projects/alamofire). - If you **found a bug**, open an issue here on GitHub and follow the guide. The more detail the better! ## Installation @@ -112,13 +141,13 @@ github "Alamofire/Alamofire" ### Swift Package Manager -The [Swift Package Manager](https://swift.org/package-manager/) is a tool for automating the distribution of Swift code and is integrated into the `swift` compiler. +The [Swift Package Manager](https://swift.org/package-manager/) is a tool for automating the distribution of Swift code and is integrated into the `swift` compiler. Once you have your Swift package set up, adding Alamofire as a dependency is as easy as adding it to the `dependencies` value of your `Package.swift`. ```swift dependencies: [ - .package(url: "https://github.com/Alamofire/Alamofire.git", .upToNextMajor(from: "5.6.4")) + .package(url: "https://github.com/Alamofire/Alamofire.git", .upToNextMajor(from: "5.8.1")) ] ``` @@ -142,7 +171,7 @@ If you prefer not to use any of the aforementioned dependency managers, you can - Open the new `Alamofire` folder, and drag the `Alamofire.xcodeproj` into the Project Navigator of your application's Xcode project. - > It should appear nested underneath your application's blue project icon. Whether it is above or below all the other Xcode groups does not matter. + > It should appear nested underneath your application's blue project icon. Whether it is above or below all the other Xcode groups does not matter. - Select the `Alamofire.xcodeproj` in the Project Navigator and verify the deployment target matches that of your application target. - Next, select your application project in the Project Navigator (blue project icon) to navigate to the target configuration window and select the application target under the "Targets" heading in the sidebar. @@ -150,11 +179,11 @@ If you prefer not to use any of the aforementioned dependency managers, you can - Click on the `+` button under the "Embedded Binaries" section. - You will see two different `Alamofire.xcodeproj` folders each with two different versions of the `Alamofire.framework` nested inside a `Products` folder. - > It does not matter which `Products` folder you choose from, but it does matter whether you choose the top or bottom `Alamofire.framework`. + > It does not matter which `Products` folder you choose from, but it does matter whether you choose the top or bottom `Alamofire.framework`. - Select the top `Alamofire.framework` for iOS and the bottom one for macOS. - > You can verify which one you selected by inspecting the build log for your project. The build target for `Alamofire` will be listed as `Alamofire iOS`, `Alamofire macOS`, `Alamofire tvOS`, or `Alamofire watchOS`. + > You can verify which one you selected by inspecting the build log for your project. The build target for `Alamofire` will be listed as `Alamofire iOS`, `Alamofire macOS`, `Alamofire tvOS`, or `Alamofire watchOS`. - And that's it! diff --git a/Pods/Alamofire/Source/AFError.swift b/Pods/Alamofire/Source/AFError.swift index 8cd60c7..82a75b5 100644 --- a/Pods/Alamofire/Source/AFError.swift +++ b/Pods/Alamofire/Source/AFError.swift @@ -24,6 +24,10 @@ import Foundation +#if canImport(Security) +import Security +#endif + /// `AFError` is the error type returned by Alamofire. It encompasses a few different types of errors, each with /// their own associated reasons. public enum AFError: Error { @@ -129,7 +133,7 @@ public enum AFError: Error { case invalidEmptyResponse(type: String) } - #if !(os(Linux) || os(Windows)) + #if canImport(Security) /// Underlying reason a server trust evaluation error occurred. public enum ServerTrustFailureReason { /// The output of a server trust evaluation. @@ -211,7 +215,7 @@ public enum AFError: Error { case responseValidationFailed(reason: ResponseValidationFailureReason) /// Response serialization failed. case responseSerializationFailed(reason: ResponseSerializationFailureReason) - #if !(os(Linux) || os(Windows)) + #if canImport(Security) /// `ServerTrustEvaluating` instance threw an error during trust evaluation. case serverTrustEvaluationFailed(reason: ServerTrustFailureReason) #endif @@ -314,7 +318,7 @@ extension AFError { return false } - #if !(os(Linux) || os(Windows)) + #if canImport(Security) /// Returns whether the instance is `.serverTrustEvaluationFailed`. When `true`, the `underlyingError` property will /// contain the associated value. public var isServerTrustEvaluationError: Bool { @@ -393,7 +397,7 @@ extension AFError { return reason.underlyingError case let .responseSerializationFailed(reason): return reason.underlyingError - #if !(os(Linux) || os(Windows)) + #if canImport(Security) case let .serverTrustEvaluationFailed(reason): return reason.underlyingError #endif @@ -451,7 +455,7 @@ extension AFError { return destination } - #if !(os(Linux) || os(Windows)) + #if canImport(Security) /// The download resume data of any underlying network error. Only produced by `DownloadRequest`s. public var downloadResumeData: Data? { (underlyingError as? URLError)?.userInfo[NSURLSessionDownloadTaskResumeData] as? Data @@ -610,7 +614,7 @@ extension AFError.ResponseSerializationFailureReason { } } -#if !(os(Linux) || os(Windows)) +#if canImport(Security) extension AFError.ServerTrustFailureReason { var output: AFError.ServerTrustFailureReason.Output? { switch self { @@ -688,7 +692,7 @@ extension AFError: LocalizedError { """ case let .sessionInvalidated(error): return "Session was invalidated with error: \(error?.localizedDescription ?? "No description.")" - #if !(os(Linux) || os(Windows)) + #if canImport(Security) case let .serverTrustEvaluationFailed(reason): return "Server trust evaluation failed due to reason: \(reason.localizedDescription)" #endif @@ -822,7 +826,7 @@ extension AFError.ResponseValidationFailureReason { } } -#if !(os(Linux) || os(Windows)) +#if canImport(Security) extension AFError.ServerTrustFailureReason { var localizedDescription: String { switch self { diff --git a/Pods/Alamofire/Source/Alamofire.swift b/Pods/Alamofire/Source/Alamofire.swift index 52ea3de..c99fe49 100644 --- a/Pods/Alamofire/Source/Alamofire.swift +++ b/Pods/Alamofire/Source/Alamofire.swift @@ -37,4 +37,4 @@ import Foundation public let AF = Session.default /// Current Alamofire version. Necessary since SPM doesn't use dynamic libraries. Plus this will be more accurate. -let version = "5.7.1" +let version = "5.8.0" diff --git a/Pods/Alamofire/Source/AuthenticationInterceptor.swift b/Pods/Alamofire/Source/AuthenticationInterceptor.swift index c3a3f31..5c88287 100644 --- a/Pods/Alamofire/Source/AuthenticationInterceptor.swift +++ b/Pods/Alamofire/Source/AuthenticationInterceptor.swift @@ -217,15 +217,14 @@ public class AuthenticationInterceptor: RequestInterceptor wh /// The `Credential` used to authenticate requests. public var credential: Credential? { - get { $mutableState.credential } - set { $mutableState.credential = newValue } + get { mutableState.credential } + set { mutableState.credential = newValue } } let authenticator: AuthenticatorType let queue = DispatchQueue(label: "org.alamofire.authentication.inspector") - @Protected - private var mutableState: MutableState + private let mutableState: Protected // MARK: Initialization @@ -242,13 +241,13 @@ public class AuthenticationInterceptor: RequestInterceptor wh credential: Credential? = nil, refreshWindow: RefreshWindow? = RefreshWindow()) { self.authenticator = authenticator - mutableState = MutableState(credential: credential, refreshWindow: refreshWindow) + mutableState = Protected(MutableState(credential: credential, refreshWindow: refreshWindow)) } // MARK: Adapt public func adapt(_ urlRequest: URLRequest, for session: Session, completion: @escaping (Result) -> Void) { - let adaptResult: AdaptResult = $mutableState.write { mutableState in + let adaptResult: AdaptResult = mutableState.write { mutableState in // Queue the adapt operation if a refresh is already in place. guard !mutableState.isRefreshing else { let operation = AdaptOperation(urlRequest: urlRequest, session: session, completion: completion) @@ -316,7 +315,7 @@ public class AuthenticationInterceptor: RequestInterceptor wh return } - $mutableState.write { mutableState in + mutableState.write { mutableState in mutableState.requestsToRetry.append(completion) guard !mutableState.isRefreshing else { return } @@ -340,7 +339,7 @@ public class AuthenticationInterceptor: RequestInterceptor wh // Dispatch to queue to hop out of the lock in case authenticator.refresh is implemented synchronously. queue.async { self.authenticator.refresh(credential, for: session) { result in - self.$mutableState.write { mutableState in + self.mutableState.write { mutableState in switch result { case let .success(credential): self.handleRefreshSuccess(credential, insideLock: &mutableState) diff --git a/Pods/Alamofire/Source/Combine.swift b/Pods/Alamofire/Source/Combine.swift index 08329fc..79fce0d 100644 --- a/Pods/Alamofire/Source/Combine.swift +++ b/Pods/Alamofire/Source/Combine.swift @@ -22,7 +22,7 @@ // THE SOFTWARE. // -#if !((os(iOS) && (arch(i386) || arch(arm))) || os(Windows) || os(Linux)) +#if !((os(iOS) && (arch(i386) || arch(arm))) || os(Windows) || os(Linux) || os(Android)) import Combine import Dispatch @@ -91,23 +91,22 @@ public struct DataResponsePublisher: Publisher { where Downstream.Input == Output { typealias Failure = Downstream.Failure - @Protected - private var downstream: Downstream? + private let downstream: Protected private let request: DataRequest private let responseHandler: Handler init(request: DataRequest, responseHandler: @escaping Handler, downstream: Downstream) { self.request = request self.responseHandler = responseHandler - self.downstream = downstream + self.downstream = Protected(downstream) } func request(_ demand: Subscribers.Demand) { assert(demand > 0) - guard let downstream = downstream else { return } + guard let downstream = downstream.read({ $0 }) else { return } - self.downstream = nil + self.downstream.write(nil) responseHandler { response in _ = downstream.receive(response) downstream.receive(completion: .finished) @@ -116,7 +115,7 @@ public struct DataResponsePublisher: Publisher { func cancel() { request.cancel() - downstream = nil + downstream.write(nil) } } } @@ -312,23 +311,22 @@ public struct DataStreamPublisher: Publisher { where Downstream.Input == Output { typealias Failure = Downstream.Failure - @Protected - private var downstream: Downstream? + private let downstream: Protected private let request: DataStreamRequest private let streamHandler: Handler init(request: DataStreamRequest, streamHandler: @escaping Handler, downstream: Downstream) { self.request = request self.streamHandler = streamHandler - self.downstream = downstream + self.downstream = Protected(downstream) } func request(_ demand: Subscribers.Demand) { assert(demand > 0) - guard let downstream = downstream else { return } + guard let downstream = downstream.read({ $0 }) else { return } - self.downstream = nil + self.downstream.write(nil) streamHandler { stream in _ = downstream.receive(stream) if case .complete = stream.event { @@ -339,7 +337,7 @@ public struct DataStreamPublisher: Publisher { func cancel() { request.cancel() - downstream = nil + downstream.write(nil) } } } @@ -462,23 +460,22 @@ public struct DownloadResponsePublisher: Publisher { where Downstream.Input == Output { typealias Failure = Downstream.Failure - @Protected - private var downstream: Downstream? + private let downstream: Protected private let request: DownloadRequest private let responseHandler: Handler init(request: DownloadRequest, responseHandler: @escaping Handler, downstream: Downstream) { self.request = request self.responseHandler = responseHandler - self.downstream = downstream + self.downstream = Protected(downstream) } func request(_ demand: Subscribers.Demand) { assert(demand > 0) - guard let downstream = downstream else { return } + guard let downstream = downstream.read({ $0 }) else { return } - self.downstream = nil + self.downstream.write(nil) responseHandler { response in _ = downstream.receive(response) downstream.receive(completion: .finished) @@ -487,7 +484,7 @@ public struct DownloadResponsePublisher: Publisher { func cancel() { request.cancel() - downstream = nil + downstream.write(nil) } } } diff --git a/Pods/Alamofire/Source/Concurrency.swift b/Pods/Alamofire/Source/Concurrency.swift index 95008f9..21e7e1e 100644 --- a/Pods/Alamofire/Source/Concurrency.swift +++ b/Pods/Alamofire/Source/Concurrency.swift @@ -37,7 +37,7 @@ extension Request { /// - Returns: The `StreamOf`. public func uploadProgress(bufferingPolicy: StreamOf.BufferingPolicy = .unbounded) -> StreamOf { stream(bufferingPolicy: bufferingPolicy) { [unowned self] continuation in - uploadProgress(queue: .singleEventQueue) { progress in + uploadProgress(queue: underlyingQueue) { progress in continuation.yield(progress) } } @@ -50,7 +50,7 @@ extension Request { /// - Returns: The `StreamOf`. public func downloadProgress(bufferingPolicy: StreamOf.BufferingPolicy = .unbounded) -> StreamOf { stream(bufferingPolicy: bufferingPolicy) { [unowned self] continuation in - downloadProgress(queue: .singleEventQueue) { progress in + downloadProgress(queue: underlyingQueue) { progress in continuation.yield(progress) } } @@ -63,7 +63,7 @@ extension Request { /// - Returns: The `StreamOf`. public func urlRequests(bufferingPolicy: StreamOf.BufferingPolicy = .unbounded) -> StreamOf { stream(bufferingPolicy: bufferingPolicy) { [unowned self] continuation in - onURLRequestCreation(on: .singleEventQueue) { request in + onURLRequestCreation(on: underlyingQueue) { request in continuation.yield(request) } } @@ -76,7 +76,7 @@ extension Request { /// - Returns: The `StreamOf`. public func urlSessionTasks(bufferingPolicy: StreamOf.BufferingPolicy = .unbounded) -> StreamOf { stream(bufferingPolicy: bufferingPolicy) { [unowned self] continuation in - onURLSessionTaskCreation(on: .singleEventQueue) { task in + onURLSessionTaskCreation(on: underlyingQueue) { task in continuation.yield(task) } } @@ -89,15 +89,15 @@ extension Request { /// - Returns: The `StreamOf`. public func cURLDescriptions(bufferingPolicy: StreamOf.BufferingPolicy = .unbounded) -> StreamOf { stream(bufferingPolicy: bufferingPolicy) { [unowned self] continuation in - cURLDescription(on: .singleEventQueue) { description in + cURLDescription(on: underlyingQueue) { description in continuation.yield(description) } } } - private func stream(of type: T.Type = T.self, - bufferingPolicy: StreamOf.BufferingPolicy = .unbounded, - yielder: @escaping (StreamOf.Continuation) -> Void) -> StreamOf { + fileprivate func stream(of type: T.Type = T.self, + bufferingPolicy: StreamOf.BufferingPolicy = .unbounded, + yielder: @escaping (StreamOf.Continuation) -> Void) -> StreamOf { StreamOf(bufferingPolicy: bufferingPolicy) { [unowned self] continuation in yielder(continuation) // Must come after serializers run in order to catch retry progress. @@ -168,18 +168,83 @@ public struct DataTask { @available(macOS 10.15, iOS 13, tvOS 13, watchOS 6, *) extension DataRequest { + /// Creates a `StreamOf` for the instance's responses. + /// + /// - Parameter bufferingPolicy: `BufferingPolicy` that determines the stream's buffering behavior.`.unbounded` by default. + /// + /// - Returns: The `StreamOf`. + public func httpResponses(bufferingPolicy: StreamOf.BufferingPolicy = .unbounded) -> StreamOf { + stream(bufferingPolicy: bufferingPolicy) { [unowned self] continuation in + onHTTPResponse(on: underlyingQueue) { response in + continuation.yield(response) + } + } + } + + #if swift(>=5.7) + /// Sets an async closure returning a `Request.ResponseDisposition`, called whenever the `DataRequest` produces an + /// `HTTPURLResponse`. + /// + /// - Note: Most requests will only produce a single response for each outgoing attempt (initial + retries). + /// However, some types of response may trigger multiple `HTTPURLResponse`s, such as multipart streams, + /// where responses after the first will contain the part headers. + /// + /// - Parameters: + /// - handler: Async closure executed when a new `HTTPURLResponse` is received and returning a + /// `ResponseDisposition` value. This value determines whether to continue the request or cancel it as + /// if `cancel()` had been called on the instance. Note, this closure is called on an arbitrary thread, + /// so any synchronous calls in it will execute in that context. + /// + /// - Returns: The instance. + @_disfavoredOverload + @discardableResult + public func onHTTPResponse( + perform handler: @escaping @Sendable (_ response: HTTPURLResponse) async -> ResponseDisposition + ) -> Self { + onHTTPResponse(on: underlyingQueue) { response, completionHandler in + Task { + let disposition = await handler(response) + completionHandler(disposition) + } + } + + return self + } + + /// Sets an async closure called whenever the `DataRequest` produces an `HTTPURLResponse`. + /// + /// - Note: Most requests will only produce a single response for each outgoing attempt (initial + retries). + /// However, some types of response may trigger multiple `HTTPURLResponse`s, such as multipart streams, + /// where responses after the first will contain the part headers. + /// + /// - Parameters: + /// - handler: Async closure executed when a new `HTTPURLResponse` is received. Note, this closure is called on an + /// arbitrary thread, so any synchronous calls in it will execute in that context. + /// + /// - Returns: The instance. + @discardableResult + public func onHTTPResponse(perform handler: @escaping @Sendable (_ response: HTTPURLResponse) async -> Void) -> Self { + onHTTPResponse { response in + await handler(response) + return .allow + } + + return self + } + #endif + /// Creates a `DataTask` to `await` a `Data` value. /// /// - Parameters: /// - shouldAutomaticallyCancel: `Bool` determining whether or not the request should be cancelled when the /// enclosing async context is cancelled. Only applies to `DataTask`'s async - /// properties. `false` by default. + /// properties. `true` by default. /// - dataPreprocessor: `DataPreprocessor` which processes the received `Data` before completion. /// - emptyResponseCodes: HTTP response codes for which empty responses are allowed. `[204, 205]` by default. /// - emptyRequestMethods: `HTTPMethod`s for which empty responses are always valid. `[.head]` by default. /// /// - Returns: The `DataTask`. - public func serializingData(automaticallyCancelling shouldAutomaticallyCancel: Bool = false, + public func serializingData(automaticallyCancelling shouldAutomaticallyCancel: Bool = true, dataPreprocessor: DataPreprocessor = DataResponseSerializer.defaultDataPreprocessor, emptyResponseCodes: Set = DataResponseSerializer.defaultEmptyResponseCodes, emptyRequestMethods: Set = DataResponseSerializer.defaultEmptyRequestMethods) -> DataTask { @@ -195,7 +260,7 @@ extension DataRequest { /// - type: `Decodable` type to decode from response data. /// - shouldAutomaticallyCancel: `Bool` determining whether or not the request should be cancelled when the /// enclosing async context is cancelled. Only applies to `DataTask`'s async - /// properties. `false` by default. + /// properties. `true` by default. /// - dataPreprocessor: `DataPreprocessor` which processes the received `Data` before calling the serializer. /// `PassthroughPreprocessor()` by default. /// - decoder: `DataDecoder` to use to decode the response. `JSONDecoder()` by default. @@ -204,7 +269,7 @@ extension DataRequest { /// /// - Returns: The `DataTask`. public func serializingDecodable(_ type: Value.Type = Value.self, - automaticallyCancelling shouldAutomaticallyCancel: Bool = false, + automaticallyCancelling shouldAutomaticallyCancel: Bool = true, dataPreprocessor: DataPreprocessor = DecodableResponseSerializer.defaultDataPreprocessor, decoder: DataDecoder = JSONDecoder(), emptyResponseCodes: Set = DecodableResponseSerializer.defaultEmptyResponseCodes, @@ -221,7 +286,7 @@ extension DataRequest { /// - Parameters: /// - shouldAutomaticallyCancel: `Bool` determining whether or not the request should be cancelled when the /// enclosing async context is cancelled. Only applies to `DataTask`'s async - /// properties. `false` by default. + /// properties. `true` by default. /// - dataPreprocessor: `DataPreprocessor` which processes the received `Data` before calling the serializer. /// `PassthroughPreprocessor()` by default. /// - encoding: `String.Encoding` to use during serialization. Defaults to `nil`, in which case @@ -231,7 +296,7 @@ extension DataRequest { /// - emptyRequestMethods: `HTTPMethod`s for which empty responses are always valid. `[.head]` by default. /// /// - Returns: The `DataTask`. - public func serializingString(automaticallyCancelling shouldAutomaticallyCancel: Bool = false, + public func serializingString(automaticallyCancelling shouldAutomaticallyCancel: Bool = true, dataPreprocessor: DataPreprocessor = StringResponseSerializer.defaultDataPreprocessor, encoding: String.Encoding? = nil, emptyResponseCodes: Set = StringResponseSerializer.defaultEmptyResponseCodes, @@ -249,16 +314,16 @@ extension DataRequest { /// - serializer: `ResponseSerializer` responsible for serializing the request, response, and data. /// - shouldAutomaticallyCancel: `Bool` determining whether or not the request should be cancelled when the /// enclosing async context is cancelled. Only applies to `DataTask`'s async - /// properties. `false` by default. + /// properties. `true` by default. /// /// - Returns: The `DataTask`. public func serializingResponse(using serializer: Serializer, - automaticallyCancelling shouldAutomaticallyCancel: Bool = false) + automaticallyCancelling shouldAutomaticallyCancel: Bool = true) -> DataTask { - dataTask(automaticallyCancelling: shouldAutomaticallyCancel) { - self.response(queue: .singleEventQueue, - responseSerializer: serializer, - completionHandler: $0) + dataTask(automaticallyCancelling: shouldAutomaticallyCancel) { [self] in + response(queue: underlyingQueue, + responseSerializer: serializer, + completionHandler: $0) } } @@ -269,16 +334,16 @@ extension DataRequest { /// response, and data. /// - shouldAutomaticallyCancel: `Bool` determining whether or not the request should be cancelled when the /// enclosing async context is cancelled. Only applies to `DataTask`'s async - /// properties. `false` by default. + /// properties. `true` by default. /// /// - Returns: The `DataTask`. public func serializingResponse(using serializer: Serializer, - automaticallyCancelling shouldAutomaticallyCancel: Bool = false) + automaticallyCancelling shouldAutomaticallyCancel: Bool = true) -> DataTask { - dataTask(automaticallyCancelling: shouldAutomaticallyCancel) { - self.response(queue: .singleEventQueue, - responseSerializer: serializer, - completionHandler: $0) + dataTask(automaticallyCancelling: shouldAutomaticallyCancel) { [self] in + response(queue: underlyingQueue, + responseSerializer: serializer, + completionHandler: $0) } } @@ -366,13 +431,13 @@ extension DownloadRequest { /// - Parameters: /// - shouldAutomaticallyCancel: `Bool` determining whether or not the request should be cancelled when the /// enclosing async context is cancelled. Only applies to `DownloadTask`'s async - /// properties. `false` by default. + /// properties. `true` by default. /// - dataPreprocessor: `DataPreprocessor` which processes the received `Data` before completion. /// - emptyResponseCodes: HTTP response codes for which empty responses are allowed. `[204, 205]` by default. /// - emptyRequestMethods: `HTTPMethod`s for which empty responses are always valid. `[.head]` by default. /// /// - Returns: The `DownloadTask`. - public func serializingData(automaticallyCancelling shouldAutomaticallyCancel: Bool = false, + public func serializingData(automaticallyCancelling shouldAutomaticallyCancel: Bool = true, dataPreprocessor: DataPreprocessor = DataResponseSerializer.defaultDataPreprocessor, emptyResponseCodes: Set = DataResponseSerializer.defaultEmptyResponseCodes, emptyRequestMethods: Set = DataResponseSerializer.defaultEmptyRequestMethods) -> DownloadTask { @@ -390,7 +455,7 @@ extension DownloadRequest { /// - type: `Decodable` type to decode from response data. /// - shouldAutomaticallyCancel: `Bool` determining whether or not the request should be cancelled when the /// enclosing async context is cancelled. Only applies to `DownloadTask`'s async - /// properties. `false` by default. + /// properties. `true` by default. /// - dataPreprocessor: `DataPreprocessor` which processes the received `Data` before calling the serializer. /// `PassthroughPreprocessor()` by default. /// - decoder: `DataDecoder` to use to decode the response. `JSONDecoder()` by default. @@ -399,7 +464,7 @@ extension DownloadRequest { /// /// - Returns: The `DownloadTask`. public func serializingDecodable(_ type: Value.Type = Value.self, - automaticallyCancelling shouldAutomaticallyCancel: Bool = false, + automaticallyCancelling shouldAutomaticallyCancel: Bool = true, dataPreprocessor: DataPreprocessor = DecodableResponseSerializer.defaultDataPreprocessor, decoder: DataDecoder = JSONDecoder(), emptyResponseCodes: Set = DecodableResponseSerializer.defaultEmptyResponseCodes, @@ -416,10 +481,10 @@ extension DownloadRequest { /// - Parameters: /// - shouldAutomaticallyCancel: `Bool` determining whether or not the request should be cancelled when the /// enclosing async context is cancelled. Only applies to `DownloadTask`'s async - /// properties. `false` by default. + /// properties. `true` by default. /// /// - Returns: The `DownloadTask`. - public func serializingDownloadedFileURL(automaticallyCancelling shouldAutomaticallyCancel: Bool = false) -> DownloadTask { + public func serializingDownloadedFileURL(automaticallyCancelling shouldAutomaticallyCancel: Bool = true) -> DownloadTask { serializingDownload(using: URLResponseSerializer(), automaticallyCancelling: shouldAutomaticallyCancel) } @@ -429,7 +494,7 @@ extension DownloadRequest { /// - Parameters: /// - shouldAutomaticallyCancel: `Bool` determining whether or not the request should be cancelled when the /// enclosing async context is cancelled. Only applies to `DownloadTask`'s async - /// properties. `false` by default. + /// properties. `true` by default. /// - dataPreprocessor: `DataPreprocessor` which processes the received `Data` before calling the /// serializer. `PassthroughPreprocessor()` by default. /// - encoding: `String.Encoding` to use during serialization. Defaults to `nil`, in which case @@ -439,7 +504,7 @@ extension DownloadRequest { /// - emptyRequestMethods: `HTTPMethod`s for which empty responses are always valid. `[.head]` by default. /// /// - Returns: The `DownloadTask`. - public func serializingString(automaticallyCancelling shouldAutomaticallyCancel: Bool = false, + public func serializingString(automaticallyCancelling shouldAutomaticallyCancel: Bool = true, dataPreprocessor: DataPreprocessor = StringResponseSerializer.defaultDataPreprocessor, encoding: String.Encoding? = nil, emptyResponseCodes: Set = StringResponseSerializer.defaultEmptyResponseCodes, @@ -457,16 +522,16 @@ extension DownloadRequest { /// - serializer: `ResponseSerializer` responsible for serializing the request, response, and data. /// - shouldAutomaticallyCancel: `Bool` determining whether or not the request should be cancelled when the /// enclosing async context is cancelled. Only applies to `DownloadTask`'s async - /// properties. `false` by default. + /// properties. `true` by default. /// /// - Returns: The `DownloadTask`. public func serializingDownload(using serializer: Serializer, - automaticallyCancelling shouldAutomaticallyCancel: Bool = false) + automaticallyCancelling shouldAutomaticallyCancel: Bool = true) -> DownloadTask { - downloadTask(automaticallyCancelling: shouldAutomaticallyCancel) { - self.response(queue: .singleEventQueue, - responseSerializer: serializer, - completionHandler: $0) + downloadTask(automaticallyCancelling: shouldAutomaticallyCancel) { [self] in + response(queue: underlyingQueue, + responseSerializer: serializer, + completionHandler: $0) } } @@ -478,16 +543,16 @@ extension DownloadRequest { /// response, and data. /// - shouldAutomaticallyCancel: `Bool` determining whether or not the request should be cancelled when the /// enclosing async context is cancelled. Only applies to `DownloadTask`'s async - /// properties. `false` by default. + /// properties. `true` by default. /// /// - Returns: The `DownloadTask`. public func serializingDownload(using serializer: Serializer, - automaticallyCancelling shouldAutomaticallyCancel: Bool = false) + automaticallyCancelling shouldAutomaticallyCancel: Bool = true) -> DownloadTask { - downloadTask(automaticallyCancelling: shouldAutomaticallyCancel) { - self.response(queue: .singleEventQueue, - responseSerializer: serializer, - completionHandler: $0) + downloadTask(automaticallyCancelling: shouldAutomaticallyCancel) { [self] in + response(queue: underlyingQueue, + responseSerializer: serializer, + completionHandler: $0) } } @@ -625,6 +690,69 @@ public struct DataStreamTask { @available(macOS 10.15, iOS 13, tvOS 13, watchOS 6, *) extension DataStreamRequest { + /// Creates a `StreamOf` for the instance's responses. + /// + /// - Parameter bufferingPolicy: `BufferingPolicy` that determines the stream's buffering behavior.`.unbounded` by default. + /// + /// - Returns: The `StreamOf`. + public func httpResponses(bufferingPolicy: StreamOf.BufferingPolicy = .unbounded) -> StreamOf { + stream(bufferingPolicy: bufferingPolicy) { [unowned self] continuation in + onHTTPResponse(on: underlyingQueue) { response in + continuation.yield(response) + } + } + } + + #if swift(>=5.7) + /// Sets an async closure returning a `Request.ResponseDisposition`, called whenever the `DataStreamRequest` + /// produces an `HTTPURLResponse`. + /// + /// - Note: Most requests will only produce a single response for each outgoing attempt (initial + retries). + /// However, some types of response may trigger multiple `HTTPURLResponse`s, such as multipart streams, + /// where responses after the first will contain the part headers. + /// + /// - Parameters: + /// - handler: Async closure executed when a new `HTTPURLResponse` is received and returning a + /// `ResponseDisposition` value. This value determines whether to continue the request or cancel it as + /// if `cancel()` had been called on the instance. Note, this closure is called on an arbitrary thread, + /// so any synchronous calls in it will execute in that context. + /// + /// - Returns: The instance. + @_disfavoredOverload + @discardableResult + public func onHTTPResponse(perform handler: @escaping @Sendable (HTTPURLResponse) async -> ResponseDisposition) -> Self { + onHTTPResponse(on: underlyingQueue) { response, completionHandler in + Task { + let disposition = await handler(response) + completionHandler(disposition) + } + } + + return self + } + + /// Sets an async closure called whenever the `DataStreamRequest` produces an `HTTPURLResponse`. + /// + /// - Note: Most requests will only produce a single response for each outgoing attempt (initial + retries). + /// However, some types of response may trigger multiple `HTTPURLResponse`s, such as multipart streams, + /// where responses after the first will contain the part headers. + /// + /// - Parameters: + /// - handler: Async closure executed when a new `HTTPURLResponse` is received. Note, this closure is called on an + /// arbitrary thread, so any synchronous calls in it will execute in that context. + /// + /// - Returns: The instance. + @discardableResult + public func onHTTPResponse(perform handler: @escaping @Sendable (HTTPURLResponse) async -> Void) -> Self { + onHTTPResponse { response in + await handler(response) + return .allow + } + + return self + } + #endif + /// Creates a `DataStreamTask` used to `await` streams of serialized values. /// /// - Returns: The `DataStreamTask`. diff --git a/Pods/Alamofire/Source/EventMonitor.swift b/Pods/Alamofire/Source/EventMonitor.swift index 5fe22df..75b60f2 100644 --- a/Pods/Alamofire/Source/EventMonitor.swift +++ b/Pods/Alamofire/Source/EventMonitor.swift @@ -69,6 +69,9 @@ public protocol EventMonitor { // MARK: URLSessionDataDelegate Events + /// Event called during `URLSessionDataDelegate`'s `urlSession(_:dataTask:didReceive:completionHandler:)` method. + func urlSession(_ session: URLSession, dataTask: URLSessionDataTask, didReceive response: URLResponse) + /// Event called during `URLSessionDataDelegate`'s `urlSession(_:dataTask:didReceive:)` method. func urlSession(_ session: URLSession, dataTask: URLSessionDataTask, didReceive data: Data) @@ -244,6 +247,7 @@ extension EventMonitor { didFinishCollecting metrics: URLSessionTaskMetrics) {} public func urlSession(_ session: URLSession, task: URLSessionTask, didCompleteWithError error: Error?) {} public func urlSession(_ session: URLSession, taskIsWaitingForConnectivity task: URLSessionTask) {} + public func urlSession(_ session: URLSession, dataTask: URLSessionDataTask, didReceive response: URLResponse) {} public func urlSession(_ session: URLSession, dataTask: URLSessionDataTask, didReceive data: Data) {} public func urlSession(_ session: URLSession, dataTask: URLSessionDataTask, @@ -380,6 +384,10 @@ public final class CompositeEventMonitor: EventMonitor { performEvent { $0.urlSession(session, taskIsWaitingForConnectivity: task) } } + public func urlSession(_ session: URLSession, dataTask: URLSessionDataTask, didReceive response: URLResponse) { + performEvent { $0.urlSession(session, dataTask: dataTask, didReceive: response) } + } + public func urlSession(_ session: URLSession, dataTask: URLSessionDataTask, didReceive data: Data) { performEvent { $0.urlSession(session, dataTask: dataTask, didReceive: data) } } @@ -593,6 +601,9 @@ open class ClosureEventMonitor: EventMonitor { /// Closure called on the `urlSession(_:taskIsWaitingForConnectivity:)` event. open var taskIsWaitingForConnectivity: ((URLSession, URLSessionTask) -> Void)? + /// Closure called on the `urlSession(_:dataTask:didReceive:completionHandler:)` event. + open var dataTaskDidReceiveResponse: ((URLSession, URLSessionDataTask, URLResponse) -> Void)? + /// Closure that receives the `urlSession(_:dataTask:didReceive:)` event. open var dataTaskDidReceiveData: ((URLSession, URLSessionDataTask, Data) -> Void)? @@ -741,6 +752,10 @@ open class ClosureEventMonitor: EventMonitor { taskIsWaitingForConnectivity?(session, task) } + open func urlSession(_ session: URLSession, dataTask: URLSessionDataTask, didReceive response: URLResponse) { + dataTaskDidReceiveResponse?(session, dataTask, response) + } + open func urlSession(_ session: URLSession, dataTask: URLSessionDataTask, didReceive data: Data) { dataTaskDidReceiveData?(session, dataTask, data) } diff --git a/Pods/Alamofire/Source/HTTPHeaders.swift b/Pods/Alamofire/Source/HTTPHeaders.swift index 231f618..08d4799 100644 --- a/Pods/Alamofire/Source/HTTPHeaders.swift +++ b/Pods/Alamofire/Source/HTTPHeaders.swift @@ -34,16 +34,12 @@ public struct HTTPHeaders { /// Creates an instance from an array of `HTTPHeader`s. Duplicate case-insensitive names are collapsed into the last /// name and value encountered. public init(_ headers: [HTTPHeader]) { - self.init() - headers.forEach { update($0) } } /// Creates an instance from a `[String: String]`. Duplicate case-insensitive names are collapsed into the last name /// and value encountered. public init(_ dictionary: [String: String]) { - self.init() - dictionary.forEach { update(HTTPHeader(name: $0.key, value: $0.value)) } } @@ -145,8 +141,6 @@ public struct HTTPHeaders { extension HTTPHeaders: ExpressibleByDictionaryLiteral { public init(dictionaryLiteral elements: (String, String)...) { - self.init() - elements.forEach { update(name: $0.0, value: $0.1) } } } @@ -405,6 +399,8 @@ extension HTTPHeader { return "Linux" #elseif os(Windows) return "Windows" + #elseif os(Android) + return "Android" #else return "Unknown" #endif diff --git a/Pods/Alamofire/Source/MultipartFormData.swift b/Pods/Alamofire/Source/MultipartFormData.swift index 364b614..3fb6e2b 100644 --- a/Pods/Alamofire/Source/MultipartFormData.swift +++ b/Pods/Alamofire/Source/MultipartFormData.swift @@ -24,9 +24,9 @@ import Foundation -#if os(iOS) || os(watchOS) || os(tvOS) +#if canImport(MobileCoreServices) import MobileCoreServices -#elseif os(macOS) +#elseif canImport(CoreServices) import CoreServices #endif @@ -213,7 +213,7 @@ open class MultipartFormData { // Check 2 - is file URL reachable? //============================================================ - #if !(os(Linux) || os(Windows)) + #if !(os(Linux) || os(Windows) || os(Android)) do { let isReachable = try fileURL.checkPromisedItemIsReachable() guard isReachable else { @@ -455,9 +455,11 @@ open class MultipartFormData { inputStream.open() defer { inputStream.close() } - while inputStream.hasBytesAvailable { - var buffer = [UInt8](repeating: 0, count: streamBufferSize) - let bytesRead = inputStream.read(&buffer, maxLength: streamBufferSize) + var bytesLeftToRead = bodyPart.bodyContentLength + while inputStream.hasBytesAvailable && bytesLeftToRead > 0 { + let bufferSize = min(streamBufferSize, Int(bytesLeftToRead)) + var buffer = [UInt8](repeating: 0, count: bufferSize) + let bytesRead = inputStream.read(&buffer, maxLength: bufferSize) if let streamError = inputStream.streamError { throw AFError.multipartEncodingFailed(reason: .inputStreamReadFailed(error: streamError)) @@ -469,6 +471,7 @@ open class MultipartFormData { } try write(&buffer, to: outputStream) + bytesLeftToRead -= UInt64(bytesRead) } else { break } @@ -549,6 +552,19 @@ extension MultipartFormData { // MARK: - Private - Mime Type private func mimeType(forPathExtension pathExtension: String) -> String { + #if swift(>=5.9) + if #available(iOS 14, macOS 11, tvOS 14, watchOS 7, visionOS 1, *) { + return UTType(filenameExtension: pathExtension)?.preferredMIMEType ?? "application/octet-stream" + } else { + if + let id = UTTypeCreatePreferredIdentifierForTag(kUTTagClassFilenameExtension, pathExtension as CFString, nil)?.takeRetainedValue(), + let contentType = UTTypeCopyPreferredTagWithClass(id, kUTTagClassMIMEType)?.takeRetainedValue() { + return contentType as String + } + + return "application/octet-stream" + } + #else if #available(iOS 14, macOS 11, tvOS 14, watchOS 7, *) { return UTType(filenameExtension: pathExtension)?.preferredMIMEType ?? "application/octet-stream" } else { @@ -560,6 +576,7 @@ extension MultipartFormData { return "application/octet-stream" } + #endif } } @@ -569,7 +586,7 @@ extension MultipartFormData { // MARK: - Private - Mime Type private func mimeType(forPathExtension pathExtension: String) -> String { - #if !(os(Linux) || os(Windows)) + #if canImport(CoreServices) || canImport(MobileCoreServices) if let id = UTTypeCreatePreferredIdentifierForTag(kUTTagClassFilenameExtension, pathExtension as CFString, nil)?.takeRetainedValue(), let contentType = UTTypeCopyPreferredTagWithClass(id, kUTTagClassMIMEType)?.takeRetainedValue() { diff --git a/Pods/Alamofire/Source/MultipartUpload.swift b/Pods/Alamofire/Source/MultipartUpload.swift index ceda21f..ae905bd 100644 --- a/Pods/Alamofire/Source/MultipartUpload.swift +++ b/Pods/Alamofire/Source/MultipartUpload.swift @@ -28,8 +28,8 @@ import Foundation final class MultipartUpload { lazy var result = Result { try build() } - @Protected - private(set) var multipartFormData: MultipartFormData + private let multipartFormData: Protected + let encodingMemoryThreshold: UInt64 let request: URLRequestConvertible let fileManager: FileManager @@ -40,13 +40,13 @@ final class MultipartUpload { self.encodingMemoryThreshold = encodingMemoryThreshold self.request = request fileManager = multipartFormData.fileManager - self.multipartFormData = multipartFormData + self.multipartFormData = Protected(multipartFormData) } func build() throws -> UploadRequest.Uploadable { let uploadable: UploadRequest.Uploadable - if $multipartFormData.contentLength < encodingMemoryThreshold { - let data = try $multipartFormData.read { try $0.encode() } + if multipartFormData.contentLength < encodingMemoryThreshold { + let data = try multipartFormData.read { try $0.encode() } uploadable = .data(data) } else { @@ -58,7 +58,7 @@ final class MultipartUpload { try fileManager.createDirectory(at: directoryURL, withIntermediateDirectories: true, attributes: nil) do { - try $multipartFormData.read { try $0.writeEncodedData(to: fileURL) } + try multipartFormData.read { try $0.writeEncodedData(to: fileURL) } } catch { // Cleanup after attempted write if it fails. try? fileManager.removeItem(at: fileURL) @@ -76,7 +76,7 @@ extension MultipartUpload: UploadConvertible { func asURLRequest() throws -> URLRequest { var urlRequest = try request.asURLRequest() - $multipartFormData.read { multipartFormData in + multipartFormData.read { multipartFormData in urlRequest.headers.add(.contentType(multipartFormData.contentType)) } diff --git a/Pods/Alamofire/Source/NetworkReachabilityManager.swift b/Pods/Alamofire/Source/NetworkReachabilityManager.swift index d724722..650fdf9 100644 --- a/Pods/Alamofire/Source/NetworkReachabilityManager.swift +++ b/Pods/Alamofire/Source/NetworkReachabilityManager.swift @@ -22,7 +22,7 @@ // THE SOFTWARE. // -#if !(os(watchOS) || os(Linux) || os(Windows)) +#if canImport(SystemConfiguration) import Foundation import SystemConfiguration @@ -113,8 +113,7 @@ open class NetworkReachabilityManager { private let reachability: SCNetworkReachability /// Protected storage for mutable state. - @Protected - private var mutableState = MutableState() + private let mutableState = Protected(MutableState()) // MARK: - Initialization @@ -168,7 +167,7 @@ open class NetworkReachabilityManager { onUpdatePerforming listener: @escaping Listener) -> Bool { stopListening() - $mutableState.write { state in + mutableState.write { state in state.listenerQueue = queue state.listener = listener } @@ -194,7 +193,8 @@ open class NetworkReachabilityManager { let description = weakManager.manager?.flags?.readableDescription ?? "nil" return Unmanaged.passRetained(description as CFString) - }) + } + ) let callback: SCNetworkReachabilityCallBack = { _, flags, info in guard let info = info else { return } @@ -219,7 +219,7 @@ open class NetworkReachabilityManager { open func stopListening() { SCNetworkReachabilitySetCallback(reachability, nil, nil) SCNetworkReachabilitySetDispatchQueue(reachability, nil) - $mutableState.write { state in + mutableState.write { state in state.listener = nil state.listenerQueue = nil state.previousStatus = nil @@ -236,7 +236,7 @@ open class NetworkReachabilityManager { func notifyListener(_ flags: SCNetworkReachabilityFlags) { let newStatus = NetworkReachabilityStatus(flags) - $mutableState.write { state in + mutableState.write { state in guard state.previousStatus != newStatus else { return } state.previousStatus = newStatus @@ -266,7 +266,7 @@ extension SCNetworkReachabilityFlags { var canConnectWithoutUserInteraction: Bool { canConnectAutomatically && !contains(.interventionRequired) } var isActuallyReachable: Bool { isReachable && (!isConnectionRequired || canConnectWithoutUserInteraction) } var isCellular: Bool { - #if os(iOS) || os(tvOS) + #if os(iOS) || os(tvOS) || (swift(>=5.9) && os(visionOS)) return contains(.isWWAN) #else return false diff --git a/Pods/Alamofire/Source/Protected.swift b/Pods/Alamofire/Source/Protected.swift index 2c056fa..6756045 100644 --- a/Pods/Alamofire/Source/Protected.swift +++ b/Pods/Alamofire/Source/Protected.swift @@ -49,13 +49,7 @@ extension Lock { } } -#if os(Linux) || os(Windows) - -extension NSLock: Lock {} - -#endif - -#if os(macOS) || os(iOS) || os(watchOS) || os(tvOS) +#if canImport(Darwin) /// An `os_unfair_lock` wrapper. final class UnfairLock: Lock { private let unfairLock: os_unfair_lock_t @@ -78,41 +72,35 @@ final class UnfairLock: Lock { os_unfair_lock_unlock(unfairLock) } } + +#elseif canImport(Foundation) +extension NSLock: Lock {} +#else +#error("This platform needs a Lock-conforming type without Foundation.") #endif /// A thread-safe wrapper around a value. -@propertyWrapper @dynamicMemberLookup -final class Protected { - #if os(macOS) || os(iOS) || os(watchOS) || os(tvOS) +final class Protected { + #if canImport(Darwin) private let lock = UnfairLock() - #elseif os(Linux) || os(Windows) + #elseif canImport(Foundation) private let lock = NSLock() + #else + #error("This platform needs a Lock-conforming type without Foundation.") #endif - private var value: T + private var value: Value - init(_ value: T) { + init(_ value: Value) { self.value = value } - /// The contained value. Unsafe for anything more than direct read or write. - var wrappedValue: T { - get { lock.around { value } } - set { lock.around { value = newValue } } - } - - var projectedValue: Protected { self } - - init(wrappedValue: T) { - value = wrappedValue - } - /// Synchronously read or transform the contained value. /// /// - Parameter closure: The closure to execute. /// /// - Returns: The return value of the closure passed. - func read(_ closure: (T) throws -> U) rethrows -> U { + func read(_ closure: (Value) throws -> U) rethrows -> U { try lock.around { try closure(self.value) } } @@ -122,21 +110,28 @@ final class Protected { /// /// - Returns: The modified value. @discardableResult - func write(_ closure: (inout T) throws -> U) rethrows -> U { + func write(_ closure: (inout Value) throws -> U) rethrows -> U { try lock.around { try closure(&self.value) } } - subscript(dynamicMember keyPath: WritableKeyPath) -> Property { + /// Synchronously update the protected value. + /// + /// - Parameter value: The `Value`. + func write(_ value: Value) { + write { $0 = value } + } + + subscript(dynamicMember keyPath: WritableKeyPath) -> Property { get { lock.around { value[keyPath: keyPath] } } set { lock.around { value[keyPath: keyPath] = newValue } } } - subscript(dynamicMember keyPath: KeyPath) -> Property { + subscript(dynamicMember keyPath: KeyPath) -> Property { lock.around { value[keyPath: keyPath] } } } -extension Protected where T == Request.MutableState { +extension Protected where Value == Request.MutableState { /// Attempts to transition to the passed `State`. /// /// - Parameter state: The `State` to attempt transition to. @@ -159,3 +154,15 @@ extension Protected where T == Request.MutableState { lock.around { perform(value.state) } } } + +extension Protected: Equatable where Value: Equatable { + static func ==(lhs: Protected, rhs: Protected) -> Bool { + lhs.read { left in rhs.read { right in left == right }} + } +} + +extension Protected: Hashable where Value: Hashable { + func hash(into hasher: inout Hasher) { + read { hasher.combine($0) } + } +} diff --git a/Pods/Alamofire/Source/Request.swift b/Pods/Alamofire/Source/Request.swift index a707933..55f2a67 100644 --- a/Pods/Alamofire/Source/Request.swift +++ b/Pods/Alamofire/Source/Request.swift @@ -125,11 +125,10 @@ public class Request { } /// Protected `MutableState` value that provides thread-safe access to state values. - @Protected - fileprivate var mutableState = MutableState() + fileprivate let mutableState = Protected(MutableState()) /// `State` of the `Request`. - public var state: State { $mutableState.state } + public var state: State { mutableState.state } /// Returns whether `state` is `.initialized`. public var isInitialized: Bool { state == .initialized } /// Returns whether `state is `.resumed`. @@ -152,50 +151,49 @@ public class Request { public let downloadProgress = Progress(totalUnitCount: 0) /// `ProgressHandler` called when `uploadProgress` is updated, on the provided `DispatchQueue`. private var uploadProgressHandler: (handler: ProgressHandler, queue: DispatchQueue)? { - get { $mutableState.uploadProgressHandler } - set { $mutableState.uploadProgressHandler = newValue } + get { mutableState.uploadProgressHandler } + set { mutableState.uploadProgressHandler = newValue } } /// `ProgressHandler` called when `downloadProgress` is updated, on the provided `DispatchQueue`. fileprivate var downloadProgressHandler: (handler: ProgressHandler, queue: DispatchQueue)? { - get { $mutableState.downloadProgressHandler } - set { $mutableState.downloadProgressHandler = newValue } + get { mutableState.downloadProgressHandler } + set { mutableState.downloadProgressHandler = newValue } } // MARK: Redirect Handling /// `RedirectHandler` set on the instance. public private(set) var redirectHandler: RedirectHandler? { - get { $mutableState.redirectHandler } - set { $mutableState.redirectHandler = newValue } + get { mutableState.redirectHandler } + set { mutableState.redirectHandler = newValue } } // MARK: Cached Response Handling /// `CachedResponseHandler` set on the instance. public private(set) var cachedResponseHandler: CachedResponseHandler? { - get { $mutableState.cachedResponseHandler } - set { $mutableState.cachedResponseHandler = newValue } + get { mutableState.cachedResponseHandler } + set { mutableState.cachedResponseHandler = newValue } } // MARK: URLCredential /// `URLCredential` used for authentication challenges. Created by calling one of the `authenticate` methods. public private(set) var credential: URLCredential? { - get { $mutableState.credential } - set { $mutableState.credential = newValue } + get { mutableState.credential } + set { mutableState.credential = newValue } } // MARK: Validators /// `Validator` callback closures that store the validation calls enqueued. - @Protected - fileprivate var validators: [() -> Void] = [] + fileprivate let validators = Protected<[() -> Void]>([]) // MARK: URLRequests /// All `URLRequests` created on behalf of the `Request`, including original and adapted requests. - public var requests: [URLRequest] { $mutableState.requests } + public var requests: [URLRequest] { mutableState.requests } /// First `URLRequest` created on behalf of the `Request`. May not be the first one actually executed. public var firstRequest: URLRequest? { requests.first } /// Last `URLRequest` created on behalf of the `Request`. @@ -205,7 +203,7 @@ public class Request { /// `URLRequest`s from all of the `URLSessionTask`s executed on behalf of the `Request`. May be different from /// `requests` due to `URLSession` manipulation. - public var performedRequests: [URLRequest] { $mutableState.read { $0.tasks.compactMap(\.currentRequest) } } + public var performedRequests: [URLRequest] { mutableState.read { $0.tasks.compactMap(\.currentRequest) } } // MARK: HTTPURLResponse @@ -216,7 +214,7 @@ public class Request { // MARK: Tasks /// All `URLSessionTask`s created on behalf of the `Request`. - public var tasks: [URLSessionTask] { $mutableState.tasks } + public var tasks: [URLSessionTask] { mutableState.tasks } /// First `URLSessionTask` created on behalf of the `Request`. public var firstTask: URLSessionTask? { tasks.first } /// Last `URLSessionTask` created on behalf of the `Request`. @@ -227,7 +225,7 @@ public class Request { // MARK: Metrics /// All `URLSessionTaskMetrics` gathered on behalf of the `Request`. Should correspond to the `tasks` created. - public var allMetrics: [URLSessionTaskMetrics] { $mutableState.metrics } + public var allMetrics: [URLSessionTaskMetrics] { mutableState.metrics } /// First `URLSessionTaskMetrics` gathered on behalf of the `Request`. public var firstMetrics: URLSessionTaskMetrics? { allMetrics.first } /// Last `URLSessionTaskMetrics` gathered on behalf of the `Request`. @@ -238,14 +236,14 @@ public class Request { // MARK: Retry Count /// Number of times the `Request` has been retried. - public var retryCount: Int { $mutableState.retryCount } + public var retryCount: Int { mutableState.retryCount } // MARK: Error /// `Error` returned from Alamofire internally, from the network request directly, or any validators executed. public fileprivate(set) var error: AFError? { - get { $mutableState.error } - set { $mutableState.error = newValue } + get { mutableState.error } + set { mutableState.error = newValue } } /// Default initializer for the `Request` superclass. @@ -283,7 +281,7 @@ public class Request { func didCreateInitialURLRequest(_ request: URLRequest) { dispatchPrecondition(condition: .onQueue(underlyingQueue)) - $mutableState.write { $0.requests.append(request) } + mutableState.write { $0.requests.append(request) } eventMonitor?.request(self, didCreateInitialURLRequest: request) } @@ -313,7 +311,7 @@ public class Request { func didAdaptInitialRequest(_ initialRequest: URLRequest, to adaptedRequest: URLRequest) { dispatchPrecondition(condition: .onQueue(underlyingQueue)) - $mutableState.write { $0.requests.append(adaptedRequest) } + mutableState.write { $0.requests.append(adaptedRequest) } eventMonitor?.request(self, didAdaptInitialRequest: initialRequest, to: adaptedRequest) } @@ -343,7 +341,7 @@ public class Request { func didCreateURLRequest(_ request: URLRequest) { dispatchPrecondition(condition: .onQueue(underlyingQueue)) - $mutableState.read { state in + mutableState.read { state in state.urlRequestHandler?.queue.async { state.urlRequestHandler?.handler(request) } } @@ -354,7 +352,7 @@ public class Request { /// Asynchronously calls any stored `cURLHandler` and then removes it from `mutableState`. private func callCURLHandlerIfNecessary() { - $mutableState.write { mutableState in + mutableState.write { mutableState in guard let cURLHandler = mutableState.cURLHandler else { return } cURLHandler.queue.async { cURLHandler.handler(self.cURLDescription()) } @@ -369,7 +367,7 @@ public class Request { func didCreateTask(_ task: URLSessionTask) { dispatchPrecondition(condition: .onQueue(underlyingQueue)) - $mutableState.write { state in + mutableState.write { state in state.tasks.append(task) guard let urlSessionTaskHandler = state.urlSessionTaskHandler else { return } @@ -416,7 +414,9 @@ public class Request { func didCancel() { dispatchPrecondition(condition: .onQueue(underlyingQueue)) - error = error ?? AFError.explicitlyCancelled + mutableState.write { mutableState in + mutableState.error = mutableState.error ?? AFError.explicitlyCancelled + } eventMonitor?.requestDidCancel(self) } @@ -436,7 +436,7 @@ public class Request { func didGatherMetrics(_ metrics: URLSessionTaskMetrics) { dispatchPrecondition(condition: .onQueue(underlyingQueue)) - $mutableState.write { $0.metrics.append(metrics) } + mutableState.write { $0.metrics.append(metrics) } eventMonitor?.request(self, didGatherMetrics: metrics) } @@ -468,6 +468,7 @@ public class Request { self.error = self.error ?? error + let validators = validators.read { $0 } validators.forEach { $0() } eventMonitor?.request(self, didCompleteTask: task, with: error) @@ -479,7 +480,7 @@ public class Request { func prepareForRetry() { dispatchPrecondition(condition: .onQueue(underlyingQueue)) - $mutableState.write { $0.retryCount += 1 } + mutableState.write { $0.retryCount += 1 } reset() @@ -513,9 +514,9 @@ public class Request { func finish(error: AFError? = nil) { dispatchPrecondition(condition: .onQueue(underlyingQueue)) - guard !$mutableState.isFinishing else { return } + guard !mutableState.isFinishing else { return } - $mutableState.isFinishing = true + mutableState.isFinishing = true if let error = error { self.error = error } @@ -531,7 +532,7 @@ public class Request { /// /// - Parameter closure: The closure containing the response serialization call. func appendResponseSerializer(_ closure: @escaping () -> Void) { - $mutableState.write { mutableState in + mutableState.write { mutableState in mutableState.responseSerializers.append(closure) if mutableState.state == .finished { @@ -554,7 +555,7 @@ public class Request { func nextResponseSerializer() -> (() -> Void)? { var responseSerializer: (() -> Void)? - $mutableState.write { mutableState in + mutableState.write { mutableState in let responseSerializerIndex = mutableState.responseSerializerCompletions.count if responseSerializerIndex < mutableState.responseSerializers.count { @@ -571,7 +572,7 @@ public class Request { // Execute all response serializer completions and clear them var completions: [() -> Void] = [] - $mutableState.write { mutableState in + mutableState.write { mutableState in completions = mutableState.responseSerializerCompletions // Clear out all response serializers and response serializer completions in mutable state since the @@ -605,7 +606,7 @@ public class Request { /// - Parameter completion: The completion handler provided with the response serializer, called when all serializers /// are complete. func responseSerializerDidComplete(completion: @escaping () -> Void) { - $mutableState.write { $0.responseSerializerCompletions.append(completion) } + mutableState.write { $0.responseSerializerCompletions.append(completion) } processNextResponseSerializer() } @@ -618,7 +619,7 @@ public class Request { downloadProgress.totalUnitCount = 0 downloadProgress.completedUnitCount = 0 - $mutableState.write { state in + mutableState.write { state in state.isFinishing = false state.responseSerializerCompletions = [] } @@ -640,7 +641,7 @@ public class Request { /// /// - Parameter perform: The closure to perform. func withState(perform: (State) -> Void) { - $mutableState.withState(perform: perform) + mutableState.withState(perform: perform) } // MARK: Task Creation @@ -667,7 +668,7 @@ public class Request { /// - Returns: The instance. @discardableResult public func cancel() -> Self { - $mutableState.write { mutableState in + mutableState.write { mutableState in guard mutableState.state.canTransitionTo(.cancelled) else { return } mutableState.state = .cancelled @@ -693,7 +694,7 @@ public class Request { /// - Returns: The instance. @discardableResult public func suspend() -> Self { - $mutableState.write { mutableState in + mutableState.write { mutableState in guard mutableState.state.canTransitionTo(.suspended) else { return } mutableState.state = .suspended @@ -714,7 +715,7 @@ public class Request { /// - Returns: The instance. @discardableResult public func resume() -> Self { - $mutableState.write { mutableState in + mutableState.write { mutableState in guard mutableState.state.canTransitionTo(.resumed) else { return } mutableState.state = .resumed @@ -754,7 +755,7 @@ public class Request { /// - Returns: The instance. @discardableResult public func authenticate(with credential: URLCredential) -> Self { - $mutableState.credential = credential + mutableState.credential = credential return self } @@ -770,7 +771,7 @@ public class Request { /// - Returns: The instance. @discardableResult public func downloadProgress(queue: DispatchQueue = .main, closure: @escaping ProgressHandler) -> Self { - $mutableState.downloadProgressHandler = (handler: closure, queue: queue) + mutableState.downloadProgressHandler = (handler: closure, queue: queue) return self } @@ -786,7 +787,7 @@ public class Request { /// - Returns: The instance. @discardableResult public func uploadProgress(queue: DispatchQueue = .main, closure: @escaping ProgressHandler) -> Self { - $mutableState.uploadProgressHandler = (handler: closure, queue: queue) + mutableState.uploadProgressHandler = (handler: closure, queue: queue) return self } @@ -802,7 +803,7 @@ public class Request { /// - Returns: The instance. @discardableResult public func redirect(using handler: RedirectHandler) -> Self { - $mutableState.write { mutableState in + mutableState.write { mutableState in precondition(mutableState.redirectHandler == nil, "Redirect handler has already been set.") mutableState.redirectHandler = handler } @@ -821,7 +822,7 @@ public class Request { /// - Returns: The instance. @discardableResult public func cacheResponse(using handler: CachedResponseHandler) -> Self { - $mutableState.write { mutableState in + mutableState.write { mutableState in precondition(mutableState.cachedResponseHandler == nil, "Cached response handler has already been set.") mutableState.cachedResponseHandler = handler } @@ -842,7 +843,7 @@ public class Request { /// - Returns: The instance. @discardableResult public func cURLDescription(on queue: DispatchQueue, calling handler: @escaping (String) -> Void) -> Self { - $mutableState.write { mutableState in + mutableState.write { mutableState in if mutableState.requests.last != nil { queue.async { handler(self.cURLDescription()) } } else { @@ -863,13 +864,7 @@ public class Request { /// - Returns: The instance. @discardableResult public func cURLDescription(calling handler: @escaping (String) -> Void) -> Self { - $mutableState.write { mutableState in - if mutableState.requests.last != nil { - underlyingQueue.async { handler(self.cURLDescription()) } - } else { - mutableState.cURLHandler = (underlyingQueue, handler) - } - } + cURLDescription(on: underlyingQueue, calling: handler) return self } @@ -885,7 +880,7 @@ public class Request { /// - Returns: The instance. @discardableResult public func onURLRequestCreation(on queue: DispatchQueue = .main, perform handler: @escaping (URLRequest) -> Void) -> Self { - $mutableState.write { state in + mutableState.write { state in if let request = state.requests.last { queue.async { handler(request) } } @@ -909,7 +904,7 @@ public class Request { /// - Returns: The instance. @discardableResult public func onURLSessionTaskCreation(on queue: DispatchQueue = .main, perform handler: @escaping (URLSessionTask) -> Void) -> Self { - $mutableState.write { state in + mutableState.write { state in if let task = state.tasks.last { queue.async { handler(task) } } @@ -928,19 +923,37 @@ public class Request { func onFinish(perform finishHandler: @escaping () -> Void) { guard !isFinished else { finishHandler(); return } - $mutableState.write { state in + mutableState.write { state in state.finishHandlers.append(finishHandler) } } /// Final cleanup step executed when the instance finishes response serialization. func cleanup() { - delegate?.cleanup(after: self) - let handlers = $mutableState.finishHandlers + let handlers = mutableState.finishHandlers handlers.forEach { $0() } - $mutableState.write { state in + mutableState.write { state in state.finishHandlers.removeAll() } + + delegate?.cleanup(after: self) + } +} + +extension Request { + /// Type indicating how a `DataRequest` or `DataStreamRequest` should proceed after receiving an `HTTPURLResponse`. + public enum ResponseDisposition { + /// Allow the request to continue normally. + case allow + /// Cancel the request, similar to calling `cancel()`. + case cancel + + var sessionDisposition: URLSession.ResponseDisposition { + switch self { + case .allow: return .allow + case .cancel: return .cancel + } + } } } @@ -1085,11 +1098,16 @@ public class DataRequest: Request { /// `URLRequestConvertible` value used to create `URLRequest`s for this instance. public let convertible: URLRequestConvertible /// `Data` read from the server so far. - public var data: Data? { mutableData } + public var data: Data? { dataMutableState.data } - /// Protected storage for the `Data` read by the instance. - @Protected - private var mutableData: Data? = nil + private struct DataMutableState { + var data: Data? + var httpResponseHandler: (queue: DispatchQueue, + handler: (_ response: HTTPURLResponse, + _ completionHandler: @escaping (ResponseDisposition) -> Void) -> Void)? + } + + private let dataMutableState = Protected(DataMutableState()) /// Creates a `DataRequest` using the provided parameters. /// @@ -1122,7 +1140,9 @@ public class DataRequest: Request { override func reset() { super.reset() - mutableData = nil + dataMutableState.write { mutableState in + mutableState.data = nil + } } /// Called when `Data` is received by this instance. @@ -1131,15 +1151,41 @@ public class DataRequest: Request { /// /// - Parameter data: The `Data` received. func didReceive(data: Data) { - if self.data == nil { - mutableData = data - } else { - $mutableData.write { $0?.append(data) } + dataMutableState.write { mutableState in + if mutableState.data == nil { + mutableState.data = data + } else { + mutableState.data?.append(data) + } } updateDownloadProgress() } + func didReceiveResponse(_ response: HTTPURLResponse, completionHandler: @escaping (URLSession.ResponseDisposition) -> Void) { + dataMutableState.read { dataMutableState in + guard let httpResponseHandler = dataMutableState.httpResponseHandler else { + underlyingQueue.async { completionHandler(.allow) } + return + } + + httpResponseHandler.queue.async { + httpResponseHandler.handler(response) { disposition in + if disposition == .cancel { + self.mutableState.write { mutableState in + mutableState.state = .cancelled + mutableState.error = mutableState.error ?? AFError.explicitlyCancelled + } + } + + self.underlyingQueue.async { + completionHandler(disposition.sessionDisposition) + } + } + } + } + } + override func task(for request: URLRequest, using session: URLSession) -> URLSessionTask { let copiedRequest = request return session.dataTask(with: copiedRequest) @@ -1179,7 +1225,48 @@ public class DataRequest: Request { withResult: result) } - $validators.write { $0.append(validator) } + validators.write { $0.append(validator) } + + return self + } + + /// Sets a closure called whenever the `DataRequest` produces an `HTTPURLResponse` and providing a completion + /// handler to return a `ResponseDisposition` value. + /// + /// - Parameters: + /// - queue: `DispatchQueue` on which the closure will be called. `.main` by default. + /// - handler: Closure called when the instance produces an `HTTPURLResponse`. The `completionHandler` provided + /// MUST be called, otherwise the request will never complete. + /// + /// - Returns: The instance. + @_disfavoredOverload + @discardableResult + public func onHTTPResponse( + on queue: DispatchQueue = .main, + perform handler: @escaping (_ response: HTTPURLResponse, + _ completionHandler: @escaping (ResponseDisposition) -> Void) -> Void + ) -> Self { + dataMutableState.write { mutableState in + mutableState.httpResponseHandler = (queue, handler) + } + + return self + } + + /// Sets a closure called whenever the `DataRequest` produces an `HTTPURLResponse`. + /// + /// - Parameters: + /// - queue: `DispatchQueue` on which the closure will be called. `.main` by default. + /// - handler: Closure called when the instance produces an `HTTPURLResponse`. + /// + /// - Returns: The instance. + @discardableResult + public func onHTTPResponse(on queue: DispatchQueue = .main, + perform handler: @escaping (HTTPURLResponse) -> Void) -> Self { + onHTTPResponse(on: queue) { response, completionHandler in + handler(response) + completionHandler(.allow) + } return self } @@ -1259,10 +1346,13 @@ public final class DataStreamRequest: Request { var numberOfExecutingStreams = 0 /// Completion calls enqueued while streams are still executing. var enqueuedCompletionEvents: [() -> Void] = [] + /// Handler for any `HTTPURLResponse`s received. + var httpResponseHandler: (queue: DispatchQueue, + handler: (_ response: HTTPURLResponse, + _ completionHandler: @escaping (ResponseDisposition) -> Void) -> Void)? } - @Protected - var streamMutableState = StreamMutableState() + let streamMutableState = Protected(StreamMutableState()) /// Creates a `DataStreamRequest` using the provided parameters. /// @@ -1306,7 +1396,7 @@ public final class DataStreamRequest: Request { } override func finish(error: AFError? = nil) { - $streamMutableState.write { state in + streamMutableState.write { state in state.outputStream?.close() } @@ -1314,8 +1404,8 @@ public final class DataStreamRequest: Request { } func didReceive(data: Data) { - $streamMutableState.write { state in - #if !(os(Linux) || os(Windows)) + streamMutableState.write { state in + #if !canImport(FoundationNetworking) // If we not using swift-corelibs-foundation. if let stream = state.outputStream { underlyingQueue.async { var bytes = Array(data) @@ -1329,6 +1419,30 @@ public final class DataStreamRequest: Request { } } + func didReceiveResponse(_ response: HTTPURLResponse, completionHandler: @escaping (URLSession.ResponseDisposition) -> Void) { + streamMutableState.read { dataMutableState in + guard let httpResponseHandler = dataMutableState.httpResponseHandler else { + underlyingQueue.async { completionHandler(.allow) } + return + } + + httpResponseHandler.queue.async { + httpResponseHandler.handler(response) { disposition in + if disposition == .cancel { + self.mutableState.write { mutableState in + mutableState.state = .cancelled + mutableState.error = mutableState.error ?? AFError.explicitlyCancelled + } + } + + self.underlyingQueue.async { + completionHandler(disposition.sessionDisposition) + } + } + } + } + } + /// Validates the `URLRequest` and `HTTPURLResponse` received for the instance using the provided `Validation` closure. /// /// - Parameter validation: `Validation` closure used to validate the request and response. @@ -1351,12 +1465,12 @@ public final class DataStreamRequest: Request { withResult: result) } - $validators.write { $0.append(validator) } + validators.write { $0.append(validator) } return self } - #if !(os(Linux) || os(Windows)) + #if !canImport(FoundationNetworking) // If we not using swift-corelibs-foundation. /// Produces an `InputStream` that receives the `Data` received by the instance. /// /// - Note: The `InputStream` produced by this method must have `open()` called before being able to read `Data`. @@ -1370,7 +1484,7 @@ public final class DataStreamRequest: Request { defer { resume() } var inputStream: InputStream? - $streamMutableState.write { state in + streamMutableState.write { state in Foundation.Stream.getBoundStreams(withBufferSize: bufferSize, inputStream: &inputStream, outputStream: &state.outputStream) @@ -1381,6 +1495,47 @@ public final class DataStreamRequest: Request { } #endif + /// Sets a closure called whenever the `DataRequest` produces an `HTTPURLResponse` and providing a completion + /// handler to return a `ResponseDisposition` value. + /// + /// - Parameters: + /// - queue: `DispatchQueue` on which the closure will be called. `.main` by default. + /// - handler: Closure called when the instance produces an `HTTPURLResponse`. The `completionHandler` provided + /// MUST be called, otherwise the request will never complete. + /// + /// - Returns: The instance. + @_disfavoredOverload + @discardableResult + public func onHTTPResponse( + on queue: DispatchQueue = .main, + perform handler: @escaping (_ response: HTTPURLResponse, + _ completionHandler: @escaping (ResponseDisposition) -> Void) -> Void + ) -> Self { + streamMutableState.write { mutableState in + mutableState.httpResponseHandler = (queue, handler) + } + + return self + } + + /// Sets a closure called whenever the `DataRequest` produces an `HTTPURLResponse`. + /// + /// - Parameters: + /// - queue: `DispatchQueue` on which the closure will be called. `.main` by default. + /// - handler: Closure called when the instance produces an `HTTPURLResponse`. + /// + /// - Returns: The instance. + @discardableResult + public func onHTTPResponse(on queue: DispatchQueue = .main, + perform handler: @escaping (HTTPURLResponse) -> Void) -> Self { + onHTTPResponse(on: queue) { response, completionHandler in + handler(response) + completionHandler(.allow) + } + + return self + } + func capturingError(from closure: () throws -> Void) { do { try closure() @@ -1395,7 +1550,7 @@ public final class DataStreamRequest: Request { appendResponseSerializer { self.underlyingQueue.async { self.responseSerializerDidComplete { - self.$streamMutableState.write { state in + self.streamMutableState.write { state in guard state.numberOfExecutingStreams == 0 else { state.enqueuedCompletionEvents.append { self.enqueueCompletion(on: queue, stream: stream) @@ -1546,23 +1701,22 @@ public class DownloadRequest: Request { } /// Protected mutable state specific to `DownloadRequest`. - @Protected - private var mutableDownloadState = DownloadRequestMutableState() + private let mutableDownloadState = Protected(DownloadRequestMutableState()) /// If the download is resumable and is eventually cancelled or fails, this value may be used to resume the download /// using the `download(resumingWith data:)` API. /// /// - Note: For more information about `resumeData`, see [Apple's documentation](https://developer.apple.com/documentation/foundation/urlsessiondownloadtask/1411634-cancel). public var resumeData: Data? { - #if !(os(Linux) || os(Windows)) - return $mutableDownloadState.resumeData ?? error?.downloadResumeData + #if !canImport(FoundationNetworking) // If we not using swift-corelibs-foundation. + return mutableDownloadState.resumeData ?? error?.downloadResumeData #else - return $mutableDownloadState.resumeData + return mutableDownloadState.resumeData #endif } /// If the download is successful, the `URL` where the file was downloaded. - public var fileURL: URL? { $mutableDownloadState.fileURL } + public var fileURL: URL? { mutableDownloadState.fileURL } // MARK: Initial State @@ -1605,7 +1759,7 @@ public class DownloadRequest: Request { override func reset() { super.reset() - $mutableDownloadState.write { + mutableDownloadState.write { $0.resumeData = nil $0.fileURL = nil } @@ -1620,7 +1774,7 @@ public class DownloadRequest: Request { eventMonitor?.request(self, didFinishDownloadingUsing: task, with: result) switch result { - case let .success(url): $mutableDownloadState.fileURL = url + case let .success(url): mutableDownloadState.fileURL = url case let .failure(error): self.error = error } } @@ -1698,7 +1852,7 @@ public class DownloadRequest: Request { /// /// - Returns: The instance. private func cancel(optionallyProducingResumeData completionHandler: ((_ resumeData: Data?) -> Void)?) -> Self { - $mutableState.write { mutableState in + mutableState.write { mutableState in guard mutableState.state.canTransitionTo(.cancelled) else { return } mutableState.state = .cancelled @@ -1714,7 +1868,7 @@ public class DownloadRequest: Request { // Resume to ensure metrics are gathered. task.resume() task.cancel { resumeData in - self.$mutableDownloadState.resumeData = resumeData + self.mutableDownloadState.resumeData = resumeData self.underlyingQueue.async { self.didCancelTask(task) } completionHandler(resumeData) } @@ -1754,7 +1908,7 @@ public class DownloadRequest: Request { withResult: result) } - $validators.write { $0.append(validator) } + validators.write { $0.append(validator) } return self } diff --git a/Pods/Alamofire/Source/RequestTaskMap.swift b/Pods/Alamofire/Source/RequestTaskMap.swift index 85b58f3..9955875 100644 --- a/Pods/Alamofire/Source/RequestTaskMap.swift +++ b/Pods/Alamofire/Source/RequestTaskMap.swift @@ -131,7 +131,7 @@ struct RequestTaskMap { switch (events.completed, events.metricsGathered) { case (true, _): fatalError("RequestTaskMap consistency error: duplicate completionReceivedForTask call.") - #if os(Linux) // Linux doesn't gather metrics, so unconditionally remove the reference and return true. + #if os(Linux) || os(Android) // Linux doesn't gather metrics, so unconditionally remove the reference and return true. default: self[task] = nil; return true #else case (false, false): diff --git a/Pods/Alamofire/Source/ResponseSerialization.swift b/Pods/Alamofire/Source/ResponseSerialization.swift index 0e718bd..2022ac0 100644 --- a/Pods/Alamofire/Source/ResponseSerialization.swift +++ b/Pods/Alamofire/Source/ResponseSerialization.swift @@ -1153,7 +1153,7 @@ extension DataStreamRequest { } } - $streamMutableState.write { $0.streams.append(parser) } + streamMutableState.write { $0.streams.append(parser) } appendStreamCompletion(on: queue, stream: stream) return self @@ -1195,7 +1195,7 @@ extension DataStreamRequest { } } - $streamMutableState.write { $0.streams.append(parser) } + streamMutableState.write { $0.streams.append(parser) } appendStreamCompletion(on: queue, stream: stream) return self @@ -1230,14 +1230,14 @@ extension DataStreamRequest { } } - $streamMutableState.write { $0.streams.append(parser) } + streamMutableState.write { $0.streams.append(parser) } appendStreamCompletion(on: queue, stream: stream) return self } private func updateAndCompleteIfPossible() { - $streamMutableState.write { state in + streamMutableState.write { state in state.numberOfExecutingStreams -= 1 guard state.numberOfExecutingStreams == 0, !state.enqueuedCompletionEvents.isEmpty else { return } diff --git a/Pods/Alamofire/Source/ServerTrustEvaluation.swift b/Pods/Alamofire/Source/ServerTrustEvaluation.swift index 4519a3d..e490ab4 100644 --- a/Pods/Alamofire/Source/ServerTrustEvaluation.swift +++ b/Pods/Alamofire/Source/ServerTrustEvaluation.swift @@ -1,5 +1,5 @@ // -// ServerTrustPolicy.swift +// ServerTrustEvaluation.swift // // Copyright (c) 2014-2016 Alamofire Software Foundation (http://alamofire.org/) // @@ -48,7 +48,7 @@ open class ServerTrustManager { self.evaluators = evaluators } - #if !(os(Linux) || os(Windows)) + #if canImport(Security) /// Returns the `ServerTrustEvaluating` value for the given host, if one is set. /// /// By default, this method will return the policy that perfectly matches the given host. Subclasses could override @@ -75,8 +75,8 @@ open class ServerTrustManager { /// A protocol describing the API used to evaluate server trusts. public protocol ServerTrustEvaluating { - #if os(Linux) || os(Windows) - // Implement this once Linux/Windows has API for evaluating server trusts. + #if !canImport(Security) + // Implement this once other platforms have API for evaluating server trusts. #else /// Evaluates the given `SecTrust` value for the given `host`. /// @@ -91,7 +91,7 @@ public protocol ServerTrustEvaluating { // MARK: - Server Trust Evaluators -#if !(os(Linux) || os(Windows)) +#if canImport(Security) /// An evaluator which uses the default server trust evaluation while allowing you to control whether to validate the /// host provided by the challenge. Applications are encouraged to always validate the host in production environments /// to guarantee the validity of the server's certificate chain. @@ -181,6 +181,15 @@ public final class RevocationTrustEvaluator: ServerTrustEvaluating { try trust.af.performValidation(forHost: host) } + #if swift(>=5.9) + if #available(iOS 12, macOS 10.14, tvOS 12, watchOS 5, visionOS 1, *) { + try trust.af.evaluate(afterApplying: SecPolicy.af.revocation(options: options)) + } else { + try trust.af.validate(policy: SecPolicy.af.revocation(options: options)) { status, result in + AFError.serverTrustEvaluationFailed(reason: .revocationCheckFailed(output: .init(host, trust, status, result), options: options)) + } + } + #else if #available(iOS 12, macOS 10.14, tvOS 12, watchOS 5, *) { try trust.af.evaluate(afterApplying: SecPolicy.af.revocation(options: options)) } else { @@ -188,6 +197,7 @@ public final class RevocationTrustEvaluator: ServerTrustEvaluating { AFError.serverTrustEvaluationFailed(reason: .revocationCheckFailed(output: .init(host, trust, status, result), options: options)) } } + #endif } } @@ -355,10 +365,8 @@ public final class PublicKeysTrustEvaluator: ServerTrustEvaluating { let pinnedKeysInServerKeys: Bool = { for serverPublicKey in trust.af.publicKeys { - for pinnedPublicKey in keys { - if serverPublicKey == pinnedPublicKey { - return true - } + if keys.contains(serverPublicKey) { + return true } } return false @@ -449,7 +457,7 @@ public final class DisabledTrustEvaluator: ServerTrustEvaluating { // MARK: - Extensions extension Array where Element == ServerTrustEvaluating { - #if os(Linux) || os(Windows) + #if os(Linux) || os(Windows) || os(Android) // Add this same convenience method for Linux/Windows. #else /// Evaluates the given `SecTrust` value for the given `host`. @@ -598,7 +606,15 @@ extension AlamofireExtension where ExtendedType == SecTrust { /// The `SecCertificate`s contained in `self`. public var certificates: [SecCertificate] { - #if swift(>=5.5.1) // Xcode 13.1 / 2021 SDKs. + #if swift(>=5.9) + if #available(iOS 15, macOS 12, tvOS 15, watchOS 8, visionOS 1, *) { + return (SecTrustCopyCertificateChain(type) as? [SecCertificate]) ?? [] + } else { + return (0..=5.5.1) // Xcode 13.1 / 2021 SDKs. if #available(iOS 15, macOS 12, tvOS 15, watchOS 8, *) { return (SecTrustCopyCertificateChain(type) as? [SecCertificate]) ?? [] } else { @@ -623,6 +639,15 @@ extension AlamofireExtension where ExtendedType == SecTrust { /// - Parameter host: The hostname, used only in the error output if validation fails. /// - Throws: An `AFError.serverTrustEvaluationFailed` instance with a `.defaultEvaluationFailed` reason. public func performDefaultValidation(forHost host: String) throws { + #if swift(>=5.9) + if #available(iOS 12, macOS 10.14, tvOS 12, watchOS 5, visionOS 1, *) { + try evaluate(afterApplying: SecPolicy.af.default) + } else { + try validate(policy: SecPolicy.af.default) { status, result in + AFError.serverTrustEvaluationFailed(reason: .defaultEvaluationFailed(output: .init(host, type, status, result))) + } + } + #else if #available(iOS 12, macOS 10.14, tvOS 12, watchOS 5, *) { try evaluate(afterApplying: SecPolicy.af.default) } else { @@ -630,6 +655,7 @@ extension AlamofireExtension where ExtendedType == SecTrust { AFError.serverTrustEvaluationFailed(reason: .defaultEvaluationFailed(output: .init(host, type, status, result))) } } + #endif } /// Validates `self` after applying `SecPolicy.af.hostname(host)`, which performs the default validation as well as @@ -638,6 +664,15 @@ extension AlamofireExtension where ExtendedType == SecTrust { /// - Parameter host: The hostname to use in the validation. /// - Throws: An `AFError.serverTrustEvaluationFailed` instance with a `.defaultEvaluationFailed` reason. public func performValidation(forHost host: String) throws { + #if swift(>=5.9) + if #available(iOS 12, macOS 10.14, tvOS 12, watchOS 5, visionOS 1, *) { + try evaluate(afterApplying: SecPolicy.af.hostname(host)) + } else { + try validate(policy: SecPolicy.af.hostname(host)) { status, result in + AFError.serverTrustEvaluationFailed(reason: .hostValidationFailed(output: .init(host, type, status, result))) + } + } + #else if #available(iOS 12, macOS 10.14, tvOS 12, watchOS 5, *) { try evaluate(afterApplying: SecPolicy.af.hostname(host)) } else { @@ -645,6 +680,7 @@ extension AlamofireExtension where ExtendedType == SecTrust { AFError.serverTrustEvaluationFailed(reason: .hostValidationFailed(output: .init(host, type, status, result))) } } + #endif } } @@ -704,11 +740,19 @@ extension AlamofireExtension where ExtendedType == SecCertificate { guard let createdTrust = trust, trustCreationStatus == errSecSuccess else { return nil } + #if swift(>=5.9) + if #available(iOS 14, macOS 11, tvOS 14, watchOS 7, visionOS 1, *) { + return SecTrustCopyKey(createdTrust) + } else { + return SecTrustCopyPublicKey(createdTrust) + } + #else if #available(iOS 14, macOS 11, tvOS 14, watchOS 7, *) { return SecTrustCopyKey(createdTrust) } else { return SecTrustCopyPublicKey(createdTrust) } + #endif } } diff --git a/Pods/Alamofire/Source/SessionDelegate.swift b/Pods/Alamofire/Source/SessionDelegate.swift index a794d83..af45b27 100644 --- a/Pods/Alamofire/Source/SessionDelegate.swift +++ b/Pods/Alamofire/Source/SessionDelegate.swift @@ -94,7 +94,7 @@ extension SessionDelegate: URLSessionTaskDelegate { case NSURLAuthenticationMethodHTTPBasic, NSURLAuthenticationMethodHTTPDigest, NSURLAuthenticationMethodNTLM, NSURLAuthenticationMethodNegotiate: evaluation = attemptCredentialAuthentication(for: challenge, belongingTo: task) - #if !(os(Linux) || os(Windows)) + #if canImport(Security) case NSURLAuthenticationMethodServerTrust: evaluation = attemptServerTrustAuthentication(with: challenge) case NSURLAuthenticationMethodClientCertificate: @@ -111,7 +111,7 @@ extension SessionDelegate: URLSessionTaskDelegate { completionHandler(evaluation.disposition, evaluation.credential) } - #if !(os(Linux) || os(Windows)) + #if canImport(Security) /// Evaluates the server trust `URLAuthenticationChallenge` received. /// /// - Parameter challenge: The `URLAuthenticationChallenge`. @@ -230,6 +230,25 @@ extension SessionDelegate: URLSessionTaskDelegate { // MARK: URLSessionDataDelegate extension SessionDelegate: URLSessionDataDelegate { + open func urlSession(_ session: URLSession, + dataTask: URLSessionDataTask, + didReceive response: URLResponse, + completionHandler: @escaping (URLSession.ResponseDisposition) -> Void) { + eventMonitor?.urlSession(session, dataTask: dataTask, didReceive: response) + + guard let response = response as? HTTPURLResponse else { completionHandler(.allow); return } + + if let request = request(for: dataTask, as: DataRequest.self) { + request.didReceiveResponse(response, completionHandler: completionHandler) + } else if let request = request(for: dataTask, as: DataStreamRequest.self) { + request.didReceiveResponse(response, completionHandler: completionHandler) + } else { + assertionFailure("dataTask did not find DataRequest or DataStreamRequest in didReceive response") + completionHandler(.allow) + return + } + } + open func urlSession(_ session: URLSession, dataTask: URLSessionDataTask, didReceive data: Data) { eventMonitor?.urlSession(session, dataTask: dataTask, didReceive: data) @@ -238,7 +257,7 @@ extension SessionDelegate: URLSessionDataDelegate { } else if let request = request(for: dataTask, as: DataStreamRequest.self) { request.didReceive(data: data) } else { - assertionFailure("dataTask did not find DataRequest or DataStreamRequest in didReceive") + assertionFailure("dataTask did not find DataRequest or DataStreamRequest in didReceive data") return } } diff --git a/Pods/Alamofire/Source/URLEncodedFormEncoder.swift b/Pods/Alamofire/Source/URLEncodedFormEncoder.swift index dcb5991..cfbd7e4 100644 --- a/Pods/Alamofire/Source/URLEncodedFormEncoder.swift +++ b/Pods/Alamofire/Source/URLEncodedFormEncoder.swift @@ -695,6 +695,74 @@ extension _URLEncodedFormEncoder.KeyedContainer: KeyedEncodingContainerProtocol try encode(nilValue, forKey: key) } + func encodeIfPresent(_ value: Bool?, forKey key: Key) throws { + try _encodeIfPresent(value, forKey: key) + } + + func encodeIfPresent(_ value: String?, forKey key: Key) throws { + try _encodeIfPresent(value, forKey: key) + } + + func encodeIfPresent(_ value: Double?, forKey key: Key) throws { + try _encodeIfPresent(value, forKey: key) + } + + func encodeIfPresent(_ value: Float?, forKey key: Key) throws { + try _encodeIfPresent(value, forKey: key) + } + + func encodeIfPresent(_ value: Int?, forKey key: Key) throws { + try _encodeIfPresent(value, forKey: key) + } + + func encodeIfPresent(_ value: Int8?, forKey key: Key) throws { + try _encodeIfPresent(value, forKey: key) + } + + func encodeIfPresent(_ value: Int16?, forKey key: Key) throws { + try _encodeIfPresent(value, forKey: key) + } + + func encodeIfPresent(_ value: Int32?, forKey key: Key) throws { + try _encodeIfPresent(value, forKey: key) + } + + func encodeIfPresent(_ value: Int64?, forKey key: Key) throws { + try _encodeIfPresent(value, forKey: key) + } + + func encodeIfPresent(_ value: UInt?, forKey key: Key) throws { + try _encodeIfPresent(value, forKey: key) + } + + func encodeIfPresent(_ value: UInt8?, forKey key: Key) throws { + try _encodeIfPresent(value, forKey: key) + } + + func encodeIfPresent(_ value: UInt16?, forKey key: Key) throws { + try _encodeIfPresent(value, forKey: key) + } + + func encodeIfPresent(_ value: UInt32?, forKey key: Key) throws { + try _encodeIfPresent(value, forKey: key) + } + + func encodeIfPresent(_ value: UInt64?, forKey key: Key) throws { + try _encodeIfPresent(value, forKey: key) + } + + func encodeIfPresent(_ value: Value?, forKey key: Key) throws where Value: Encodable { + try _encodeIfPresent(value, forKey: key) + } + + func _encodeIfPresent(_ value: Value?, forKey key: Key) throws where Value: Encodable { + if let value = value { + try encode(value, forKey: key) + } else { + try encodeNil(forKey: key) + } + } + func encode(_ value: T, forKey key: Key) throws where T: Encodable { var container = nestedSingleValueEncoder(for: key) try container.encode(value) diff --git a/Pods/Manifest.lock b/Pods/Manifest.lock index ce84de4..8868ae5 100644 --- a/Pods/Manifest.lock +++ b/Pods/Manifest.lock @@ -1,5 +1,6 @@ PODS: - - Alamofire (5.7.1) + - Alamofire (5.8.1) + - DeviceKit (4.9.0) - HandyJSON (5.0.2) - Kingfisher (7.10.2) - MBProgressHUD (1.2.0) @@ -7,6 +8,8 @@ PODS: - Moya/Core (= 15.0.0) - Moya/Core (15.0.0): - Alamofire (~> 5.0) + - "NSObject+Rx (5.2.2)": + - RxSwift (~> 6.2) - Reusable (4.1.2): - Reusable/Storyboard (= 4.1.2) - Reusable/View (= 4.1.2) @@ -21,10 +24,12 @@ PODS: - SnapKit (5.6.0) DEPENDENCIES: + - DeviceKit (~> 4.0) - HandyJSON - Kingfisher - MBProgressHUD - Moya + - "NSObject+Rx" - Reusable - RxCocoa - RxSwift @@ -33,10 +38,12 @@ DEPENDENCIES: SPEC REPOS: https://mirrors.tuna.tsinghua.edu.cn/git/CocoaPods/Specs.git: - Alamofire + - DeviceKit - HandyJSON - Kingfisher - MBProgressHUD - Moya + - "NSObject+Rx" - Reusable - RxCocoa - RxRelay @@ -44,17 +51,19 @@ SPEC REPOS: - SnapKit SPEC CHECKSUMS: - Alamofire: 0123a34370cb170936ae79a8df46cc62b2edeb88 + Alamofire: 3ca42e259043ee0dc5c0cdd76c4bc568b8e42af7 + DeviceKit: 847709bf70b78fd9ab765bd571fb9f5f815c3fc1 HandyJSON: 9e4e236f5d2dbefad5155a77417bbea438201c03 Kingfisher: 99edc495d3b7607e6425f0d6f6847b2abd6d716d MBProgressHUD: 3ee5efcc380f6a79a7cc9b363dd669c5e1ae7406 Moya: 138f0573e53411fb3dc17016add0b748dfbd78ee + "NSObject+Rx": 61cf1f7306a73dcef8b36649198af0813ec18dfd Reusable: 6bae6a5e8aa793c9c441db0213c863a64bce9136 RxCocoa: 94f817b71c07517321eb4f9ad299112ca8af743b RxRelay: 1de1523e604c72b6c68feadedd1af3b1b4d0ecbd RxSwift: 5710a9e6b17f3c3d6e40d6e559b9fa1e813b2ef8 SnapKit: e01d52ebb8ddbc333eefe2132acf85c8227d9c25 -PODFILE CHECKSUM: e291658151a1fcada5c9dd297587942ae9475225 +PODFILE CHECKSUM: c70d2998947e71f4b799d573fbe428797987a5b9 COCOAPODS: 1.12.1 diff --git a/Pods/Pods.xcodeproj/project.pbxproj b/Pods/Pods.xcodeproj/project.pbxproj index b737ea2..fb6cd8e 100644 --- a/Pods/Pods.xcodeproj/project.pbxproj +++ b/Pods/Pods.xcodeproj/project.pbxproj @@ -7,1227 +7,1268 @@ objects = { /* Begin PBXBuildFile section */ - 0024FB3EA4398F0CCE435DF4134077AB /* RxRelay-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = BA8EAB6201729627D3C7299F26D4EE54 /* RxRelay-dummy.m */; }; - 0097064E7F7D3F413161738CC5C25EEC /* MBProgressHUD.m in Sources */ = {isa = PBXBuildFile; fileRef = 56969AC68B2EED540B9FBF1E0D237B8D /* MBProgressHUD.m */; }; - 00A2749F46C967ED4725A32357E3FB1B /* ConstraintLayoutSupport.swift in Sources */ = {isa = PBXBuildFile; fileRef = E60F8ED3C26A4DFE0400C21FB2BE072B /* ConstraintLayoutSupport.swift */; }; - 02560F1312F13EF15E0EB5FA952C9A48 /* PointerType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6AB41D31B155EAB764A9C053A0DE59CD /* PointerType.swift */; }; - 034A1879FF63C73CC22689EC8CBECBBC /* RetryStrategy.swift in Sources */ = {isa = PBXBuildFile; fileRef = 553E529F93F751DF0489E958694F11D8 /* RetryStrategy.swift */; }; - 044973538553B114516678D144E318CA /* Serializer.swift in Sources */ = {isa = PBXBuildFile; fileRef = A0989B49F85763612695C610DDE3995F /* Serializer.swift */; }; - 04637C70546B34F93C3A1D79C3F78B37 /* ConstraintDirectionalInsetTarget.swift in Sources */ = {isa = PBXBuildFile; fileRef = CBB2733EB8602C8BA1DE249204349BBB /* ConstraintDirectionalInsetTarget.swift */; }; - 04A8430BFC619C34E5F4D3878D094380 /* CachedResponseHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 54C7D8C91C6BD127E758FD153F5CAE2A /* CachedResponseHandler.swift */; }; - 057D0EC1E728D714A73210ACAF1FAC6A /* UISearchBar+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0F1253A739AF193B8223BE13ABA2A2BE /* UISearchBar+Rx.swift */; }; - 0591132B5EA1BE4DDA268D8A9C3D0421 /* LayoutConstraint.swift in Sources */ = {isa = PBXBuildFile; fileRef = A6785DD60F3F01E17A54F423E8397E23 /* LayoutConstraint.swift */; }; - 0618E661B571A4FCC8B886F792E756CE /* MoyaProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EA8E69F4FC1AD4BC47B9FAA09D391D1 /* MoyaProvider.swift */; }; - 06E43B4751069B47B3BD4AFD936A57E3 /* ConstraintPriority.swift in Sources */ = {isa = PBXBuildFile; fileRef = 834ED77A734859A8A9236980263E4AF4 /* ConstraintPriority.swift */; }; - 07550E0A8451CACE9593873C543F1B78 /* RxTabBarControllerDelegateProxy.swift in Sources */ = {isa = PBXBuildFile; fileRef = 881FD56231A6918A0EAD0806FB1D9A18 /* RxTabBarControllerDelegateProxy.swift */; }; - 079F0820555C5B86C9FBD5EC6344137F /* Protected.swift in Sources */ = {isa = PBXBuildFile; fileRef = 518597BD67B90E044EDCA15142FA2D54 /* Protected.swift */; }; - 07C677042BB048A9440E13D5EEB8DC0E /* AnimatedImageView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB2C7BCF3EA896AC2BAD9CAD275BB460 /* AnimatedImageView.swift */; }; + 000655664225AD48DC62F98075CCAB58 /* GroupedObservable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 068F26D8E6DB6ECB7BA6646333D6EDB8 /* GroupedObservable.swift */; }; + 0097064E7F7D3F413161738CC5C25EEC /* MBProgressHUD.m in Sources */ = {isa = PBXBuildFile; fileRef = 1F2C897C4143997BE62B53F6B4535DA9 /* MBProgressHUD.m */; }; + 00A2749F46C967ED4725A32357E3FB1B /* ConstraintLayoutSupport.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1893EA38121A4B02DF5CD011EB861FA2 /* ConstraintLayoutSupport.swift */; }; + 015492E68D4309406247D3266BFE9B80 /* AsMaybe.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8EB2629FA6E66B8FF126D13CB6CC5E13 /* AsMaybe.swift */; }; + 02560F1312F13EF15E0EB5FA952C9A48 /* PointerType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3B892E6E18D0B642C25931CAF766DB42 /* PointerType.swift */; }; + 02DACDAB3EC93D12823E002677B08727 /* ObserveOn.swift in Sources */ = {isa = PBXBuildFile; fileRef = 94FB97545AED325C27CE747A88828D80 /* ObserveOn.swift */; }; + 034A1879FF63C73CC22689EC8CBECBBC /* RetryStrategy.swift in Sources */ = {isa = PBXBuildFile; fileRef = DC5ACFA51037D91CC52CC7F6938DBFF2 /* RetryStrategy.swift */; }; + 044973538553B114516678D144E318CA /* Serializer.swift in Sources */ = {isa = PBXBuildFile; fileRef = B2CB77DFD163EB36AFAAB8207182D711 /* Serializer.swift */; }; + 04637C70546B34F93C3A1D79C3F78B37 /* ConstraintDirectionalInsetTarget.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4A7EB3BD395A8A96548F70E8CBFB7DDE /* ConstraintDirectionalInsetTarget.swift */; }; + 04A8430BFC619C34E5F4D3878D094380 /* CachedResponseHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8A4DEABC70F31A0D700E8537EED75EBE /* CachedResponseHandler.swift */; }; + 054C14ADE3D15C3B3C7F51D520CCBA9F /* AnyObserver.swift in Sources */ = {isa = PBXBuildFile; fileRef = F1D65E19993C7C2988D59E23E28B379B /* AnyObserver.swift */; }; + 057D0EC1E728D714A73210ACAF1FAC6A /* UISearchBar+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = A5E1C3E44A653237ABB964FE3F7940A5 /* UISearchBar+Rx.swift */; }; + 0591132B5EA1BE4DDA268D8A9C3D0421 /* LayoutConstraint.swift in Sources */ = {isa = PBXBuildFile; fileRef = D74E043A1ED1197420865CCA40E92FD8 /* LayoutConstraint.swift */; }; + 0618E661B571A4FCC8B886F792E756CE /* MoyaProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = B01C629014F7FA5102E051C5F40955BB /* MoyaProvider.swift */; }; + 06E43B4751069B47B3BD4AFD936A57E3 /* ConstraintPriority.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5560F94CC6C6C8F313BF9612C06F6B89 /* ConstraintPriority.swift */; }; + 073A2A51ECD5DB9E8F4C35A483EC227A /* Platform.Darwin.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7E1A57DC890CD26CC9D90D8F3EBA9A03 /* Platform.Darwin.swift */; }; + 07550E0A8451CACE9593873C543F1B78 /* RxTabBarControllerDelegateProxy.swift in Sources */ = {isa = PBXBuildFile; fileRef = AB82E4F472A144DE4566058691C877BE /* RxTabBarControllerDelegateProxy.swift */; }; + 079F0820555C5B86C9FBD5EC6344137F /* Protected.swift in Sources */ = {isa = PBXBuildFile; fileRef = 59996E127C2E58DBD70CA09D746BD419 /* Protected.swift */; }; + 07C677042BB048A9440E13D5EEB8DC0E /* AnimatedImageView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7AF21B896BC4832F54A8C972D0B534AD /* AnimatedImageView.swift */; }; 0833E66E7F19849322305D67777B77DB /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6A1970A14C2672638850C555C17ADE89 /* Foundation.framework */; }; - 08923846D88DF3ED6D918079C91116C6 /* ImageFormat.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7965E10A5058A7FDC743C628B6A209E4 /* ImageFormat.swift */; }; - 0907413AF1BF312948C6CA8289CE29AE /* ControlProperty.swift in Sources */ = {isa = PBXBuildFile; fileRef = 588185259F665B2270B61BC5EEEDB105 /* ControlProperty.swift */; }; - 094F725274CC4EC8EB2F0D2551C26019 /* ObserveOn.swift in Sources */ = {isa = PBXBuildFile; fileRef = BC12D927E7A7FFE4391A073866062EF0 /* ObserveOn.swift */; }; - 0A1E7F06A1E1CA1DE2B389E6AE0A66A0 /* Indicator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 31BB5D3806E36F2811C5F7E9C7E0A00B /* Indicator.swift */; }; - 0A50200D02E79569C5EAFEDE5448DEA8 /* PublishRelay.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52F042037CA28D5A455E060DD097C638 /* PublishRelay.swift */; }; - 0A7B97BD9262E628FCF5684C817D3D73 /* ObserverType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2DAB2159DEB43FA519F6B8254AF5728E /* ObserverType.swift */; }; + 08923846D88DF3ED6D918079C91116C6 /* ImageFormat.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7D1D67589B0014AD72F1E62127786F32 /* ImageFormat.swift */; }; + 0907413AF1BF312948C6CA8289CE29AE /* ControlProperty.swift in Sources */ = {isa = PBXBuildFile; fileRef = 837D000C38991D87E5AAD478A7247464 /* ControlProperty.swift */; }; + 09301ECCA99201DBAFFB454E61BF3CCA /* RecursiveLock.swift in Sources */ = {isa = PBXBuildFile; fileRef = 350EE72F9FF046E0FA79C61626804AF6 /* RecursiveLock.swift */; }; + 0A1E7F06A1E1CA1DE2B389E6AE0A66A0 /* Indicator.swift in Sources */ = {isa = PBXBuildFile; fileRef = E6C5412523E874E9C261AB2262436FF9 /* Indicator.swift */; }; 0AA33EBB857A5205F87C09CCB99EAC74 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6A1970A14C2672638850C555C17ADE89 /* Foundation.framework */; }; - 0B5BB08F1937AD6324F0ADDD8F9E067B /* Driver.swift in Sources */ = {isa = PBXBuildFile; fileRef = E02AEC6F043CC7E4CACFA5D1EFD6EB27 /* Driver.swift */; }; - 0B994CDC79B1AD3A7BE62490D27C60C8 /* ConstraintAttributes.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8B3F60740202D2919EAB02088A75C6DE /* ConstraintAttributes.swift */; }; - 0C080D5202A572C8434CA8635D35B29C /* ValidationType.swift in Sources */ = {isa = PBXBuildFile; fileRef = C807A9D8CD9D55D1BD98345635AE1623 /* ValidationType.swift */; }; - 0CB878167AA17431D1069C94A3EFF8F4 /* Infallible+Zip+arity.swift in Sources */ = {isa = PBXBuildFile; fileRef = 960152331447046185D9888B4AED166C /* Infallible+Zip+arity.swift */; }; - 0DA0657F0B4D4AF03048C3F0591C5F07 /* Pods-yinmeng-ios-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 1BBD7BC93FC22FBD9C79EAB4AC435A7E /* Pods-yinmeng-ios-dummy.m */; }; - 0E1A429FC9CD37AF039A2A19A0D018D9 /* Switch.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0487859709F230146392D21D1B192DC0 /* Switch.swift */; }; - 0EA96364E99A403FB19009B589203048 /* NetworkLoggerPlugin.swift in Sources */ = {isa = PBXBuildFile; fileRef = BDC9E1192B2CBB200B902E65C687D558 /* NetworkLoggerPlugin.swift */; }; - 0F4D0B7B522466B970AA826F57343EFF /* DataTransform.swift in Sources */ = {isa = PBXBuildFile; fileRef = F0A41DDDA8CABBF8754FE1EE9942B51A /* DataTransform.swift */; }; - 0FB2B84C4514FAE2D6B7B9E937784F55 /* KFImageProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9DBF24BFBDEDD9C43BB60E43954D93C9 /* KFImageProtocol.swift */; }; - 10FF6AC524FAED0730F4BB577CF243B9 /* NopDisposable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5BBD217833E818303FFD2DD7E1DD6817 /* NopDisposable.swift */; }; - 111810B8652D290C58076B92FCE40A1F /* RxPickerViewAdapter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2E6CA143EB6F64C9E9AD81EF8A9D3820 /* RxPickerViewAdapter.swift */; }; - 114F6342633413C8BBEC4169F34CFAFD /* RxTextViewDelegateProxy.swift in Sources */ = {isa = PBXBuildFile; fileRef = 29D71D26A754963F763183793E0737A6 /* RxTextViewDelegateProxy.swift */; }; - 11CCD832BD537718892C6A216A38490A /* URLRequest+Alamofire.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4E611CCA47B1AFF3C1E57F8C2965B0C /* URLRequest+Alamofire.swift */; }; - 123E6BAD784E74477DC5B5CFF0272759 /* AnyExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = C599239C5C9502586FE95F6C59479D15 /* AnyExtensions.swift */; }; - 12490402D5B61C9A226CBBDA0CC9AA23 /* CurrentThreadScheduler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 18C45484AE9F211603671E126686D88F /* CurrentThreadScheduler.swift */; }; - 13F86B00E27F85F2A19E7FC2D60032D3 /* SkipUntil.swift in Sources */ = {isa = PBXBuildFile; fileRef = D6575A7C92CAA45BC7CAAB15672122A1 /* SkipUntil.swift */; }; - 14CAA40442778EFE3DF8B07CE170CAF7 /* UITextView+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = 089F4ED85F7C9FD8E053CA99D41D3132 /* UITextView+Rx.swift */; }; - 160F66863942DB8C996DB1D79984C7AD /* ImmediateSchedulerType.swift in Sources */ = {isa = PBXBuildFile; fileRef = B00EB68258A05718515A533A9F917D11 /* ImmediateSchedulerType.swift */; }; - 16F9DEE85ECC94DE79B387073AC78AC7 /* DisposeBase.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1CCA1BCCD3C2E9007F3F56C9E8AC6398 /* DisposeBase.swift */; }; - 1787EBB3723875770997006509209EDD /* RxTableViewDataSourceProxy.swift in Sources */ = {isa = PBXBuildFile; fileRef = 67C143D7E7508931CFD2E2398C7BA9F0 /* RxTableViewDataSourceProxy.swift */; }; - 17A8E8E15AA453D69DEF72EA593C00CA /* CompositeDisposable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7867FF4FE4FF1D6345613A45E339635D /* CompositeDisposable.swift */; }; - 180BE95F60406A62CD794746BFE108B8 /* KFAnimatedImage.swift in Sources */ = {isa = PBXBuildFile; fileRef = A3340A012067886751EC877DE2A085FB /* KFAnimatedImage.swift */; }; - 18211EE7B495AA06EBBED1D6FD9423C0 /* RxCocoa-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A3398D47F647EC9C9854F30FAA9A225 /* RxCocoa-dummy.m */; }; - 183D8B3E057B885EA7DF9A8CDCCE9029 /* ConstraintMakerRelatable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32639E8193F95CA5F554F746CA3F05AD /* ConstraintMakerRelatable.swift */; }; - 186E59D8CB5FC42AA40B9F8B1C0C27A5 /* Infallible.swift in Sources */ = {isa = PBXBuildFile; fileRef = A6A3220A212C0BC4ABE0058268E8FAA6 /* Infallible.swift */; }; - 196351F59003315C03DD17E9536AAD36 /* CompactMap.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81B176F830BCA2FC63200329DE776384 /* CompactMap.swift */; }; - 197457852FC83E905248660B0F930452 /* AuthenticationInterceptor.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB9D0DFFB1AA39DDF8B49325F07BEBD1 /* AuthenticationInterceptor.swift */; }; - 19BB09AF94BD545E40C2766045BDDD77 /* ExtendCustomBasicType.swift in Sources */ = {isa = PBXBuildFile; fileRef = C3D7C8B8CB5663108F150E48EB940FDF /* ExtendCustomBasicType.swift */; }; - 1A3A6D1CD56F36D4F2C74B4EA79967E7 /* Filter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C17122D9169B76E0AB08E43B215523C /* Filter.swift */; }; - 1AFD57838680DF58184FF94D14C7F3FF /* RequestInterceptor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 87AAF208F89B5776787B00ED7C4139D0 /* RequestInterceptor.swift */; }; - 1B14ABB3EBE1CF1E69D4E393ADE3E9E4 /* OtherExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = EDB3853E94E387C7E2F1D43C468ED500 /* OtherExtension.swift */; }; - 1B9E805DAD08E186C49A07E76CE551F2 /* ReplaySubject.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9895F4D070396F9D33D6C602E53C0D77 /* ReplaySubject.swift */; }; - 1CBDD9F1C5BE4FAE59177A9E4E26ED68 /* Skip.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9D4D5FD14129673A9CDB7002DBABE33E /* Skip.swift */; }; - 1CC3FBF38E35B664C2A003664C58E2D7 /* ControlEvent.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9541ABA1A2C54DE7EED55370247C46AA /* ControlEvent.swift */; }; - 1CFA21C851234CFA8841CF06A19CA1B3 /* NibOwnerLoadable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0A4ABF00795A4D24AA39AE0648DAAFF8 /* NibOwnerLoadable.swift */; }; - 1F285EAFE181E45D258B44A554FF8837 /* Kingfisher-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = B4FAC3BE27572FE3185D20211224395A /* Kingfisher-dummy.m */; }; - 1F64C124283555FF5E1944FA37501247 /* Signal+Subscription.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95D551A418E6BD3AAE54051EE0A0129C /* Signal+Subscription.swift */; }; - 1F6F0B8C1A8EA633EFEBE64EB781A6B5 /* UINavigationController+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A5F64B79665DAAF7330A9B901B15EFF /* UINavigationController+Rx.swift */; }; - 2087DD8278E2FC32F75C947E058EA423 /* NSObject+Rx+KVORepresentable.swift in Sources */ = {isa = PBXBuildFile; fileRef = D05C01883F0A989F4169EA75A319E4CE /* NSObject+Rx+KVORepresentable.swift */; }; - 20C99AA440645B161DCD0E6698F4A351 /* GroupedObservable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8770E250C6062015540FA168FD612B2B /* GroupedObservable.swift */; }; - 220D6AC9B1B1EC8EFFB204F9C1EAC842 /* ConstraintMakerEditable.swift in Sources */ = {isa = PBXBuildFile; fileRef = AA4C20251B8F62BF6DC2548854609658 /* ConstraintMakerEditable.swift */; }; - 2279FE56C854E4A8D1623EFF123490BA /* GIFAnimatedImage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9D73294AC7AF8EC9156DBA588DC9CE3D /* GIFAnimatedImage.swift */; }; - 23A3CED3EE6A0A4815A92D9E0B960328 /* ImageDownloaderDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = A296A412119288A86A5336E1C181E566 /* ImageDownloaderDelegate.swift */; }; - 23CB3C6D36D477A8DDBDA86ED0C29396 /* Timer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7C161168F47BE22BA1D8157F0A37F4C2 /* Timer.swift */; }; - 241FB0C1BD55CC6F05C7FD78590EE5A1 /* MultiTarget.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1D524DB6FB9E645710C7B04B107FB333 /* MultiTarget.swift */; }; - 24658CFD39BCB4586D56C427F8EA751D /* BuiltInBasicType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 16B897EE9E0FB539D6DCE44EC4FE5968 /* BuiltInBasicType.swift */; }; - 24C8FC3B11676AD57F3A7914E6621AD0 /* TextInput.swift in Sources */ = {isa = PBXBuildFile; fileRef = F306E6A5D3D559D9E47C8FF351159D2B /* TextInput.swift */; }; - 24F54746A72C89AED62D33CF008D0BE1 /* Zip.swift in Sources */ = {isa = PBXBuildFile; fileRef = 947FCB4637962EF20818268291E26E85 /* Zip.swift */; }; - 252B64A12E2810921E86B78ECD5BDA9D /* UIApplication+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = A4A885E79A8DF08471834BA9D0D31ED3 /* UIApplication+Rx.swift */; }; - 256558233B40ACA6818F143BBC5B8017 /* ConstraintViewDSL.swift in Sources */ = {isa = PBXBuildFile; fileRef = D5773666DA885BF217F31523BE08FD6B /* ConstraintViewDSL.swift */; }; - 258A528FB1FD89D83512AA538B069E71 /* ImageDrawing.swift in Sources */ = {isa = PBXBuildFile; fileRef = 91B4895A5E4828D58DFE315830059A72 /* ImageDrawing.swift */; }; - 263A6B3B9C8592FC16697D2AB6333AC9 /* RxCocoa.swift in Sources */ = {isa = PBXBuildFile; fileRef = 326857EAC596FAC2DD9D5071A5B96D15 /* RxCocoa.swift */; }; - 2662EA3D1400EC4BD90947902CD85670 /* Platform.Darwin.swift in Sources */ = {isa = PBXBuildFile; fileRef = A69562BE3DD6D05DD80BAD1460F44C4C /* Platform.Darwin.swift */; }; - 26D320CBBB9394E2CD2AA967CF579315 /* TVMonogramView+Kingfisher.swift in Sources */ = {isa = PBXBuildFile; fileRef = 17D5BC96435F4DD211BCF227E506B92E /* TVMonogramView+Kingfisher.swift */; }; - 2742BB22F7F098635E8D99F6A6FF844A /* DefaultIfEmpty.swift in Sources */ = {isa = PBXBuildFile; fileRef = C426FFC0480ABDFDDC457EE5FE191E5E /* DefaultIfEmpty.swift */; }; - 275C15979C1EC7DB6234974758037906 /* PublishRelay+Signal.swift in Sources */ = {isa = PBXBuildFile; fileRef = A124A76CB3B2F5D7198358B2E123B564 /* PublishRelay+Signal.swift */; }; - 27F2BE5D6E990841E8DA1DF91CF3623B /* Signal.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF2909F5D4495CA4ADC352EEF99AA4EC /* Signal.swift */; }; - 282FCD4EA8B05830E9108690B8CD336B /* Session.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5254AF871AE5D79369426F1E9DFD4BFB /* Session.swift */; }; - 2878735FE61E1EEB4C493A8B8ED3DCAC /* EnumType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 60A3141E90976A3DD62256D0A73B9572 /* EnumType.swift */; }; - 28A857C092C01D8BE7257A552DDDCD7F /* Bag.swift in Sources */ = {isa = PBXBuildFile; fileRef = FEDFCFC90E99F4AD01D5647DF4CB5FB4 /* Bag.swift */; }; - 28B20C35F4E1B3DDE716C831B049ADBC /* _RX.h in Headers */ = {isa = PBXBuildFile; fileRef = 71A22E298D1E26A25192B7D79CB9C7BE /* _RX.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 28F7BF27F82AD7A83B634F70E879ECFA /* RxSwift-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = A612F6D773EF0336F7EEA1B142F733F1 /* RxSwift-dummy.m */; }; + 0B5BB08F1937AD6324F0ADDD8F9E067B /* Driver.swift in Sources */ = {isa = PBXBuildFile; fileRef = D12566209108F6AAB337B62C9A2D0B17 /* Driver.swift */; }; + 0B994CDC79B1AD3A7BE62490D27C60C8 /* ConstraintAttributes.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9950CF3634C1F0413A7BCE982F5B51C3 /* ConstraintAttributes.swift */; }; + 0C080D5202A572C8434CA8635D35B29C /* ValidationType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2161633FBED9887F60DF703652A74B00 /* ValidationType.swift */; }; + 0E680B509EE0CEC74859E1EC706D58F3 /* Sequence.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2A83A2BCE506773C11E35D1ED3FFFDA6 /* Sequence.swift */; }; + 0EA96364E99A403FB19009B589203048 /* NetworkLoggerPlugin.swift in Sources */ = {isa = PBXBuildFile; fileRef = F33E90A51F2D6C8E352A6891D3A3919B /* NetworkLoggerPlugin.swift */; }; + 0EACA1E672529677D63011DA749A35BA /* AddRef.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4BD0F9668F43AD97E6D6BF91D2013874 /* AddRef.swift */; }; + 0F4D0B7B522466B970AA826F57343EFF /* DataTransform.swift in Sources */ = {isa = PBXBuildFile; fileRef = C6FFF237D80AA47205BFEF310DE226B0 /* DataTransform.swift */; }; + 0FA61CCFC9E2DD88F82514B41798D36D /* LockOwnerType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 34EDEA2265558C468F2231C83850DEB7 /* LockOwnerType.swift */; }; + 0FB2B84C4514FAE2D6B7B9E937784F55 /* KFImageProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = CC548D1159236D578360D83A866AB7F8 /* KFImageProtocol.swift */; }; + 111810B8652D290C58076B92FCE40A1F /* RxPickerViewAdapter.swift in Sources */ = {isa = PBXBuildFile; fileRef = D2D84B31C49B39414DBBE8DE045E843D /* RxPickerViewAdapter.swift */; }; + 114F6342633413C8BBEC4169F34CFAFD /* RxTextViewDelegateProxy.swift in Sources */ = {isa = PBXBuildFile; fileRef = F7A49D27F9237B76381C7A2B119910AE /* RxTextViewDelegateProxy.swift */; }; + 11CCD832BD537718892C6A216A38490A /* URLRequest+Alamofire.swift in Sources */ = {isa = PBXBuildFile; fileRef = CAF91C57750D831CDD907982A98F83C6 /* URLRequest+Alamofire.swift */; }; + 11DD0DC84B243688663D2F6EDA182857 /* Binder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 22646F56965E6A2F3ED913569EB1551B /* Binder.swift */; }; + 123E6BAD784E74477DC5B5CFF0272759 /* AnyExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = C49A85743EFF6429C1ABCECA6BE66EAB /* AnyExtensions.swift */; }; + 12BA6CD96BB59ABAE47E1EE7A3624F42 /* SingleAsync.swift in Sources */ = {isa = PBXBuildFile; fileRef = DC5F4C64EC4980537B042AC46C13A0CA /* SingleAsync.swift */; }; + 14CAA40442778EFE3DF8B07CE170CAF7 /* UITextView+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04E35B0D16A80E7522873FFE2BE9BBF3 /* UITextView+Rx.swift */; }; + 156C8D395F1C21F019723FE061193771 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6A1970A14C2672638850C555C17ADE89 /* Foundation.framework */; }; + 1615B2DC97CA6544B0E7ED0AE2A728EE /* AnonymousDisposable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1B564EDE807D5C02DF36179FD4238A80 /* AnonymousDisposable.swift */; }; + 16AB40FBAEB09168884904A039C11483 /* Timeout.swift in Sources */ = {isa = PBXBuildFile; fileRef = F78C1E37154D5F6CF70286AE878E31CA /* Timeout.swift */; }; + 16FD798823F8146105E11C43941D3942 /* Bag+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9BA9940CE715B04D7270803925659D6C /* Bag+Rx.swift */; }; + 176281AFF9F858AE63E3AEDA118CF51B /* DistinctUntilChanged.swift in Sources */ = {isa = PBXBuildFile; fileRef = 73A7B013597C0B94813C0F439ADC5DF6 /* DistinctUntilChanged.swift */; }; + 1787EBB3723875770997006509209EDD /* RxTableViewDataSourceProxy.swift in Sources */ = {isa = PBXBuildFile; fileRef = FA75F4F8E194009F8B667AD557222845 /* RxTableViewDataSourceProxy.swift */; }; + 180BE95F60406A62CD794746BFE108B8 /* KFAnimatedImage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9766FEB80005F68D2896C349B273959A /* KFAnimatedImage.swift */; }; + 18211EE7B495AA06EBBED1D6FD9423C0 /* RxCocoa-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = AEAEA19B2035FF2AEA8C702327CA5B8B /* RxCocoa-dummy.m */; }; + 183D8B3E057B885EA7DF9A8CDCCE9029 /* ConstraintMakerRelatable.swift in Sources */ = {isa = PBXBuildFile; fileRef = D96CC2D966F98D09F28A5265DB12C96F /* ConstraintMakerRelatable.swift */; }; + 197457852FC83E905248660B0F930452 /* AuthenticationInterceptor.swift in Sources */ = {isa = PBXBuildFile; fileRef = B0F0ACB33CAE3E77698A74CDCCF8550B /* AuthenticationInterceptor.swift */; }; + 19BB09AF94BD545E40C2766045BDDD77 /* ExtendCustomBasicType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 681A19C67E1B19C527AE3C5E1D817E06 /* ExtendCustomBasicType.swift */; }; + 19C870EBB9A104E36995F8FDCBB4463B /* Filter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2F90B8FD0550654BC8D540D028C777CD /* Filter.swift */; }; + 1AE1D847FBF8B943B8244A0A4361F13C /* Reduce.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8164ED6B78A39F45495F7E4CCCB38211 /* Reduce.swift */; }; + 1AFD57838680DF58184FF94D14C7F3FF /* RequestInterceptor.swift in Sources */ = {isa = PBXBuildFile; fileRef = F38946B4AF556B4C5DFAFD2DB7F00F05 /* RequestInterceptor.swift */; }; + 1B14ABB3EBE1CF1E69D4E393ADE3E9E4 /* OtherExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 73BF117C5FBFC1113209C69DDA0449BF /* OtherExtension.swift */; }; + 1CC3FBF38E35B664C2A003664C58E2D7 /* ControlEvent.swift in Sources */ = {isa = PBXBuildFile; fileRef = 70C09E238B33E45F334962CE40F8580D /* ControlEvent.swift */; }; + 1CFA21C851234CFA8841CF06A19CA1B3 /* NibOwnerLoadable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5F832058F5630D3E59B91B26C91602B9 /* NibOwnerLoadable.swift */; }; + 1D9D29667203F00351479B33861A925D /* DispatchQueueConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = F4F4389BBFA828FF969DE3437BD85F07 /* DispatchQueueConfiguration.swift */; }; + 1E909EB12C1EAC4BA141FB502654D49B /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6A1970A14C2672638850C555C17ADE89 /* Foundation.framework */; }; + 1F285EAFE181E45D258B44A554FF8837 /* Kingfisher-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = C14D52C61907DC105B61762C9E936A8E /* Kingfisher-dummy.m */; }; + 1F41901788FE8B5D4342A2164C8025CC /* Timer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 630898B35BC0EFD786106655DE54474E /* Timer.swift */; }; + 1F64C124283555FF5E1944FA37501247 /* Signal+Subscription.swift in Sources */ = {isa = PBXBuildFile; fileRef = 041FA2EF962E0A05A873BCEB0B86907B /* Signal+Subscription.swift */; }; + 1F6F0B8C1A8EA633EFEBE64EB781A6B5 /* UINavigationController+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7188F8528517D30F9811E46C3E640076 /* UINavigationController+Rx.swift */; }; + 1F9FC3C038F56FFE0CD1D2453B9545B2 /* Never.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E4BA970B9A3745A3304F463928510E4 /* Never.swift */; }; + 2087DD8278E2FC32F75C947E058EA423 /* NSObject+Rx+KVORepresentable.swift in Sources */ = {isa = PBXBuildFile; fileRef = E10C4362F4CFE97054F4E028403D85A5 /* NSObject+Rx+KVORepresentable.swift */; }; + 20DDD9329E51949E0A220536989F518E /* ElementAt.swift in Sources */ = {isa = PBXBuildFile; fileRef = FB8B7E1A52CD158EB2B71DBF0F4F751F /* ElementAt.swift */; }; + 21F5DB4B9033B8470441859D0BE37796 /* RxRelay-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = E03CA372E000764E088E683B7E007A35 /* RxRelay-dummy.m */; }; + 220D6AC9B1B1EC8EFFB204F9C1EAC842 /* ConstraintMakerEditable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 297BA7C8A73508DACAEB8B56F61CB0A7 /* ConstraintMakerEditable.swift */; }; + 2279FE56C854E4A8D1623EFF123490BA /* GIFAnimatedImage.swift in Sources */ = {isa = PBXBuildFile; fileRef = FD25B60171608A79B5490000C04B2692 /* GIFAnimatedImage.swift */; }; + 22FF4EB2B24CB81EAE06C5255AFEBBF8 /* Throttle.swift in Sources */ = {isa = PBXBuildFile; fileRef = 072B55799DE68D25E127A0A4393FD8C2 /* Throttle.swift */; }; + 23878F770AFFBAFBA47A7C75CE2A730A /* Generate.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF57B73019D99E3A7652684FB3EDBEA7 /* Generate.swift */; }; + 23A3CED3EE6A0A4815A92D9E0B960328 /* ImageDownloaderDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D953A89B8322FDD3E894FC124AD487A /* ImageDownloaderDelegate.swift */; }; + 241FB0C1BD55CC6F05C7FD78590EE5A1 /* MultiTarget.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0D1BECCFF9D91B95AB55CF3C774AFAEB /* MultiTarget.swift */; }; + 24658CFD39BCB4586D56C427F8EA751D /* BuiltInBasicType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3307A3315488FFE0D213C7D5D5293588 /* BuiltInBasicType.swift */; }; + 24C8FC3B11676AD57F3A7914E6621AD0 /* TextInput.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3410B22D578C139B16E380E9330BEDEB /* TextInput.swift */; }; + 252B64A12E2810921E86B78ECD5BDA9D /* UIApplication+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8AE7340B71FE68209D47F08D0A107783 /* UIApplication+Rx.swift */; }; + 252E4C2F3DBB874320103B96E4C578DD /* RetryWhen.swift in Sources */ = {isa = PBXBuildFile; fileRef = AF1D5851A5405E9DD424261B945C653B /* RetryWhen.swift */; }; + 256558233B40ACA6818F143BBC5B8017 /* ConstraintViewDSL.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6540850C0E13B7D1C416C7ED0A60F3B8 /* ConstraintViewDSL.swift */; }; + 258A528FB1FD89D83512AA538B069E71 /* ImageDrawing.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32EA191B6F76C10D3E8A94A63DBC6387 /* ImageDrawing.swift */; }; + 263A6B3B9C8592FC16697D2AB6333AC9 /* RxCocoa.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2295FFA92EC6E5469475072C9CDC772F /* RxCocoa.swift */; }; + 2662EA3D1400EC4BD90947902CD85670 /* Platform.Darwin.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1453836E21AC5CF84521F96905B6E510 /* Platform.Darwin.swift */; }; + 26B5D0908762ECED515D6EAC78404F51 /* AsyncLock.swift in Sources */ = {isa = PBXBuildFile; fileRef = 28B2449937EB3C563C98A2FEB77E44BE /* AsyncLock.swift */; }; + 26D320CBBB9394E2CD2AA967CF579315 /* TVMonogramView+Kingfisher.swift in Sources */ = {isa = PBXBuildFile; fileRef = 955D722D26AFAB40DDD143D1AEC241FB /* TVMonogramView+Kingfisher.swift */; }; + 275C15979C1EC7DB6234974758037906 /* PublishRelay+Signal.swift in Sources */ = {isa = PBXBuildFile; fileRef = B0A7B2A3A2A3395A70DB106E36C9A10E /* PublishRelay+Signal.swift */; }; + 27F2BE5D6E990841E8DA1DF91CF3623B /* Signal.swift in Sources */ = {isa = PBXBuildFile; fileRef = 27A67104EF0235D1668652F304608779 /* Signal.swift */; }; + 281E6E48EFBD4A508F87406F117E476F /* First.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6ED28AA73288F8BA9098167BB3C5DD3E /* First.swift */; }; + 282FCD4EA8B05830E9108690B8CD336B /* Session.swift in Sources */ = {isa = PBXBuildFile; fileRef = 949EBF7C76A9DAF117E0718527067B58 /* Session.swift */; }; + 2878735FE61E1EEB4C493A8B8ED3DCAC /* EnumType.swift in Sources */ = {isa = PBXBuildFile; fileRef = FACADE26349CFDD7B90344C5E0DA8149 /* EnumType.swift */; }; + 28B20C35F4E1B3DDE716C831B049ADBC /* _RX.h in Headers */ = {isa = PBXBuildFile; fileRef = F63572E2F8B504EC2553A11DE735DD0C /* _RX.h */; settings = {ATTRIBUTES = (Public, ); }; }; 2987A730911012C32AF6695D7B54E35C /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6A1970A14C2672638850C555C17ADE89 /* Foundation.framework */; }; - 2A4D8872017458ADB952D7362CD3216D /* AddRef.swift in Sources */ = {isa = PBXBuildFile; fileRef = A91E7B0C850AC3EB49D57C2F5AC657BA /* AddRef.swift */; }; - 2AA5064ABDA1A14FD82F98F25CF853D8 /* Atomic.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9FE80A6E04D0DEC038F7B01D95633AE8 /* Atomic.swift */; }; - 2AC794BEBE17BA6257A13065584EC5DF /* UIDatePicker+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8A9425DD88305B16CADE1573B70E7D7C /* UIDatePicker+Rx.swift */; }; - 2AD8987B16604E75E19FE7172332B9BE /* ImageModifier.swift in Sources */ = {isa = PBXBuildFile; fileRef = DFBC5B2993997B725D364216FE7C3DF6 /* ImageModifier.swift */; }; - 2AF40AD9BAE58EECFEE829EF7996669B /* Window.swift in Sources */ = {isa = PBXBuildFile; fileRef = D247DB9583EC8A9EA2396FEEE9A0BEBC /* Window.swift */; }; - 2CF7F5AEDD22D446868F6EC11694B46A /* ScheduledItemType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 92037C313E25E9C5B1ECD6B53CF18C6C /* ScheduledItemType.swift */; }; - 2DAB889F1C979E0BDF2A951CF07F453E /* Do.swift in Sources */ = {isa = PBXBuildFile; fileRef = AEEBA06C08ECDC8AA5CCA71C013759FA /* Do.swift */; }; - 2E7321581005F0AAF767213937D29680 /* NSButton+Kingfisher.swift in Sources */ = {isa = PBXBuildFile; fileRef = D93E22C14E699039A509F617FA39695B /* NSButton+Kingfisher.swift */; }; - 2E9420467955EA6220D079A3678B4CCF /* CombineLatest+arity.swift in Sources */ = {isa = PBXBuildFile; fileRef = DA05AFE5E1E48A41436B4A70147E660C /* CombineLatest+arity.swift */; }; - 2EFF6DCB0FC66EB564B96A35840D5016 /* RxTableViewDataSourcePrefetchingProxy.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1FCF2D3324E392803C9EFBB38E7A9ABA /* RxTableViewDataSourcePrefetchingProxy.swift */; }; - 2F29E8F0615655488301B37DCCE74DD2 /* Observable+Bind.swift in Sources */ = {isa = PBXBuildFile; fileRef = D9244D2668F560CE0CB0F0065186F8EB /* Observable+Bind.swift */; }; - 2F7ECD73855CF5C4B91D44495A9D186D /* Deferred.swift in Sources */ = {isa = PBXBuildFile; fileRef = AB501C06BD3310ADAA40217FA862D851 /* Deferred.swift */; }; - 2FCCAB4BA1D71EDB993309159D5DFA7C /* RecursiveLock.swift in Sources */ = {isa = PBXBuildFile; fileRef = FBD270BC6C902DDBA8971425BF78B4A3 /* RecursiveLock.swift */; }; - 309C54EC9536180B960B9CB8EBD412E3 /* CustomDateFormatTransform.swift in Sources */ = {isa = PBXBuildFile; fileRef = D741ADECEE7BA668846D15DEE1332031 /* CustomDateFormatTransform.swift */; }; - 3118CFD451916A9BB78E222597E8969E /* ObservableType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 82EEBDF2AE2F00B7933D6A5DF8FDF0AD /* ObservableType.swift */; }; - 31E3621410AFFDD2DC866DAC48B735CE /* AsSingle.swift in Sources */ = {isa = PBXBuildFile; fileRef = 21E4BE15EF64CDD45908BF2A541F2A66 /* AsSingle.swift */; }; - 320C0D7A88AA812EFB20016BA1F5D7AE /* AFError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 443CA8C627022D8C1934F8F42533236E /* AFError.swift */; }; - 3278ED404885BB1E20388250FC601681 /* AsyncSubject.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46CE5C282594AAB0BC74E3DE1A773F2B /* AsyncSubject.swift */; }; - 33BC540DE351661FAAA24950E165D4F1 /* MangledName.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2A8DE9D85F9B8D23A00C6EDE272AAE8D /* MangledName.swift */; }; - 361EA7ABBDD80F154DDC208D9CE920DD /* Deserializer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 972FCFDB49C8D15767A6488B65F2999B /* Deserializer.swift */; }; - 362DD94616F8D1CA08A33B4F41273239 /* MainScheduler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 66BCA8A6AE43B359068161172075AD29 /* MainScheduler.swift */; }; - 3660B4F629053ABC3C1DF69366770289 /* ConstraintConfig.swift in Sources */ = {isa = PBXBuildFile; fileRef = D6D6C3517EAD559475BB89B3A07F826D /* ConstraintConfig.swift */; }; - 371CD58570B89DE6A3090CC6CE16AEE7 /* UIControl+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4ED914EA5EE1E5DAC87E75CFEEEBE002 /* UIControl+Rx.swift */; }; - 375CAADA212D838EE018E292E684F61E /* Cancellable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 57BE0C87BBB0A537606F16CD108FAECF /* Cancellable.swift */; }; - 377229136C0061FE2FABE71862C2070F /* ItemEvents.swift in Sources */ = {isa = PBXBuildFile; fileRef = DFCC95E9F5590674CB559C0596A2DC4A /* ItemEvents.swift */; }; + 2AA5064ABDA1A14FD82F98F25CF853D8 /* Atomic.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52F19A2FED9748DDCC88CC53ED49F836 /* Atomic.swift */; }; + 2AC794BEBE17BA6257A13065584EC5DF /* UIDatePicker+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = E6FA6D023072C141A351AD5D46629828 /* UIDatePicker+Rx.swift */; }; + 2AD8987B16604E75E19FE7172332B9BE /* ImageModifier.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09B232CCEFA17A5D9EB3501E35D94EFE /* ImageModifier.swift */; }; + 2D86C286A021C3335872DE20FCBAFFBE /* HistoricalSchedulerTimeConverter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1F5CF1C02486E62B0556A27B747BC446 /* HistoricalSchedulerTimeConverter.swift */; }; + 2E7321581005F0AAF767213937D29680 /* NSButton+Kingfisher.swift in Sources */ = {isa = PBXBuildFile; fileRef = 08CD0C6D58745B17854A0B374D4B5591 /* NSButton+Kingfisher.swift */; }; + 2EB811D42F51FDAA8C55017BD799F5C0 /* NSObject+Rx-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 3A4F4D9372A79E9AF21ECE5F57A01154 /* NSObject+Rx-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 2EFF6DCB0FC66EB564B96A35840D5016 /* RxTableViewDataSourcePrefetchingProxy.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2B9E485C0CA9736A9D0918B0DE34D9E3 /* RxTableViewDataSourcePrefetchingProxy.swift */; }; + 2FCCAB4BA1D71EDB993309159D5DFA7C /* RecursiveLock.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5CDAF0BB1613D4C614630A013D714B1B /* RecursiveLock.swift */; }; + 2FD9C57A66582864772DB81E5266F4F2 /* ScheduledItemType.swift in Sources */ = {isa = PBXBuildFile; fileRef = C165CAFBC5D2DF632181A1CE3BD9CE40 /* ScheduledItemType.swift */; }; + 309C54EC9536180B960B9CB8EBD412E3 /* CustomDateFormatTransform.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0C045BBF13DA4C94B106E8CD4D649379 /* CustomDateFormatTransform.swift */; }; + 311000A901EDEC58409BE164C577EC44 /* Window.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0C3F03AF494DD751698B191249F3CC5C /* Window.swift */; }; + 31A6CFCC14906B5B581BF20C4D444D14 /* Just.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3962E67A06976A66996359C96512F7D7 /* Just.swift */; }; + 320C0D7A88AA812EFB20016BA1F5D7AE /* AFError.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC98215DC0A2719779B6D65EC9309229 /* AFError.swift */; }; + 322BB51CEFFF441B7AC73E0114685726 /* SubscribeOn.swift in Sources */ = {isa = PBXBuildFile; fileRef = A36E0AFD9BD64A4CB48DFD2FCC595710 /* SubscribeOn.swift */; }; + 331AA426FED092F2FB5FFFECA80098DC /* ObserverType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 874B499F55FCB3AEDBC9CAEF1A35C25A /* ObserverType.swift */; }; + 33BC540DE351661FAAA24950E165D4F1 /* MangledName.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7F6A38DB775E4F83534083A9B9F3BD0C /* MangledName.swift */; }; + 3440ECD5BB4FF90DB8909A9A3AB3FEFB /* Empty.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5118C995324C7B3659B66FDA337AB87B /* Empty.swift */; }; + 354E901277130C9A040211773FD3AB53 /* MainScheduler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 62A9F4EB766642D7053E65AF8420D18E /* MainScheduler.swift */; }; + 35601C1F3FB1685E3DADE2264C1AA8CE /* ShareReplayScope.swift in Sources */ = {isa = PBXBuildFile; fileRef = A061FC60A71A83F6B8FCFFDEDB1E28EF /* ShareReplayScope.swift */; }; + 361EA7ABBDD80F154DDC208D9CE920DD /* Deserializer.swift in Sources */ = {isa = PBXBuildFile; fileRef = A0C2EF509F0F2A4929755C2673CED694 /* Deserializer.swift */; }; + 3622DBD9AC58959E0588D7E5E11C444B /* Date+Dispatch.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5EE2EC59B7C72782EF4B25B534D9BB05 /* Date+Dispatch.swift */; }; + 3660B4F629053ABC3C1DF69366770289 /* ConstraintConfig.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04A45391C09A593CEB4478041D5286C4 /* ConstraintConfig.swift */; }; + 369A041408BC17AFFCA35B5B8914B5AA /* ObservableType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 39BA0BA7675D16BA37F824C93FEA6BC9 /* ObservableType.swift */; }; + 371CD58570B89DE6A3090CC6CE16AEE7 /* UIControl+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = 80A98418A162685AD31E0933E3F10D05 /* UIControl+Rx.swift */; }; + 375CAADA212D838EE018E292E684F61E /* Cancellable.swift in Sources */ = {isa = PBXBuildFile; fileRef = B894628C91744CB4F70E7BCE4457A4D6 /* Cancellable.swift */; }; + 377229136C0061FE2FABE71862C2070F /* ItemEvents.swift in Sources */ = {isa = PBXBuildFile; fileRef = CB337D23E1C7AD19CB57B084B1AAE780 /* ItemEvents.swift */; }; 3841545F19CF975D5CA907A73A949FF6 /* Kingfisher-Kingfisher in Resources */ = {isa = PBXBuildFile; fileRef = C298ABB78D9B05529B89D8322DB2E7B0 /* Kingfisher-Kingfisher */; }; - 385BC4B250B6A6DB8AAAEA77D5B7A46F /* Combine.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88195126F4E96A3774802B0BA8877C77 /* Combine.swift */; }; - 38B9D58E94D9C1CECD7E381C64A2329D /* UILayoutSupport+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = EF820E238AB6C626388D71E7F83DD362 /* UILayoutSupport+Extensions.swift */; }; - 38BFFE498FF2491FD1C152319A94E9F5 /* ImageContext.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0F964475871A4284F485DC930EB7FE0D /* ImageContext.swift */; }; - 3957E07A50A304366C83854C41E6013B /* Materialize.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75FFF56047C4C60A6E7F1E572172AC93 /* Materialize.swift */; }; - 3A030CA5A4DD41F59802F907A93F85DF /* HexColorTransform.swift in Sources */ = {isa = PBXBuildFile; fileRef = AEE012945F1ACD7D860DD82B208D5D32 /* HexColorTransform.swift */; }; - 3A379670D0CFBC0FCC9D0F66E944D074 /* RxTextStorageDelegateProxy.swift in Sources */ = {isa = PBXBuildFile; fileRef = E76B1466F3C89ABD081A805991109083 /* RxTextStorageDelegateProxy.swift */; }; - 3A59D8FBAF9A54906E3644AC80465AFB /* Notifications.swift in Sources */ = {isa = PBXBuildFile; fileRef = 05C2B32ED7987DD94725453C00328CE3 /* Notifications.swift */; }; - 3AA3DABB241FB655F8EE42D02EC95DFC /* Kingfisher.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E0F4988883481C19FAFF403697872DD /* Kingfisher.swift */; }; - 3C53583CB1A5F4926491D8838F580074 /* BuiltInBridgeType.swift in Sources */ = {isa = PBXBuildFile; fileRef = F4457E12C3F2B5AADAA643E6B0F5C555 /* BuiltInBridgeType.swift */; }; - 3EE7A29FCEE9B2A257B977E7137BC44C /* UITabBar+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74E7B0CB0BD4C32719550BAEE7471ABC /* UITabBar+Rx.swift */; }; - 3EFE8454C7301C05A00EC9870F47968B /* RxTableViewDataSourceType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 26A2F37034623F4E9BF155F2042659EF /* RxTableViewDataSourceType.swift */; }; - 3FA127A261BB563409868A0DC21807B2 /* ResponseSerialization.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9BFCC48A5DBF6A66F64E5ACE27854985 /* ResponseSerialization.swift */; }; - 40D926572C52D27517FFC92545819FFB /* AuthenticationChallengeResponsable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7572072A13A12227DE23BD58E99E7B41 /* AuthenticationChallengeResponsable.swift */; }; - 414CF2DE69210BDE0A1C0256F87E061A /* Enumerated.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2A36E5193632E241668CBF9B7B2CB7D5 /* Enumerated.swift */; }; - 4155E1924B8FC76EF105D44698EFB548 /* Delegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = F9F013D28FC8ECBAF33DF99272DEC729 /* Delegate.swift */; }; - 419A11A8F7797E02FA5AAC6D8B4B3C2F /* UIStepper+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = CA138CAED2178679471A0C1994A53ADD /* UIStepper+Rx.swift */; }; - 4251CDB971A8B94270E34381974BC9F8 /* _RXKVOObserver.h in Headers */ = {isa = PBXBuildFile; fileRef = 720BE3DE6F24DCF57D71D73928C99C2B /* _RXKVOObserver.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 426C76C68C9FA3582F26BBB9E96316E4 /* _RX.m in Sources */ = {isa = PBXBuildFile; fileRef = 0D5B6D4F9F8CF76D040623D82B12D15E /* _RX.m */; }; - 42A1F6E790D900B1AC3653DBEFF8EAA6 /* Date+Dispatch.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5EC0523BF8CA0D3FF2934609B979DBED /* Date+Dispatch.swift */; }; - 42B6ACFCF650183030867CB3EF345E95 /* ConstraintMakerFinalizable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E6A6730169419E002FF07C1AE880F77 /* ConstraintMakerFinalizable.swift */; }; - 42E7EEF0A33D83D355C821212F97A390 /* Buffer.swift in Sources */ = {isa = PBXBuildFile; fileRef = F2D487B9F0F6B5545D5A1715E39B9BCA /* Buffer.swift */; }; - 43C89358BB61E73227F6791E4697FCCC /* RedirectHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 739CDDE742C44BA839AD3DA536BDD57F /* RedirectHandler.swift */; }; - 43DFB49930346A1A730DC21E94E2F731 /* ImageProcessor.swift in Sources */ = {isa = PBXBuildFile; fileRef = FE2C700E88155AD2A39178D87B6644F5 /* ImageProcessor.swift */; }; - 444DBA6CD07054A7900CF1A1334419BC /* ConcurrentDispatchQueueScheduler.swift in Sources */ = {isa = PBXBuildFile; fileRef = D38B8AB8BAF2B28F16F577931098B969 /* ConcurrentDispatchQueueScheduler.swift */; }; - 45F6BA1117D64D98B32E0C77670EF906 /* RxCocoaRuntime.h in Headers */ = {isa = PBXBuildFile; fileRef = A69D2E9F349C5F6AC3EC7F70DB0CCFDD /* RxCocoaRuntime.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 47D3FBF90386DABCAB70AA2CA176C8EB /* ControlEvent+Driver.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97E745BB2E59AE041727B826B1E61BBB /* ControlEvent+Driver.swift */; }; - 482B74C0548970BB9C095E2D8530E421 /* ParameterEncoding.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2E78E508B94164D9227009C03D41986A /* ParameterEncoding.swift */; }; - 4965C451517127864A70BD41E0FA8AF9 /* Event.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1C7BAB5978403A78EBF174C01FF8C71E /* Event.swift */; }; - 4B23B05F62E805619C9B5BA83E34F4A9 /* Box.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1828EE850F0785BEBBEEB6381406536B /* Box.swift */; }; - 4BAD99B7394E225CEDBF94B8100BCC7F /* ConstraintRelation.swift in Sources */ = {isa = PBXBuildFile; fileRef = F52EC1967CD22048EB37327070C47EB5 /* ConstraintRelation.swift */; }; - 4BFFEA52EC61D92F315006DEB55CC6E5 /* PrimitiveSequence+Concurrency.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3AF54C9D06FA26EEFB4A6D8DDB4C6C83 /* PrimitiveSequence+Concurrency.swift */; }; - 4D5E233A3AAB006B7EC565C74D18A8C1 /* RecursiveLock.swift in Sources */ = {isa = PBXBuildFile; fileRef = D88811C8F2904BE3EDD7B26CE505C673 /* RecursiveLock.swift */; }; - 4DA72FD7F1FB2C0449EDEF4B8A579807 /* ConstraintPriorityTarget.swift in Sources */ = {isa = PBXBuildFile; fileRef = A52935DC312F87728290A3ACA2167BCD /* ConstraintPriorityTarget.swift */; }; - 4DDE90582DEB58DC0EF7BCC911D3BCBA /* Single.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4DB8E452090D235990597C3AB1BE8E11 /* Single.swift */; }; - 4DEAE5703BDD544C9956BF42F7D57CE5 /* DiskStorage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8CDAEEA9FC477033FF5344F6CBE85CB2 /* DiskStorage.swift */; }; - 4F315C18FC854325DD5D062DD7A363D5 /* ObservableConvertibleType+SharedSequence.swift in Sources */ = {isa = PBXBuildFile; fileRef = F035F0F1D2D858918B6C937E1F71A98E /* ObservableConvertibleType+SharedSequence.swift */; }; - 4F894DAB31F1A68FD37EA61B87CDC043 /* StoryboardSceneBased.swift in Sources */ = {isa = PBXBuildFile; fileRef = AB91063BFA0B85155CE39C26F80044C5 /* StoryboardSceneBased.swift */; }; - 514272471493DBBD026BC35D58547601 /* Timeout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 654DEBE109ACCEE862E7F084EE7ED13C /* Timeout.swift */; }; - 5150F2661A947E67A50557847BAA22C0 /* AnonymousObserver.swift in Sources */ = {isa = PBXBuildFile; fileRef = BBE5FECC28B966616BA85A7C62F7FA40 /* AnonymousObserver.swift */; }; - 5223E292D90519A9F902F743DE388C22 /* InvocableScheduledItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5DC90B70DB4293C27D4B5733F05EC3CC /* InvocableScheduledItem.swift */; }; - 5230B70A7B448918B83D3B983533D29A /* KVORepresentable+CoreGraphics.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8D0507B1E2AB4B8A447354D000FEF414 /* KVORepresentable+CoreGraphics.swift */; }; - 529173B31EFCD3D199E79866AFBEC86C /* HTTPHeaders.swift in Sources */ = {isa = PBXBuildFile; fileRef = F0933F5FD3BA39AA382ECC963D6550B8 /* HTTPHeaders.swift */; }; - 529BE65BAC3A56AB2FF74B26B63D3029 /* Dematerialize.swift in Sources */ = {isa = PBXBuildFile; fileRef = AFF9C7F95915AA09C2220E7711A63B74 /* Dematerialize.swift */; }; + 385BC4B250B6A6DB8AAAEA77D5B7A46F /* Combine.swift in Sources */ = {isa = PBXBuildFile; fileRef = D2EC26F92526046B9B561F9EA9C8D99E /* Combine.swift */; }; + 38B9D58E94D9C1CECD7E381C64A2329D /* UILayoutSupport+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0CC2D1BB9EEBEA95ED9544793D54CFC3 /* UILayoutSupport+Extensions.swift */; }; + 38BFFE498FF2491FD1C152319A94E9F5 /* ImageContext.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E8CC12B38B79125BC51EFC8A9D68C2C /* ImageContext.swift */; }; + 3A030CA5A4DD41F59802F907A93F85DF /* HexColorTransform.swift in Sources */ = {isa = PBXBuildFile; fileRef = FD72EA464CE8C36C57A0BD6F808CC568 /* HexColorTransform.swift */; }; + 3A379670D0CFBC0FCC9D0F66E944D074 /* RxTextStorageDelegateProxy.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2FE341F08B89C3BC700983C1AD50F7B6 /* RxTextStorageDelegateProxy.swift */; }; + 3A59D8FBAF9A54906E3644AC80465AFB /* Notifications.swift in Sources */ = {isa = PBXBuildFile; fileRef = 54779717E744F4352FECD7330BA2BC68 /* Notifications.swift */; }; + 3AA3DABB241FB655F8EE42D02EC95DFC /* Kingfisher.swift in Sources */ = {isa = PBXBuildFile; fileRef = 072A25A8F051BA7011D988BCB8FAAE2D /* Kingfisher.swift */; }; + 3BFBFF7DEF537868D62E42177E8A585F /* Skip.swift in Sources */ = {isa = PBXBuildFile; fileRef = F2E087AF46FA61B270B18F5569F1BCF3 /* Skip.swift */; }; + 3C21708718768BE03359E89136D4C173 /* SynchronizedUnsubscribeType.swift in Sources */ = {isa = PBXBuildFile; fileRef = F03BFE5F051F40E0B1BDB61B10301FE0 /* SynchronizedUnsubscribeType.swift */; }; + 3C53583CB1A5F4926491D8838F580074 /* BuiltInBridgeType.swift in Sources */ = {isa = PBXBuildFile; fileRef = C83D8C5EA8967529E1C69178F9281437 /* BuiltInBridgeType.swift */; }; + 3CA3290D8BD9A3BCF8C736D98353F6A8 /* ScheduledItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = AD9DA807844B74F586794E7B3055D8FB /* ScheduledItem.swift */; }; + 3D2A9FBA6C97C4CE53CDBA9275639096 /* Infallible+Operators.swift in Sources */ = {isa = PBXBuildFile; fileRef = 191F95E8076B377937623541593EC613 /* Infallible+Operators.swift */; }; + 3E5FD873CD9A5C7D9ACC8EEB6CC70F8B /* RecursiveScheduler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8CAD2D04C99413F3E14E56ABA2A1DFE1 /* RecursiveScheduler.swift */; }; + 3EE7A29FCEE9B2A257B977E7137BC44C /* UITabBar+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = A2F69FDF2A31BFF7B837CFF8A6177553 /* UITabBar+Rx.swift */; }; + 3EFE8454C7301C05A00EC9870F47968B /* RxTableViewDataSourceType.swift in Sources */ = {isa = PBXBuildFile; fileRef = FD4536105F8DDB1089C31E4DE8BA5900 /* RxTableViewDataSourceType.swift */; }; + 3FA127A261BB563409868A0DC21807B2 /* ResponseSerialization.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1D2EDB69BD3AF777FC271C11BC562F89 /* ResponseSerialization.swift */; }; + 4058AED958386F42B26BEEBA2C9595EF /* SchedulerServices+Emulation.swift in Sources */ = {isa = PBXBuildFile; fileRef = E8E36794B98A1B699B24623E054E3FBE /* SchedulerServices+Emulation.swift */; }; + 40D926572C52D27517FFC92545819FFB /* AuthenticationChallengeResponsable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4B36B590364171FD6B554283EEBAFFD7 /* AuthenticationChallengeResponsable.swift */; }; + 412C30D55C0E93742F9946FDF78FFAD7 /* ReplayRelay.swift in Sources */ = {isa = PBXBuildFile; fileRef = CBF3537D66ECCB1FE5D0D12E2A357AE6 /* ReplayRelay.swift */; }; + 4155E1924B8FC76EF105D44698EFB548 /* Delegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = B6A6A8C6A3B9442B5AE6BBB761E13470 /* Delegate.swift */; }; + 419A11A8F7797E02FA5AAC6D8B4B3C2F /* UIStepper+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0FA798817E2B39E4D96485B677C60A8 /* UIStepper+Rx.swift */; }; + 4251CDB971A8B94270E34381974BC9F8 /* _RXKVOObserver.h in Headers */ = {isa = PBXBuildFile; fileRef = 2EF303B0A0DC567059DE329212C8EA8A /* _RXKVOObserver.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 426C76C68C9FA3582F26BBB9E96316E4 /* _RX.m in Sources */ = {isa = PBXBuildFile; fileRef = 11A5C21AE17E6B568C618DAF6914B0C1 /* _RX.m */; }; + 4270FF0A0B35AFCC499E76D02FE0CD2F /* SkipWhile.swift in Sources */ = {isa = PBXBuildFile; fileRef = 29739B8669AE8FF9BEC09C7CB39A7342 /* SkipWhile.swift */; }; + 42B6ACFCF650183030867CB3EF345E95 /* ConstraintMakerFinalizable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9DCE038776A3A00D1DFE3EA3C156665C /* ConstraintMakerFinalizable.swift */; }; + 43C89358BB61E73227F6791E4697FCCC /* RedirectHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 02D807D8CB2F4C889568E7417FBFD65B /* RedirectHandler.swift */; }; + 43DFB49930346A1A730DC21E94E2F731 /* ImageProcessor.swift in Sources */ = {isa = PBXBuildFile; fileRef = F2CC9A7324F90E05437F3130B878E67E /* ImageProcessor.swift */; }; + 44E6B65B0A98B5C87696EBBAF9D23240 /* VirtualTimeConverterType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EED46321193DAC05CEB1CA4631F93FE /* VirtualTimeConverterType.swift */; }; + 44FDC841C20165E2DE68E31737A401DC /* DeviceKit-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 07223854880AEC32576775DB6FF2DA1C /* DeviceKit-dummy.m */; }; + 45E536C0D99DF4CAC24B25004B0BCD32 /* Enumerated.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6209797288E36610C52D246F4FC4ABBD /* Enumerated.swift */; }; + 45F6BA1117D64D98B32E0C77670EF906 /* RxCocoaRuntime.h in Headers */ = {isa = PBXBuildFile; fileRef = B9AD1DEBB939967A5FB146BB73854EDC /* RxCocoaRuntime.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 465C00E154960471E7FC90A7AB2E71B4 /* SerialDispatchQueueScheduler.swift in Sources */ = {isa = PBXBuildFile; fileRef = A6ABB1D9842860D9D2A8451EFB8A1630 /* SerialDispatchQueueScheduler.swift */; }; + 47D3FBF90386DABCAB70AA2CA176C8EB /* ControlEvent+Driver.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7B93F8A5C815D15B602DAA783AD6CCB6 /* ControlEvent+Driver.swift */; }; + 482B74C0548970BB9C095E2D8530E421 /* ParameterEncoding.swift in Sources */ = {isa = PBXBuildFile; fileRef = FA1F46C8FE73CA33109112241DFE48AF /* ParameterEncoding.swift */; }; + 4990FC3CE6A37C6A0EB9717C5C30998A /* Merge.swift in Sources */ = {isa = PBXBuildFile; fileRef = DC0BF37A545A2FFC2F023A0057EE555B /* Merge.swift */; }; + 4B23B05F62E805619C9B5BA83E34F4A9 /* Box.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1B44A5BD90DDFAEC2424B393A087DA84 /* Box.swift */; }; + 4BAD99B7394E225CEDBF94B8100BCC7F /* ConstraintRelation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C895A93F8613A05F2D58A9EC42B44F8 /* ConstraintRelation.swift */; }; + 4DA72FD7F1FB2C0449EDEF4B8A579807 /* ConstraintPriorityTarget.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7143352286BCC6841BFEF03BAA776259 /* ConstraintPriorityTarget.swift */; }; + 4DEAE5703BDD544C9956BF42F7D57CE5 /* DiskStorage.swift in Sources */ = {isa = PBXBuildFile; fileRef = BFD4A32376631D1ABEDEC8C2BD7874CC /* DiskStorage.swift */; }; + 4ED1D5C9C2438C159915EC1BBDABF094 /* Sink.swift in Sources */ = {isa = PBXBuildFile; fileRef = 780972FEEFE3D0DFD064811F1A9CB1CE /* Sink.swift */; }; + 4EF7F0FD183DF30DD6C838FE84C936E9 /* DisposeBag.swift in Sources */ = {isa = PBXBuildFile; fileRef = 157B8B68660A148A589449C9A07DB11D /* DisposeBag.swift */; }; + 4F315C18FC854325DD5D062DD7A363D5 /* ObservableConvertibleType+SharedSequence.swift in Sources */ = {isa = PBXBuildFile; fileRef = CC8B88972BBBEFD7514D12BD5A60921D /* ObservableConvertibleType+SharedSequence.swift */; }; + 4F338C4F636BFA65E949C5073F150BEB /* CompositeDisposable.swift in Sources */ = {isa = PBXBuildFile; fileRef = D4F15099DB21F14B9B47C347C2471752 /* CompositeDisposable.swift */; }; + 4F894DAB31F1A68FD37EA61B87CDC043 /* StoryboardSceneBased.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC5E75D1658C650BA87C811D7CD7156D /* StoryboardSceneBased.swift */; }; + 500DA15769AC7D2BC6186F2BF88832AD /* Observable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E755AE7B4C0AD73F4C39752D2932DAD /* Observable.swift */; }; + 50FFA85C7F86571E7388F585CF1C7B5A /* DispatchQueue+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8DB159B8B7B0B87A7131D6BAD2807EAA /* DispatchQueue+Extensions.swift */; }; + 5230B70A7B448918B83D3B983533D29A /* KVORepresentable+CoreGraphics.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3C7269135874D7BBF7B4F321BC23D34C /* KVORepresentable+CoreGraphics.swift */; }; + 529173B31EFCD3D199E79866AFBEC86C /* HTTPHeaders.swift in Sources */ = {isa = PBXBuildFile; fileRef = AF43BC6419835F3B61D40D5841A3D2D0 /* HTTPHeaders.swift */; }; 52DD330B3BED8407E4EFED176F0B4DBA /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6A1970A14C2672638850C555C17ADE89 /* Foundation.framework */; }; 533F06C629B5676D3E165946F1CAB400 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3397E4A82849848801375ABF4E7B4080 /* UIKit.framework */; }; - 5357162246E301753EE5CBE40BF75038 /* Optional.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1517F2B568C0846F286EF269D17902A5 /* Optional.swift */; }; - 5380454C48A12A6E376122ABD8096968 /* ConstraintDescription.swift in Sources */ = {isa = PBXBuildFile; fileRef = 64F516F56589A2470DFA0E30E85DBB80 /* ConstraintDescription.swift */; }; - 53F5DA7BA570018EFB8761D97C00DA6D /* PublishSubject.swift in Sources */ = {isa = PBXBuildFile; fileRef = 70933FA1D55CE70EA5A4110C98DEC09D /* PublishSubject.swift */; }; - 5435E924E7CE7B05B7F650C078A12F5B /* UITabBarController+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = E727269035DBECA74CF6FA02E1B24B09 /* UITabBarController+Rx.swift */; }; - 543824E1170EF49570C40DAE54604F21 /* _RXDelegateProxy.h in Headers */ = {isa = PBXBuildFile; fileRef = AAC31C95D09575257C31EB192272C7C2 /* _RXDelegateProxy.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 5484C183C3C25F933AEDAFADF8E4C404 /* Kingfisher-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 4FE70A655C85EA7C91C24E5B3457D9B0 /* Kingfisher-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 54A091154030EF2F51399D01C732D578 /* ConcurrentMainScheduler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 728E3C167CE3ED7F8123F48D5A84771E /* ConcurrentMainScheduler.swift */; }; - 54EEEBA0AA7C4D84A5D0752813489F5F /* InvocableType.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4E6211C49C3ADB158FA16A1751D5E34 /* InvocableType.swift */; }; - 55713DE36F28B0D078ADAD60D5EE7FF4 /* ObservableConvertibleType+Driver.swift in Sources */ = {isa = PBXBuildFile; fileRef = EFC734B57692B8F617FD03908D932F63 /* ObservableConvertibleType+Driver.swift */; }; - 557AE7547352CEA86AEE5518CC1A503E /* RxCocoa-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 66EAB16FAAFDFDFF614A83B83544F60A /* RxCocoa-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 558B0B6DA4F450EB47428619840800E9 /* Throttle.swift in Sources */ = {isa = PBXBuildFile; fileRef = AB1550C20B92B5D8CBB8484C4660BE90 /* Throttle.swift */; }; - 55E51F45F1E157D3B4942BA7252C277E /* ConstraintRelatableTarget.swift in Sources */ = {isa = PBXBuildFile; fileRef = C019E68F4B2DE55C5FD2493950035664 /* ConstraintRelatableTarget.swift */; }; - 567E2B1BAE575E6556A2E57191BA2DA7 /* DelegateProxyType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 544D687E21BDD58B48D554A5709A7901 /* DelegateProxyType.swift */; }; - 56A72F6D13D930C4A2568F24DEA33C8D /* ConstraintLayoutSupportDSL.swift in Sources */ = {isa = PBXBuildFile; fileRef = D9278F439B7C4235C53C200B17F84E46 /* ConstraintLayoutSupportDSL.swift */; }; - 56AC6DC6459AE47E7BC4AF06E5B148D2 /* ConstraintDSL.swift in Sources */ = {isa = PBXBuildFile; fileRef = B90F3E609D4D31B9CE6BA0937072B8DB /* ConstraintDSL.swift */; }; - 56CAC06DB79E51F4ED416927D57C79A9 /* Measuable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 84E7CDD4F491C19202D78BD1D18EA01E /* Measuable.swift */; }; - 58C91B4AB36E6B16421106CA634C58EF /* MBProgressHUD-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = C4166DF44E4B7DCF69575608F281517C /* MBProgressHUD-dummy.m */; }; - 598A8B5AC028B7EAFE6339965A063384 /* CombineLatest+Collection.swift in Sources */ = {isa = PBXBuildFile; fileRef = 917C955DCF6B29BABB9B623BE0758691 /* CombineLatest+Collection.swift */; }; - 5A39F3F258372FA025F08ECAFFFCF71D /* NSTextField+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = F3EF76F454F323E3B71A0221AFFC8238 /* NSTextField+Rx.swift */; }; - 5A3DE5038C0E8C2BAFC3316589D0F918 /* NotificationCenter+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = C1706327EA78CAEFF1336CC5568AD36C /* NotificationCenter+Rx.swift */; }; - 5A8A82AA7F76A861CE989B801C506551 /* SynchronizedUnsubscribeType.swift in Sources */ = {isa = PBXBuildFile; fileRef = FA5D56DE5D48CA926F73DF626BACA99D /* SynchronizedUnsubscribeType.swift */; }; - 5B0CD721D955D01B28AFE5291318A7DE /* Delay.swift in Sources */ = {isa = PBXBuildFile; fileRef = 445854BBB677492BEB10430E549CF31D /* Delay.swift */; }; - 5B92A66A66BD639411C3D839A0F87B0C /* Request.swift in Sources */ = {isa = PBXBuildFile; fileRef = C6D030CA131DAC625D4D9FDC5FD000E3 /* Request.swift */; }; - 5BA418EFF060B7BEFDAF9B3E1E56ED4E /* ReplayRelay.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2868D931558DCC05627934B9EF6362E6 /* ReplayRelay.swift */; }; - 5BAC1EF86D0E57E44E404B2796993561 /* MBProgressHUD-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = C3ABFDAE24AACD8E1EEE68793DE9803B /* MBProgressHUD-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 5BE4EFBB9E0CB1968E72E793FF118931 /* ImageCache.swift in Sources */ = {isa = PBXBuildFile; fileRef = 48252905C19EDB8DCAE2BE4BE7B68A85 /* ImageCache.swift */; }; + 5380454C48A12A6E376122ABD8096968 /* ConstraintDescription.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3AB290E5F66DA867FF1CAD22F03C68A7 /* ConstraintDescription.swift */; }; + 5435E924E7CE7B05B7F650C078A12F5B /* UITabBarController+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = A6D7D78B837EEDFF2CAD064BB122C72C /* UITabBarController+Rx.swift */; }; + 543824E1170EF49570C40DAE54604F21 /* _RXDelegateProxy.h in Headers */ = {isa = PBXBuildFile; fileRef = 3E8562C07C099D3B20C9B72A98742C11 /* _RXDelegateProxy.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 54459F364B87546B71444553CA0206B0 /* Concat.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D8E5AF2E1D0B7EF828267B843BF717E /* Concat.swift */; }; + 5484C183C3C25F933AEDAFADF8E4C404 /* Kingfisher-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 1E03F6DB166ADA29B61BC0A7F8CC0D9A /* Kingfisher-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 55713DE36F28B0D078ADAD60D5EE7FF4 /* ObservableConvertibleType+Driver.swift in Sources */ = {isa = PBXBuildFile; fileRef = FCC5042AA7F7651A1A4C7752569A2A38 /* ObservableConvertibleType+Driver.swift */; }; + 557AE7547352CEA86AEE5518CC1A503E /* RxCocoa-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = A5E7D5360870AF5832E1F0DDB5F2CC4C /* RxCocoa-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 55E51F45F1E157D3B4942BA7252C277E /* ConstraintRelatableTarget.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9EBB20B835EFB6273EA09069E6083457 /* ConstraintRelatableTarget.swift */; }; + 55F03E1F23CBEB106D165A1554C73F33 /* Maybe.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4A7A8E5BA93425EA472EF38CB4DC88B /* Maybe.swift */; }; + 567E2B1BAE575E6556A2E57191BA2DA7 /* DelegateProxyType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6CD21EC48FB4C480D181BFF522CAB4BD /* DelegateProxyType.swift */; }; + 56A72F6D13D930C4A2568F24DEA33C8D /* ConstraintLayoutSupportDSL.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0BD5D30ED2CC599E8F6BAA21229E823 /* ConstraintLayoutSupportDSL.swift */; }; + 56AC6DC6459AE47E7BC4AF06E5B148D2 /* ConstraintDSL.swift in Sources */ = {isa = PBXBuildFile; fileRef = 327008B830C64C1E6228192790D867B8 /* ConstraintDSL.swift */; }; + 56CAC06DB79E51F4ED416927D57C79A9 /* Measuable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 11EAD2B482787D72AAE913B5CF8FE61B /* Measuable.swift */; }; + 576CD031E268053E9B9256FDC9E4A021 /* SwitchIfEmpty.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8901A1C963EB80D8E32AEF6F15FE5006 /* SwitchIfEmpty.swift */; }; + 57F071B82DB46978509EC998957DE642 /* Dematerialize.swift in Sources */ = {isa = PBXBuildFile; fileRef = E36E9932F71A7D0C22933E4CAD959B09 /* Dematerialize.swift */; }; + 58B6E8C96476F601AFC210FC5FFBE331 /* ObservableType+PrimitiveSequence.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5F4CE5B1262BF073019ECBF64CC3909 /* ObservableType+PrimitiveSequence.swift */; }; + 58C91B4AB36E6B16421106CA634C58EF /* MBProgressHUD-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = C2751DE6799286E9880D9D4EF188BB67 /* MBProgressHUD-dummy.m */; }; + 5A39F3F258372FA025F08ECAFFFCF71D /* NSTextField+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = BD9FBE81ABDDD90E6597902D02BC59B1 /* NSTextField+Rx.swift */; }; + 5A3DE5038C0E8C2BAFC3316589D0F918 /* NotificationCenter+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5DA4BD616B9BD9CD1C8D382F18E20B78 /* NotificationCenter+Rx.swift */; }; + 5B92A66A66BD639411C3D839A0F87B0C /* Request.swift in Sources */ = {isa = PBXBuildFile; fileRef = A550C82E21F465F618D4420E0F2846CA /* Request.swift */; }; + 5BAC1EF86D0E57E44E404B2796993561 /* MBProgressHUD-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 05A9AE844A45DE0A673C91E7E9DED633 /* MBProgressHUD-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 5BE4EFBB9E0CB1968E72E793FF118931 /* ImageCache.swift in Sources */ = {isa = PBXBuildFile; fileRef = 671544CE3B7A0B0E19382614F50B6863 /* ImageCache.swift */; }; + 5C88DF247BA73E9B1BA2FF5B306F8FA5 /* Bag.swift in Sources */ = {isa = PBXBuildFile; fileRef = C6CD72DF9F93DEE8354B6153B8C32F8C /* Bag.swift */; }; 5CCB87A1A86D7C03A5D678B262B37071 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6A1970A14C2672638850C555C17ADE89 /* Foundation.framework */; }; - 5D36B99F3CAB1FC7337082D9581FECA6 /* Debugging.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8CDDAB158F06801DD368BFA93A07800C /* Debugging.swift */; }; - 5EBC224DDA3EC6CCE8C42EED6063FD35 /* ImageProgressive.swift in Sources */ = {isa = PBXBuildFile; fileRef = F329A03B4D1A8412BFD9F49535A2D291 /* ImageProgressive.swift */; }; - 5FEA895A04C350A054C05410C2807F00 /* SubjectType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 17D7B878065E9387C23C43CFACC3A867 /* SubjectType.swift */; }; - 604D3C93C17978C23600EC415949AB64 /* ConstraintInsets.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE92ADF7F5D694CD90670878273D0E22 /* ConstraintInsets.swift */; }; - 6066DF8EBAAF4EAD3A904AFF921C3CBB /* ImageDataProcessor.swift in Sources */ = {isa = PBXBuildFile; fileRef = FB5DD901158FEFCA27ADE24D3A8E12FA /* ImageDataProcessor.swift */; }; - 608DC0C8110DDFF5D8E5A43BB48A6A86 /* UISlider+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = 160D2BDCA79733E1BBB01B00F9404132 /* UISlider+Rx.swift */; }; - 611CEF7FF1EF9EA1BCEF6C73EEE3ACCF /* ConstraintLayoutGuide.swift in Sources */ = {isa = PBXBuildFile; fileRef = 594A5F9AE55C8EAD11AFE74EE0DAC3C7 /* ConstraintLayoutGuide.swift */; }; - 612674D32D68391DF2AF6E89FA6D9BBC /* Pods-yinmeng-ios-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 9B3AF9BB0F7EB5558031DD21AD2F86CC /* Pods-yinmeng-ios-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 61E63227D5A012BA17E37229455BA5B8 /* AnonymousDisposable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 30F3EE79D4A82DDA5FBAD0C2C8D6753A /* AnonymousDisposable.swift */; }; - 61EB40AB5F1BB5E6FDC8C5CDE06C3DE9 /* RxPickerViewDataSourceType.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF2E2C729461BB0F5D730E63F64A5F23 /* RxPickerViewDataSourceType.swift */; }; - 61FCA0616CE6512DCA67D74562D6EA1D /* ReflectionHelper.swift in Sources */ = {isa = PBXBuildFile; fileRef = A79AD749EBBF7C8E00F924437B94E568 /* ReflectionHelper.swift */; }; - 62C1A489E5C6414819815F3219B52FE8 /* URLTransform.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2C4725814B303164AE7425543FDA788C /* URLTransform.swift */; }; - 6339E0715C212DB48BD9F6A3FFD883DA /* Sample.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6BC184BD2886B5395146315871D4F629 /* Sample.swift */; }; - 643A7AFFB7AEB70B2B9B7E0926055023 /* RetryPolicy.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2A271DE0F470E6D6B4CF963A21854DEA /* RetryPolicy.swift */; }; - 64986C72DEBFAB6607409ED2AC830D1E /* Error.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9D5553E70A731CAE3CC0589428DF9FFA /* Error.swift */; }; - 654D9C29A846E7ED4DD5BF0BFC8D64B8 /* UISwitch+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8DCA321A43CEC56664AD41086F8B7141 /* UISwitch+Rx.swift */; }; - 660E73ECB1E50185B9D21BAA127DC3A0 /* UIRefreshControl+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9FC9415FA1C1593D995CF4413F86119E /* UIRefreshControl+Rx.swift */; }; - 66411B211AAEB0C4DB6491A8AED6FEAF /* WKInterfaceImage+Kingfisher.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2AEBE0DF14984ECC53D005ED92A73024 /* WKInterfaceImage+Kingfisher.swift */; }; - 67B10FEAA3B7E5387D20E76B1085E94D /* URLSessionConfiguration+Alamofire.swift in Sources */ = {isa = PBXBuildFile; fileRef = ABF8C3D769C418801ABB2905159428B8 /* URLSessionConfiguration+Alamofire.swift */; }; - 67E941CADB3CDDEEDF8CE4EE4A4A05BB /* MBProgressHUD.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A0F224AF15F0E14442ECFCC641E624 /* MBProgressHUD.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 68AF5CE54DF91D0EA6E1DD02432DCB0A /* Placeholder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8472FB3724242C375626B5D19B004A36 /* Placeholder.swift */; }; - 6927E0A61FCF762B43C75325110C3D77 /* Infallible+Bind.swift in Sources */ = {isa = PBXBuildFile; fileRef = 394A07B9CD7A0E87C54639C7326B5B28 /* Infallible+Bind.swift */; }; - 69657DEC11BB7E4F9F5B6DE8E1148B3E /* _RXObjCRuntime.h in Headers */ = {isa = PBXBuildFile; fileRef = 35651FD3900CCCFFCDA6DD8ECE470B93 /* _RXObjCRuntime.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 69D07BBB6641693C30C1D2A3774F6721 /* GraphicsContext.swift in Sources */ = {isa = PBXBuildFile; fileRef = 70B306F880D3FA0554EF152D25916163 /* GraphicsContext.swift */; }; - 69DE75BA185BBAB5FDAA28321F3C849F /* ConstraintItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = FE77747AB7C6876DC80B43C5DCE4ABF0 /* ConstraintItem.swift */; }; - 69FE518ED5298543E204E1509D30952A /* KF.swift in Sources */ = {isa = PBXBuildFile; fileRef = 105DC924B68D07DCCA5F7BBD13103F15 /* KF.swift */; }; - 6AC1B881BB319C89AD023A02CDC8FC3D /* ConstraintLayoutGuide+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 96EB1FBABEA3906F0EF58EE47E45A83B /* ConstraintLayoutGuide+Extensions.swift */; }; - 6AFDE75A0DBBC5BB095963EFD1DBE944 /* WithLatestFrom.swift in Sources */ = {isa = PBXBuildFile; fileRef = A4E676ABA267DB49404DD1A3CCB33F17 /* WithLatestFrom.swift */; }; - 6B4A32082CED69B110A83E603813FDB7 /* Infallible+Operators.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8FC8131B3030B737FB4BE9DBCBAB4C9E /* Infallible+Operators.swift */; }; - 6BD6A6695D05908524545A776D4C36B9 /* ImageDataProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 005B0AA170372B033FC09D4E58FBAC9A /* ImageDataProvider.swift */; }; - 6BDA2BC21E394076C2E58E9269F4AABD /* SchedulerType+SharedSequence.swift in Sources */ = {isa = PBXBuildFile; fileRef = 495812E6EEB9BFC5FBAD933FB325C0BE /* SchedulerType+SharedSequence.swift */; }; - 6C1EED16F5E7B9F4BA1698A5D083EC50 /* FormatIndicatedCacheSerializer.swift in Sources */ = {isa = PBXBuildFile; fileRef = FBDDA0D117F42E4FE226978800527457 /* FormatIndicatedCacheSerializer.swift */; }; - 6C5571DAC14E51299671ABC2AF0E1A62 /* Plugin.swift in Sources */ = {isa = PBXBuildFile; fileRef = 07360B313B37C9A5C5310D3E0442D54B /* Plugin.swift */; }; - 6DA16B11139D88B0C3BD21BF65790D34 /* Debounce.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2DAD506D24AC12D48E8C572B4C5B8674 /* Debounce.swift */; }; - 6DB19BEE9C42CBE8101A114524B38CE7 /* NSView+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = FE06975BE3E77F3DFD642DD868FE617D /* NSView+Rx.swift */; }; - 6DFB5C921332D5E14BF251A5ADA46473 /* RxNavigationControllerDelegateProxy.swift in Sources */ = {isa = PBXBuildFile; fileRef = 304C3471BD45700A1BFEFC1877E24B5A /* RxNavigationControllerDelegateProxy.swift */; }; - 6EAC8B6FA2D115DE708A58C601DD25E1 /* Constraint.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8FF51600836B6E9C1393D1B32AE0409F /* Constraint.swift */; }; - 6F803B4767FE50C12E3F0402DC0A3BE5 /* PriorityQueue.swift in Sources */ = {isa = PBXBuildFile; fileRef = C33F711F76B40DF65DA404994ED241BA /* PriorityQueue.swift */; }; - 71D07A691D1D78FD8B421B127CE7496B /* Image.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4DB0FE9FA272BBF1E359F79E2FE6B469 /* Image.swift */; }; - 71E6B1C3D8711A083F76B6D3C0D561B6 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6A1970A14C2672638850C555C17ADE89 /* Foundation.framework */; }; - 7212ACC786B61C86DE7EBED50CC29FD5 /* MoyaProvider+Internal.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0764DAF106A0E6A03874313AD80FDDB7 /* MoyaProvider+Internal.swift */; }; - 729183886B27549C5B666CC3F5C1B495 /* Infallible+CombineLatest+arity.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7D131FE518C0CECBEA619AA8A5490197 /* Infallible+CombineLatest+arity.swift */; }; - 72EE3F69E6154EF5C5524DE4F4EE0B5C /* Queue.swift in Sources */ = {isa = PBXBuildFile; fileRef = 29CBD6F8B67F5629CFB1D1326F23E28A /* Queue.swift */; }; - 72FCE0D3F5EA7EB908C108DFD468B267 /* RxCollectionViewDataSourcePrefetchingProxy.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8D02F219043B80DB62FA686E85C09B35 /* RxCollectionViewDataSourcePrefetchingProxy.swift */; }; - 731C34C22800D5F0AF417E801D3409B0 /* SessionDataTask.swift in Sources */ = {isa = PBXBuildFile; fileRef = B2958A0E6033229331C79C4CD02FB145 /* SessionDataTask.swift */; }; - 732C29255F73EF3D83D49BD4F8FEAA8F /* MultipartUpload.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7CFEE4BC9AEF52579A20AF4717B3205C /* MultipartUpload.swift */; }; - 737747B9A98257DB58112C3A23686669 /* MultipartFormData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 215B8518AD4396707F88E578B313121F /* MultipartFormData.swift */; }; - 753A064C58BBF2D833F709412D9E9FE3 /* Platform.Darwin.swift in Sources */ = {isa = PBXBuildFile; fileRef = FA88BA483915DE8B6B9D5D7B9A4AAE90 /* Platform.Darwin.swift */; }; - 7542BDA803F84EC71005AE526659436A /* Observable+Concurrency.swift in Sources */ = {isa = PBXBuildFile; fileRef = 10DF3559568462A634A6F7EE6FFBCA00 /* Observable+Concurrency.swift */; }; - 761DF0256CBB0CA4506580DFBB612194 /* KingfisherManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0292DCF642DD7EA1D1116B8623A8C599 /* KingfisherManager.swift */; }; - 76374B984BAD760575C5223FEC2C6FC1 /* MoyaError.swift in Sources */ = {isa = PBXBuildFile; fileRef = A3CC4FE478601A48919D7092CBFF414A /* MoyaError.swift */; }; - 768A33DCEB41CBC5C7ECF5F0220B1A97 /* SharedSequence+Concurrency.swift in Sources */ = {isa = PBXBuildFile; fileRef = 191A401108B388D3700F7B69157F58FA /* SharedSequence+Concurrency.swift */; }; - 76F608B4608884FCB00256FEF79A61E3 /* SynchronizedDisposeType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 537DF163C75C79892595630BC3CBA09F /* SynchronizedDisposeType.swift */; }; - 77AB6AF4BFC6DE016DA7C057B5799C84 /* ServerTrustEvaluation.swift in Sources */ = {isa = PBXBuildFile; fileRef = CCF0B72B35A6BCD96CBC1A3F6A6ED7B4 /* ServerTrustEvaluation.swift */; }; - 77F109FA3951C23E7F0E7A4F5581F488 /* MoyaProvider+Defaults.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4189EEA5194A0B67B0929125B7D8F3B9 /* MoyaProvider+Defaults.swift */; }; - 78079FE3271F118CE83CFD8D5E4F8C21 /* TransformOf.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8DA1B7070D9B7E6489E50762BA7CC29B /* TransformOf.swift */; }; - 782082D9F5529E63F249E8811BA6FD10 /* RxPickerViewDataSourceProxy.swift in Sources */ = {isa = PBXBuildFile; fileRef = E3F3D140901AD39649AC074216CAC836 /* RxPickerViewDataSourceProxy.swift */; }; - 78B1DD1219182494A6AFAD26AAB20AA6 /* Concurrency.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4B2092F7A452FCAC892734476E6676E3 /* Concurrency.swift */; }; - 78EB4944F6EE0CF299F715B7340E19AB /* Empty.swift in Sources */ = {isa = PBXBuildFile; fileRef = 25CF572152EDEF89E43D914242F08BE0 /* Empty.swift */; }; - 798C7D29511D498BDB7BEC4996708557 /* Configuration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7430E48DEB35987DD064EE0D7363953F /* Configuration.swift */; }; - 79AB21FCF882EB4FC9DD5F111C2F53D3 /* Moya-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 2CCCFEF676D5297ACAAB23C1A5CB7CAE /* Moya-dummy.m */; }; - 79C7D4E9901AA11C25F8C71F3E9DF612 /* Properties.swift in Sources */ = {isa = PBXBuildFile; fileRef = A3821293C89F3E60BD6231B1E48974A1 /* Properties.swift */; }; - 79F3A6E62579CE8906D3DA8B984347CC /* Using.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7FA5EF7CC85AF8D7A9C4307E6247274B /* Using.swift */; }; - 7B81980B63BBD77A851BCD01FF160D44 /* HistoricalSchedulerTimeConverter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 913295D3902A731E0FEF7891F2DFFD66 /* HistoricalSchedulerTimeConverter.swift */; }; - 7BA5D9B38DAEDD6A5166ECF2A498D194 /* RxCollectionViewDataSourceType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8898277C74B39B8C2709D3BDFF6C793E /* RxCollectionViewDataSourceType.swift */; }; - 7C9C0D2AB5BB6670928CC95B4DA46814 /* RxSearchBarDelegateProxy.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3F5105C63B26C8CD36ECD3E4D25A4DFC /* RxSearchBarDelegateProxy.swift */; }; - 7CB4D382650A1BB458B68BF3B39FE27D /* AnyEncodable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 045D5D90782798F36E8E8F973DAC5B28 /* AnyEncodable.swift */; }; - 7D64BC3E6CAA4AB54EAC0AAADE93F578 /* OperationQueue+Alamofire.swift in Sources */ = {isa = PBXBuildFile; fileRef = F63084A32C04D39192F17E5B2082033C /* OperationQueue+Alamofire.swift */; }; - 7D9031DCB898CD9DE37C4BD4F3FC550D /* DateFormatterTransform.swift in Sources */ = {isa = PBXBuildFile; fileRef = DEA6B630488DF0930202C22D36F757CB /* DateFormatterTransform.swift */; }; - 7E29FFE700C1C3AC047E58CC1E8EA468 /* SubscriptionDisposable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4E71EDCC1B6F580E01E54903C36737EB /* SubscriptionDisposable.swift */; }; - 7E313C5665BD42F0877BFD2CEBBD82CE /* URL+Moya.swift in Sources */ = {isa = PBXBuildFile; fileRef = 87AD720C8F2A51587F1C491E884DB664 /* URL+Moya.swift */; }; - 80C4B7E883C94E18102938F43B0EF240 /* ImageView+Kingfisher.swift in Sources */ = {isa = PBXBuildFile; fileRef = B35DC4FCD2EEF00AF73453F41872FF54 /* ImageView+Kingfisher.swift */; }; - 80D1BF4CD8C1A9EF7DA5012AAAE4D988 /* KFImageRenderer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 11D7747447E5C511F9D8307F10E5168C /* KFImageRenderer.swift */; }; - 80F0B9ABC3E9D190B7A3C755A903EF54 /* Concat.swift in Sources */ = {isa = PBXBuildFile; fileRef = A54253F4F6876CCFC845DA722D6C8CE8 /* Concat.swift */; }; - 810421CBB613D2EA65E39D66C98C1B5A /* Generate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 591861115B56C34EE893545E4F44ECE0 /* Generate.swift */; }; - 81148E8E0935476F92B10881A023D0DC /* ControlTarget.swift in Sources */ = {isa = PBXBuildFile; fileRef = EF5F5DC6C61E0C786AA3BA02874662A1 /* ControlTarget.swift */; }; - 817B896013FD56C04CD26E2F6C67EA7E /* NSTextAttachment+Kingfisher.swift in Sources */ = {isa = PBXBuildFile; fileRef = F098DF51276D641070E6E01539D4B986 /* NSTextAttachment+Kingfisher.swift */; }; - 81E4CCFEB1307757E98744344B75B9FB /* RequestModifier.swift in Sources */ = {isa = PBXBuildFile; fileRef = F9E3641046F777BA820AB2055AA51792 /* RequestModifier.swift */; }; - 81E6A0FF7F286008345ECFA3A2103FA8 /* Alamofire.swift in Sources */ = {isa = PBXBuildFile; fileRef = 220B3F8A303994576980CB9C15199150 /* Alamofire.swift */; }; - 820E300519E853EAC9E09ED6CC71EBDC /* StoryboardBased.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0F2F174FA9B884D41464BD84265273E9 /* StoryboardBased.swift */; }; - 82747E86C0002A1A0BE8467C000C88F9 /* Reduce.swift in Sources */ = {isa = PBXBuildFile; fileRef = C45FE00D96FB11A4BF6998884E30C879 /* Reduce.swift */; }; - 82FD97FBBEFE51E2D3B434AF4954FC93 /* EventMonitor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D85DF2E1C33DB9B470D4EFFB7F4A1FC /* EventMonitor.swift */; }; - 846C97A8C420EFD9B8C4B77ADBB1E8F5 /* TransformType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1CEDEE8EE3D758478549E54DB2D8CB8D /* TransformType.swift */; }; - 84AEE29F4E7DDA962C49D6FAC6044EBC /* RxCocoaObjCRuntimeError+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = A4DBD0A365804120DBE621B87A954E25 /* RxCocoaObjCRuntimeError+Extensions.swift */; }; - 86C39B668AB190EE95464C8AB1E0111A /* Resource.swift in Sources */ = {isa = PBXBuildFile; fileRef = 94B8075CA095FDBA9AE87F86A21B0C30 /* Resource.swift */; }; - 87304D5AF2582C6E7839864112534CBE /* Result.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95AF3FFD5DA43879FFD1FEF529C36275 /* Result.swift */; }; - 8951BE47D18264444C90F76B1695A1D0 /* ObservableType+PrimitiveSequence.swift in Sources */ = {isa = PBXBuildFile; fileRef = 36683A54CDD175D2798404369B19387A /* ObservableType+PrimitiveSequence.swift */; }; - 89EE8751EC67604A80510F131F373127 /* Map.swift in Sources */ = {isa = PBXBuildFile; fileRef = E4E95E8B077E462C80766715ADCA4CF0 /* Map.swift */; }; - 8A7A14267160A9EACDC74A9E21B8F058 /* Image.swift in Sources */ = {isa = PBXBuildFile; fileRef = 002ED0D813882532198DEB9328551828 /* Image.swift */; }; - 8A8AD24A8CE75FBE807EB5A9FC11E62A /* Bag.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDB4D4AEF2A47181ABD692BE53C6DF1A /* Bag.swift */; }; - 8AEE5B74A5BAC274D6589F229D867768 /* UITableView+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9C6E055D8D9B83521DB2D0B74D91A032 /* UITableView+Rx.swift */; }; - 8BE63006C33671D8617303C1FBDF4AD0 /* Just.swift in Sources */ = {isa = PBXBuildFile; fileRef = B4C8D32181C1DD0673EF71FC021C399D /* Just.swift */; }; - 8C3394695CB4CCECD873D1384F4BA076 /* Export.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6009157C9973464C53AFA7E068E984F7 /* Export.swift */; }; - 8CD5DE204C3C5F6557878ADE2675A406 /* HelpingMapper.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1BBE63969630CA64CDD14AE518F9ED70 /* HelpingMapper.swift */; }; - 8D72B695C7EF0186A0C0F1A18F944880 /* PropertyInfo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 477447EAA52D7E8C1E3C05F2DD47F9B1 /* PropertyInfo.swift */; }; - 8E698F134A953250D5834C8B83CDAD34 /* DispatchQueue+Alamofire.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7E97E1D4DF8BFA3FE2C603D6B934D9D2 /* DispatchQueue+Alamofire.swift */; }; - 8E6F33205BF126E6DECF929A32A98869 /* Never.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4F5800717EBB5879045C06670DA4C8AC /* Never.swift */; }; - 8E778C0090C85DDB5290B07143FFD917 /* Filter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 590615ED68A80BD1EF1DBF8F477F1B12 /* Filter.swift */; }; + 5D36B99F3CAB1FC7337082D9581FECA6 /* Debugging.swift in Sources */ = {isa = PBXBuildFile; fileRef = 891BB23A8DD867FACFFAF5B22DFDF56E /* Debugging.swift */; }; + 5D7DB7B34B4C3F708EB593AF3B5C7F67 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6A1970A14C2672638850C555C17ADE89 /* Foundation.framework */; }; + 5D8B42D24D9D57EDEE86986497BA25AF /* InfiniteSequence.swift in Sources */ = {isa = PBXBuildFile; fileRef = E6FE525FF43934A9EF0A2F369F4CFAC2 /* InfiniteSequence.swift */; }; + 5DA9C5E832DFF6135D757D326AFB79D6 /* Map.swift in Sources */ = {isa = PBXBuildFile; fileRef = 178BE4DDDDC57D9E204C896C50DF833F /* Map.swift */; }; + 5DBB211037D712A6A0A33C51456C638A /* Infallible+Zip+arity.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3DE4961B99785332E30F42CC8EB4E2DC /* Infallible+Zip+arity.swift */; }; + 5EBC224DDA3EC6CCE8C42EED6063FD35 /* ImageProgressive.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7FBB73CDBFC8CDA1A40ECB0C4AB27841 /* ImageProgressive.swift */; }; + 5EE20DB81D6F720C853B641619EAF0B6 /* Completable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8989281DFD82465C56C11FA4FA6108AD /* Completable.swift */; }; + 600B0431415616483ADFA292D48B754E /* ScheduledDisposable.swift in Sources */ = {isa = PBXBuildFile; fileRef = BD9DA75620D3E2DB804A112BCAA0DBF5 /* ScheduledDisposable.swift */; }; + 604D3C93C17978C23600EC415949AB64 /* ConstraintInsets.swift in Sources */ = {isa = PBXBuildFile; fileRef = CC41093A359C57FEC27213A32557E60F /* ConstraintInsets.swift */; }; + 6066DF8EBAAF4EAD3A904AFF921C3CBB /* ImageDataProcessor.swift in Sources */ = {isa = PBXBuildFile; fileRef = D86CFE6F415E2AB61916500BF1777A86 /* ImageDataProcessor.swift */; }; + 608DC0C8110DDFF5D8E5A43BB48A6A86 /* UISlider+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9493AECC1368AB403C436652FD76779D /* UISlider+Rx.swift */; }; + 611CEF7FF1EF9EA1BCEF6C73EEE3ACCF /* ConstraintLayoutGuide.swift in Sources */ = {isa = PBXBuildFile; fileRef = 41491929AE0B59666CA9824E3700BD2E /* ConstraintLayoutGuide.swift */; }; + 6159628D93CC097B3683FBB6E383EEB3 /* Infallible+Concurrency.swift in Sources */ = {isa = PBXBuildFile; fileRef = E756E5BB90F20E7F2836EB665424DED4 /* Infallible+Concurrency.swift */; }; + 6185C40F38B67CF4487629C9167889D1 /* Utils.swift in Sources */ = {isa = PBXBuildFile; fileRef = AC486D0BBA80C60E2C371E8881B1EFB2 /* Utils.swift */; }; + 61EB40AB5F1BB5E6FDC8C5CDE06C3DE9 /* RxPickerViewDataSourceType.swift in Sources */ = {isa = PBXBuildFile; fileRef = D2653695D1C807B2D2551C8FB25010C9 /* RxPickerViewDataSourceType.swift */; }; + 61FCA0616CE6512DCA67D74562D6EA1D /* ReflectionHelper.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5FDA5E220B7A16114705F3FE95ADEB23 /* ReflectionHelper.swift */; }; + 620CAA943303A257C2B10427AF2BB338 /* Take.swift in Sources */ = {isa = PBXBuildFile; fileRef = A01F17CA57F264DA5CB797C94ECFBFD7 /* Take.swift */; }; + 625F92130284B464BE682122C39ADC35 /* DisposeBase.swift in Sources */ = {isa = PBXBuildFile; fileRef = ECBA1AF036FE57E1D0C22CFC2D2C9AA1 /* DisposeBase.swift */; }; + 62C1A489E5C6414819815F3219B52FE8 /* URLTransform.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3396E3FD8A4F78E500752C9FD423D4C4 /* URLTransform.swift */; }; + 62CA2784A4C3E922CE6DA1F48FDAAC0D /* ObservableType+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = D9BB0947A7AE31EA2B8C9D699BCE442E /* ObservableType+Extensions.swift */; }; + 62E2AE9505A0A1E265CD062AF56EAA03 /* Infallible.swift in Sources */ = {isa = PBXBuildFile; fileRef = C54A185423B2B26F7B189D29730CAE61 /* Infallible.swift */; }; + 636AE6329BEA18CD56A5B058E2C881C9 /* Zip+arity.swift in Sources */ = {isa = PBXBuildFile; fileRef = FECF71053F4B7A6E457DA1D583768776 /* Zip+arity.swift */; }; + 643A7AFFB7AEB70B2B9B7E0926055023 /* RetryPolicy.swift in Sources */ = {isa = PBXBuildFile; fileRef = B7ED0AD4DB118F9A11F8A022912A2C7B /* RetryPolicy.swift */; }; + 64FF933E8B83FBF1EDD84E509BD2CA77 /* SynchronizedOnType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3F16ACF2D5C26A2D4DE234E6A8C7A48F /* SynchronizedOnType.swift */; }; + 654D9C29A846E7ED4DD5BF0BFC8D64B8 /* UISwitch+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = 503238E19CB138CABE150E1CB3A5374E /* UISwitch+Rx.swift */; }; + 660E73ECB1E50185B9D21BAA127DC3A0 /* UIRefreshControl+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = D4A4E4F19AF294A1D4F2D4BC4F769B32 /* UIRefreshControl+Rx.swift */; }; + 66411B211AAEB0C4DB6491A8AED6FEAF /* WKInterfaceImage+Kingfisher.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1439B673FB05A03E7B7E02DFD72E71D0 /* WKInterfaceImage+Kingfisher.swift */; }; + 667FA1FBFA2A0CA7A8E56958F705063E /* InvocableType.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF2D19394AB19510A2247A7E9082CEEB /* InvocableType.swift */; }; + 67B10FEAA3B7E5387D20E76B1085E94D /* URLSessionConfiguration+Alamofire.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4AC772523424F6E978DBA32038CFABCB /* URLSessionConfiguration+Alamofire.swift */; }; + 67E941CADB3CDDEEDF8CE4EE4A4A05BB /* MBProgressHUD.h in Headers */ = {isa = PBXBuildFile; fileRef = 06DFC1DD89D70D6B98C5BC9EC418AA53 /* MBProgressHUD.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 68AF5CE54DF91D0EA6E1DD02432DCB0A /* Placeholder.swift in Sources */ = {isa = PBXBuildFile; fileRef = EF0027BBA07105D44F14C69C3E249A16 /* Placeholder.swift */; }; + 6927E0A61FCF762B43C75325110C3D77 /* Infallible+Bind.swift in Sources */ = {isa = PBXBuildFile; fileRef = DC1B01CE2D3C9033BD4A3FCFBCE68E9A /* Infallible+Bind.swift */; }; + 69657DEC11BB7E4F9F5B6DE8E1148B3E /* _RXObjCRuntime.h in Headers */ = {isa = PBXBuildFile; fileRef = 54BE630532FAC36AF8CA970B716390DF /* _RXObjCRuntime.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 69D07BBB6641693C30C1D2A3774F6721 /* GraphicsContext.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8CD1B580C9C0101E40FA9EBD90B8AFAD /* GraphicsContext.swift */; }; + 69DE75BA185BBAB5FDAA28321F3C849F /* ConstraintItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 102BAF91E1EB63518F37D45A477DD641 /* ConstraintItem.swift */; }; + 69FE518ED5298543E204E1509D30952A /* KF.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8F00C3B7BB283013813E07EE2B6A61BF /* KF.swift */; }; + 6AC1B881BB319C89AD023A02CDC8FC3D /* ConstraintLayoutGuide+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43652B2DDB3366769FD0266CDC2F4D8C /* ConstraintLayoutGuide+Extensions.swift */; }; + 6BD6A6695D05908524545A776D4C36B9 /* ImageDataProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4E97863139CB6E7C08BDC69AD152C6B0 /* ImageDataProvider.swift */; }; + 6BDA2BC21E394076C2E58E9269F4AABD /* SchedulerType+SharedSequence.swift in Sources */ = {isa = PBXBuildFile; fileRef = 971B12D8DAD57B9C0CD67715AF1A2709 /* SchedulerType+SharedSequence.swift */; }; + 6C1EED16F5E7B9F4BA1698A5D083EC50 /* FormatIndicatedCacheSerializer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2C2707D7BC93E582CF0CEBC96CEFA74A /* FormatIndicatedCacheSerializer.swift */; }; + 6C5571DAC14E51299671ABC2AF0E1A62 /* Plugin.swift in Sources */ = {isa = PBXBuildFile; fileRef = C666280F2BC5552707A2F0DDCF8CF403 /* Plugin.swift */; }; + 6C8817D2B9C500F56412FC269573D03E /* StartWith.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4AAD522335F458B3E36AB629E5EE5D10 /* StartWith.swift */; }; + 6DB19BEE9C42CBE8101A114524B38CE7 /* NSView+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0160BDC3EB8B8E1F24F1C231DD0170F6 /* NSView+Rx.swift */; }; + 6DFB5C921332D5E14BF251A5ADA46473 /* RxNavigationControllerDelegateProxy.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF350D2B11D5C3D8C1ABA31691E2A505 /* RxNavigationControllerDelegateProxy.swift */; }; + 6EAC8B6FA2D115DE708A58C601DD25E1 /* Constraint.swift in Sources */ = {isa = PBXBuildFile; fileRef = 10B622DDF8C2ABA8EC74EEA0B9C93A7D /* Constraint.swift */; }; + 6F803B4767FE50C12E3F0402DC0A3BE5 /* PriorityQueue.swift in Sources */ = {isa = PBXBuildFile; fileRef = D24A5830A6FE8C50CEFC970D54052EB4 /* PriorityQueue.swift */; }; + 6F9A363E934866CE611303879B3AE85F /* TakeLast.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9CE1DBCF62BAFD642139E7EB9B585091 /* TakeLast.swift */; }; + 71932F720AF55B42771534F4C1041BBB /* Completable+AndThen.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37235A5B924CDEB3D6C61B8124D9D393 /* Completable+AndThen.swift */; }; + 71D07A691D1D78FD8B421B127CE7496B /* Image.swift in Sources */ = {isa = PBXBuildFile; fileRef = 987ABDCE9F23E9D217AD38F146E4CB10 /* Image.swift */; }; + 7212ACC786B61C86DE7EBED50CC29FD5 /* MoyaProvider+Internal.swift in Sources */ = {isa = PBXBuildFile; fileRef = CDA8C7742762C3B7BB46EB42B0E8F088 /* MoyaProvider+Internal.swift */; }; + 721B4BF2D6B4FFF95C4950F05B9F13C9 /* Debug.swift in Sources */ = {isa = PBXBuildFile; fileRef = C51D1220E0DE4651C911E69AE36EBD61 /* Debug.swift */; }; + 7265BBDB5713757F3888B56AC96269F9 /* ConcurrentMainScheduler.swift in Sources */ = {isa = PBXBuildFile; fileRef = B9D5C32CADBAFCD3669A4CA9D7481B93 /* ConcurrentMainScheduler.swift */; }; + 72A860533A0764790667A6C9919552D2 /* Do.swift in Sources */ = {isa = PBXBuildFile; fileRef = 15253BA385640332852445D8AA76FA5E /* Do.swift */; }; + 72EE3F69E6154EF5C5524DE4F4EE0B5C /* Queue.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5D9D37A063544BC1FE91BF7860920A13 /* Queue.swift */; }; + 72FCE0D3F5EA7EB908C108DFD468B267 /* RxCollectionViewDataSourcePrefetchingProxy.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7663B82993DFABAB2F4B389A8FB5C048 /* RxCollectionViewDataSourcePrefetchingProxy.swift */; }; + 731C34C22800D5F0AF417E801D3409B0 /* SessionDataTask.swift in Sources */ = {isa = PBXBuildFile; fileRef = 867F7AC7C1DAA6563D03B85F8792F0D2 /* SessionDataTask.swift */; }; + 732C29255F73EF3D83D49BD4F8FEAA8F /* MultipartUpload.swift in Sources */ = {isa = PBXBuildFile; fileRef = 126BBAC0881E93CE9DD61E7ACE696606 /* MultipartUpload.swift */; }; + 737747B9A98257DB58112C3A23686669 /* MultipartFormData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 67C1A304B2A6499FF25762F1D9A8C934 /* MultipartFormData.swift */; }; + 745942D7C7F8D1EF271AA1978387364B /* ReplaySubject.swift in Sources */ = {isa = PBXBuildFile; fileRef = DEC311ABC4CB7755878BF3395D0D038F /* ReplaySubject.swift */; }; + 74D263F22C5075D04C3E2BAD605C24C9 /* Repeat.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD212364A39920E5CF66E4E7EACD6905 /* Repeat.swift */; }; + 75AA62779CA4BC0A2B54E18A90B6B21D /* Errors.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0AC7740E93EFA65D1A194E2E4DD35984 /* Errors.swift */; }; + 761DF0256CBB0CA4506580DFBB612194 /* KingfisherManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = E1AB5743647FBCA4208C1A659B52012D /* KingfisherManager.swift */; }; + 76374B984BAD760575C5223FEC2C6FC1 /* MoyaError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3FC888A9DBD325CD3A356153EE825663 /* MoyaError.swift */; }; + 768A33DCEB41CBC5C7ECF5F0220B1A97 /* SharedSequence+Concurrency.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9A443EFC304DBF7C56799E9938EEF73E /* SharedSequence+Concurrency.swift */; }; + 77AB6AF4BFC6DE016DA7C057B5799C84 /* ServerTrustEvaluation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 854DA502ABB6C02A98EE3953D927CBAF /* ServerTrustEvaluation.swift */; }; + 77F109FA3951C23E7F0E7A4F5581F488 /* MoyaProvider+Defaults.swift in Sources */ = {isa = PBXBuildFile; fileRef = BEB49B7DBACBB2DE7681100F59C92E91 /* MoyaProvider+Defaults.swift */; }; + 78079FE3271F118CE83CFD8D5E4F8C21 /* TransformOf.swift in Sources */ = {isa = PBXBuildFile; fileRef = C542F39E93EE6DDBE3B1FBC107902524 /* TransformOf.swift */; }; + 782082D9F5529E63F249E8811BA6FD10 /* RxPickerViewDataSourceProxy.swift in Sources */ = {isa = PBXBuildFile; fileRef = B34AEF61AF6C1954E444558440E52BAB /* RxPickerViewDataSourceProxy.swift */; }; + 783766B3CC003125786CECE51E20DD54 /* Cancelable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 972FD799761051BD9F30028901FFE2D9 /* Cancelable.swift */; }; + 786E83A679FFB395C5EE432ACDDBB663 /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = 88BF5A084E87427DB713808039C3B9E9 /* PrivacyInfo.xcprivacy */; }; + 78B1DD1219182494A6AFAD26AAB20AA6 /* Concurrency.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0F3660AA3ED8785C700E05C1D4CB48A0 /* Concurrency.swift */; }; + 790DD7DB2D45C00C26EA15E0DF744322 /* NSObject+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = ADC9656B5BF0759C69463F58CFE2FEDC /* NSObject+Rx.swift */; }; + 7931A808A0184B210B70945E2149EFC1 /* Observable+Concurrency.swift in Sources */ = {isa = PBXBuildFile; fileRef = 805828D55129E6EE681F5A33AA93653C /* Observable+Concurrency.swift */; }; + 798C7D29511D498BDB7BEC4996708557 /* Configuration.swift in Sources */ = {isa = PBXBuildFile; fileRef = FD70F140A41DC88D730A21E3BF31BDFF /* Configuration.swift */; }; + 79A353C7AC79BDB7BD95F687464A9E28 /* WithLatestFrom.swift in Sources */ = {isa = PBXBuildFile; fileRef = CD81B21F95DE13DB23F7B642F80EAF3D /* WithLatestFrom.swift */; }; + 79AB21FCF882EB4FC9DD5F111C2F53D3 /* Moya-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 80F3E3063C287702E72AA4964AEC41DD /* Moya-dummy.m */; }; + 79C7D4E9901AA11C25F8C71F3E9DF612 /* Properties.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA9FC32738C9D5E323D868E7A799826F /* Properties.swift */; }; + 7A19453906B6FA55169A2A02131E9875 /* SerialDisposable.swift in Sources */ = {isa = PBXBuildFile; fileRef = A64B04E4E10E94CA896446DD8D0B52A7 /* SerialDisposable.swift */; }; + 7AA4EB9FDD9E650BCA8546CA218B5EA3 /* AnonymousObserver.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5282835C10E3DDCB84C4EDCA95B66570 /* AnonymousObserver.swift */; }; + 7BA5D9B38DAEDD6A5166ECF2A498D194 /* RxCollectionViewDataSourceType.swift in Sources */ = {isa = PBXBuildFile; fileRef = E346F2FEC081E7D04E06DDDFE37D9C31 /* RxCollectionViewDataSourceType.swift */; }; + 7C37C4D053EA08CA507F89F10FCA97F0 /* Using.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3F0ADD4CACEAF1922058DC8D7BCAF276 /* Using.swift */; }; + 7C9C0D2AB5BB6670928CC95B4DA46814 /* RxSearchBarDelegateProxy.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E52E6D3D1B60B8D401E9BC11B0D0138 /* RxSearchBarDelegateProxy.swift */; }; + 7CB4D382650A1BB458B68BF3B39FE27D /* AnyEncodable.swift in Sources */ = {isa = PBXBuildFile; fileRef = E6BE85A9F49A4855D5FF72A06664152B /* AnyEncodable.swift */; }; + 7D2CA323BF9CDCED10FD04FCFD92EF2E /* SubjectType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 59D764B99FEF1C8EAB4FAE34D802254E /* SubjectType.swift */; }; + 7D64BC3E6CAA4AB54EAC0AAADE93F578 /* OperationQueue+Alamofire.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6CCFA1427BCBC6BEF685E59C2D078B50 /* OperationQueue+Alamofire.swift */; }; + 7D9031DCB898CD9DE37C4BD4F3FC550D /* DateFormatterTransform.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7397385F7C73F2166AA3C6A0ABA53CCE /* DateFormatterTransform.swift */; }; + 7E313C5665BD42F0877BFD2CEBBD82CE /* URL+Moya.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9ED9E851B887A10042176A16A8EAD44B /* URL+Moya.swift */; }; + 7E9E6A3497E776A6BFB7C6BC6D26944B /* PrimitiveSequence+Zip+arity.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5318A43EFBD28DC81CEED3CDEB871ABF /* PrimitiveSequence+Zip+arity.swift */; }; + 7F6057B63D8F4105069F095840210BE9 /* SwiftSupport.swift in Sources */ = {isa = PBXBuildFile; fileRef = 779D7401084506CD62E6CAA039E5CA6A /* SwiftSupport.swift */; }; + 804C6B756FF1108C9801AFF1CE0188DE /* DefaultIfEmpty.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF261538555506668246F4EC68BFA022 /* DefaultIfEmpty.swift */; }; + 80965B906B13E7FB49C907EBB06C6C4F /* PriorityQueue.swift in Sources */ = {isa = PBXBuildFile; fileRef = ED28EE01309B97FE2EB665B34E784772 /* PriorityQueue.swift */; }; + 80A85B1CEAC54DA784A029228941DF71 /* CombineLatest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E1A6B38D65DA7312685F61ED10C9517 /* CombineLatest.swift */; }; + 80C4B7E883C94E18102938F43B0EF240 /* ImageView+Kingfisher.swift in Sources */ = {isa = PBXBuildFile; fileRef = A0BE6850E95EC6D542C436671F620A95 /* ImageView+Kingfisher.swift */; }; + 80D1BF4CD8C1A9EF7DA5012AAAE4D988 /* KFImageRenderer.swift in Sources */ = {isa = PBXBuildFile; fileRef = F6A2EF3587DCD8E2A3C1D9F246BAD154 /* KFImageRenderer.swift */; }; + 81148E8E0935476F92B10881A023D0DC /* ControlTarget.swift in Sources */ = {isa = PBXBuildFile; fileRef = 029DD43B88E15C10495709D19F72F255 /* ControlTarget.swift */; }; + 817B896013FD56C04CD26E2F6C67EA7E /* NSTextAttachment+Kingfisher.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6B927F78FBFEF3310D9A4D0AAE0B0848 /* NSTextAttachment+Kingfisher.swift */; }; + 81E4CCFEB1307757E98744344B75B9FB /* RequestModifier.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6B491B22EBB6C0EEA1AA35668A5B9771 /* RequestModifier.swift */; }; + 81E6A0FF7F286008345ECFA3A2103FA8 /* Alamofire.swift in Sources */ = {isa = PBXBuildFile; fileRef = 63B22F3856B36B6A2522DB57EACF0E7E /* Alamofire.swift */; }; + 820E300519E853EAC9E09ED6CC71EBDC /* StoryboardBased.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA8432760419A0907C9472A6D4440832 /* StoryboardBased.swift */; }; + 82FD97FBBEFE51E2D3B434AF4954FC93 /* EventMonitor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 05448EE1CD5430DBD9EE0F232E4FF340 /* EventMonitor.swift */; }; + 83B7973D15DE179FFF9EFE1FBDAAA5D5 /* Buffer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5D3B7BB5854217DBA4EC2E013790589F /* Buffer.swift */; }; + 83BED922C4A3EA7ACC4E314361940ACF /* Pods-yinmeng-ios-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 9B3AF9BB0F7EB5558031DD21AD2F86CC /* Pods-yinmeng-ios-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 83EA91EFE500ACB0FB39D0DB57A2523B /* WithUnretained.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6ACFAFC715F32B242C0105DFBD71DCD2 /* WithUnretained.swift */; }; + 846C97A8C420EFD9B8C4B77ADBB1E8F5 /* TransformType.swift in Sources */ = {isa = PBXBuildFile; fileRef = E6F928FF402786D74E3A6D837708D4F2 /* TransformType.swift */; }; + 84AEE29F4E7DDA962C49D6FAC6044EBC /* RxCocoaObjCRuntimeError+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = CEE56EB1F6863DFA466860E91716ACC2 /* RxCocoaObjCRuntimeError+Extensions.swift */; }; + 8521832472A2732E061B06D0A16A9A97 /* TakeWithPredicate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4B432ADCCF45D2F06C6A44A350B8981F /* TakeWithPredicate.swift */; }; + 852B713A5AD8151B146DFDC503FDBD53 /* ToArray.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F9971F0EEDB942DE07E15B2369A9534 /* ToArray.swift */; }; + 857B409FAE3BBE1B3B68362E0510ADAC /* Multicast.swift in Sources */ = {isa = PBXBuildFile; fileRef = 14CE20C13CFA6A48A0A27244C1052417 /* Multicast.swift */; }; + 86C39B668AB190EE95464C8AB1E0111A /* Resource.swift in Sources */ = {isa = PBXBuildFile; fileRef = 67CE3AEB4FEDAFD9D12E456804298A1B /* Resource.swift */; }; + 87304D5AF2582C6E7839864112534CBE /* Result.swift in Sources */ = {isa = PBXBuildFile; fileRef = F1EDD07C51A918C584FBEA9C681D495D /* Result.swift */; }; + 879B1179CFF8CB6E0395704CDC863DCB /* BooleanDisposable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5643C9FE3B2DD478AC0DDC415BA749A3 /* BooleanDisposable.swift */; }; + 881E066A5872EBFA54CE48265DD13C5A /* ObservableConvertibleType+Infallible.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74B16913E0CE00E4C26B492DE4863FCB /* ObservableConvertibleType+Infallible.swift */; }; + 888C9E9AA154C630AE69E10D5A56AB95 /* SchedulerType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0335780FBC4E8A5662B698341536C915 /* SchedulerType.swift */; }; + 8A5AB956CCD3F604AB6C7FAB8D2AA76B /* TailRecursiveSink.swift in Sources */ = {isa = PBXBuildFile; fileRef = 56E4465E500411A8D465BAACA756B3E3 /* TailRecursiveSink.swift */; }; + 8A7A14267160A9EACDC74A9E21B8F058 /* Image.swift in Sources */ = {isa = PBXBuildFile; fileRef = DEFFE158B59848DCB356E5A47368D145 /* Image.swift */; }; + 8A8AD24A8CE75FBE807EB5A9FC11E62A /* Bag.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8DB50915A05E4C0612B30E266B639416 /* Bag.swift */; }; + 8AA504CD9C7D8939D061376309ED11F4 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6A1970A14C2672638850C555C17ADE89 /* Foundation.framework */; }; + 8AEE5B74A5BAC274D6589F229D867768 /* UITableView+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3043A3D0D99BB6BF9070B060B243CCB /* UITableView+Rx.swift */; }; + 8C3394695CB4CCECD873D1384F4BA076 /* Export.swift in Sources */ = {isa = PBXBuildFile; fileRef = FD6AC3A8B3333B1457F3E81E148A79D4 /* Export.swift */; }; + 8CD5DE204C3C5F6557878ADE2675A406 /* HelpingMapper.swift in Sources */ = {isa = PBXBuildFile; fileRef = BEB85D3B26062C7D22EFC3C18796B7A9 /* HelpingMapper.swift */; }; + 8D72B695C7EF0186A0C0F1A18F944880 /* PropertyInfo.swift in Sources */ = {isa = PBXBuildFile; fileRef = F1B7EEF4A20D9F7AD75570A99658C1F4 /* PropertyInfo.swift */; }; + 8E698F134A953250D5834C8B83CDAD34 /* DispatchQueue+Alamofire.swift in Sources */ = {isa = PBXBuildFile; fileRef = 378E73C013F3E7A63685D3EC6675D746 /* DispatchQueue+Alamofire.swift */; }; + 8E778C0090C85DDB5290B07143FFD917 /* Filter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EB7321B3C92137653B3779354AB496A /* Filter.swift */; }; 8E85763AE29BEF0A46EE875B8F069E8E /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6A1970A14C2672638850C555C17ADE89 /* Foundation.framework */; }; - 8F1CD0744791BEC18F73D6FF3A150090 /* TailRecursiveSink.swift in Sources */ = {isa = PBXBuildFile; fileRef = 64576C6FC886A417A4683A9816DA5D4F /* TailRecursiveSink.swift */; }; - 90585B3B5526DB8ECBD1AB8EF2C4D5A2 /* UISegmentedControl+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2B71FB79E7C0B7102E8EF89E2C326862 /* UISegmentedControl+Rx.swift */; }; - 924E2F405AE00EDF695B3D926EB6BB1A /* OperationQueueScheduler.swift in Sources */ = {isa = PBXBuildFile; fileRef = C909B32972D2D22DB9AE521E98C47040 /* OperationQueueScheduler.swift */; }; - 92B3198E1EBE2EC545BB36AF6A9CC368 /* MemoryStorage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5DE5F4C9535F3ECFDE536AF77F583A78 /* MemoryStorage.swift */; }; - 9426B0386E4DC02F4E347A457C39144A /* NetworkActivityPlugin.swift in Sources */ = {isa = PBXBuildFile; fileRef = 615C9F76DEEA89A8A3638328942C191B /* NetworkActivityPlugin.swift */; }; - 946AABD244DF0FA4F9BE1A018AF02D44 /* Take.swift in Sources */ = {isa = PBXBuildFile; fileRef = B2301559B216DC943D96B6C3EA6187EE /* Take.swift */; }; - 95563637A4972EEA70958AC205B9D88A /* TargetType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 91834F0831C28901ECD936CE6E242605 /* TargetType.swift */; }; - 956ACEDE64971D2B3AE15D1EDAD4AB56 /* DistinctUntilChanged.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFD438AE9A13700F3A27158491EDF9CD /* DistinctUntilChanged.swift */; }; - 95E194A3AABB5407231E898B6686F73E /* ConstraintMakerRelatable+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 763C57CB99AAF692D5804D56D94FE7EA /* ConstraintMakerRelatable+Extensions.swift */; }; - 961B5042F0BFBD2C5FCDCCF40E2EA7CD /* UIButton+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3497648C5E7B80D2ABC218A50A6CA389 /* UIButton+Rx.swift */; }; - 96C658C96E9D8CCC2C450D5615A348AF /* Amb.swift in Sources */ = {isa = PBXBuildFile; fileRef = ED35C12CB343C92F81259E4F33B299B5 /* Amb.swift */; }; - 96D8402B4AFC4AC7349F1B487D6EB08C /* Transformable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1DDD0126DBB77C7B793703E3B7918072 /* Transformable.swift */; }; - 96F9E4762C05BF7B009FA52FC18C18C5 /* NSObject+Rx+RawRepresentable.swift in Sources */ = {isa = PBXBuildFile; fileRef = E8FC0222908D1595E407695DD27A15FB /* NSObject+Rx+RawRepresentable.swift */; }; - 97F63B52ED34F3A5A222C208253462F1 /* Observable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4529DBA9667227E1B099ADC681AB5850 /* Observable.swift */; }; - 98CC71A93BBD481D6C77E99854E65282 /* HistoricalScheduler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 086CC48512270C1C4BB20AE3B7A179F9 /* HistoricalScheduler.swift */; }; - 98F570DA48370453D648BD526FDAAEAA /* LayoutConstraintItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97360AE19AF07AC87B391E1E0C708F18 /* LayoutConstraintItem.swift */; }; - 9930A6A180279D0493FB8DB95BF23C21 /* Moya+Alamofire.swift in Sources */ = {isa = PBXBuildFile; fileRef = D3D2E46D8BE94722DCF2428829BFE1C4 /* Moya+Alamofire.swift */; }; - 9A151985A3D24023E8B2996BF3EBA2BB /* RxCocoa.h in Headers */ = {isa = PBXBuildFile; fileRef = 057D6C489248FFA4166DD24D93435763 /* RxCocoa.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9A3537E0E6B50DE756E96CDB3AD4EDE3 /* MultipartFormData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8AD039748141FD7199964AF985765430 /* MultipartFormData.swift */; }; - 9ADE1DD7C6AD8B57FD158350A66EF8D0 /* SharedSequence+Operators+arity.swift in Sources */ = {isa = PBXBuildFile; fileRef = C22601C0B2814C78512F594A7731DE19 /* SharedSequence+Operators+arity.swift */; }; - 9AE3FEDB17CA68DFCD0BC534B8205E7A /* KFImage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9BAC09FA3F4AA34E2FD9045902942CE8 /* KFImage.swift */; }; - 9C14C583C78E7461369235D895A978B7 /* CPListItem+Kingfisher.swift in Sources */ = {isa = PBXBuildFile; fileRef = C963DD2091D258FD11B459ACF20AF09A /* CPListItem+Kingfisher.swift */; }; - 9C9548E8B4675954566202F7B87FF0E6 /* ConstraintConstantTarget.swift in Sources */ = {isa = PBXBuildFile; fileRef = E7B65070F724AC357CCEA7DBCA350373 /* ConstraintConstantTarget.swift */; }; - 9D798263C35826FDE38859EFF5CC9542 /* Bag+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = 402F4EF7983996E485AA8AD6E305B46D /* Bag+Rx.swift */; }; - 9E02CFFEFE1BEC978B512286F03D31DA /* ConstraintInsetTarget.swift in Sources */ = {isa = PBXBuildFile; fileRef = 45FEC9077C3B5C14B02AB4E46F22E157 /* ConstraintInsetTarget.swift */; }; - 9E8BA4FB802EDCD492DAF618CA7BFCE8 /* SharedSequence.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2B46D1FBCE62A21E03DAB229F57AD114 /* SharedSequence.swift */; }; - 9EED5194D92B5A4B4E81FF9D6D98B7E0 /* StartWith.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3602398BB4B83B59240F9614C1DF5EA4 /* StartWith.swift */; }; - 9F370B3928A333AD7E41680A29B1F051 /* RxCollectionViewReactiveArrayDataSource.swift in Sources */ = {isa = PBXBuildFile; fileRef = E52F3E93B1A3D47F523D83D8473237C0 /* RxCollectionViewReactiveArrayDataSource.swift */; }; - 9FD204AB576F46B2AFA28B4074837ABC /* SerialDispatchQueueScheduler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 154835255F9916E0769C0D71A8A3267C /* SerialDispatchQueueScheduler.swift */; }; - A0208B623442A26CB9157F193CBB4A7F /* Platform.Linux.swift in Sources */ = {isa = PBXBuildFile; fileRef = 06FAB48DA0C18A3EE1754D953DB58E96 /* Platform.Linux.swift */; }; - A03FDA8BC5741880B1EF11AFD248EF48 /* ConstraintOffsetTarget.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1DCDE799B9543F90237D7DA862252A2B /* ConstraintOffsetTarget.swift */; }; - A0E5EC9E431A5BD01C4695BC6AE5DEDA /* ExtendCustomModelType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5096A43515DC7129C76B0F73FC4B6049 /* ExtendCustomModelType.swift */; }; - A12579942726F0D2EC587B8ED74D6253 /* SwiftSupport.swift in Sources */ = {isa = PBXBuildFile; fileRef = 239DDF3AEECE822C3281639FD6546369 /* SwiftSupport.swift */; }; - A20321979D272B922CD60B531BD05F7F /* UIPickerView+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = 96DB504A50F1E4FBCD16D5BC49EFCF0C /* UIPickerView+Rx.swift */; }; - A214A653E430C9079AA7B1090169262D /* UICollectionView+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = D37B24A95EEF2249678FBE363925D312 /* UICollectionView+Rx.swift */; }; - A2A423B6246A35EB8FB11B1924389E05 /* RxMutableBox.swift in Sources */ = {isa = PBXBuildFile; fileRef = DEA1B032D5AF107EC317CDAE847D3CE5 /* RxMutableBox.swift */; }; - A3E3AB7C765C21AE17B1E6EE6560040C /* SnapKit-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 04860F824879B09726E0E71EE19968C8 /* SnapKit-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 90585B3B5526DB8ECBD1AB8EF2C4D5A2 /* UISegmentedControl+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7DAFCEAA3AB4D37CB8B1B2D1845D5E61 /* UISegmentedControl+Rx.swift */; }; + 90FE9C00A5D701C905A120B020EB2BDF /* Switch.swift in Sources */ = {isa = PBXBuildFile; fileRef = 90D162E9EAE135DB021185F702C46E93 /* Switch.swift */; }; + 9239A65144607B6CBE9308B6ED8E6697 /* Single.swift in Sources */ = {isa = PBXBuildFile; fileRef = 934A64AB1E023E9BF70C5E552133EACB /* Single.swift */; }; + 92B3198E1EBE2EC545BB36AF6A9CC368 /* MemoryStorage.swift in Sources */ = {isa = PBXBuildFile; fileRef = E264463631A0AA7ADDAE5D3D0F697763 /* MemoryStorage.swift */; }; + 9307BA30D82319F60C5E2441C55232A0 /* RxSwift-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 8474DE367C89B9185450078267D7A6F9 /* RxSwift-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 9426B0386E4DC02F4E347A457C39144A /* NetworkActivityPlugin.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6AA5918C6A2A52AE76DEDD9A67669F56 /* NetworkActivityPlugin.swift */; }; + 9499A9573DEDD36F064800A76F1956B5 /* SkipUntil.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E649BC0C7E070199E068C5A187B882E /* SkipUntil.swift */; }; + 95563637A4972EEA70958AC205B9D88A /* TargetType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2BBA1A91105F54BBB00715BA89D800A5 /* TargetType.swift */; }; + 95E194A3AABB5407231E898B6686F73E /* ConstraintMakerRelatable+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 013EF561C07F573DB885A241B0BCE5D8 /* ConstraintMakerRelatable+Extensions.swift */; }; + 961B5042F0BFBD2C5FCDCCF40E2EA7CD /* UIButton+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1C4747029AFD3F49EEC44FFF619D4A63 /* UIButton+Rx.swift */; }; + 96AC9C43C808AA26F7C4E3C04EE3EDB0 /* BinaryDisposable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6DCD6B017FB84FFE7C3BBA95CBF3BACA /* BinaryDisposable.swift */; }; + 96D8402B4AFC4AC7349F1B487D6EB08C /* Transformable.swift in Sources */ = {isa = PBXBuildFile; fileRef = CADF0AF9690433E38BDFDD8EFD54895F /* Transformable.swift */; }; + 96F9E4762C05BF7B009FA52FC18C18C5 /* NSObject+Rx+RawRepresentable.swift in Sources */ = {isa = PBXBuildFile; fileRef = BFAA3983046B2C0FD73171FFDAF6449C /* NSObject+Rx+RawRepresentable.swift */; }; + 982A5AA888EF57772C6AEB72CE13BA99 /* SingleAssignmentDisposable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2EF95160B26D4B42AE93171F97C3A226 /* SingleAssignmentDisposable.swift */; }; + 98F570DA48370453D648BD526FDAAEAA /* LayoutConstraintItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 338D6E590301EFE0F556243B86D27B00 /* LayoutConstraintItem.swift */; }; + 9930A6A180279D0493FB8DB95BF23C21 /* Moya+Alamofire.swift in Sources */ = {isa = PBXBuildFile; fileRef = 60F589EE2F2776B1BD978CC8FE58CEB4 /* Moya+Alamofire.swift */; }; + 993A850E6056CE7125CB2EA24C9F89B3 /* PrimitiveSequence+Concurrency.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5166292190C01036F73A0906BF5FD044 /* PrimitiveSequence+Concurrency.swift */; }; + 997C201DF728F8C88AF7B059A43EBAE2 /* Materialize.swift in Sources */ = {isa = PBXBuildFile; fileRef = 939A49D359540D422C2ADD34ECC46BC5 /* Materialize.swift */; }; + 99A4941E31E52F345CA74F45AAECA804 /* Observable+Bind.swift in Sources */ = {isa = PBXBuildFile; fileRef = A1E89445717405534EAFD75E7A0F6227 /* Observable+Bind.swift */; }; + 9A151985A3D24023E8B2996BF3EBA2BB /* RxCocoa.h in Headers */ = {isa = PBXBuildFile; fileRef = 6E49664D9C90E91EDDAEE87B74B21D22 /* RxCocoa.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 9A3537E0E6B50DE756E96CDB3AD4EDE3 /* MultipartFormData.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB9868FBC8C48073F157C6E6F913C589 /* MultipartFormData.swift */; }; + 9ADE1DD7C6AD8B57FD158350A66EF8D0 /* SharedSequence+Operators+arity.swift in Sources */ = {isa = PBXBuildFile; fileRef = 03DB0A294FB90E896367AF7F25CE6F5D /* SharedSequence+Operators+arity.swift */; }; + 9AE3FEDB17CA68DFCD0BC534B8205E7A /* KFImage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 39F8A591ACEFEAB180B56137DCDCEEE8 /* KFImage.swift */; }; + 9C14C583C78E7461369235D895A978B7 /* CPListItem+Kingfisher.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7573B559FCEBCE50DCA43C81890DB9BB /* CPListItem+Kingfisher.swift */; }; + 9C9548E8B4675954566202F7B87FF0E6 /* ConstraintConstantTarget.swift in Sources */ = {isa = PBXBuildFile; fileRef = 54A2A4168F5796023E4AB2257079E82B /* ConstraintConstantTarget.swift */; }; + 9E02CFFEFE1BEC978B512286F03D31DA /* ConstraintInsetTarget.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4B3A450E2CC7D682194A21EC144E69AA /* ConstraintInsetTarget.swift */; }; + 9E8BA4FB802EDCD492DAF618CA7BFCE8 /* SharedSequence.swift in Sources */ = {isa = PBXBuildFile; fileRef = 72C838FF6CC9F15D864FD56DFBD21083 /* SharedSequence.swift */; }; + 9F370B3928A333AD7E41680A29B1F051 /* RxCollectionViewReactiveArrayDataSource.swift in Sources */ = {isa = PBXBuildFile; fileRef = 58CDFB2FA30EE7E8878B314B6C67A1ED /* RxCollectionViewReactiveArrayDataSource.swift */; }; + A0208B623442A26CB9157F193CBB4A7F /* Platform.Linux.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8726C717942393D800367AEA1B00B6A2 /* Platform.Linux.swift */; }; + A03FDA8BC5741880B1EF11AFD248EF48 /* ConstraintOffsetTarget.swift in Sources */ = {isa = PBXBuildFile; fileRef = ECF0CA0527D3E3C273596D98282BCF21 /* ConstraintOffsetTarget.swift */; }; + A0E5EC9E431A5BD01C4695BC6AE5DEDA /* ExtendCustomModelType.swift in Sources */ = {isa = PBXBuildFile; fileRef = BE6C54A617FAADE38236FE2D20E7903B /* ExtendCustomModelType.swift */; }; + A178A1016FCDEB4452B50F321AF59C62 /* Queue.swift in Sources */ = {isa = PBXBuildFile; fileRef = 461ED89ECEE76824079F017B8BD76777 /* Queue.swift */; }; + A198B149825B68AA27652683A615A7E3 /* PublishSubject.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2BEDED02E7B40AAB1C0499CE312B9834 /* PublishSubject.swift */; }; + A20321979D272B922CD60B531BD05F7F /* UIPickerView+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33C76ABDC182971F95E0D3E659859C92 /* UIPickerView+Rx.swift */; }; + A214A653E430C9079AA7B1090169262D /* UICollectionView+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = BE5D7603CD5F22048BEB1AA008C9A3AA /* UICollectionView+Rx.swift */; }; + A3B80F3FDDD56B49D8A426D49ABC9248 /* CombineLatest+Collection.swift in Sources */ = {isa = PBXBuildFile; fileRef = ED67B988502C7AB4929A3C3E6B9420F2 /* CombineLatest+Collection.swift */; }; + A3E3AB7C765C21AE17B1E6EE6560040C /* SnapKit-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 8AD05713068879A92B91B72A0091CD3C /* SnapKit-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; A3F2B57A7C28E3362A8E55F1B015D9C8 /* Accelerate.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D1336AFDB9F472B9E17B6861880F66FA /* Accelerate.framework */; }; - A473AE2DB5554BC6CB289664628012A5 /* ConnectableObservableType.swift in Sources */ = {isa = PBXBuildFile; fileRef = FA5485B4C3E504F337F2AD065ABAEF76 /* ConnectableObservableType.swift */; }; - A523488C60BF961290D0B1ABB9ADACEC /* RequestCompression.swift in Sources */ = {isa = PBXBuildFile; fileRef = 516DBB0CADC2C6DBC5C12C20E9C7DFE4 /* RequestCompression.swift */; }; - A549C0E0DBBD2D57F007FD6088F426BD /* Scan.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3492495BDAA3EE808EBA7E27B444532 /* Scan.swift */; }; - A58048C722771C3C46C2623274174B7B /* SingleAssignmentDisposable.swift in Sources */ = {isa = PBXBuildFile; fileRef = F3DA46923ADA705C392069960BB60E9A /* SingleAssignmentDisposable.swift */; }; - A5A8BF973BFE9C9304372A26C9F2E35B /* ConstraintMakerExtendable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7CDE2F9CE2B04EA6687EE664E9B1F447 /* ConstraintMakerExtendable.swift */; }; - A606B3D514262F030ED18600F01588BF /* AsMaybe.swift in Sources */ = {isa = PBXBuildFile; fileRef = E08F77D6D513C32F418E1FC2AE7AD85A /* AsMaybe.swift */; }; - A61CDA7A9C259DC743A7553676B4E537 /* First.swift in Sources */ = {isa = PBXBuildFile; fileRef = ED443DD7A5B81CF799FF1A9B14CA60C8 /* First.swift */; }; - A67083E623272EF11F0ED2115AF7D273 /* KingfisherOptionsInfo.swift in Sources */ = {isa = PBXBuildFile; fileRef = B43B6B9F0AC1A3B441577C4268863C3B /* KingfisherOptionsInfo.swift */; }; - A674A2F3F5F0304A6524F702EA301B42 /* NSDecimalNumberTransform.swift in Sources */ = {isa = PBXBuildFile; fileRef = AAD6332E824227FDE29BB9A1CB1E6DA4 /* NSDecimalNumberTransform.swift */; }; - A6D2F8EBCCEE6CE64FA4964877BF89F3 /* Repeat.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1E14FBC686914E2AF7C4383BFAA062B5 /* Repeat.swift */; }; - A6FFEA8E51C1C175570C501EB520CE5E /* CacheSerializer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 27459C8DF241339CDE5DD49FB1C25C8D /* CacheSerializer.swift */; }; - A755043CEE0384C2BB9238AF2F200F4B /* AccessTokenPlugin.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9D5A16599059CA238869B241131BA02D /* AccessTokenPlugin.swift */; }; - A766E407DA39FF588AEC62A4C30387A6 /* DispatchQueueConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3956A13898BA7AE3AD6AED0406907F52 /* DispatchQueueConfiguration.swift */; }; - A77BC5063F494F8F4F92644B6A8C93E0 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6A1970A14C2672638850C555C17ADE89 /* Foundation.framework */; }; - A88B62F0F6C55645EE179934998FB6AC /* Reusable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0D924D0F2142E1C7FED799E98F5B5A2C /* Reusable.swift */; }; - A93FC5BCB5B02182D27377A3724A60B1 /* RxSearchControllerDelegateProxy.swift in Sources */ = {isa = PBXBuildFile; fileRef = 192C6CC3B7F6F517C4D157448480ECF7 /* RxSearchControllerDelegateProxy.swift */; }; - A9FB28DEC9FEAD03294A753F0C6A738B /* Producer.swift in Sources */ = {isa = PBXBuildFile; fileRef = E1876E647F0F13D8AD9A41FED3B7C6C2 /* Producer.swift */; }; - AA721ECC2B36AFB7D9FE70C83E6D63F9 /* Response.swift in Sources */ = {isa = PBXBuildFile; fileRef = CCB3459EBA17D69CB52198314FF7186C /* Response.swift */; }; - AAA7A11591D6E4B06124708291C37698 /* RxTabBarDelegateProxy.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74F603E9DCC9F74E70AC2EEF9A832481 /* RxTabBarDelegateProxy.swift */; }; - AACC3B4A90C3C71FEF3BB1C2FC0374F1 /* Maybe.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6673F5D40ED1C9BF12C1C9864D29C16B /* Maybe.swift */; }; - AAFBF86E17174FF6DD3BBA2BB393D3EA /* ImagePrefetcher.swift in Sources */ = {isa = PBXBuildFile; fileRef = DCD283B934B4346CF12CEB62458A829D /* ImagePrefetcher.swift */; }; - AB60B7775C160D5D62FBC93FAC8F90EC /* Moya-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 126D7923B95B1B893763329F065ECC1C /* Moya-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - AB88D7A71BA82D3BAF097C992BFB221B /* UISearchController+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7A6CCF2E51B64ED58E9F5F6BC18C4500 /* UISearchController+Rx.swift */; }; - ABD5C72702876EFB6C39BCC62269DED2 /* BooleanDisposable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1E088C67BD72950301BB89F16F31469A /* BooleanDisposable.swift */; }; - AC3FB067C57DB569636CAFD05974F484 /* BinaryDisposable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 765D531DF5050A417659B07DDB7A51B1 /* BinaryDisposable.swift */; }; - AC5802EA58F43F1223804D5CF9E51A31 /* Completable.swift in Sources */ = {isa = PBXBuildFile; fileRef = DFDBA24A5039ED5E5456D2E8FC495205 /* Completable.swift */; }; - AC8A2E59A2B5FFAD78AD95F4B053DB76 /* ShareReplayScope.swift in Sources */ = {isa = PBXBuildFile; fileRef = 61ADA54F40A6900545707A222D69889B /* ShareReplayScope.swift */; }; - ACA3DBC73A19F3CDF9C4FAB09988D0E6 /* RxScrollViewDelegateProxy.swift in Sources */ = {isa = PBXBuildFile; fileRef = 165629B479649391782C794AE7C8E435 /* RxScrollViewDelegateProxy.swift */; }; - AD635D9C6B76653B9049C2767A165CDC /* AsyncLock.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5318EE8340C75CB1C311FB0C5C0035CE /* AsyncLock.swift */; }; - AD75E7744AC7055BD537E5F9E4A098B4 /* CredentialsPlugin.swift in Sources */ = {isa = PBXBuildFile; fileRef = B2679DB8FCA54DDF8E7DA3AC4A11488F /* CredentialsPlugin.swift */; }; - AE64B504EC63283C3EEC47A88A0C5F43 /* ObservableConvertibleType+Infallible.swift in Sources */ = {isa = PBXBuildFile; fileRef = 10D600B6F7169DFD7E81912260743F3F /* ObservableConvertibleType+Infallible.swift */; }; - AEF083E81756E640AB92BFF5CC853355 /* PrimitiveSequence+Zip+arity.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC28EF831FDDD06091CC7AB0416845FC /* PrimitiveSequence+Zip+arity.swift */; }; - AF0C1DE86BD97C967EAD57DD459EDE65 /* Sink.swift in Sources */ = {isa = PBXBuildFile; fileRef = D389385F88DD239B71595D6B278BC5EA /* Sink.swift */; }; + A523488C60BF961290D0B1ABB9ADACEC /* RequestCompression.swift in Sources */ = {isa = PBXBuildFile; fileRef = D6AFD2107F53E376519440BC6D6851A2 /* RequestCompression.swift */; }; + A5A8BF973BFE9C9304372A26C9F2E35B /* ConstraintMakerExtendable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6BD44328197D41002A7ABD8129FA0B81 /* ConstraintMakerExtendable.swift */; }; + A67083E623272EF11F0ED2115AF7D273 /* KingfisherOptionsInfo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E20997B42BFF425BE4C6C1490546436 /* KingfisherOptionsInfo.swift */; }; + A674A2F3F5F0304A6524F702EA301B42 /* NSDecimalNumberTransform.swift in Sources */ = {isa = PBXBuildFile; fileRef = 72FAC07B56FC988FC0D93ECAB83C6146 /* NSDecimalNumberTransform.swift */; }; + A6D76FDE71F6F2FF67CC9889284F60D2 /* Debounce.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46D5EDE888660B65AA60955BE47FF397 /* Debounce.swift */; }; + A6FFEA8E51C1C175570C501EB520CE5E /* CacheSerializer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 14E888C57B32FF17FC055F7CFCE72655 /* CacheSerializer.swift */; }; + A755043CEE0384C2BB9238AF2F200F4B /* AccessTokenPlugin.swift in Sources */ = {isa = PBXBuildFile; fileRef = B0E844C37108CB5F7A6F21E4A7F38B68 /* AccessTokenPlugin.swift */; }; + A87183A60E3E28C37BCEB7D48D6229F9 /* RefCountDisposable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5313AE65D24BCCBB0C1A5D107FDA0320 /* RefCountDisposable.swift */; }; + A88B62F0F6C55645EE179934998FB6AC /* Reusable.swift in Sources */ = {isa = PBXBuildFile; fileRef = BE63071AED4B1A38AA47DA74EA879436 /* Reusable.swift */; }; + A916ED2FF276F6CE8709810902FAB23B /* BehaviorSubject.swift in Sources */ = {isa = PBXBuildFile; fileRef = C839D69F06DDF8DE6308B2D831E7D343 /* BehaviorSubject.swift */; }; + A93F57843E0A4AF8F132A6AE6A21306F /* Scan.swift in Sources */ = {isa = PBXBuildFile; fileRef = 35CDF9DC56A581AAF5D46688489C220D /* Scan.swift */; }; + A93FC5BCB5B02182D27377A3724A60B1 /* RxSearchControllerDelegateProxy.swift in Sources */ = {isa = PBXBuildFile; fileRef = 85C30E28B3B42AC8DB400B1A3EBD8DFE /* RxSearchControllerDelegateProxy.swift */; }; + A95BB172DF3A5E76A1BE513A2A6BCA8D /* RxSwift-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = C2BEF4114836F577C9696EBEDE2A19AF /* RxSwift-dummy.m */; }; + A98B7BBA1D12696C4525F89A0B3B8B33 /* HasDisposeBag.swift in Sources */ = {isa = PBXBuildFile; fileRef = 553C3C596D526067A05D640F3D9E138E /* HasDisposeBag.swift */; }; + AA721ECC2B36AFB7D9FE70C83E6D63F9 /* Response.swift in Sources */ = {isa = PBXBuildFile; fileRef = 660B4328CA8A8264DAA2836298C6176F /* Response.swift */; }; + AAA7A11591D6E4B06124708291C37698 /* RxTabBarDelegateProxy.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09FAFC68060797D75A0359C60B6E853B /* RxTabBarDelegateProxy.swift */; }; + AAFBF86E17174FF6DD3BBA2BB393D3EA /* ImagePrefetcher.swift in Sources */ = {isa = PBXBuildFile; fileRef = FE30AA6CA2D2B70E4F4C11DFD6A41C88 /* ImagePrefetcher.swift */; }; + AB60B7775C160D5D62FBC93FAC8F90EC /* Moya-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 522ADF4C87AB47378E5E7A5BBE7A5A06 /* Moya-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + AB88D7A71BA82D3BAF097C992BFB221B /* UISearchController+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6AAB18081D287A3C83DC8FF600036CDC /* UISearchController+Rx.swift */; }; + ABF338E4AECF28898DAB7BD5A37D5D12 /* Disposable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 911E7BDC50FA73E9DCBC1A9621ED9FA0 /* Disposable.swift */; }; + AC4D902AA6A56A0F077CF49E4DA85ECB /* ConnectableObservableType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4967D1F77D7563DAB388410E2B241A4D /* ConnectableObservableType.swift */; }; + ACA3DBC73A19F3CDF9C4FAB09988D0E6 /* RxScrollViewDelegateProxy.swift in Sources */ = {isa = PBXBuildFile; fileRef = CB4E1A851C80303503357F057E6DC3CF /* RxScrollViewDelegateProxy.swift */; }; + AD156222E26D183562B047EF578E6033 /* CurrentThreadScheduler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4B5BA1D7ED3028BF894494B600B47283 /* CurrentThreadScheduler.swift */; }; + AD1D94077D7C7618D18F732B8C4B5C2C /* Optional.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5DF8B76B5F07EF21245D918B9B8E2F34 /* Optional.swift */; }; + AD75E7744AC7055BD537E5F9E4A098B4 /* CredentialsPlugin.swift in Sources */ = {isa = PBXBuildFile; fileRef = E02ECC057CFBF25C9FEF6D5B6B4A93DF /* CredentialsPlugin.swift */; }; + AE419A0EB119A1B529D3E851011B031C /* DeviceKit-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = C48CD3953729D98D6A5337AF0126DE8B /* DeviceKit-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + AF3239F66FE15C7881EEB0EFE95B7B35 /* Platform.Linux.swift in Sources */ = {isa = PBXBuildFile; fileRef = 146080884BFC8E1B4B8239EDF4466A73 /* Platform.Linux.swift */; }; + AF983CFBAC7AC7EE33B52AB91B4A0C86 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6A1970A14C2672638850C555C17ADE89 /* Foundation.framework */; }; AFAC1D4EBD53A048346210536741DF13 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7160612C75B8C873D77B5AEDED76632B /* CoreGraphics.framework */; }; - AFAEE9EC6534DE2F69C1FD33B034C92E /* KingfisherError.swift in Sources */ = {isa = PBXBuildFile; fileRef = CD4F149DBFD18F4A20A4320599D8CC19 /* KingfisherError.swift */; }; - B00B8088EB50EA3F0F875993C675F421 /* UITextField+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = BE8D91CD998AB1AE8E676FD3F36C8F2D /* UITextField+Rx.swift */; }; - B03B5579590D528CBA6D11FF638BC2AF /* Typealiases.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1EF2CDD729DADF5969E617BB9AD37B87 /* Typealiases.swift */; }; - B0EF3E2802E1715202F99325EAE0F27A /* Task.swift in Sources */ = {isa = PBXBuildFile; fileRef = F02A17D4EB2C620CA1EDD34E9934989F /* Task.swift */; }; - B13CAD74E806387CF131495AD8CF453F /* Lock.swift in Sources */ = {isa = PBXBuildFile; fileRef = 259AF82D05F6D3AF5D26FB0CCF6354E5 /* Lock.swift */; }; - B17D933C8F8BC6A4F91AA620D7D7A870 /* ParameterEncoder.swift in Sources */ = {isa = PBXBuildFile; fileRef = CA8EB7DF526B4C2F17EB0BBE0F8760CC /* ParameterEncoder.swift */; }; - B274128C2FE5EDE87850D4C9B996F4C8 /* PriorityQueue.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8DD8CAC74ECCE5DF13BE36C29354F6B3 /* PriorityQueue.swift */; }; - B3167FEDC691D1DDF267F855CFF33636 /* DelegateProxy.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33B4FAC947A0378CAAD60F6A6B4DBCC6 /* DelegateProxy.swift */; }; - B3F14F1B196B5858BD951366FA89FA6D /* RxWKNavigationDelegateProxy.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4488B560629B5C88A5E9FF2ED9FCDFD5 /* RxWKNavigationDelegateProxy.swift */; }; - B43017FEC99D227D4CDD81DD2C27D9D9 /* ConstraintMakerPrioritizable.swift in Sources */ = {isa = PBXBuildFile; fileRef = E0231B13AFD942D7715BD4A70ABFE808 /* ConstraintMakerPrioritizable.swift */; }; - B4AE9B23299C9CE3B70FAA7A66D50F7C /* SchedulerType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 69D940AC28230A45C640E32E10438178 /* SchedulerType.swift */; }; - B4BA49385319831FD3A3921DFCF76230 /* ObserverBase.swift in Sources */ = {isa = PBXBuildFile; fileRef = 207583CD61F84971AE55DE2ACF2B29A9 /* ObserverBase.swift */; }; - B4ED29084E130F41F61D6E4B15DB3551 /* RxSwift-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = F1A40D020BF4C65249FEA2EDF53B89F5 /* RxSwift-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + AFAEE9EC6534DE2F69C1FD33B034C92E /* KingfisherError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1FDB6197AB736E1084083F4E493BA2E6 /* KingfisherError.swift */; }; + AFC8036282A975A4BD2F28810A6CBA30 /* ConcurrentDispatchQueueScheduler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3436C8ADCA803A30CBBD89A79C679F35 /* ConcurrentDispatchQueueScheduler.swift */; }; + B00B8088EB50EA3F0F875993C675F421 /* UITextField+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = FE496B694D1165BD65966E93199DF347 /* UITextField+Rx.swift */; }; + B03B5579590D528CBA6D11FF638BC2AF /* Typealiases.swift in Sources */ = {isa = PBXBuildFile; fileRef = AAF909B0263E00FB2CE192D7B8EFA76A /* Typealiases.swift */; }; + B045E2AB4176809A7D90B3DEDEA97671 /* Decode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4854F4F0A5C1E92E33C88AAD6CD40C13 /* Decode.swift */; }; + B0EF3E2802E1715202F99325EAE0F27A /* Task.swift in Sources */ = {isa = PBXBuildFile; fileRef = B540404EBE2098EDA68ED9FB0A7CFE83 /* Task.swift */; }; + B17D933C8F8BC6A4F91AA620D7D7A870 /* ParameterEncoder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 397DE032C55F073078554C6ED3C13C5A /* ParameterEncoder.swift */; }; + B1AE438D8A35FA42A8B8586B6F105D61 /* AtomicInt.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EE797428CE69884503CC9018BA7D72D /* AtomicInt.swift */; }; + B3167FEDC691D1DDF267F855CFF33636 /* DelegateProxy.swift in Sources */ = {isa = PBXBuildFile; fileRef = F8E25D44B2C0A0D21213190A0A538C72 /* DelegateProxy.swift */; }; + B3F14F1B196B5858BD951366FA89FA6D /* RxWKNavigationDelegateProxy.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD29391A869E5B2061C3F8BEBCD3ABF7 /* RxWKNavigationDelegateProxy.swift */; }; + B43017FEC99D227D4CDD81DD2C27D9D9 /* ConstraintMakerPrioritizable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9A9A8F4777748089F7189B8B3DB36B3A /* ConstraintMakerPrioritizable.swift */; }; + B504ECB7FC90BA6DA6319B35FDA5990B /* Zip+Collection.swift in Sources */ = {isa = PBXBuildFile; fileRef = 226E801C799DBC77E78A7D466C49FA01 /* Zip+Collection.swift */; }; B52177FF72FDAC3EDB7195DE98F5501E /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FB540682DA51451BDAD851F89E558DD5 /* QuartzCore.framework */; }; - B53EB1446767571221ED954E16FDE1AA /* Disposables.swift in Sources */ = {isa = PBXBuildFile; fileRef = 56D520627040A3B6D58DF009393C985E /* Disposables.swift */; }; - B59095D5EF330419B3ADFBAD7EBC2B1F /* NSButton+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = AC6F737678C4E112EBB6476E99F02B44 /* NSButton+Rx.swift */; }; - B5ACECCDD52AF69EBA2E11666BBAEB42 /* RxCollectionViewDataSourceProxy.swift in Sources */ = {isa = PBXBuildFile; fileRef = 42D446B359AD540FA2AEFD87D7ABE15C /* RxCollectionViewDataSourceProxy.swift */; }; - B5E5A2CB9CD57723F8117D9402A80FD3 /* SingleAsync.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33055FA32252223B1AB3116721D6096B /* SingleAsync.swift */; }; - B66C3C5709346F849100234EFCDB664E /* Queue.swift in Sources */ = {isa = PBXBuildFile; fileRef = 94C392D9062D4196B340E6F77067B6F2 /* Queue.swift */; }; - B752F7C4BECB65894B1F49421049CE5F /* ConstraintView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0D0D830BAD1F66163C68EB9A1BA9E147 /* ConstraintView.swift */; }; - BA5658B6C27A81FA4665E507A1ED88DA /* Driver+Subscription.swift in Sources */ = {isa = PBXBuildFile; fileRef = 19B406112800825F5B01A0BBED47F0BE /* Driver+Subscription.swift */; }; - BAB17A1C6CAD14B3788973EAF8466C93 /* NetworkReachabilityManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4917FB9D005872281B22F006F7001E9E /* NetworkReachabilityManager.swift */; }; - BAD3834746DAB3C038417D16101B29A2 /* NSControl+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = DCEC2DBF8E26969A4BB2B54F2B1EA8A7 /* NSControl+Rx.swift */; }; - BB72FC9215BD907A82AE928782813D6C /* NSObject+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = 64FA3F6B350E532395A97AB96530BE97 /* NSObject+Rx.swift */; }; - BBC7EE440D9B9A4B3511B1831C428A0D /* Catch.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4B40027C27CE4E459A38C1D87C106545 /* Catch.swift */; }; - BBD437FE6BFF63452E6B7E08DFAB4DD9 /* UIBarButtonItem+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = F75DD06A2A169049C9A0D1E77A6D13EA /* UIBarButtonItem+Rx.swift */; }; - BBDD1E970F7D15CEA5E1F39F47641664 /* ObservableType+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = CD8E57ECFD6B142763B5C63323162920 /* ObservableType+Extensions.swift */; }; - BC16AFDE4BAC1CD19CDE329F20CC6EC4 /* CallbackQueue.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75C831D0F3B6ECF5593AC202900F9B4F /* CallbackQueue.swift */; }; - BC5A53F94EAA2F46352749E54BE69838 /* Source.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1BC8BE591A383FB0802A1161825B227F /* Source.swift */; }; - BD47CB74CD9B2B4D2D942C9B65748DFB /* SnapKit-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = ECAC747BA8670ABD37A0C5AA715875AF /* SnapKit-dummy.m */; }; - BE432D00488E08C853DC689BE24C54F4 /* HandyJSON-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 2C97BCD706DEE807EF3868F37A8ECCA1 /* HandyJSON-dummy.m */; }; - BFDCAD2AEBDD1AEF0345EE96D33DAC94 /* Create.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6F85D9716CFD2A169AB2FC3954F8916B /* Create.swift */; }; - C00C4FF56C3B54CEB62ACA9DFB166FCD /* DelaySubscription.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3F6E79FDA2485804EB4B20DAEDA26366 /* DelaySubscription.swift */; }; - C04739CBCEE445B66192BFA708655EDF /* StringEncoding+Alamofire.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6FE1258734CD0D5DE5C0C1545F096DAF /* StringEncoding+Alamofire.swift */; }; - C12DCA02D36C5C6167F566AFC96A6057 /* _RXObjCRuntime.m in Sources */ = {isa = PBXBuildFile; fileRef = A208FBE87421B2ABC0142F6A07D0B553 /* _RXObjCRuntime.m */; }; - C17A8818F6F518F4367C0C551782FB3B /* Range.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF481B014D924D41F0FDE7089D3263B0 /* Range.swift */; }; - C20F7278CDDB5021D18140A001BA7470 /* Infallible+Create.swift in Sources */ = {isa = PBXBuildFile; fileRef = 94CA369E5A9E7E47E7DBCAAD6F63D296 /* Infallible+Create.swift */; }; - C2D4FEEAF01038DB5C31CA401C105476 /* _RXDelegateProxy.m in Sources */ = {isa = PBXBuildFile; fileRef = CF309802F2CAB75940F49AD77E8DFA05 /* _RXDelegateProxy.m */; }; - C378AC3DF57A41F6F16D01BBD7A1BB02 /* UIActivityIndicatorView+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = 55D10B797A89889598E86DF39D020451 /* UIActivityIndicatorView+Rx.swift */; }; - C39C9E0F5F4CB376E9C8286E5838B7DD /* BehaviorSubject.swift in Sources */ = {isa = PBXBuildFile; fileRef = C689E3BB4983E6D479A62F1211506E90 /* BehaviorSubject.swift */; }; - C46DF9765B3769C9EDA8BCC7052B6D23 /* LockOwnerType.swift in Sources */ = {isa = PBXBuildFile; fileRef = FBD96A9F6932FA01432273082AB94D9C /* LockOwnerType.swift */; }; - C4E9B6DBCE3A78C2127FA3A6269E57CA /* KFImageOptions.swift in Sources */ = {isa = PBXBuildFile; fileRef = BE3D4635725BE29F6866D4B1964447A8 /* KFImageOptions.swift */; }; - C538C2B3F5A5D6BA85BBDCB544777AD4 /* Utils.swift in Sources */ = {isa = PBXBuildFile; fileRef = ECBD12025121C746DDEB9B44E608E3E6 /* Utils.swift */; }; - C549FDEDD8E7F6D7AE0B15C125D183A8 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6A1970A14C2672638850C555C17ADE89 /* Foundation.framework */; }; - C6A1AF1239CD2F0D4745BAA097E1E63F /* RxCollectionViewDelegateProxy.swift in Sources */ = {isa = PBXBuildFile; fileRef = 90028E4B472E1FCD0B7A391D37BC0C80 /* RxCollectionViewDelegateProxy.swift */; }; - C784A7AAD94DD830A9EB5ADDEE6DE1BB /* KVORepresentable.swift in Sources */ = {isa = PBXBuildFile; fileRef = E8A3665F113C176C699C4A60D6739452 /* KVORepresentable.swift */; }; - C79B457EA34AAC885AABAAB4FE227837 /* UITableView+Reusable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95F799040C1A70E136CAE7A41476545C /* UITableView+Reusable.swift */; }; - C812836F779AF53458795EEF5066F29A /* ScheduledItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = ED806FA43E5458BB64EB1B488B5B6772 /* ScheduledItem.swift */; }; - C8269B42DED12AB1F275648D0BD32E45 /* URLEncodedFormEncoder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0FE18AD6C78E4D9C1E9EDB83E8763861 /* URLEncodedFormEncoder.swift */; }; - C920144CE195D2198DAE63F2D976AADB /* HandyJSON-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = E6EA7642AC0A935140B695C8DE1F91B1 /* HandyJSON-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - CA1BFC94E5AD2E95C061B14902827755 /* ExtensionHelpers.swift in Sources */ = {isa = PBXBuildFile; fileRef = 501CF92DCF5E2F25FE033F445BAA7A3A /* ExtensionHelpers.swift */; }; - CB3ACAC0625702DEC5BBB5F9AC0CC737 /* RxTableViewReactiveArrayDataSource.swift in Sources */ = {isa = PBXBuildFile; fileRef = EEB214E2E4C3D3FB6CA0C4109D2F0FF6 /* RxTableViewReactiveArrayDataSource.swift */; }; - CBF35F58D74E7F9E25EA97F82CBCEA10 /* SkipWhile.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4B32547DF2C9A9E64087A593AC3EE911 /* SkipWhile.swift */; }; - CC5BC4391CF7452AF3254D8CAFC82062 /* ImageTransition.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2686E2F30E71D302C7EC46BF9AC726BE /* ImageTransition.swift */; }; - CCADF670B558392F08CC5302CE8DFC34 /* SynchronizedOnType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37706A10928DD59317F2AABB995786F0 /* SynchronizedOnType.swift */; }; - CCBCFE35FEFAD9C1307334491148DA27 /* RxRelay-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 6DEEF0A78457ED9D46DBF84E913E83F6 /* RxRelay-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - CDD0A0D9253EFF9923F92E89BC96A882 /* SwitchIfEmpty.swift in Sources */ = {isa = PBXBuildFile; fileRef = E83D56D118A8CD729AB9F4DD106214B6 /* SwitchIfEmpty.swift */; }; - CE08483A41A5535019BE5E198792480B /* KVORepresentable+Swift.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7B953B1CDFABA00A04E6AC9124999CF9 /* KVORepresentable+Swift.swift */; }; - CEB12B808790BBA447EF912D41AB9C78 /* DispatchQueue+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BBE9868390C0ACA219A59A1F61C4F09 /* DispatchQueue+Extensions.swift */; }; - CF32140300489AD5D6D5A74E4605FDAF /* DispatchQueue+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 24119F92E2DB0B0C6650DEA1131020F3 /* DispatchQueue+Extensions.swift */; }; - CF7FAB0C5D474E379798F82E5DB4092B /* ContextDescriptorType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1B2863E7FB03DAF37957D8B19A20FAF5 /* ContextDescriptorType.swift */; }; - CFB94F60324C50650E055314D46837BA /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = 8B776E2E2FACA7C1A7173E403F37910F /* PrivacyInfo.xcprivacy */; }; - D0560E8E2E5EB407B5D8E0381BF453FA /* URLConvertible+URLRequestConvertible.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF65591BAA77BD5923D4083691EB5F0F /* URLConvertible+URLRequestConvertible.swift */; }; - D072D375CE0C6D2F4A98A57FEEBF6BA2 /* Zip+arity.swift in Sources */ = {isa = PBXBuildFile; fileRef = DCE9ED04C9F6410492A87A2B8BC43451 /* Zip+arity.swift */; }; - D09FBBADAF7C5C757AA5AB5DFE54BD25 /* Alamofire-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 78F5BA1E49C1B6FE56A4B5323CD9AFF8 /* Alamofire-dummy.m */; }; - D2004A03ADD62CD0C4649710F32A91F5 /* NSTextStorage+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = 932FF7024616D8D82633AB22546C7DC0 /* NSTextStorage+Rx.swift */; }; - D2032194EB7D200A1F6715A3C024D994 /* CombineLatest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 02F4A94A543B7090414D2D11E1C5F3A2 /* CombineLatest.swift */; }; - D204501A876D178E882CF0D3CAA30473 /* VirtualTimeScheduler.swift in Sources */ = {isa = PBXBuildFile; fileRef = DA54EB4CF78AC3516E9E65506DE207FB /* VirtualTimeScheduler.swift */; }; - D2C1DE6833F16A9EDEAE12D39DBBECD8 /* SubscribeOn.swift in Sources */ = {isa = PBXBuildFile; fileRef = 79A0A26C9F36ABCC4EB50D474EC8DA4D /* SubscribeOn.swift */; }; - D2C293D847E95B01671EB3E6A32F11C7 /* WKWebView+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8051259FDEC630E944D8CD2114B0226B /* WKWebView+Rx.swift */; }; - D3318EE7E4339E6C5A6070D251DC845F /* Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8C1E768C4764D3F7B03199D967453517 /* Rx.swift */; }; + B59095D5EF330419B3ADFBAD7EBC2B1F /* NSButton+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5199D7F70873229982B2F72B8936532C /* NSButton+Rx.swift */; }; + B5ACECCDD52AF69EBA2E11666BBAEB42 /* RxCollectionViewDataSourceProxy.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2C22489767232A13091ED62587C286C2 /* RxCollectionViewDataSourceProxy.swift */; }; + B752F7C4BECB65894B1F49421049CE5F /* ConstraintView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4462CFADBA30107E65E48BB377D89CDC /* ConstraintView.swift */; }; + B79B431564A301C69BF86D1379B7FF0A /* Error.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC856F74320EC24B0753D770C502CAD2 /* Error.swift */; }; + B82BE7DF0907532F092BECDD73E78BEA /* ObservableConvertibleType.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF7C9423979FB22EBF915FE0945A632C /* ObservableConvertibleType.swift */; }; + B92CEB2694E699AB7DDBD66172BC594F /* DelaySubscription.swift in Sources */ = {isa = PBXBuildFile; fileRef = BED29F4C40D5447CD01F4447AD616AE1 /* DelaySubscription.swift */; }; + BA5658B6C27A81FA4665E507A1ED88DA /* Driver+Subscription.swift in Sources */ = {isa = PBXBuildFile; fileRef = E97143342A596294F88E8236E265EA0C /* Driver+Subscription.swift */; }; + BAB17A1C6CAD14B3788973EAF8466C93 /* NetworkReachabilityManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2567962E6EC96FE05567738B6C23F98B /* NetworkReachabilityManager.swift */; }; + BAD3834746DAB3C038417D16101B29A2 /* NSControl+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = 90BEC58B5C6F7A75AB0627499CBA9255 /* NSControl+Rx.swift */; }; + BAD9594DEBA160DA493D3D72B2DC2C06 /* BehaviorRelay.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0C6F2AF7CD8F66870099308891009AF6 /* BehaviorRelay.swift */; }; + BAEAE9A2BD7E93EB5346E01B57D47920 /* GroupBy.swift in Sources */ = {isa = PBXBuildFile; fileRef = 62188E3304690C4357C8C8667E439968 /* GroupBy.swift */; }; + BB72FC9215BD907A82AE928782813D6C /* NSObject+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = FEED31AF10BFFB4CB8549FAA56320BAC /* NSObject+Rx.swift */; }; + BB8585825189B0FC964A7BB862FBB849 /* ImmediateSchedulerType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7CE9E5DCE2431D9DE32637D771EC8877 /* ImmediateSchedulerType.swift */; }; + BBD437FE6BFF63452E6B7E08DFAB4DD9 /* UIBarButtonItem+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = 94179F5DA3ACDE995E738C53BB155B3B /* UIBarButtonItem+Rx.swift */; }; + BC16AFDE4BAC1CD19CDE329F20CC6EC4 /* CallbackQueue.swift in Sources */ = {isa = PBXBuildFile; fileRef = 27F49368F1C164882B86D4FEE7E48F36 /* CallbackQueue.swift */; }; + BC5A53F94EAA2F46352749E54BE69838 /* Source.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1BC1EF2589F486F510B047DF00284303 /* Source.swift */; }; + BD14CA7C76E861E9848DF5064811ABBA /* Range.swift in Sources */ = {isa = PBXBuildFile; fileRef = C9EB1448B3BC513A50D0393719C91DB9 /* Range.swift */; }; + BD47CB74CD9B2B4D2D942C9B65748DFB /* SnapKit-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 43CCB937D1696F335DE8C8BB7A3B4E87 /* SnapKit-dummy.m */; }; + BE408A6C4D9214606EFBE93B002B006A /* RxMutableBox.swift in Sources */ = {isa = PBXBuildFile; fileRef = 032CFC70FF289E344663B4BA3446793E /* RxMutableBox.swift */; }; + BE432D00488E08C853DC689BE24C54F4 /* HandyJSON-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 034B622836FB450CF2B24AEE78EDCB81 /* HandyJSON-dummy.m */; }; + C04739CBCEE445B66192BFA708655EDF /* StringEncoding+Alamofire.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7500E1DE13C315DD31BC983DB3B142EB /* StringEncoding+Alamofire.swift */; }; + C12DCA02D36C5C6167F566AFC96A6057 /* _RXObjCRuntime.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E3BE7A2658D90D7942E77F2812A0C91 /* _RXObjCRuntime.m */; }; + C26D7F712971BE2F45A8CA84FE4338D5 /* PrimitiveSequence.swift in Sources */ = {isa = PBXBuildFile; fileRef = 05B61E58D267CACDD4934BD61AC0B73F /* PrimitiveSequence.swift */; }; + C2D4FEEAF01038DB5C31CA401C105476 /* _RXDelegateProxy.m in Sources */ = {isa = PBXBuildFile; fileRef = C2DAB1D8451D1E92990CAE3C44061A5A /* _RXDelegateProxy.m */; }; + C378AC3DF57A41F6F16D01BBD7A1BB02 /* UIActivityIndicatorView+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = E0BD07972C102D29E80B1C92CB461DAF /* UIActivityIndicatorView+Rx.swift */; }; + C4E9B6DBCE3A78C2127FA3A6269E57CA /* KFImageOptions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5A75CC3715DB197F7CBFDD57D2727036 /* KFImageOptions.swift */; }; + C5C71141A72424BC3711B53BB4726744 /* Device.generated.swift in Sources */ = {isa = PBXBuildFile; fileRef = 28863D8DFB04B5977BD55BDFFE26E6A8 /* Device.generated.swift */; }; + C6007A95971AFACFBD7EAFB247C4C3CB /* VirtualTimeScheduler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C25BE1C4603FAA6BD979DBF725998BD /* VirtualTimeScheduler.swift */; }; + C68CFD35BE3AFDEB5960495EB0C831D5 /* Create.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0A9053A0CF13DED3A71CB28D7D0BFD43 /* Create.swift */; }; + C6A1AF1239CD2F0D4745BAA097E1E63F /* RxCollectionViewDelegateProxy.swift in Sources */ = {isa = PBXBuildFile; fileRef = CA7D16256C92CFB8BF9E9407887AC51D /* RxCollectionViewDelegateProxy.swift */; }; + C784A7AAD94DD830A9EB5ADDEE6DE1BB /* KVORepresentable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3A39C453126A11DB65BED928ABC782A3 /* KVORepresentable.swift */; }; + C79B457EA34AAC885AABAAB4FE227837 /* UITableView+Reusable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 591AB8C5450EE6C0C636F79E16A7EDBA /* UITableView+Reusable.swift */; }; + C8269B42DED12AB1F275648D0BD32E45 /* URLEncodedFormEncoder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7526F142BBD6241D71384330007F463C /* URLEncodedFormEncoder.swift */; }; + C920144CE195D2198DAE63F2D976AADB /* HandyJSON-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 225D675BE9C4CAAA4F998D261FA57EF3 /* HandyJSON-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C99F1DDFCBECB67F78E8999E6BFA8064 /* Event.swift in Sources */ = {isa = PBXBuildFile; fileRef = DAA61E9AC252B34578D82C434C038FA9 /* Event.swift */; }; + CA1BFC94E5AD2E95C061B14902827755 /* ExtensionHelpers.swift in Sources */ = {isa = PBXBuildFile; fileRef = 55A51C4F9C59AECA9A3249965049C715 /* ExtensionHelpers.swift */; }; + CADF1FAC380CB281017003AB7D268C54 /* AsSingle.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7F5D105DC72F421147B9A9E5B288E0BD /* AsSingle.swift */; }; + CB3ACAC0625702DEC5BBB5F9AC0CC737 /* RxTableViewReactiveArrayDataSource.swift in Sources */ = {isa = PBXBuildFile; fileRef = 797B718D90DE78C755DF2EC8CE6AAFF6 /* RxTableViewReactiveArrayDataSource.swift */; }; + CC5BC4391CF7452AF3254D8CAFC82062 /* ImageTransition.swift in Sources */ = {isa = PBXBuildFile; fileRef = F22E73020A3A8145E0ADBE0FD72D77A8 /* ImageTransition.swift */; }; + CD366AAB9E9D1BA3F59FE05A7BA1BE19 /* RxRelay-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 89D4F99A22F01FEA581AD3378FB79C2B /* RxRelay-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + CE08483A41A5535019BE5E198792480B /* KVORepresentable+Swift.swift in Sources */ = {isa = PBXBuildFile; fileRef = 27ACD601BA2AB4266E3C72370222DA52 /* KVORepresentable+Swift.swift */; }; + CF32140300489AD5D6D5A74E4605FDAF /* DispatchQueue+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = C7C72013A14D25D1022975FE6A4F837A /* DispatchQueue+Extensions.swift */; }; + CF7FAB0C5D474E379798F82E5DB4092B /* ContextDescriptorType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 18EF92144BBBACCC71547660A1EEC23F /* ContextDescriptorType.swift */; }; + D0560E8E2E5EB407B5D8E0381BF453FA /* URLConvertible+URLRequestConvertible.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6530C2CD3AD635B5D4BCF2F2F67E5C71 /* URLConvertible+URLRequestConvertible.swift */; }; + D0877E1BA5A586656A247CEBFD9CD193 /* SynchronizedDisposeType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7AAFEC9DFFEE3CC947F622697E73386F /* SynchronizedDisposeType.swift */; }; + D09FBBADAF7C5C757AA5AB5DFE54BD25 /* Alamofire-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = A96F16021B0B89B248F45B690FEBCD25 /* Alamofire-dummy.m */; }; + D2004A03ADD62CD0C4649710F32A91F5 /* NSTextStorage+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = E11CA30C898D891460BDDC338CDB3BC1 /* NSTextStorage+Rx.swift */; }; + D2C293D847E95B01671EB3E6A32F11C7 /* WKWebView+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = F56D400C75D0C3EF1E3D2B809A1FECD7 /* WKWebView+Rx.swift */; }; D33F8516AAC7AC1435DCB095BCE65681 /* CFNetwork.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6D74FF06CA5AE8F2F5D48301BE439D32 /* CFNetwork.framework */; }; - D368E6F70C5E6998548A72E65F92432D /* Validation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 383C3B11450462CA845076D5A31455A7 /* Validation.swift */; }; - D3AB490FA372E1922315D4F2E5709254 /* InfiniteSequence.swift in Sources */ = {isa = PBXBuildFile; fileRef = DEBFD271D48A85EF07F3B6731D534416 /* InfiniteSequence.swift */; }; - D3BC528010D39EB2D79585A671FD80B6 /* UIScrollView+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = A5C55ED5BE5E14115CFDB19FC0330C46 /* UIScrollView+Rx.swift */; }; - D47B1058991EEC007A109B8E354EDB80 /* ObservableConvertibleType+Signal.swift in Sources */ = {isa = PBXBuildFile; fileRef = EFD03F6EF61FF91A6224DD8CF8BF2FCE /* ObservableConvertibleType+Signal.swift */; }; - D4933D17DC286C3DABCFD930BED56DD9 /* UIGestureRecognizer+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = B089112AF8A786152A4CFA32042AA817 /* UIGestureRecognizer+Rx.swift */; }; - D4A79D2D2532673DF39ED456EB7005CF /* TakeWithPredicate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9BF394511EEFCC9854970C278A4EEFAB /* TakeWithPredicate.swift */; }; - D507CB260B300128E39601CD83627509 /* Reactive.swift in Sources */ = {isa = PBXBuildFile; fileRef = 98358BCC95E6655702825CEE45C0C8FA /* Reactive.swift */; }; - D525A536B7A32329405A34062C2BCED6 /* Decode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 08095C11257E23D25E208304881B3A90 /* Decode.swift */; }; - D5CFDCFE3128D6FA2A4D385FDFD42AA1 /* URLRequest+Encoding.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5859599DB876A373ACA4D7088EA30151 /* URLRequest+Encoding.swift */; }; - D6FDE9DFAC4AA548A9A4E2D6BBCE54FC /* ControlProperty+Driver.swift in Sources */ = {isa = PBXBuildFile; fileRef = F7B5707C4DB109E219C5031257DCD1F3 /* ControlProperty+Driver.swift */; }; - D73BED39648BD901FA022356FD6A4468 /* RecursiveScheduler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09071625C0D4ED0715EBF9938CAB0C6B /* RecursiveScheduler.swift */; }; + D368E6F70C5E6998548A72E65F92432D /* Validation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 29A78EC7F575296035EE55CC0ABA362A /* Validation.swift */; }; + D3AB490FA372E1922315D4F2E5709254 /* InfiniteSequence.swift in Sources */ = {isa = PBXBuildFile; fileRef = 39AE268F8D5447D09C20B5D3F21C71BE /* InfiniteSequence.swift */; }; + D3BC528010D39EB2D79585A671FD80B6 /* UIScrollView+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = E0C2DFAEFE293A47D68CF49BF41D9A0B /* UIScrollView+Rx.swift */; }; + D3CD6C1FB099C0A853024D320B3699CD /* Lock.swift in Sources */ = {isa = PBXBuildFile; fileRef = DEDF97D3E33EECB364C3BBE1B19AFD9A /* Lock.swift */; }; + D47B1058991EEC007A109B8E354EDB80 /* ObservableConvertibleType+Signal.swift in Sources */ = {isa = PBXBuildFile; fileRef = A9A747B03EE699B366FD53FB4ACA433F /* ObservableConvertibleType+Signal.swift */; }; + D4933D17DC286C3DABCFD930BED56DD9 /* UIGestureRecognizer+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1F2B92ABD48C41214F990AD1FE1BCCD2 /* UIGestureRecognizer+Rx.swift */; }; + D5CFDCFE3128D6FA2A4D385FDFD42AA1 /* URLRequest+Encoding.swift in Sources */ = {isa = PBXBuildFile; fileRef = A3010548432087DD11565546C13AF64B /* URLRequest+Encoding.swift */; }; + D6FDE9DFAC4AA548A9A4E2D6BBCE54FC /* ControlProperty+Driver.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB0B1372A476B63A768D0A5DD78D54CD /* ControlProperty+Driver.swift */; }; + D75D6A004BF4CB9564240228C390E4D9 /* InvocableScheduledItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 77B0CF94E940BAD46A317A234F0BD859 /* InvocableScheduledItem.swift */; }; D7BCBE1EB4A638403C265CE2199EFF1B /* CFNetwork.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6D74FF06CA5AE8F2F5D48301BE439D32 /* CFNetwork.framework */; }; - D7CB5610FA8E358DDBBCFC468EA56DAF /* String+MD5.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0DD70DADAD30E2F4D27E3DD7A1EAC006 /* String+MD5.swift */; }; - D8548F55D2A30E5935CD1773CFD1510E /* ImageDownloader.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3C27EB2E04E045DFB79BE6AAA63A7EA2 /* ImageDownloader.swift */; }; - D9CC66222E55827BDBE32EFAB31B5381 /* KFOptionsSetter.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8B66F25D7F18C08892764CAD99E025D /* KFOptionsSetter.swift */; }; - DADAAFFCDC241D3E6A4DCF567C12D280 /* RequestTypeWrapper.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9B09861BBDC46C3D1F767E4F57F0FCD6 /* RequestTypeWrapper.swift */; }; - DB975FF8F6C9DE0D5B319961CAEDD4E1 /* AtomicInt.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0A998D586FC04E7F45D15D9E8E02E70B /* AtomicInt.swift */; }; - DBD70DE28BDBC4B1C09EEBA3F6D76BF3 /* UIButton+Kingfisher.swift in Sources */ = {isa = PBXBuildFile; fileRef = A8D08D8E537F6EC253D8EBE79FC6542A /* UIButton+Kingfisher.swift */; }; - DC4F588F90F6E49F9B67F0782B392E39 /* PrimitiveSequence.swift in Sources */ = {isa = PBXBuildFile; fileRef = 065A74676EEAD75E1F49A21AACEAF349 /* PrimitiveSequence.swift */; }; - DDC0F4786752FBF4B07E3A4D4E273DA2 /* UICollectionView+Reusable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 016AA1ECBFE5BEF6D881059F1B2DD9BC /* UICollectionView+Reusable.swift */; }; - DE71610B229DF6E2B65A8574BAF21414 /* SectionedViewDataSourceType.swift in Sources */ = {isa = PBXBuildFile; fileRef = C32614C0F923CC34E7C2BE3F692976AB /* SectionedViewDataSourceType.swift */; }; - DEBBCD7FF906F4D5F2CC4BF62F3A5803 /* Completable+AndThen.swift in Sources */ = {isa = PBXBuildFile; fileRef = A2D58F2F6C7CC4D368CE0D57F40CD27B /* Completable+AndThen.swift */; }; - E0D995EBFD58A33805684F01024138E7 /* BehaviorRelay.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9382A27EEA32D49627659BC72C56FCBF /* BehaviorRelay.swift */; }; - E154CD956DF116A1E59C8D6A6891A9BF /* Cancelable.swift in Sources */ = {isa = PBXBuildFile; fileRef = B0D85CAD20866F6833A22BDA6668ECB1 /* Cancelable.swift */; }; - E21CC70AD211E5F874C1208BA7D1631E /* Sequence.swift in Sources */ = {isa = PBXBuildFile; fileRef = E68CB21AF7E7B8C4BFF5A00B209D9666 /* Sequence.swift */; }; - E2EF09A2D0A87418F0628B2CFAD304D8 /* Metadata.swift in Sources */ = {isa = PBXBuildFile; fileRef = AB1E15FD768D00EEFADE79898DA43AA2 /* Metadata.swift */; }; - E3B0F5D520566D7244B300501D43F86E /* Multicast.swift in Sources */ = {isa = PBXBuildFile; fileRef = AD3FD403D8E30A8001D1F494B36EFA49 /* Multicast.swift */; }; - E424F89BEDDE19083BAAB0FA1D73E853 /* Binder.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF107C4AC5643080B30C4DC1AD3CA088 /* Binder.swift */; }; - E4AC5D4B5B930DDF6912483ED8436635 /* WithUnretained.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95509362358E1B4F96EED27DC01B1C24 /* WithUnretained.swift */; }; - E4CA5C8A54DD0978858EE82D7D78ECB1 /* VirtualTimeConverterType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 634E359FC76F57C6E032A112422B8130 /* VirtualTimeConverterType.swift */; }; - E54EA1C1B2B9304A9F7956AE0C9589D2 /* SerialDisposable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 28E9D0CEE48F6310B3A68093744A1146 /* SerialDisposable.swift */; }; - E6251F02EE12804D1B66AE32E716E664 /* SessionDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = E597FA331BDE835D4356BA91AC2EE05B /* SessionDelegate.swift */; }; - E6599DE13C01C6FA8F79536A8970DD3A /* Reusable-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = D205770569FAE2C81B52F154322D2563 /* Reusable-dummy.m */; }; - E65F73FA2E14351853CD4EB8729D0AC7 /* Errors.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1E818ED04F94422CB5C8B2554572826C /* Errors.swift */; }; - E7035A074129575E62A0136DD93D8E8F /* DateTransform.swift in Sources */ = {isa = PBXBuildFile; fileRef = 64854FC0AC6AFE7ACB68D2C7BEAAE398 /* DateTransform.swift */; }; - E710A550162879CE918FC411CF567789 /* Logger.swift in Sources */ = {isa = PBXBuildFile; fileRef = 418F325839254785FCE40E01EC615D42 /* Logger.swift */; }; + D7CB5610FA8E358DDBBCFC468EA56DAF /* String+MD5.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8589BE6AA1C030E2B416E7D7567ACDDD /* String+MD5.swift */; }; + D8548F55D2A30E5935CD1773CFD1510E /* ImageDownloader.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1AC0F530B9698AA71CCB1E40934C472F /* ImageDownloader.swift */; }; + D8EEEAF9B379C8249E9383FD3C181FAA /* Catch.swift in Sources */ = {isa = PBXBuildFile; fileRef = 30F4DD17DC3AB94AFDA917627B4F4769 /* Catch.swift */; }; + D9CC66222E55827BDBE32EFAB31B5381 /* KFOptionsSetter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 30CC56020AC14B9B2D0B00A51B6B6F3D /* KFOptionsSetter.swift */; }; + DA229928A668E57F71D034F9C4C96B77 /* Delay.swift in Sources */ = {isa = PBXBuildFile; fileRef = 00DA9C81EB81E19B9D108BF0A4969BE5 /* Delay.swift */; }; + DADAAFFCDC241D3E6A4DCF567C12D280 /* RequestTypeWrapper.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2018E1C6707E4D5B4685D5D380B9CEAF /* RequestTypeWrapper.swift */; }; + DB1905124BE5655DCB20BE14C96953CE /* Deferred.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1D63C72EA6032CFEFC949E6E220D2B77 /* Deferred.swift */; }; + DBD70DE28BDBC4B1C09EEBA3F6D76BF3 /* UIButton+Kingfisher.swift in Sources */ = {isa = PBXBuildFile; fileRef = D50C4D2C19EF6C50713D221D0F66F8D6 /* UIButton+Kingfisher.swift */; }; + DCB842F5E9B4A06B14F2535623B21245 /* Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = AC7551F9169E9552FB27908C117FA8BD /* Rx.swift */; }; + DDC0F4786752FBF4B07E3A4D4E273DA2 /* UICollectionView+Reusable.swift in Sources */ = {isa = PBXBuildFile; fileRef = D690DCA319DFA6651B299C6B5817F9B8 /* UICollectionView+Reusable.swift */; }; + DE71610B229DF6E2B65A8574BAF21414 /* SectionedViewDataSourceType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3E1B746DF53091FB3B3D48C0F5019479 /* SectionedViewDataSourceType.swift */; }; + DE81C3C6F59AE565E1675E35F40DB294 /* CompactMap.swift in Sources */ = {isa = PBXBuildFile; fileRef = AAEF10F56C27CDD91F1B1C950F8DE09F /* CompactMap.swift */; }; + E1506563BAB53B8F3F8F1CFC48CC6E7F /* HistoricalScheduler.swift in Sources */ = {isa = PBXBuildFile; fileRef = C07D50DBC240EE3A1E6AB263F208F036 /* HistoricalScheduler.swift */; }; + E272CB950FEF5B18081DCA1F010A0D29 /* CombineLatest+arity.swift in Sources */ = {isa = PBXBuildFile; fileRef = DE191B418684DC7372DB53B2BC08F17D /* CombineLatest+arity.swift */; }; + E2EF09A2D0A87418F0628B2CFAD304D8 /* Metadata.swift in Sources */ = {isa = PBXBuildFile; fileRef = 288EDCCA5333BD2B7DFC5198A4FED9D6 /* Metadata.swift */; }; + E6251F02EE12804D1B66AE32E716E664 /* SessionDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 828BD95CDE14B27EF56148093FBD73F9 /* SessionDelegate.swift */; }; + E6599DE13C01C6FA8F79536A8970DD3A /* Reusable-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = A37057F4C975060277CA62A06928DE06 /* Reusable-dummy.m */; }; + E7035A074129575E62A0136DD93D8E8F /* DateTransform.swift in Sources */ = {isa = PBXBuildFile; fileRef = 642B59E09CD7D3A50AB30F1DDEE56BBC /* DateTransform.swift */; }; + E710A550162879CE918FC411CF567789 /* Logger.swift in Sources */ = {isa = PBXBuildFile; fileRef = F73807F2EA9D53C1EEBE9F4604500BD0 /* Logger.swift */; }; E7123AB366D99D42043E352B1A128369 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6A1970A14C2672638850C555C17ADE89 /* Foundation.framework */; }; - E7378F61AD6959D5538E595EA4A48AF4 /* AVAssetImageDataProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 420DDEA65A2C63C6CA966D994E696D54 /* AVAssetImageDataProvider.swift */; }; - E7B06E98F3530C96FB6B2D8272169C22 /* Endpoint.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6C198ADB3A802CC083707D46D42F735C /* Endpoint.swift */; }; - E7C58133036040A730E4546D0C0DE87F /* Reusable-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = CBFCE48108EA5B7391D309F207FA3E5A /* Reusable-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - E895A8F95627AB1F7C2F1D7B035BAE1C /* ScheduledDisposable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 42F715AC86D9585FC5BB7F7C07DD7DAC /* ScheduledDisposable.swift */; }; - E95D6E6462506EFD8EA9332AD9BC492A /* SizeExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 840E59B83C8C092BD38138A7D44A473E /* SizeExtensions.swift */; }; - E98DC8FB2578E76A812E0C94BA10E1B1 /* ConstraintDirectionalInsets.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8A18BCB5C7FD8D506C4D66B8A1BE5B63 /* ConstraintDirectionalInsets.swift */; }; - E99A170AB4E460307ACAFC938CA2B591 /* ToArray.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9FE96E6FECBEF720CD9DD849F12E6D61 /* ToArray.swift */; }; - EA5FE4B4B3BF04976C37430E4F3721EF /* RxPickerViewDelegateProxy.swift in Sources */ = {isa = PBXBuildFile; fileRef = B4F8C603320BB82716CEBA31405BB25A /* RxPickerViewDelegateProxy.swift */; }; - EBE8A06FA3C662A9D01320EF1FD0E120 /* RefCountDisposable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 69C17E66AE494BF8C88740E1EDB36891 /* RefCountDisposable.swift */; }; - ECE6F23823454A8FDB3F97CE1A7CD182 /* RedirectHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0F94D368DE622488019CFFA18E34262 /* RedirectHandler.swift */; }; - ECF2F956B37A4C28B228BC291A57AD6E /* RequestTaskMap.swift in Sources */ = {isa = PBXBuildFile; fileRef = 44142825DF6D5162BCAC2FEFBF148BED /* RequestTaskMap.swift */; }; - ED3841B1E7CECC078D6BCDD78FDA7E36 /* SchedulerServices+Emulation.swift in Sources */ = {isa = PBXBuildFile; fileRef = E78DB89A84C09AD3FA55F3FEF697370C /* SchedulerServices+Emulation.swift */; }; - ED4155032D3BF65BD7B649E490A6EEFE /* TakeLast.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0705C992AE1A7F2F2FF703DD1338C3F7 /* TakeLast.swift */; }; - ED71E932B7F30AD7CFD2A04968A2B5CC /* CBridge.swift in Sources */ = {isa = PBXBuildFile; fileRef = E2CC1F55AB1BB43F87FEC4D4CD10D1FE /* CBridge.swift */; }; - EE4E233D2DD0DFC4F82FD6748EC3429F /* ImageBinder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 79AB56ECFE81336CFFB52ADF927D8A7C /* ImageBinder.swift */; }; - EEFF0A57765CB734CF01868904F56DA7 /* HandyJSON.h in Headers */ = {isa = PBXBuildFile; fileRef = 1710DBE3C7151B8AB47F7A9F74055B64 /* HandyJSON.h */; settings = {ATTRIBUTES = (Public, ); }; }; - EF21586EC3DFF6097A58EEC87376A0C1 /* ConstraintLayoutGuideDSL.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EBE2A5988B01C477AFF1CE3128EE8AF /* ConstraintLayoutGuideDSL.swift */; }; - EF6DD06709E5EFD67031FF9B5901A827 /* RxTableViewDelegateProxy.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8807FF18BB93251158B72386A622E490 /* RxTableViewDelegateProxy.swift */; }; - F006EB7A9EF6612EE871EBBF1EE4655B /* ObservableConvertibleType.swift in Sources */ = {isa = PBXBuildFile; fileRef = A2FB155675AB0F9CD4391CE05510152D /* ObservableConvertibleType.swift */; }; - F038D81F7ABAA15CF03246AD4BF334F7 /* Alamofire-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 166CB5B3B91C1FF4370249653FD8320D /* Alamofire-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F0483870DE1B0E2DD94DAAA7287E46AD /* Infallible+Concurrency.swift in Sources */ = {isa = PBXBuildFile; fileRef = E4AD07036A83707DD229318C03B6CE81 /* Infallible+Concurrency.swift */; }; - F07878596C474719C556096025C2E9E4 /* Zip+Collection.swift in Sources */ = {isa = PBXBuildFile; fileRef = CC92DDE2881965C74B23F6A422B435B3 /* Zip+Collection.swift */; }; - F0D6C540C0CAEFE51A29FC9C5867096E /* GroupBy.swift in Sources */ = {isa = PBXBuildFile; fileRef = 22B9AC50C1A66CFB12BF81596173CD39 /* GroupBy.swift */; }; - F16D0BB1231D60CBF7B3AE25B92D0D74 /* EnumTransform.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9D3BCD1EA3553D12354FD5FA1FAE15CC /* EnumTransform.swift */; }; - F2415AE8678DE2698B7AD7D88B1A5C0F /* AlamofireExtended.swift in Sources */ = {isa = PBXBuildFile; fileRef = A3F6B5834C04BE54692EFEF14936348F /* AlamofireExtended.swift */; }; - F2B61F23B613A4D92CE8459C4BE431BE /* AnyObserver.swift in Sources */ = {isa = PBXBuildFile; fileRef = 692E3C85CC1223B95D6A9605B661FA68 /* AnyObserver.swift */; }; - F2DDF679DF721DDA14A53744DD540092 /* NSSlider+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7B6C73A34CCB4FCB54A17345BD0051FC /* NSSlider+Rx.swift */; }; - F2EF471EA98AA31CA53CEE65F76F151E /* Merge.swift in Sources */ = {isa = PBXBuildFile; fileRef = F45DCBE864FA17C68B639547AEB93B03 /* Merge.swift */; }; - F3617B01FE1D713C9E39D57E32C905AE /* NibLoadable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2B48BE2A6404DB81C7324A3CE9177FCA /* NibLoadable.swift */; }; - F3B4A826460EF6A9B19849D1E7AF6A52 /* ControlEvent+Signal.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9A2C43D00EDD3B8E5B6D1AC17B1E48E1 /* ControlEvent+Signal.swift */; }; - F3ED4CDEB88F2CFB6AE17AEB4C59F210 /* RetryWhen.swift in Sources */ = {isa = PBXBuildFile; fileRef = 29305731B01CF8E4A32561061D6EA1AE /* RetryWhen.swift */; }; - F575822C8B7F17129429E00A9081ECA2 /* SessionDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5A549727CCD5C1657E53A8BAE5E58145 /* SessionDelegate.swift */; }; - F5AF27692F3A5C9087F015B5C40A35E7 /* RxTarget.swift in Sources */ = {isa = PBXBuildFile; fileRef = C526294611337A8D4EF5C3D3D571C77B /* RxTarget.swift */; }; - F60E2B85B28D1E27FD52F9B0D62A50C8 /* _RXKVOObserver.m in Sources */ = {isa = PBXBuildFile; fileRef = 3B45D252945E879A3B88C8989E5C2CC6 /* _RXKVOObserver.m */; }; - F66CC47AD425C8D57BD149AFD09C2AFE /* HTTPMethod.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E269149DE9BA1B81C3504720A668420 /* HTTPMethod.swift */; }; - F6E94E8EE1CE35F49B9091BE8748587B /* Result+Alamofire.swift in Sources */ = {isa = PBXBuildFile; fileRef = A0CB4A2B49E071E7012FEE7D28B8B467 /* Result+Alamofire.swift */; }; - F7425A58E24926CCAC413F85D403B9FA /* FieldDescriptor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6438C8BA15E4054D7ACA1E3DFF2066DB /* FieldDescriptor.swift */; }; - F7774F70F3F7CD7E11F01BD8B62FFF15 /* URLSession+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = 69B3A5BB96CFA43786C0ACFCF6162F46 /* URLSession+Rx.swift */; }; - F79760816256C3B04E54319DA3A105E2 /* ElementAt.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC50DBE03FF22FAAF1D4BE41AAFB9A8A /* ElementAt.swift */; }; - F7C0960CEEB8F0C18F4503B405EAC08F /* ConstraintMultiplierTarget.swift in Sources */ = {isa = PBXBuildFile; fileRef = ADE256164152BE966B102C5F104FC06F /* ConstraintMultiplierTarget.swift */; }; - F953AA9104BFE0C2DAD639EA60104A75 /* ConstraintView+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = FAC78FA49D7FB72A1D9081306F499298 /* ConstraintView+Extensions.swift */; }; - F97840AF9065A123E8B1DABA7D95BB9D /* Runtime.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4A9962A1E3D931E363F3C4D48522361B /* Runtime.swift */; }; - F9821B669566BA01F845426DC6834E76 /* Observable+Bind.swift in Sources */ = {isa = PBXBuildFile; fileRef = 645BF6563AFCDBF6A94CF2E1A387FA8C /* Observable+Bind.swift */; }; - F98E3202B0021DC8B2DB77256FBE5DD3 /* ISO8601DateTransform.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8B337D475349119A9023DB9A04FAED7 /* ISO8601DateTransform.swift */; }; - FA823A5BF5E118ADBC89B7CCD6B433A3 /* Disposable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7AD5F75086AF715FAD56BDDA5876EA2B /* Disposable.swift */; }; - FAB03959C2357E325B19E08BC4775DAB /* ConstraintMaker.swift in Sources */ = {isa = PBXBuildFile; fileRef = A35CA8960849EFAC715838CF15CFD05D /* ConstraintMaker.swift */; }; - FAF7C9C4F9B6AE2CE9F5866B210D9275 /* SharedSequence+Operators.swift in Sources */ = {isa = PBXBuildFile; fileRef = E520F3EC8458D3F1E6174E0EC460E79B /* SharedSequence+Operators.swift */; }; - FBBA4924C2C83A3715D6F04B1E6E64C4 /* Response.swift in Sources */ = {isa = PBXBuildFile; fileRef = C2265CF40B5E3E71870047392079AF16 /* Response.swift */; }; + E7378F61AD6959D5538E595EA4A48AF4 /* AVAssetImageDataProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 480EDAA6B7D36E9874494B2E6151C5E4 /* AVAssetImageDataProvider.swift */; }; + E7B06E98F3530C96FB6B2D8272169C22 /* Endpoint.swift in Sources */ = {isa = PBXBuildFile; fileRef = 392891C2723384FABB073976816A97F6 /* Endpoint.swift */; }; + E7C58133036040A730E4546D0C0DE87F /* Reusable-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 1C8706A0387AE42502D4E50D02F89863 /* Reusable-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + E95D6E6462506EFD8EA9332AD9BC492A /* SizeExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = BC481A53F6E3B805C15CDF42E9CD6584 /* SizeExtensions.swift */; }; + E960539876F49FCF04221527CADA80EB /* Disposables.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0C01DA440B65529FF3B4C97B189FFB2C /* Disposables.swift */; }; + E96237AD09307C04347214A1E8406DE4 /* Infallible+CombineLatest+arity.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF4663BDF3FF1BBB328D1386EEA720FB /* Infallible+CombineLatest+arity.swift */; }; + E98DC8FB2578E76A812E0C94BA10E1B1 /* ConstraintDirectionalInsets.swift in Sources */ = {isa = PBXBuildFile; fileRef = B718BA5F8DDCBC7DB30702FCBBA67359 /* ConstraintDirectionalInsets.swift */; }; + EA5FE4B4B3BF04976C37430E4F3721EF /* RxPickerViewDelegateProxy.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5FC9F13D2042C9127C92E064025DCB3F /* RxPickerViewDelegateProxy.swift */; }; + ECC476559FEE897DAEA42170D3A20385 /* SubscriptionDisposable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 71C481FAF5CC966B3F886064180B2B77 /* SubscriptionDisposable.swift */; }; + ECE6F23823454A8FDB3F97CE1A7CD182 /* RedirectHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52695BEF29103B49AFA3E6D07B5DA251 /* RedirectHandler.swift */; }; + ECF2F956B37A4C28B228BC291A57AD6E /* RequestTaskMap.swift in Sources */ = {isa = PBXBuildFile; fileRef = 58903B90368CCFA6AD11E2E645067FFD /* RequestTaskMap.swift */; }; + ED71E932B7F30AD7CFD2A04968A2B5CC /* CBridge.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8D595EA69AB680F872D031230F31D7A6 /* CBridge.swift */; }; + EE4E233D2DD0DFC4F82FD6748EC3429F /* ImageBinder.swift in Sources */ = {isa = PBXBuildFile; fileRef = F8D3AE3B2E4560C3687781ED7152AB01 /* ImageBinder.swift */; }; + EEFF0A57765CB734CF01868904F56DA7 /* HandyJSON.h in Headers */ = {isa = PBXBuildFile; fileRef = 776B96425454A6A164C943EC6F438F82 /* HandyJSON.h */; settings = {ATTRIBUTES = (Public, ); }; }; + EF1D2EF3DB382FD8FC8F2F81D1970929 /* Infallible+Create.swift in Sources */ = {isa = PBXBuildFile; fileRef = CCA9765CD1D8A3679F44C631D5EE14F9 /* Infallible+Create.swift */; }; + EF21586EC3DFF6097A58EEC87376A0C1 /* ConstraintLayoutGuideDSL.swift in Sources */ = {isa = PBXBuildFile; fileRef = CDCB27A05975B5FE898AE6FC219EB03D /* ConstraintLayoutGuideDSL.swift */; }; + EF6DD06709E5EFD67031FF9B5901A827 /* RxTableViewDelegateProxy.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7B12288C33DA62D48C6C165C6AF775E2 /* RxTableViewDelegateProxy.swift */; }; + F038D81F7ABAA15CF03246AD4BF334F7 /* Alamofire-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 732D486F61D057118E87EF7400F484A8 /* Alamofire-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F03BD177FAB4FDA5703314BFE1B168BD /* AsyncSubject.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7FF069A5D3B7CB96B4779D694ABE8A3C /* AsyncSubject.swift */; }; + F16D0BB1231D60CBF7B3AE25B92D0D74 /* EnumTransform.swift in Sources */ = {isa = PBXBuildFile; fileRef = C6AB98914F4BC90B03288E5B05AB76CB /* EnumTransform.swift */; }; + F2415AE8678DE2698B7AD7D88B1A5C0F /* AlamofireExtended.swift in Sources */ = {isa = PBXBuildFile; fileRef = 72C1719832669826CE6B99D14E500D80 /* AlamofireExtended.swift */; }; + F28EE02273BA1FC5950A0CB1C9917B9A /* PublishRelay.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04971EB91A18482322553B45F6D1064A /* PublishRelay.swift */; }; + F2DDF679DF721DDA14A53744DD540092 /* NSSlider+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8896796ADE3D457CE11A410DDE855ECB /* NSSlider+Rx.swift */; }; + F3356E1AF0712E99435E5833E757A5B1 /* Producer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 835A4FE4528BFCB9CD61AC9E4E54C93E /* Producer.swift */; }; + F3617B01FE1D713C9E39D57E32C905AE /* NibLoadable.swift in Sources */ = {isa = PBXBuildFile; fileRef = DCF6A3A628FF5CB4FBFDA361BC29932A /* NibLoadable.swift */; }; + F3B4A826460EF6A9B19849D1E7AF6A52 /* ControlEvent+Signal.swift in Sources */ = {isa = PBXBuildFile; fileRef = E1A0C144985B2BE2F2DCD7D49970DE87 /* ControlEvent+Signal.swift */; }; + F4C32EE4E7CADA2147793A0BCEB0D31F /* Reactive.swift in Sources */ = {isa = PBXBuildFile; fileRef = 601D5F306FC97BFA6CC5297D9F072D34 /* Reactive.swift */; }; + F52A66B839B19416A9DA04290F203E2C /* NSObject+Rx-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 1353995A8016A914A20D44B2F14C8E44 /* NSObject+Rx-dummy.m */; }; + F575822C8B7F17129429E00A9081ECA2 /* SessionDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = FD3CD2B6C6794094723AB8AD96C5A568 /* SessionDelegate.swift */; }; + F5AF27692F3A5C9087F015B5C40A35E7 /* RxTarget.swift in Sources */ = {isa = PBXBuildFile; fileRef = 513A35C6696CAB5A33FC454009387362 /* RxTarget.swift */; }; + F5D2C6A309A21B2C62AD709CE3CD4D1E /* ObserverBase.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32FE0D015A342DAAB434FE66B1B7BE80 /* ObserverBase.swift */; }; + F60E2B85B28D1E27FD52F9B0D62A50C8 /* _RXKVOObserver.m in Sources */ = {isa = PBXBuildFile; fileRef = C2B360D337689EDAD19C0E26CC458AF5 /* _RXKVOObserver.m */; }; + F66CC47AD425C8D57BD149AFD09C2AFE /* HTTPMethod.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0831AAE60460A0112B7E7B06862B6848 /* HTTPMethod.swift */; }; + F6E94E8EE1CE35F49B9091BE8748587B /* Result+Alamofire.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7B1C97EF32D83A495E3E919A226AAD9D /* Result+Alamofire.swift */; }; + F7425A58E24926CCAC413F85D403B9FA /* FieldDescriptor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8D005EBBF6DAF0E261F25A203A5C5D53 /* FieldDescriptor.swift */; }; + F7774F70F3F7CD7E11F01BD8B62FFF15 /* URLSession+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0C65E46783FF6B995032B422A723E607 /* URLSession+Rx.swift */; }; + F7C0960CEEB8F0C18F4503B405EAC08F /* ConstraintMultiplierTarget.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6B87468206E69D53B049703EDDD01606 /* ConstraintMultiplierTarget.swift */; }; + F81CCD2588F442839855E2B6B2C715B3 /* OperationQueueScheduler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 59D8127EAD2E5B49A393C8B2FBA38256 /* OperationQueueScheduler.swift */; }; + F953AA9104BFE0C2DAD639EA60104A75 /* ConstraintView+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = E652E7EE345B1555C611DC594858587E /* ConstraintView+Extensions.swift */; }; + F97840AF9065A123E8B1DABA7D95BB9D /* Runtime.swift in Sources */ = {isa = PBXBuildFile; fileRef = 54C1F34CF6E3BFA0DE23BE942DC3EAEA /* Runtime.swift */; }; + F9821B669566BA01F845426DC6834E76 /* Observable+Bind.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C20F2D35CADF661F8FFD19A3406146A /* Observable+Bind.swift */; }; + F98E3202B0021DC8B2DB77256FBE5DD3 /* ISO8601DateTransform.swift in Sources */ = {isa = PBXBuildFile; fileRef = DE5ACE88C667E3B293957A0360342E21 /* ISO8601DateTransform.swift */; }; + FAB03959C2357E325B19E08BC4775DAB /* ConstraintMaker.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1D188AA6717470D032D31BE0526B5642 /* ConstraintMaker.swift */; }; + FAF7C9C4F9B6AE2CE9F5866B210D9275 /* SharedSequence+Operators.swift in Sources */ = {isa = PBXBuildFile; fileRef = B0CBB6DFE407F4D1F54246F9C2F11BA7 /* SharedSequence+Operators.swift */; }; + FB4062E0349D728498566DCD98A78FE5 /* Amb.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3E12B8EDB7687514ED89C97F314FD768 /* Amb.swift */; }; + FB8965FC9A4BF1CCA1A87C8D795EB3AF /* Zip.swift in Sources */ = {isa = PBXBuildFile; fileRef = 35D18B04304514C01F1A974665923E6F /* Zip.swift */; }; + FBBA4924C2C83A3715D6F04B1E6E64C4 /* Response.swift in Sources */ = {isa = PBXBuildFile; fileRef = 020375D25093FA92367C3FE6CE85990C /* Response.swift */; }; FC44FD753ECE619F3F635F28B1221DEF /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6A1970A14C2672638850C555C17ADE89 /* Foundation.framework */; }; - FC4568452A01ACA7090C8B78CF6FFF5A /* Storage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2AE83D49E82297DF5D76F3A85D2DBEF1 /* Storage.swift */; }; - FCA5D79BFD9CAE6F09CF2D9E4CCB7C9B /* InfiniteSequence.swift in Sources */ = {isa = PBXBuildFile; fileRef = E20F55B135E3C24173DF453318747D59 /* InfiniteSequence.swift */; }; - FCD9660A73D7E00EA19E2F2295876E04 /* NSTextView+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0CA26D23785504CD85C0BA05F5263AB7 /* NSTextView+Rx.swift */; }; - FDBC11E754B3FD24CE89D3587C34793D /* DisposeBag.swift in Sources */ = {isa = PBXBuildFile; fileRef = D5405426B1D820B97554FFA85005A6A7 /* DisposeBag.swift */; }; - FDE4F53FC806778F0FEE26810D359D79 /* Debug.swift in Sources */ = {isa = PBXBuildFile; fileRef = 99155CE8434026F99E70418FAEF41EEA /* Debug.swift */; }; - FE9261A1344AF922C1EFCB457B938425 /* BehaviorRelay+Driver.swift in Sources */ = {isa = PBXBuildFile; fileRef = 48BEA0546BD26740F65A619717216925 /* BehaviorRelay+Driver.swift */; }; - FFEA28FE74753ABA9BDD87EDB46E5910 /* Platform.Linux.swift in Sources */ = {isa = PBXBuildFile; fileRef = 14F206D32E3EFDDDBDCA5B559448999B /* Platform.Linux.swift */; }; + FC4568452A01ACA7090C8B78CF6FFF5A /* Storage.swift in Sources */ = {isa = PBXBuildFile; fileRef = BBF764008D8A3E76E30BEBB9F91CA836 /* Storage.swift */; }; + FCD9660A73D7E00EA19E2F2295876E04 /* NSTextView+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3A6FD86129892C128B4883B000C969DE /* NSTextView+Rx.swift */; }; + FD1BF457164F358AF1E54CE2E1924EA6 /* Pods-yinmeng-ios-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 1BBD7BC93FC22FBD9C79EAB4AC435A7E /* Pods-yinmeng-ios-dummy.m */; }; + FE10E869E5E56AEFD51256C51CD411F7 /* Sample.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5F372CC7F486A1303F495BC208499742 /* Sample.swift */; }; + FE9261A1344AF922C1EFCB457B938425 /* BehaviorRelay+Driver.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0ACF64AE573B1EBE4C718E1894A0743E /* BehaviorRelay+Driver.swift */; }; + FF1287B03147BA35D6EDBAE2F399AB81 /* NopDisposable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5BAB1E0566059720BF60AC6E48713559 /* NopDisposable.swift */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ - 1658A2BFA314B61B2A73634AD62CE881 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 17F9141D333DA1A7BE5937F227221070; - remoteInfo = Moya; - }; - 2945BE7CD469F91A2F51C450AFA05666 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 82B0A41D3031FF27D78E17B0A9A46FB0; - remoteInfo = MBProgressHUD; - }; - 304B703E396722BB916969650EE3ECE3 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 4622BFEF3DC16E8BD15EEFC30D4D0084; - remoteInfo = RxRelay; - }; - 355C8F2CEBF2108145CF958E67525E6C /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 542460E7CDF2A9D5B2ECB5F8CE549E34; - remoteInfo = Reusable; - }; - 374C7A97590E5FE0A51BFBBD65FB78D1 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 7AD0C6DCDC9CEC8A3C7C10C7FEE07BE6; - remoteInfo = RxCocoa; - }; - 4C27EC4B5188F89173A9C29D169E0032 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = EA9EA43B3B503823EE36C60D9C8A865F; - remoteInfo = RxSwift; - }; - 6FE4ADF80639F6BB7A8166750DAACBCB /* PBXContainerItemProxy */ = { + 0A81B2EC8C597FDA069C0B11987DC810 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 19622742EBA51E823D6DAE3F8CDBFAD4; remoteInfo = SnapKit; }; - 72174616F0F2B6A658A39627B9B3AB27 /* PBXContainerItemProxy */ = { + 1662CE3F756ADE8C7A3E1F896F07BE96 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = EAAA1AD3A8A1B59AB91319EE40752C6D; - remoteInfo = Alamofire; + remoteGlobalIDString = 542460E7CDF2A9D5B2ECB5F8CE549E34; + remoteInfo = Reusable; }; - 9453D1A2DED6629FB2E6B2F47B5861EC /* PBXContainerItemProxy */ = { + 1BCA4EE3183108ECFD407E332E1B217D /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = EA9EA43B3B503823EE36C60D9C8A865F; remoteInfo = RxSwift; }; - A699C0A386EEF6602AED63A3F0386D29 /* PBXContainerItemProxy */ = { + 3FC034BCEB7D4CE3EA1D2EF340010ED2 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 9828BBC09E9FB1238624113D7456E59E; - remoteInfo = "Kingfisher-Kingfisher"; + remoteGlobalIDString = 4CDD1C6C8885D07092D8EA708AAC0E53; + remoteInfo = DeviceKit; }; - B250CBDA21743BA7F971FA3FFEF57DAA /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = EA9EA43B3B503823EE36C60D9C8A865F; - remoteInfo = RxSwift; - }; - D55789695C0CB9279A0E694653D0BE12 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = E8022D22FAA6690B5E1C379C1BCE1491; - remoteInfo = Kingfisher; - }; - D7630C5D5DEF74799EEF3A89A7518F08 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = EAAA1AD3A8A1B59AB91319EE40752C6D; - remoteInfo = Alamofire; - }; - DB1DC5BEA8CCBF1B3FD2396BBBEC7A93 /* PBXContainerItemProxy */ = { + 402F54D26A06D6C5E833E16587124F23 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 4622BFEF3DC16E8BD15EEFC30D4D0084; remoteInfo = RxRelay; }; - FF15280D6E3817C68943D4D47FCE6488 /* PBXContainerItemProxy */ = { + 4540F1BF1F57246A75E8301328A7B7CE /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 9828BBC09E9FB1238624113D7456E59E; + remoteInfo = "Kingfisher-Kingfisher"; + }; + 4D3A30CCAB72C8ECC00FD44C6CDED8C5 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 4622BFEF3DC16E8BD15EEFC30D4D0084; + remoteInfo = RxRelay; + }; + 6CF83AF81A68BEEAE89B106B7EBAF508 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = E8022D22FAA6690B5E1C379C1BCE1491; + remoteInfo = Kingfisher; + }; + 72D44FBBEFFE5BAF3B93DF0403BC5637 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = B8A8605EB5769E41DC25E1879868AF1C; + remoteInfo = "NSObject+Rx"; + }; + 79EF2EC5DAE04B56C1D03F2210B851DC /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = EA9EA43B3B503823EE36C60D9C8A865F; + remoteInfo = RxSwift; + }; + 89040DAE0AA56A42D266BAD1727E0015 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 10D88C24864319FF583AD6D156896F32; remoteInfo = HandyJSON; }; + 8E5134625B7004AE055563C4DE6EDA4B /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = EA9EA43B3B503823EE36C60D9C8A865F; + remoteInfo = RxSwift; + }; + 94525AEEB7E7F123EE4AF1079FC14C80 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 17F9141D333DA1A7BE5937F227221070; + remoteInfo = Moya; + }; + 999C27382BDBA2CA41120036900543E2 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = EAAA1AD3A8A1B59AB91319EE40752C6D; + remoteInfo = Alamofire; + }; + AA2EB75C26728BA7FB2D706C5430CB7B /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 7AD0C6DCDC9CEC8A3C7C10C7FEE07BE6; + remoteInfo = RxCocoa; + }; + B857D0F6FA0B2C3F52609C41D19C7023 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = EAAA1AD3A8A1B59AB91319EE40752C6D; + remoteInfo = Alamofire; + }; + D2469B53360567BD082331A5A60665FD /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 82B0A41D3031FF27D78E17B0A9A46FB0; + remoteInfo = MBProgressHUD; + }; + E0831A863E8B9AE418AF7834ED71D85A /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = EA9EA43B3B503823EE36C60D9C8A865F; + remoteInfo = RxSwift; + }; /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ - 002ED0D813882532198DEB9328551828 /* Image.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Image.swift; path = Sources/Moya/Image.swift; sourceTree = ""; }; - 005B0AA170372B033FC09D4E58FBAC9A /* ImageDataProvider.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ImageDataProvider.swift; path = Sources/General/ImageSource/ImageDataProvider.swift; sourceTree = ""; }; - 013009926D6AF27C596929D48AB266B6 /* Moya-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Moya-prefix.pch"; sourceTree = ""; }; - 016AA1ECBFE5BEF6D881059F1B2DD9BC /* UICollectionView+Reusable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UICollectionView+Reusable.swift"; path = "Sources/View/UICollectionView+Reusable.swift"; sourceTree = ""; }; - 017CB031F08EF999D20BCEE492444892 /* Reusable-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Reusable-prefix.pch"; sourceTree = ""; }; - 0292DCF642DD7EA1D1116B8623A8C599 /* KingfisherManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = KingfisherManager.swift; path = Sources/General/KingfisherManager.swift; sourceTree = ""; }; - 02F4A94A543B7090414D2D11E1C5F3A2 /* CombineLatest.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CombineLatest.swift; path = RxSwift/Observables/CombineLatest.swift; sourceTree = ""; }; - 03480C2AB8FE1C2C40314057985B0228 /* RxCocoa-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "RxCocoa-Info.plist"; sourceTree = ""; }; - 03B41EBBD593C680744DAD960E245F91 /* Reusable.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Reusable.debug.xcconfig; sourceTree = ""; }; - 045D5D90782798F36E8E8F973DAC5B28 /* AnyEncodable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AnyEncodable.swift; path = Sources/Moya/AnyEncodable.swift; sourceTree = ""; }; - 04860F824879B09726E0E71EE19968C8 /* SnapKit-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SnapKit-umbrella.h"; sourceTree = ""; }; - 0487859709F230146392D21D1B192DC0 /* Switch.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Switch.swift; path = RxSwift/Observables/Switch.swift; sourceTree = ""; }; - 057D6C489248FFA4166DD24D93435763 /* RxCocoa.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RxCocoa.h; path = RxCocoa/RxCocoa.h; sourceTree = ""; }; - 05C2B32ED7987DD94725453C00328CE3 /* Notifications.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Notifications.swift; path = Source/Notifications.swift; sourceTree = ""; }; - 065A74676EEAD75E1F49A21AACEAF349 /* PrimitiveSequence.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PrimitiveSequence.swift; path = RxSwift/Traits/PrimitiveSequence/PrimitiveSequence.swift; sourceTree = ""; }; - 06FAB48DA0C18A3EE1754D953DB58E96 /* Platform.Linux.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Platform.Linux.swift; path = Platform/Platform.Linux.swift; sourceTree = ""; }; - 0705C992AE1A7F2F2FF703DD1338C3F7 /* TakeLast.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TakeLast.swift; path = RxSwift/Observables/TakeLast.swift; sourceTree = ""; }; - 07360B313B37C9A5C5310D3E0442D54B /* Plugin.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Plugin.swift; path = Sources/Moya/Plugin.swift; sourceTree = ""; }; - 0764DAF106A0E6A03874313AD80FDDB7 /* MoyaProvider+Internal.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "MoyaProvider+Internal.swift"; path = "Sources/Moya/MoyaProvider+Internal.swift"; sourceTree = ""; }; - 08095C11257E23D25E208304881B3A90 /* Decode.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Decode.swift; path = RxSwift/Observables/Decode.swift; sourceTree = ""; }; - 086CC48512270C1C4BB20AE3B7A179F9 /* HistoricalScheduler.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = HistoricalScheduler.swift; path = RxSwift/Schedulers/HistoricalScheduler.swift; sourceTree = ""; }; - 089F4ED85F7C9FD8E053CA99D41D3132 /* UITextView+Rx.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UITextView+Rx.swift"; path = "RxCocoa/iOS/UITextView+Rx.swift"; sourceTree = ""; }; - 09071625C0D4ED0715EBF9938CAB0C6B /* RecursiveScheduler.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RecursiveScheduler.swift; path = RxSwift/Schedulers/RecursiveScheduler.swift; sourceTree = ""; }; - 0A4ABF00795A4D24AA39AE0648DAAFF8 /* NibOwnerLoadable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NibOwnerLoadable.swift; path = Sources/View/NibOwnerLoadable.swift; sourceTree = ""; }; - 0A998D586FC04E7F45D15D9E8E02E70B /* AtomicInt.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AtomicInt.swift; path = Platform/AtomicInt.swift; sourceTree = ""; }; - 0AA9F81ECF26C389EB0017F3D63D208A /* SnapKit-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "SnapKit-Info.plist"; sourceTree = ""; }; - 0BBE9868390C0ACA219A59A1F61C4F09 /* DispatchQueue+Extensions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "DispatchQueue+Extensions.swift"; path = "Platform/DispatchQueue+Extensions.swift"; sourceTree = ""; }; - 0CA26D23785504CD85C0BA05F5263AB7 /* NSTextView+Rx.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "NSTextView+Rx.swift"; path = "RxCocoa/macOS/NSTextView+Rx.swift"; sourceTree = ""; }; - 0D0D830BAD1F66163C68EB9A1BA9E147 /* ConstraintView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintView.swift; path = Sources/ConstraintView.swift; sourceTree = ""; }; - 0D5B6D4F9F8CF76D040623D82B12D15E /* _RX.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = _RX.m; path = RxCocoa/Runtime/_RX.m; sourceTree = ""; }; - 0D924D0F2142E1C7FED799E98F5B5A2C /* Reusable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Reusable.swift; path = Sources/View/Reusable.swift; sourceTree = ""; }; - 0DD70DADAD30E2F4D27E3DD7A1EAC006 /* String+MD5.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "String+MD5.swift"; path = "Sources/Utility/String+MD5.swift"; sourceTree = ""; }; - 0E6A6730169419E002FF07C1AE880F77 /* ConstraintMakerFinalizable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintMakerFinalizable.swift; path = Sources/ConstraintMakerFinalizable.swift; sourceTree = ""; }; - 0F1253A739AF193B8223BE13ABA2A2BE /* UISearchBar+Rx.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UISearchBar+Rx.swift"; path = "RxCocoa/iOS/UISearchBar+Rx.swift"; sourceTree = ""; }; - 0F2F174FA9B884D41464BD84265273E9 /* StoryboardBased.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = StoryboardBased.swift; path = Sources/Storyboard/StoryboardBased.swift; sourceTree = ""; }; - 0F964475871A4284F485DC930EB7FE0D /* ImageContext.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ImageContext.swift; path = Sources/SwiftUI/ImageContext.swift; sourceTree = ""; }; - 0FE18AD6C78E4D9C1E9EDB83E8763861 /* URLEncodedFormEncoder.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = URLEncodedFormEncoder.swift; path = Source/URLEncodedFormEncoder.swift; sourceTree = ""; }; - 105DC924B68D07DCCA5F7BBD13103F15 /* KF.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = KF.swift; path = Sources/General/KF.swift; sourceTree = ""; }; - 107549C133EE5267BA358393A90EF059 /* MBProgressHUD-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "MBProgressHUD-prefix.pch"; sourceTree = ""; }; - 10D600B6F7169DFD7E81912260743F3F /* ObservableConvertibleType+Infallible.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "ObservableConvertibleType+Infallible.swift"; path = "RxSwift/Traits/Infallible/ObservableConvertibleType+Infallible.swift"; sourceTree = ""; }; - 10DF3559568462A634A6F7EE6FFBCA00 /* Observable+Concurrency.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Observable+Concurrency.swift"; path = "RxSwift/Observable+Concurrency.swift"; sourceTree = ""; }; - 11D7747447E5C511F9D8307F10E5168C /* KFImageRenderer.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = KFImageRenderer.swift; path = Sources/SwiftUI/KFImageRenderer.swift; sourceTree = ""; }; - 126D7923B95B1B893763329F065ECC1C /* Moya-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Moya-umbrella.h"; sourceTree = ""; }; - 14F206D32E3EFDDDBDCA5B559448999B /* Platform.Linux.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Platform.Linux.swift; path = Platform/Platform.Linux.swift; sourceTree = ""; }; - 1517F2B568C0846F286EF269D17902A5 /* Optional.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Optional.swift; path = RxSwift/Observables/Optional.swift; sourceTree = ""; }; - 154835255F9916E0769C0D71A8A3267C /* SerialDispatchQueueScheduler.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SerialDispatchQueueScheduler.swift; path = RxSwift/Schedulers/SerialDispatchQueueScheduler.swift; sourceTree = ""; }; - 160D2BDCA79733E1BBB01B00F9404132 /* UISlider+Rx.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UISlider+Rx.swift"; path = "RxCocoa/iOS/UISlider+Rx.swift"; sourceTree = ""; }; - 165629B479649391782C794AE7C8E435 /* RxScrollViewDelegateProxy.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RxScrollViewDelegateProxy.swift; path = RxCocoa/iOS/Proxies/RxScrollViewDelegateProxy.swift; sourceTree = ""; }; - 166CB5B3B91C1FF4370249653FD8320D /* Alamofire-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Alamofire-umbrella.h"; sourceTree = ""; }; - 16B897EE9E0FB539D6DCE44EC4FE5968 /* BuiltInBasicType.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BuiltInBasicType.swift; path = Source/BuiltInBasicType.swift; sourceTree = ""; }; - 1710DBE3C7151B8AB47F7A9F74055B64 /* HandyJSON.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HandyJSON.h; path = Source/HandyJSON.h; sourceTree = ""; }; - 17D5BC96435F4DD211BCF227E506B92E /* TVMonogramView+Kingfisher.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "TVMonogramView+Kingfisher.swift"; path = "Sources/Extensions/TVMonogramView+Kingfisher.swift"; sourceTree = ""; }; - 17D7B878065E9387C23C43CFACC3A867 /* SubjectType.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SubjectType.swift; path = RxSwift/Subjects/SubjectType.swift; sourceTree = ""; }; - 1828EE850F0785BEBBEEB6381406536B /* Box.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Box.swift; path = Sources/Utility/Box.swift; sourceTree = ""; }; - 18C45484AE9F211603671E126686D88F /* CurrentThreadScheduler.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CurrentThreadScheduler.swift; path = RxSwift/Schedulers/CurrentThreadScheduler.swift; sourceTree = ""; }; - 191A401108B388D3700F7B69157F58FA /* SharedSequence+Concurrency.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "SharedSequence+Concurrency.swift"; path = "RxCocoa/Traits/SharedSequence/SharedSequence+Concurrency.swift"; sourceTree = ""; }; - 192C6CC3B7F6F517C4D157448480ECF7 /* RxSearchControllerDelegateProxy.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RxSearchControllerDelegateProxy.swift; path = RxCocoa/iOS/Proxies/RxSearchControllerDelegateProxy.swift; sourceTree = ""; }; - 19B406112800825F5B01A0BBED47F0BE /* Driver+Subscription.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Driver+Subscription.swift"; path = "RxCocoa/Traits/Driver/Driver+Subscription.swift"; sourceTree = ""; }; - 19B712EE8F117D2EC35F9A295028959B /* RxSwift.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = RxSwift.release.xcconfig; sourceTree = ""; }; - 19D15B6F087615D6E6964610E2461AAD /* Alamofire.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Alamofire.debug.xcconfig; sourceTree = ""; }; + 00DA9C81EB81E19B9D108BF0A4969BE5 /* Delay.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Delay.swift; path = RxSwift/Observables/Delay.swift; sourceTree = ""; }; + 013EF561C07F573DB885A241B0BCE5D8 /* ConstraintMakerRelatable+Extensions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "ConstraintMakerRelatable+Extensions.swift"; path = "Sources/ConstraintMakerRelatable+Extensions.swift"; sourceTree = ""; }; + 0160BDC3EB8B8E1F24F1C231DD0170F6 /* NSView+Rx.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "NSView+Rx.swift"; path = "RxCocoa/macOS/NSView+Rx.swift"; sourceTree = ""; }; + 0167E4EE6973882C4A08152842368D65 /* Kingfisher-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Kingfisher-Info.plist"; sourceTree = ""; }; + 020375D25093FA92367C3FE6CE85990C /* Response.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Response.swift; path = Sources/Moya/Response.swift; sourceTree = ""; }; + 029DD43B88E15C10495709D19F72F255 /* ControlTarget.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ControlTarget.swift; path = RxCocoa/Common/ControlTarget.swift; sourceTree = ""; }; + 02D807D8CB2F4C889568E7417FBFD65B /* RedirectHandler.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RedirectHandler.swift; path = Sources/Networking/RedirectHandler.swift; sourceTree = ""; }; + 032CFC70FF289E344663B4BA3446793E /* RxMutableBox.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RxMutableBox.swift; path = RxSwift/RxMutableBox.swift; sourceTree = ""; }; + 0335780FBC4E8A5662B698341536C915 /* SchedulerType.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SchedulerType.swift; path = RxSwift/SchedulerType.swift; sourceTree = ""; }; + 034B622836FB450CF2B24AEE78EDCB81 /* HandyJSON-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "HandyJSON-dummy.m"; sourceTree = ""; }; + 03DB0A294FB90E896367AF7F25CE6F5D /* SharedSequence+Operators+arity.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "SharedSequence+Operators+arity.swift"; path = "RxCocoa/Traits/SharedSequence/SharedSequence+Operators+arity.swift"; sourceTree = ""; }; + 041FA2EF962E0A05A873BCEB0B86907B /* Signal+Subscription.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Signal+Subscription.swift"; path = "RxCocoa/Traits/Signal/Signal+Subscription.swift"; sourceTree = ""; }; + 04971EB91A18482322553B45F6D1064A /* PublishRelay.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PublishRelay.swift; path = RxRelay/PublishRelay.swift; sourceTree = ""; }; + 04A45391C09A593CEB4478041D5286C4 /* ConstraintConfig.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintConfig.swift; path = Sources/ConstraintConfig.swift; sourceTree = ""; }; + 04CDBB438938CFA5379E0FFB6BA3077A /* Reusable-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Reusable-Info.plist"; sourceTree = ""; }; + 04E35B0D16A80E7522873FFE2BE9BBF3 /* UITextView+Rx.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UITextView+Rx.swift"; path = "RxCocoa/iOS/UITextView+Rx.swift"; sourceTree = ""; }; + 05448EE1CD5430DBD9EE0F232E4FF340 /* EventMonitor.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = EventMonitor.swift; path = Source/EventMonitor.swift; sourceTree = ""; }; + 05A9AE844A45DE0A673C91E7E9DED633 /* MBProgressHUD-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "MBProgressHUD-umbrella.h"; sourceTree = ""; }; + 05B61E58D267CACDD4934BD61AC0B73F /* PrimitiveSequence.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PrimitiveSequence.swift; path = RxSwift/Traits/PrimitiveSequence/PrimitiveSequence.swift; sourceTree = ""; }; + 068F26D8E6DB6ECB7BA6646333D6EDB8 /* GroupedObservable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = GroupedObservable.swift; path = RxSwift/GroupedObservable.swift; sourceTree = ""; }; + 06DFC1DD89D70D6B98C5BC9EC418AA53 /* MBProgressHUD.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = MBProgressHUD.h; sourceTree = ""; }; + 07223854880AEC32576775DB6FF2DA1C /* DeviceKit-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "DeviceKit-dummy.m"; sourceTree = ""; }; + 072A25A8F051BA7011D988BCB8FAAE2D /* Kingfisher.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Kingfisher.swift; path = Sources/General/Kingfisher.swift; sourceTree = ""; }; + 072B55799DE68D25E127A0A4393FD8C2 /* Throttle.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Throttle.swift; path = RxSwift/Observables/Throttle.swift; sourceTree = ""; }; + 0831AAE60460A0112B7E7B06862B6848 /* HTTPMethod.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = HTTPMethod.swift; path = Source/HTTPMethod.swift; sourceTree = ""; }; + 08CD0C6D58745B17854A0B374D4B5591 /* NSButton+Kingfisher.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "NSButton+Kingfisher.swift"; path = "Sources/Extensions/NSButton+Kingfisher.swift"; sourceTree = ""; }; + 08FC94C88B8CC56DBFE85B65C6478B2A /* RxRelay.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = RxRelay.release.xcconfig; sourceTree = ""; }; + 09B232CCEFA17A5D9EB3501E35D94EFE /* ImageModifier.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ImageModifier.swift; path = Sources/Networking/ImageModifier.swift; sourceTree = ""; }; + 09FAFC68060797D75A0359C60B6E853B /* RxTabBarDelegateProxy.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RxTabBarDelegateProxy.swift; path = RxCocoa/iOS/Proxies/RxTabBarDelegateProxy.swift; sourceTree = ""; }; + 0A043445AC27DA4DC50ED867E3650165 /* Kingfisher-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Kingfisher-prefix.pch"; sourceTree = ""; }; + 0A9053A0CF13DED3A71CB28D7D0BFD43 /* Create.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Create.swift; path = RxSwift/Observables/Create.swift; sourceTree = ""; }; + 0AC7740E93EFA65D1A194E2E4DD35984 /* Errors.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Errors.swift; path = RxSwift/Errors.swift; sourceTree = ""; }; + 0ACF64AE573B1EBE4C718E1894A0743E /* BehaviorRelay+Driver.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "BehaviorRelay+Driver.swift"; path = "RxCocoa/Traits/Driver/BehaviorRelay+Driver.swift"; sourceTree = ""; }; + 0B09A6C2B029E2E6A793FDA312313D67 /* RxRelay.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = RxRelay.modulemap; sourceTree = ""; }; + 0C01DA440B65529FF3B4C97B189FFB2C /* Disposables.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Disposables.swift; path = RxSwift/Disposables/Disposables.swift; sourceTree = ""; }; + 0C045BBF13DA4C94B106E8CD4D649379 /* CustomDateFormatTransform.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CustomDateFormatTransform.swift; path = Source/CustomDateFormatTransform.swift; sourceTree = ""; }; + 0C3F03AF494DD751698B191249F3CC5C /* Window.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Window.swift; path = RxSwift/Observables/Window.swift; sourceTree = ""; }; + 0C65E46783FF6B995032B422A723E607 /* URLSession+Rx.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "URLSession+Rx.swift"; path = "RxCocoa/Foundation/URLSession+Rx.swift"; sourceTree = ""; }; + 0C6F2AF7CD8F66870099308891009AF6 /* BehaviorRelay.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BehaviorRelay.swift; path = RxRelay/BehaviorRelay.swift; sourceTree = ""; }; + 0CC2D1BB9EEBEA95ED9544793D54CFC3 /* UILayoutSupport+Extensions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UILayoutSupport+Extensions.swift"; path = "Sources/UILayoutSupport+Extensions.swift"; sourceTree = ""; }; + 0D1BECCFF9D91B95AB55CF3C774AFAEB /* MultiTarget.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = MultiTarget.swift; path = Sources/Moya/MultiTarget.swift; sourceTree = ""; }; + 0EB7321B3C92137653B3779354AB496A /* Filter.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Filter.swift; path = Sources/Image/Filter.swift; sourceTree = ""; }; + 0F3660AA3ED8785C700E05C1D4CB48A0 /* Concurrency.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Concurrency.swift; path = Source/Concurrency.swift; sourceTree = ""; }; + 102BAF91E1EB63518F37D45A477DD641 /* ConstraintItem.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintItem.swift; path = Sources/ConstraintItem.swift; sourceTree = ""; }; + 10B622DDF8C2ABA8EC74EEA0B9C93A7D /* Constraint.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Constraint.swift; path = Sources/Constraint.swift; sourceTree = ""; }; + 11A5C21AE17E6B568C618DAF6914B0C1 /* _RX.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = _RX.m; path = RxCocoa/Runtime/_RX.m; sourceTree = ""; }; + 11EAD2B482787D72AAE913B5CF8FE61B /* Measuable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Measuable.swift; path = Source/Measuable.swift; sourceTree = ""; }; + 126BBAC0881E93CE9DD61E7ACE696606 /* MultipartUpload.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = MultipartUpload.swift; path = Source/MultipartUpload.swift; sourceTree = ""; }; + 1353995A8016A914A20D44B2F14C8E44 /* NSObject+Rx-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "NSObject+Rx-dummy.m"; sourceTree = ""; }; + 137B4C7C2E94357736C830A5EA42777C /* RxSwift.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = RxSwift.debug.xcconfig; sourceTree = ""; }; + 13B433151A352866F20C6FFB9E7EC250 /* RxSwift-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "RxSwift-prefix.pch"; sourceTree = ""; }; + 1439B673FB05A03E7B7E02DFD72E71D0 /* WKInterfaceImage+Kingfisher.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "WKInterfaceImage+Kingfisher.swift"; path = "Sources/Extensions/WKInterfaceImage+Kingfisher.swift"; sourceTree = ""; }; + 1453836E21AC5CF84521F96905B6E510 /* Platform.Darwin.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Platform.Darwin.swift; path = Platform/Platform.Darwin.swift; sourceTree = ""; }; + 146080884BFC8E1B4B8239EDF4466A73 /* Platform.Linux.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Platform.Linux.swift; path = Platform/Platform.Linux.swift; sourceTree = ""; }; + 14CE20C13CFA6A48A0A27244C1052417 /* Multicast.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Multicast.swift; path = RxSwift/Observables/Multicast.swift; sourceTree = ""; }; + 14E888C57B32FF17FC055F7CFCE72655 /* CacheSerializer.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CacheSerializer.swift; path = Sources/Cache/CacheSerializer.swift; sourceTree = ""; }; + 14F91E4F17CF9C5B257D5502CA5AEF69 /* SnapKit.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SnapKit.release.xcconfig; sourceTree = ""; }; + 15253BA385640332852445D8AA76FA5E /* Do.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Do.swift; path = RxSwift/Observables/Do.swift; sourceTree = ""; }; + 157B8B68660A148A589449C9A07DB11D /* DisposeBag.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DisposeBag.swift; path = RxSwift/Disposables/DisposeBag.swift; sourceTree = ""; }; + 178BE4DDDDC57D9E204C896C50DF833F /* Map.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Map.swift; path = RxSwift/Observables/Map.swift; sourceTree = ""; }; + 1893EA38121A4B02DF5CD011EB861FA2 /* ConstraintLayoutSupport.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintLayoutSupport.swift; path = Sources/ConstraintLayoutSupport.swift; sourceTree = ""; }; + 18EF92144BBBACCC71547660A1EEC23F /* ContextDescriptorType.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ContextDescriptorType.swift; path = Source/ContextDescriptorType.swift; sourceTree = ""; }; + 190D7383CCEFD8AB3F8CB93098A3F214 /* DeviceKit */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = DeviceKit; path = DeviceKit.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 191F95E8076B377937623541593EC613 /* Infallible+Operators.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Infallible+Operators.swift"; path = "RxSwift/Traits/Infallible/Infallible+Operators.swift"; sourceTree = ""; }; 1A5104776E2AD589EF6B4A0B49E9EB80 /* Pods-yinmeng-ios-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-yinmeng-ios-frameworks.sh"; sourceTree = ""; }; - 1A5F64B79665DAAF7330A9B901B15EFF /* UINavigationController+Rx.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UINavigationController+Rx.swift"; path = "RxCocoa/iOS/UINavigationController+Rx.swift"; sourceTree = ""; }; - 1A9CF67CD4186CDC93B9439A7C72E036 /* HandyJSON.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = HandyJSON.release.xcconfig; sourceTree = ""; }; - 1B2863E7FB03DAF37957D8B19A20FAF5 /* ContextDescriptorType.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ContextDescriptorType.swift; path = Source/ContextDescriptorType.swift; sourceTree = ""; }; + 1AC0F530B9698AA71CCB1E40934C472F /* ImageDownloader.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ImageDownloader.swift; path = Sources/Networking/ImageDownloader.swift; sourceTree = ""; }; + 1B44A5BD90DDFAEC2424B393A087DA84 /* Box.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Box.swift; path = Sources/Utility/Box.swift; sourceTree = ""; }; + 1B564EDE807D5C02DF36179FD4238A80 /* AnonymousDisposable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AnonymousDisposable.swift; path = RxSwift/Disposables/AnonymousDisposable.swift; sourceTree = ""; }; 1BBD7BC93FC22FBD9C79EAB4AC435A7E /* Pods-yinmeng-ios-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-yinmeng-ios-dummy.m"; sourceTree = ""; }; - 1BBE63969630CA64CDD14AE518F9ED70 /* HelpingMapper.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = HelpingMapper.swift; path = Source/HelpingMapper.swift; sourceTree = ""; }; - 1BC8BE591A383FB0802A1161825B227F /* Source.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Source.swift; path = Sources/General/ImageSource/Source.swift; sourceTree = ""; }; - 1C7BAB5978403A78EBF174C01FF8C71E /* Event.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Event.swift; path = RxSwift/Event.swift; sourceTree = ""; }; - 1CCA1BCCD3C2E9007F3F56C9E8AC6398 /* DisposeBase.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DisposeBase.swift; path = RxSwift/Disposables/DisposeBase.swift; sourceTree = ""; }; - 1CEDEE8EE3D758478549E54DB2D8CB8D /* TransformType.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TransformType.swift; path = Source/TransformType.swift; sourceTree = ""; }; - 1D524DB6FB9E645710C7B04B107FB333 /* MultiTarget.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = MultiTarget.swift; path = Sources/Moya/MultiTarget.swift; sourceTree = ""; }; - 1DCDE799B9543F90237D7DA862252A2B /* ConstraintOffsetTarget.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintOffsetTarget.swift; path = Sources/ConstraintOffsetTarget.swift; sourceTree = ""; }; - 1DDD0126DBB77C7B793703E3B7918072 /* Transformable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Transformable.swift; path = Source/Transformable.swift; sourceTree = ""; }; - 1E088C67BD72950301BB89F16F31469A /* BooleanDisposable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BooleanDisposable.swift; path = RxSwift/Disposables/BooleanDisposable.swift; sourceTree = ""; }; - 1E14FBC686914E2AF7C4383BFAA062B5 /* Repeat.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Repeat.swift; path = RxSwift/Observables/Repeat.swift; sourceTree = ""; }; - 1E818ED04F94422CB5C8B2554572826C /* Errors.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Errors.swift; path = RxSwift/Errors.swift; sourceTree = ""; }; - 1EF2CDD729DADF5969E617BB9AD37B87 /* Typealiases.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Typealiases.swift; path = Sources/Typealiases.swift; sourceTree = ""; }; - 1FCF2D3324E392803C9EFBB38E7A9ABA /* RxTableViewDataSourcePrefetchingProxy.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RxTableViewDataSourcePrefetchingProxy.swift; path = RxCocoa/iOS/Proxies/RxTableViewDataSourcePrefetchingProxy.swift; sourceTree = ""; }; - 207583CD61F84971AE55DE2ACF2B29A9 /* ObserverBase.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ObserverBase.swift; path = RxSwift/Observers/ObserverBase.swift; sourceTree = ""; }; - 20B0FF4D5789DB2CC388939C196538A9 /* Kingfisher-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Kingfisher-prefix.pch"; sourceTree = ""; }; - 215B8518AD4396707F88E578B313121F /* MultipartFormData.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = MultipartFormData.swift; path = Source/MultipartFormData.swift; sourceTree = ""; }; - 21E4BE15EF64CDD45908BF2A541F2A66 /* AsSingle.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AsSingle.swift; path = RxSwift/Observables/AsSingle.swift; sourceTree = ""; }; - 220B3F8A303994576980CB9C15199150 /* Alamofire.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Alamofire.swift; path = Source/Alamofire.swift; sourceTree = ""; }; - 22B9AC50C1A66CFB12BF81596173CD39 /* GroupBy.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = GroupBy.swift; path = RxSwift/Observables/GroupBy.swift; sourceTree = ""; }; + 1BC1EF2589F486F510B047DF00284303 /* Source.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Source.swift; path = Sources/General/ImageSource/Source.swift; sourceTree = ""; }; + 1C20BB3F8A81AADCB7032E16A40B7C22 /* Moya-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Moya-prefix.pch"; sourceTree = ""; }; + 1C4747029AFD3F49EEC44FFF619D4A63 /* UIButton+Rx.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UIButton+Rx.swift"; path = "RxCocoa/iOS/UIButton+Rx.swift"; sourceTree = ""; }; + 1C8706A0387AE42502D4E50D02F89863 /* Reusable-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Reusable-umbrella.h"; sourceTree = ""; }; + 1D188AA6717470D032D31BE0526B5642 /* ConstraintMaker.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintMaker.swift; path = Sources/ConstraintMaker.swift; sourceTree = ""; }; + 1D2EDB69BD3AF777FC271C11BC562F89 /* ResponseSerialization.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ResponseSerialization.swift; path = Source/ResponseSerialization.swift; sourceTree = ""; }; + 1D44E2D2057CC1A6FD79DFA84C35418E /* Alamofire-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Alamofire-Info.plist"; sourceTree = ""; }; + 1D63C72EA6032CFEFC949E6E220D2B77 /* Deferred.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Deferred.swift; path = RxSwift/Observables/Deferred.swift; sourceTree = ""; }; + 1E03F6DB166ADA29B61BC0A7F8CC0D9A /* Kingfisher-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Kingfisher-umbrella.h"; sourceTree = ""; }; + 1E63F7B2B97D0E8F974F7B516831CF04 /* RxRelay-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "RxRelay-Info.plist"; sourceTree = ""; }; + 1F2B92ABD48C41214F990AD1FE1BCCD2 /* UIGestureRecognizer+Rx.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UIGestureRecognizer+Rx.swift"; path = "RxCocoa/iOS/UIGestureRecognizer+Rx.swift"; sourceTree = ""; }; + 1F2C897C4143997BE62B53F6B4535DA9 /* MBProgressHUD.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = MBProgressHUD.m; sourceTree = ""; }; + 1F5CF1C02486E62B0556A27B747BC446 /* HistoricalSchedulerTimeConverter.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = HistoricalSchedulerTimeConverter.swift; path = RxSwift/Schedulers/HistoricalSchedulerTimeConverter.swift; sourceTree = ""; }; + 1FDB6197AB736E1084083F4E493BA2E6 /* KingfisherError.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = KingfisherError.swift; path = Sources/General/KingfisherError.swift; sourceTree = ""; }; + 2018E1C6707E4D5B4685D5D380B9CEAF /* RequestTypeWrapper.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RequestTypeWrapper.swift; path = Sources/Moya/RequestTypeWrapper.swift; sourceTree = ""; }; + 2161633FBED9887F60DF703652A74B00 /* ValidationType.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ValidationType.swift; path = Sources/Moya/ValidationType.swift; sourceTree = ""; }; + 225D675BE9C4CAAA4F998D261FA57EF3 /* HandyJSON-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "HandyJSON-umbrella.h"; sourceTree = ""; }; + 22646F56965E6A2F3ED913569EB1551B /* Binder.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Binder.swift; path = RxSwift/Binder.swift; sourceTree = ""; }; + 226E801C799DBC77E78A7D466C49FA01 /* Zip+Collection.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Zip+Collection.swift"; path = "RxSwift/Observables/Zip+Collection.swift"; sourceTree = ""; }; + 2295FFA92EC6E5469475072C9CDC772F /* RxCocoa.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RxCocoa.swift; path = RxCocoa/RxCocoa.swift; sourceTree = ""; }; 236F15BC43D0758FE90E506F41ABBD36 /* Pods-yinmeng-ios-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-yinmeng-ios-acknowledgements.markdown"; sourceTree = ""; }; - 239DDF3AEECE822C3281639FD6546369 /* SwiftSupport.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SwiftSupport.swift; path = RxSwift/SwiftSupport/SwiftSupport.swift; sourceTree = ""; }; - 24119F92E2DB0B0C6650DEA1131020F3 /* DispatchQueue+Extensions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "DispatchQueue+Extensions.swift"; path = "Platform/DispatchQueue+Extensions.swift"; sourceTree = ""; }; - 259AF82D05F6D3AF5D26FB0CCF6354E5 /* Lock.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Lock.swift; path = RxSwift/Concurrency/Lock.swift; sourceTree = ""; }; - 25CF572152EDEF89E43D914242F08BE0 /* Empty.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Empty.swift; path = RxSwift/Observables/Empty.swift; sourceTree = ""; }; - 2686E2F30E71D302C7EC46BF9AC726BE /* ImageTransition.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ImageTransition.swift; path = Sources/Image/ImageTransition.swift; sourceTree = ""; }; - 26A2F37034623F4E9BF155F2042659EF /* RxTableViewDataSourceType.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RxTableViewDataSourceType.swift; path = RxCocoa/iOS/Protocols/RxTableViewDataSourceType.swift; sourceTree = ""; }; - 27459C8DF241339CDE5DD49FB1C25C8D /* CacheSerializer.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CacheSerializer.swift; path = Sources/Cache/CacheSerializer.swift; sourceTree = ""; }; - 2868D931558DCC05627934B9EF6362E6 /* ReplayRelay.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ReplayRelay.swift; path = RxRelay/ReplayRelay.swift; sourceTree = ""; }; - 28E9D0CEE48F6310B3A68093744A1146 /* SerialDisposable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SerialDisposable.swift; path = RxSwift/Disposables/SerialDisposable.swift; sourceTree = ""; }; - 29305731B01CF8E4A32561061D6EA1AE /* RetryWhen.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RetryWhen.swift; path = RxSwift/Observables/RetryWhen.swift; sourceTree = ""; }; - 29CBD6F8B67F5629CFB1D1326F23E28A /* Queue.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Queue.swift; path = Platform/DataStructures/Queue.swift; sourceTree = ""; }; - 29D71D26A754963F763183793E0737A6 /* RxTextViewDelegateProxy.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RxTextViewDelegateProxy.swift; path = RxCocoa/iOS/Proxies/RxTextViewDelegateProxy.swift; sourceTree = ""; }; - 2A1E8C07BD53C5A3B5242F95A74991F9 /* RxSwift-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "RxSwift-Info.plist"; sourceTree = ""; }; - 2A271DE0F470E6D6B4CF963A21854DEA /* RetryPolicy.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RetryPolicy.swift; path = Source/RetryPolicy.swift; sourceTree = ""; }; - 2A36E5193632E241668CBF9B7B2CB7D5 /* Enumerated.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Enumerated.swift; path = RxSwift/Observables/Enumerated.swift; sourceTree = ""; }; - 2A8DE9D85F9B8D23A00C6EDE272AAE8D /* MangledName.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = MangledName.swift; path = Source/MangledName.swift; sourceTree = ""; }; - 2AE83D49E82297DF5D76F3A85D2DBEF1 /* Storage.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Storage.swift; path = Sources/Cache/Storage.swift; sourceTree = ""; }; - 2AEBE0DF14984ECC53D005ED92A73024 /* WKInterfaceImage+Kingfisher.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "WKInterfaceImage+Kingfisher.swift"; path = "Sources/Extensions/WKInterfaceImage+Kingfisher.swift"; sourceTree = ""; }; - 2B46D1FBCE62A21E03DAB229F57AD114 /* SharedSequence.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SharedSequence.swift; path = RxCocoa/Traits/SharedSequence/SharedSequence.swift; sourceTree = ""; }; - 2B48BE2A6404DB81C7324A3CE9177FCA /* NibLoadable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NibLoadable.swift; path = Sources/View/NibLoadable.swift; sourceTree = ""; }; - 2B71FB79E7C0B7102E8EF89E2C326862 /* UISegmentedControl+Rx.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UISegmentedControl+Rx.swift"; path = "RxCocoa/iOS/UISegmentedControl+Rx.swift"; sourceTree = ""; }; - 2BAC1650A187C2915C972E5571EE0B96 /* RxCocoa-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "RxCocoa-prefix.pch"; sourceTree = ""; }; - 2C4725814B303164AE7425543FDA788C /* URLTransform.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = URLTransform.swift; path = Source/URLTransform.swift; sourceTree = ""; }; - 2C97BCD706DEE807EF3868F37A8ECCA1 /* HandyJSON-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "HandyJSON-dummy.m"; sourceTree = ""; }; - 2CB6A627D9F759981FF9B741C57D0E1D /* RxSwift.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = RxSwift.modulemap; sourceTree = ""; }; - 2CCCFEF676D5297ACAAB23C1A5CB7CAE /* Moya-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Moya-dummy.m"; sourceTree = ""; }; - 2D85DF2E1C33DB9B470D4EFFB7F4A1FC /* EventMonitor.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = EventMonitor.swift; path = Source/EventMonitor.swift; sourceTree = ""; }; - 2DAB2159DEB43FA519F6B8254AF5728E /* ObserverType.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ObserverType.swift; path = RxSwift/ObserverType.swift; sourceTree = ""; }; - 2DAD506D24AC12D48E8C572B4C5B8674 /* Debounce.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Debounce.swift; path = RxSwift/Observables/Debounce.swift; sourceTree = ""; }; - 2E6CA143EB6F64C9E9AD81EF8A9D3820 /* RxPickerViewAdapter.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RxPickerViewAdapter.swift; path = RxCocoa/iOS/DataSources/RxPickerViewAdapter.swift; sourceTree = ""; }; - 2E78E508B94164D9227009C03D41986A /* ParameterEncoding.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ParameterEncoding.swift; path = Source/ParameterEncoding.swift; sourceTree = ""; }; - 304C3471BD45700A1BFEFC1877E24B5A /* RxNavigationControllerDelegateProxy.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RxNavigationControllerDelegateProxy.swift; path = RxCocoa/iOS/Proxies/RxNavigationControllerDelegateProxy.swift; sourceTree = ""; }; - 30F3EE79D4A82DDA5FBAD0C2C8D6753A /* AnonymousDisposable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AnonymousDisposable.swift; path = RxSwift/Disposables/AnonymousDisposable.swift; sourceTree = ""; }; - 31BB5D3806E36F2811C5F7E9C7E0A00B /* Indicator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Indicator.swift; path = Sources/Views/Indicator.swift; sourceTree = ""; }; - 32639E8193F95CA5F554F746CA3F05AD /* ConstraintMakerRelatable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintMakerRelatable.swift; path = Sources/ConstraintMakerRelatable.swift; sourceTree = ""; }; - 326857EAC596FAC2DD9D5071A5B96D15 /* RxCocoa.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RxCocoa.swift; path = RxCocoa/RxCocoa.swift; sourceTree = ""; }; - 33055FA32252223B1AB3116721D6096B /* SingleAsync.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SingleAsync.swift; path = RxSwift/Observables/SingleAsync.swift; sourceTree = ""; }; + 2567962E6EC96FE05567738B6C23F98B /* NetworkReachabilityManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NetworkReachabilityManager.swift; path = Source/NetworkReachabilityManager.swift; sourceTree = ""; }; + 27A67104EF0235D1668652F304608779 /* Signal.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Signal.swift; path = RxCocoa/Traits/Signal/Signal.swift; sourceTree = ""; }; + 27ACD601BA2AB4266E3C72370222DA52 /* KVORepresentable+Swift.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "KVORepresentable+Swift.swift"; path = "RxCocoa/Foundation/KVORepresentable+Swift.swift"; sourceTree = ""; }; + 27F49368F1C164882B86D4FEE7E48F36 /* CallbackQueue.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CallbackQueue.swift; path = Sources/Utility/CallbackQueue.swift; sourceTree = ""; }; + 28863D8DFB04B5977BD55BDFFE26E6A8 /* Device.generated.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Device.generated.swift; path = Source/Device.generated.swift; sourceTree = ""; }; + 288EDCCA5333BD2B7DFC5198A4FED9D6 /* Metadata.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Metadata.swift; path = Source/Metadata.swift; sourceTree = ""; }; + 28B2449937EB3C563C98A2FEB77E44BE /* AsyncLock.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AsyncLock.swift; path = RxSwift/Concurrency/AsyncLock.swift; sourceTree = ""; }; + 29739B8669AE8FF9BEC09C7CB39A7342 /* SkipWhile.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SkipWhile.swift; path = RxSwift/Observables/SkipWhile.swift; sourceTree = ""; }; + 297BA7C8A73508DACAEB8B56F61CB0A7 /* ConstraintMakerEditable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintMakerEditable.swift; path = Sources/ConstraintMakerEditable.swift; sourceTree = ""; }; + 29A78EC7F575296035EE55CC0ABA362A /* Validation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Validation.swift; path = Source/Validation.swift; sourceTree = ""; }; + 29FEC47051A8DEA7E3BB9CA030BA6924 /* HandyJSON-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "HandyJSON-Info.plist"; sourceTree = ""; }; + 2A83A2BCE506773C11E35D1ED3FFFDA6 /* Sequence.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Sequence.swift; path = RxSwift/Observables/Sequence.swift; sourceTree = ""; }; + 2A99485BC5FEED1E79382726A5659675 /* Reusable.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Reusable.release.xcconfig; sourceTree = ""; }; + 2B9E485C0CA9736A9D0918B0DE34D9E3 /* RxTableViewDataSourcePrefetchingProxy.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RxTableViewDataSourcePrefetchingProxy.swift; path = RxCocoa/iOS/Proxies/RxTableViewDataSourcePrefetchingProxy.swift; sourceTree = ""; }; + 2BBA1A91105F54BBB00715BA89D800A5 /* TargetType.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TargetType.swift; path = Sources/Moya/TargetType.swift; sourceTree = ""; }; + 2BEDED02E7B40AAB1C0499CE312B9834 /* PublishSubject.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PublishSubject.swift; path = RxSwift/Subjects/PublishSubject.swift; sourceTree = ""; }; + 2BFAB529B49C127A77EF4F956E246CF6 /* ResourceBundle-Kingfisher-Kingfisher-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "ResourceBundle-Kingfisher-Kingfisher-Info.plist"; sourceTree = ""; }; + 2C22489767232A13091ED62587C286C2 /* RxCollectionViewDataSourceProxy.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RxCollectionViewDataSourceProxy.swift; path = RxCocoa/iOS/Proxies/RxCollectionViewDataSourceProxy.swift; sourceTree = ""; }; + 2C2707D7BC93E582CF0CEBC96CEFA74A /* FormatIndicatedCacheSerializer.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FormatIndicatedCacheSerializer.swift; path = Sources/Cache/FormatIndicatedCacheSerializer.swift; sourceTree = ""; }; + 2D36AD72D4DA7BD92924651BBFFFCC9C /* HandyJSON.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = HandyJSON.modulemap; sourceTree = ""; }; + 2D8E5AF2E1D0B7EF828267B843BF717E /* Concat.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Concat.swift; path = RxSwift/Observables/Concat.swift; sourceTree = ""; }; + 2D953A89B8322FDD3E894FC124AD487A /* ImageDownloaderDelegate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ImageDownloaderDelegate.swift; path = Sources/Networking/ImageDownloaderDelegate.swift; sourceTree = ""; }; + 2EF303B0A0DC567059DE329212C8EA8A /* _RXKVOObserver.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = _RXKVOObserver.h; path = RxCocoa/Runtime/include/_RXKVOObserver.h; sourceTree = ""; }; + 2EF95160B26D4B42AE93171F97C3A226 /* SingleAssignmentDisposable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SingleAssignmentDisposable.swift; path = RxSwift/Disposables/SingleAssignmentDisposable.swift; sourceTree = ""; }; + 2F90B8FD0550654BC8D540D028C777CD /* Filter.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Filter.swift; path = RxSwift/Observables/Filter.swift; sourceTree = ""; }; + 2FE341F08B89C3BC700983C1AD50F7B6 /* RxTextStorageDelegateProxy.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RxTextStorageDelegateProxy.swift; path = RxCocoa/iOS/Proxies/RxTextStorageDelegateProxy.swift; sourceTree = ""; }; + 30CC56020AC14B9B2D0B00A51B6B6F3D /* KFOptionsSetter.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = KFOptionsSetter.swift; path = Sources/General/KFOptionsSetter.swift; sourceTree = ""; }; + 30F4DD17DC3AB94AFDA917627B4F4769 /* Catch.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Catch.swift; path = RxSwift/Observables/Catch.swift; sourceTree = ""; }; + 327008B830C64C1E6228192790D867B8 /* ConstraintDSL.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintDSL.swift; path = Sources/ConstraintDSL.swift; sourceTree = ""; }; + 32EA191B6F76C10D3E8A94A63DBC6387 /* ImageDrawing.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ImageDrawing.swift; path = Sources/Image/ImageDrawing.swift; sourceTree = ""; }; + 32FE0D015A342DAAB434FE66B1B7BE80 /* ObserverBase.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ObserverBase.swift; path = RxSwift/Observers/ObserverBase.swift; sourceTree = ""; }; + 3307A3315488FFE0D213C7D5D5293588 /* BuiltInBasicType.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BuiltInBasicType.swift; path = Source/BuiltInBasicType.swift; sourceTree = ""; }; + 338D6E590301EFE0F556243B86D27B00 /* LayoutConstraintItem.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = LayoutConstraintItem.swift; path = Sources/LayoutConstraintItem.swift; sourceTree = ""; }; + 3396E3FD8A4F78E500752C9FD423D4C4 /* URLTransform.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = URLTransform.swift; path = Source/URLTransform.swift; sourceTree = ""; }; 3397E4A82849848801375ABF4E7B4080 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS14.0.sdk/System/Library/Frameworks/UIKit.framework; sourceTree = DEVELOPER_DIR; }; - 33B4FAC947A0378CAAD60F6A6B4DBCC6 /* DelegateProxy.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DelegateProxy.swift; path = RxCocoa/Common/DelegateProxy.swift; sourceTree = ""; }; - 3497648C5E7B80D2ABC218A50A6CA389 /* UIButton+Rx.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UIButton+Rx.swift"; path = "RxCocoa/iOS/UIButton+Rx.swift"; sourceTree = ""; }; - 35651FD3900CCCFFCDA6DD8ECE470B93 /* _RXObjCRuntime.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = _RXObjCRuntime.h; path = RxCocoa/Runtime/include/_RXObjCRuntime.h; sourceTree = ""; }; - 3602398BB4B83B59240F9614C1DF5EA4 /* StartWith.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = StartWith.swift; path = RxSwift/Observables/StartWith.swift; sourceTree = ""; }; - 36683A54CDD175D2798404369B19387A /* ObservableType+PrimitiveSequence.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "ObservableType+PrimitiveSequence.swift"; path = "RxSwift/Traits/PrimitiveSequence/ObservableType+PrimitiveSequence.swift"; sourceTree = ""; }; - 36DFFD75B7479E1705FAC0F110CE34DC /* Alamofire.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Alamofire.release.xcconfig; sourceTree = ""; }; + 33BC5C5156F151D3CB558218797FC303 /* NSObject+Rx.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "NSObject+Rx.modulemap"; sourceTree = ""; }; + 33C76ABDC182971F95E0D3E659859C92 /* UIPickerView+Rx.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UIPickerView+Rx.swift"; path = "RxCocoa/iOS/UIPickerView+Rx.swift"; sourceTree = ""; }; + 3410B22D578C139B16E380E9330BEDEB /* TextInput.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TextInput.swift; path = RxCocoa/Common/TextInput.swift; sourceTree = ""; }; + 3436C8ADCA803A30CBBD89A79C679F35 /* ConcurrentDispatchQueueScheduler.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConcurrentDispatchQueueScheduler.swift; path = RxSwift/Schedulers/ConcurrentDispatchQueueScheduler.swift; sourceTree = ""; }; + 34EDEA2265558C468F2231C83850DEB7 /* LockOwnerType.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = LockOwnerType.swift; path = RxSwift/Concurrency/LockOwnerType.swift; sourceTree = ""; }; + 350EE72F9FF046E0FA79C61626804AF6 /* RecursiveLock.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RecursiveLock.swift; path = Platform/RecursiveLock.swift; sourceTree = ""; }; + 35B8EADA92D8CD4783E5912386C4B4CB /* Reusable.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = Reusable.modulemap; sourceTree = ""; }; + 35CDF9DC56A581AAF5D46688489C220D /* Scan.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Scan.swift; path = RxSwift/Observables/Scan.swift; sourceTree = ""; }; + 35D18B04304514C01F1A974665923E6F /* Zip.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Zip.swift; path = RxSwift/Observables/Zip.swift; sourceTree = ""; }; + 37235A5B924CDEB3D6C61B8124D9D393 /* Completable+AndThen.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Completable+AndThen.swift"; path = "RxSwift/Traits/PrimitiveSequence/Completable+AndThen.swift"; sourceTree = ""; }; 3756A9BBE41ABEE8DCBF5BCA6972C4DA /* Moya */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Moya; path = Moya.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 37706A10928DD59317F2AABB995786F0 /* SynchronizedOnType.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SynchronizedOnType.swift; path = RxSwift/Concurrency/SynchronizedOnType.swift; sourceTree = ""; }; - 383C3B11450462CA845076D5A31455A7 /* Validation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Validation.swift; path = Source/Validation.swift; sourceTree = ""; }; - 394A07B9CD7A0E87C54639C7326B5B28 /* Infallible+Bind.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Infallible+Bind.swift"; path = "RxCocoa/Common/Infallible+Bind.swift"; sourceTree = ""; }; - 3956A13898BA7AE3AD6AED0406907F52 /* DispatchQueueConfiguration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DispatchQueueConfiguration.swift; path = RxSwift/Schedulers/Internal/DispatchQueueConfiguration.swift; sourceTree = ""; }; + 378E73C013F3E7A63685D3EC6675D746 /* DispatchQueue+Alamofire.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "DispatchQueue+Alamofire.swift"; path = "Source/DispatchQueue+Alamofire.swift"; sourceTree = ""; }; + 392891C2723384FABB073976816A97F6 /* Endpoint.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Endpoint.swift; path = Sources/Moya/Endpoint.swift; sourceTree = ""; }; + 3962E67A06976A66996359C96512F7D7 /* Just.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Just.swift; path = RxSwift/Observables/Just.swift; sourceTree = ""; }; + 397DE032C55F073078554C6ED3C13C5A /* ParameterEncoder.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ParameterEncoder.swift; path = Source/ParameterEncoder.swift; sourceTree = ""; }; + 39AE268F8D5447D09C20B5D3F21C71BE /* InfiniteSequence.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = InfiniteSequence.swift; path = Platform/DataStructures/InfiniteSequence.swift; sourceTree = ""; }; + 39BA0BA7675D16BA37F824C93FEA6BC9 /* ObservableType.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ObservableType.swift; path = RxSwift/ObservableType.swift; sourceTree = ""; }; 39D0F77A76D1B9C8043ACA2A518B4709 /* Pods-yinmeng-ios.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-yinmeng-ios.modulemap"; sourceTree = ""; }; - 3AF54C9D06FA26EEFB4A6D8DDB4C6C83 /* PrimitiveSequence+Concurrency.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "PrimitiveSequence+Concurrency.swift"; path = "RxSwift/Traits/PrimitiveSequence/PrimitiveSequence+Concurrency.swift"; sourceTree = ""; }; - 3B45D252945E879A3B88C8989E5C2CC6 /* _RXKVOObserver.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = _RXKVOObserver.m; path = RxCocoa/Runtime/_RXKVOObserver.m; sourceTree = ""; }; - 3B6E3E1498C003DB8CBD3643CD2AD2A6 /* HandyJSON-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "HandyJSON-prefix.pch"; sourceTree = ""; }; - 3C27EB2E04E045DFB79BE6AAA63A7EA2 /* ImageDownloader.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ImageDownloader.swift; path = Sources/Networking/ImageDownloader.swift; sourceTree = ""; }; - 3DF97E8D675384337BA22ED93D008910 /* Kingfisher.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = Kingfisher.modulemap; sourceTree = ""; }; - 3F5105C63B26C8CD36ECD3E4D25A4DFC /* RxSearchBarDelegateProxy.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RxSearchBarDelegateProxy.swift; path = RxCocoa/iOS/Proxies/RxSearchBarDelegateProxy.swift; sourceTree = ""; }; - 3F6E79FDA2485804EB4B20DAEDA26366 /* DelaySubscription.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DelaySubscription.swift; path = RxSwift/Observables/DelaySubscription.swift; sourceTree = ""; }; - 402F4EF7983996E485AA8AD6E305B46D /* Bag+Rx.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Bag+Rx.swift"; path = "RxSwift/Extensions/Bag+Rx.swift"; sourceTree = ""; }; - 4189EEA5194A0B67B0929125B7D8F3B9 /* MoyaProvider+Defaults.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "MoyaProvider+Defaults.swift"; path = "Sources/Moya/MoyaProvider+Defaults.swift"; sourceTree = ""; }; - 418F325839254785FCE40E01EC615D42 /* Logger.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Logger.swift; path = Source/Logger.swift; sourceTree = ""; }; - 41FE8293A6AF96E011A77F789193CD99 /* Reusable-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Reusable-Info.plist"; sourceTree = ""; }; - 420DDEA65A2C63C6CA966D994E696D54 /* AVAssetImageDataProvider.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AVAssetImageDataProvider.swift; path = Sources/General/ImageSource/AVAssetImageDataProvider.swift; sourceTree = ""; }; - 42D446B359AD540FA2AEFD87D7ABE15C /* RxCollectionViewDataSourceProxy.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RxCollectionViewDataSourceProxy.swift; path = RxCocoa/iOS/Proxies/RxCollectionViewDataSourceProxy.swift; sourceTree = ""; }; - 42F715AC86D9585FC5BB7F7C07DD7DAC /* ScheduledDisposable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ScheduledDisposable.swift; path = RxSwift/Disposables/ScheduledDisposable.swift; sourceTree = ""; }; - 43090D0C397209BB21ADF13605474623 /* Moya-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Moya-Info.plist"; sourceTree = ""; }; - 43A9212FF806B13E885C7019E059D160 /* Kingfisher.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Kingfisher.debug.xcconfig; sourceTree = ""; }; - 44142825DF6D5162BCAC2FEFBF148BED /* RequestTaskMap.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RequestTaskMap.swift; path = Source/RequestTaskMap.swift; sourceTree = ""; }; - 443CA8C627022D8C1934F8F42533236E /* AFError.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AFError.swift; path = Source/AFError.swift; sourceTree = ""; }; - 445854BBB677492BEB10430E549CF31D /* Delay.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Delay.swift; path = RxSwift/Observables/Delay.swift; sourceTree = ""; }; - 4488B560629B5C88A5E9FF2ED9FCDFD5 /* RxWKNavigationDelegateProxy.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RxWKNavigationDelegateProxy.swift; path = RxCocoa/iOS/Proxies/RxWKNavigationDelegateProxy.swift; sourceTree = ""; }; - 4529DBA9667227E1B099ADC681AB5850 /* Observable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Observable.swift; path = RxSwift/Observable.swift; sourceTree = ""; }; - 45E1E6ADB66DF96376E308D63F6B71D8 /* HandyJSON.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = HandyJSON.debug.xcconfig; sourceTree = ""; }; - 45FEC9077C3B5C14B02AB4E46F22E157 /* ConstraintInsetTarget.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintInsetTarget.swift; path = Sources/ConstraintInsetTarget.swift; sourceTree = ""; }; - 46CE5C282594AAB0BC74E3DE1A773F2B /* AsyncSubject.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AsyncSubject.swift; path = RxSwift/Subjects/AsyncSubject.swift; sourceTree = ""; }; - 47110AC6AA4D44E8FCEB9552C18577A1 /* SnapKit-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SnapKit-prefix.pch"; sourceTree = ""; }; - 477447EAA52D7E8C1E3C05F2DD47F9B1 /* PropertyInfo.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PropertyInfo.swift; path = Source/PropertyInfo.swift; sourceTree = ""; }; - 48252905C19EDB8DCAE2BE4BE7B68A85 /* ImageCache.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ImageCache.swift; path = Sources/Cache/ImageCache.swift; sourceTree = ""; }; - 48BEA0546BD26740F65A619717216925 /* BehaviorRelay+Driver.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "BehaviorRelay+Driver.swift"; path = "RxCocoa/Traits/Driver/BehaviorRelay+Driver.swift"; sourceTree = ""; }; - 4917FB9D005872281B22F006F7001E9E /* NetworkReachabilityManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NetworkReachabilityManager.swift; path = Source/NetworkReachabilityManager.swift; sourceTree = ""; }; - 495812E6EEB9BFC5FBAD933FB325C0BE /* SchedulerType+SharedSequence.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "SchedulerType+SharedSequence.swift"; path = "RxCocoa/Traits/SharedSequence/SchedulerType+SharedSequence.swift"; sourceTree = ""; }; - 4A9962A1E3D931E363F3C4D48522361B /* Runtime.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Runtime.swift; path = Sources/Utility/Runtime.swift; sourceTree = ""; }; - 4B2092F7A452FCAC892734476E6676E3 /* Concurrency.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Concurrency.swift; path = Source/Concurrency.swift; sourceTree = ""; }; - 4B32547DF2C9A9E64087A593AC3EE911 /* SkipWhile.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SkipWhile.swift; path = RxSwift/Observables/SkipWhile.swift; sourceTree = ""; }; - 4B40027C27CE4E459A38C1D87C106545 /* Catch.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Catch.swift; path = RxSwift/Observables/Catch.swift; sourceTree = ""; }; - 4D43B9A8506661F18ED1E7EDF570932D /* SnapKit.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = SnapKit.modulemap; sourceTree = ""; }; - 4DB0FE9FA272BBF1E359F79E2FE6B469 /* Image.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Image.swift; path = Sources/Image/Image.swift; sourceTree = ""; }; - 4DB8E452090D235990597C3AB1BE8E11 /* Single.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Single.swift; path = RxSwift/Traits/PrimitiveSequence/Single.swift; sourceTree = ""; }; - 4E71EDCC1B6F580E01E54903C36737EB /* SubscriptionDisposable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SubscriptionDisposable.swift; path = RxSwift/Disposables/SubscriptionDisposable.swift; sourceTree = ""; }; - 4ED914EA5EE1E5DAC87E75CFEEEBE002 /* UIControl+Rx.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UIControl+Rx.swift"; path = "RxCocoa/iOS/UIControl+Rx.swift"; sourceTree = ""; }; - 4F5800717EBB5879045C06670DA4C8AC /* Never.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Never.swift; path = RxSwift/Observables/Never.swift; sourceTree = ""; }; - 4FE70A655C85EA7C91C24E5B3457D9B0 /* Kingfisher-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Kingfisher-umbrella.h"; sourceTree = ""; }; - 501CF92DCF5E2F25FE033F445BAA7A3A /* ExtensionHelpers.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ExtensionHelpers.swift; path = Sources/Utility/ExtensionHelpers.swift; sourceTree = ""; }; - 5096A43515DC7129C76B0F73FC4B6049 /* ExtendCustomModelType.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ExtendCustomModelType.swift; path = Source/ExtendCustomModelType.swift; sourceTree = ""; }; - 516DBB0CADC2C6DBC5C12C20E9C7DFE4 /* RequestCompression.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RequestCompression.swift; path = Source/RequestCompression.swift; sourceTree = ""; }; - 518597BD67B90E044EDCA15142FA2D54 /* Protected.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Protected.swift; path = Source/Protected.swift; sourceTree = ""; }; - 5254AF871AE5D79369426F1E9DFD4BFB /* Session.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Session.swift; path = Source/Session.swift; sourceTree = ""; }; - 5264BE1108D40329A508922AD0245365 /* HandyJSON.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = HandyJSON.modulemap; sourceTree = ""; }; - 52F042037CA28D5A455E060DD097C638 /* PublishRelay.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PublishRelay.swift; path = RxRelay/PublishRelay.swift; sourceTree = ""; }; - 5318EE8340C75CB1C311FB0C5C0035CE /* AsyncLock.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AsyncLock.swift; path = RxSwift/Concurrency/AsyncLock.swift; sourceTree = ""; }; - 537B39F9D626350F9BD4A28C6DF455B6 /* RxSwift.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = RxSwift.debug.xcconfig; sourceTree = ""; }; - 537DF163C75C79892595630BC3CBA09F /* SynchronizedDisposeType.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SynchronizedDisposeType.swift; path = RxSwift/Concurrency/SynchronizedDisposeType.swift; sourceTree = ""; }; - 544D687E21BDD58B48D554A5709A7901 /* DelegateProxyType.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DelegateProxyType.swift; path = RxCocoa/Common/DelegateProxyType.swift; sourceTree = ""; }; - 54C7D8C91C6BD127E758FD153F5CAE2A /* CachedResponseHandler.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CachedResponseHandler.swift; path = Source/CachedResponseHandler.swift; sourceTree = ""; }; - 553E529F93F751DF0489E958694F11D8 /* RetryStrategy.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RetryStrategy.swift; path = Sources/Networking/RetryStrategy.swift; sourceTree = ""; }; - 55D10B797A89889598E86DF39D020451 /* UIActivityIndicatorView+Rx.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UIActivityIndicatorView+Rx.swift"; path = "RxCocoa/iOS/UIActivityIndicatorView+Rx.swift"; sourceTree = ""; }; - 56969AC68B2EED540B9FBF1E0D237B8D /* MBProgressHUD.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = MBProgressHUD.m; sourceTree = ""; }; - 56D520627040A3B6D58DF009393C985E /* Disposables.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Disposables.swift; path = RxSwift/Disposables/Disposables.swift; sourceTree = ""; }; - 57BE0C87BBB0A537606F16CD108FAECF /* Cancellable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Cancellable.swift; path = Sources/Moya/Cancellable.swift; sourceTree = ""; }; - 57C844D869CA97E3BCD995BAE39B0811 /* Moya.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = Moya.modulemap; sourceTree = ""; }; - 5859599DB876A373ACA4D7088EA30151 /* URLRequest+Encoding.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "URLRequest+Encoding.swift"; path = "Sources/Moya/URLRequest+Encoding.swift"; sourceTree = ""; }; - 588185259F665B2270B61BC5EEEDB105 /* ControlProperty.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ControlProperty.swift; path = RxCocoa/Traits/ControlProperty.swift; sourceTree = ""; }; - 590615ED68A80BD1EF1DBF8F477F1B12 /* Filter.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Filter.swift; path = Sources/Image/Filter.swift; sourceTree = ""; }; - 591861115B56C34EE893545E4F44ECE0 /* Generate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Generate.swift; path = RxSwift/Observables/Generate.swift; sourceTree = ""; }; - 594A5F9AE55C8EAD11AFE74EE0DAC3C7 /* ConstraintLayoutGuide.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintLayoutGuide.swift; path = Sources/ConstraintLayoutGuide.swift; sourceTree = ""; }; - 5A549727CCD5C1657E53A8BAE5E58145 /* SessionDelegate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SessionDelegate.swift; path = Sources/Networking/SessionDelegate.swift; sourceTree = ""; }; - 5BBD217833E818303FFD2DD7E1DD6817 /* NopDisposable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NopDisposable.swift; path = RxSwift/Disposables/NopDisposable.swift; sourceTree = ""; }; - 5C17122D9169B76E0AB08E43B215523C /* Filter.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Filter.swift; path = RxSwift/Observables/Filter.swift; sourceTree = ""; }; + 39F8A591ACEFEAB180B56137DCDCEEE8 /* KFImage.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = KFImage.swift; path = Sources/SwiftUI/KFImage.swift; sourceTree = ""; }; + 3A39C453126A11DB65BED928ABC782A3 /* KVORepresentable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = KVORepresentable.swift; path = RxCocoa/Foundation/KVORepresentable.swift; sourceTree = ""; }; + 3A469FB2DA7AC0C26B21DF1B0D11A029 /* DeviceKit-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "DeviceKit-prefix.pch"; sourceTree = ""; }; + 3A4F4D9372A79E9AF21ECE5F57A01154 /* NSObject+Rx-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "NSObject+Rx-umbrella.h"; sourceTree = ""; }; + 3A6FD86129892C128B4883B000C969DE /* NSTextView+Rx.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "NSTextView+Rx.swift"; path = "RxCocoa/macOS/NSTextView+Rx.swift"; sourceTree = ""; }; + 3AB290E5F66DA867FF1CAD22F03C68A7 /* ConstraintDescription.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintDescription.swift; path = Sources/ConstraintDescription.swift; sourceTree = ""; }; + 3B892E6E18D0B642C25931CAF766DB42 /* PointerType.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PointerType.swift; path = Source/PointerType.swift; sourceTree = ""; }; + 3C1A2B0C590F3A8B6CB87FAEA993A0DA /* MBProgressHUD.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = MBProgressHUD.release.xcconfig; sourceTree = ""; }; + 3C7269135874D7BBF7B4F321BC23D34C /* KVORepresentable+CoreGraphics.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "KVORepresentable+CoreGraphics.swift"; path = "RxCocoa/Foundation/KVORepresentable+CoreGraphics.swift"; sourceTree = ""; }; + 3DE4961B99785332E30F42CC8EB4E2DC /* Infallible+Zip+arity.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Infallible+Zip+arity.swift"; path = "RxSwift/Traits/Infallible/Infallible+Zip+arity.swift"; sourceTree = ""; }; + 3E09B2632A5F5E233E32552E8E8C2D49 /* SnapKit-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "SnapKit-Info.plist"; sourceTree = ""; }; + 3E12B8EDB7687514ED89C97F314FD768 /* Amb.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Amb.swift; path = RxSwift/Observables/Amb.swift; sourceTree = ""; }; + 3E1B746DF53091FB3B3D48C0F5019479 /* SectionedViewDataSourceType.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SectionedViewDataSourceType.swift; path = RxCocoa/Common/SectionedViewDataSourceType.swift; sourceTree = ""; }; + 3E8562C07C099D3B20C9B72A98742C11 /* _RXDelegateProxy.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = _RXDelegateProxy.h; path = RxCocoa/Runtime/include/_RXDelegateProxy.h; sourceTree = ""; }; + 3F0ADD4CACEAF1922058DC8D7BCAF276 /* Using.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Using.swift; path = RxSwift/Observables/Using.swift; sourceTree = ""; }; + 3F16ACF2D5C26A2D4DE234E6A8C7A48F /* SynchronizedOnType.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SynchronizedOnType.swift; path = RxSwift/Concurrency/SynchronizedOnType.swift; sourceTree = ""; }; + 3FC888A9DBD325CD3A356153EE825663 /* MoyaError.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = MoyaError.swift; path = Sources/Moya/MoyaError.swift; sourceTree = ""; }; + 41491929AE0B59666CA9824E3700BD2E /* ConstraintLayoutGuide.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintLayoutGuide.swift; path = Sources/ConstraintLayoutGuide.swift; sourceTree = ""; }; + 43652B2DDB3366769FD0266CDC2F4D8C /* ConstraintLayoutGuide+Extensions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "ConstraintLayoutGuide+Extensions.swift"; path = "Sources/ConstraintLayoutGuide+Extensions.swift"; sourceTree = ""; }; + 43CCB937D1696F335DE8C8BB7A3B4E87 /* SnapKit-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "SnapKit-dummy.m"; sourceTree = ""; }; + 4462CFADBA30107E65E48BB377D89CDC /* ConstraintView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintView.swift; path = Sources/ConstraintView.swift; sourceTree = ""; }; + 461ED89ECEE76824079F017B8BD76777 /* Queue.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Queue.swift; path = Platform/DataStructures/Queue.swift; sourceTree = ""; }; + 46D5EDE888660B65AA60955BE47FF397 /* Debounce.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Debounce.swift; path = RxSwift/Observables/Debounce.swift; sourceTree = ""; }; + 480EDAA6B7D36E9874494B2E6151C5E4 /* AVAssetImageDataProvider.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AVAssetImageDataProvider.swift; path = Sources/General/ImageSource/AVAssetImageDataProvider.swift; sourceTree = ""; }; + 4854F4F0A5C1E92E33C88AAD6CD40C13 /* Decode.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Decode.swift; path = RxSwift/Observables/Decode.swift; sourceTree = ""; }; + 4967D1F77D7563DAB388410E2B241A4D /* ConnectableObservableType.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConnectableObservableType.swift; path = RxSwift/ConnectableObservableType.swift; sourceTree = ""; }; + 4A7EB3BD395A8A96548F70E8CBFB7DDE /* ConstraintDirectionalInsetTarget.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintDirectionalInsetTarget.swift; path = Sources/ConstraintDirectionalInsetTarget.swift; sourceTree = ""; }; + 4AAD522335F458B3E36AB629E5EE5D10 /* StartWith.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = StartWith.swift; path = RxSwift/Observables/StartWith.swift; sourceTree = ""; }; + 4AC772523424F6E978DBA32038CFABCB /* URLSessionConfiguration+Alamofire.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "URLSessionConfiguration+Alamofire.swift"; path = "Source/URLSessionConfiguration+Alamofire.swift"; sourceTree = ""; }; + 4B36B590364171FD6B554283EEBAFFD7 /* AuthenticationChallengeResponsable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AuthenticationChallengeResponsable.swift; path = Sources/Networking/AuthenticationChallengeResponsable.swift; sourceTree = ""; }; + 4B3A450E2CC7D682194A21EC144E69AA /* ConstraintInsetTarget.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintInsetTarget.swift; path = Sources/ConstraintInsetTarget.swift; sourceTree = ""; }; + 4B432ADCCF45D2F06C6A44A350B8981F /* TakeWithPredicate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TakeWithPredicate.swift; path = RxSwift/Observables/TakeWithPredicate.swift; sourceTree = ""; }; + 4B5BA1D7ED3028BF894494B600B47283 /* CurrentThreadScheduler.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CurrentThreadScheduler.swift; path = RxSwift/Schedulers/CurrentThreadScheduler.swift; sourceTree = ""; }; + 4BD0F9668F43AD97E6D6BF91D2013874 /* AddRef.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AddRef.swift; path = RxSwift/Observables/AddRef.swift; sourceTree = ""; }; + 4C25BE1C4603FAA6BD979DBF725998BD /* VirtualTimeScheduler.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = VirtualTimeScheduler.swift; path = RxSwift/Schedulers/VirtualTimeScheduler.swift; sourceTree = ""; }; + 4C895A93F8613A05F2D58A9EC42B44F8 /* ConstraintRelation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintRelation.swift; path = Sources/ConstraintRelation.swift; sourceTree = ""; }; + 4D66C4F18801749D7E9995D4285851CE /* DeviceKit.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = DeviceKit.modulemap; sourceTree = ""; }; + 4E97863139CB6E7C08BDC69AD152C6B0 /* ImageDataProvider.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ImageDataProvider.swift; path = Sources/General/ImageSource/ImageDataProvider.swift; sourceTree = ""; }; + 4ECD015D1E33C0A413C1B58BE7CB5AD9 /* RxCocoa-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "RxCocoa-Info.plist"; sourceTree = ""; }; + 503238E19CB138CABE150E1CB3A5374E /* UISwitch+Rx.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UISwitch+Rx.swift"; path = "RxCocoa/iOS/UISwitch+Rx.swift"; sourceTree = ""; }; + 5118C995324C7B3659B66FDA337AB87B /* Empty.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Empty.swift; path = RxSwift/Observables/Empty.swift; sourceTree = ""; }; + 513A35C6696CAB5A33FC454009387362 /* RxTarget.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RxTarget.swift; path = RxCocoa/Common/RxTarget.swift; sourceTree = ""; }; + 5164F785056F2EC3F1618F455171885F /* Moya-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Moya-Info.plist"; sourceTree = ""; }; + 5166292190C01036F73A0906BF5FD044 /* PrimitiveSequence+Concurrency.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "PrimitiveSequence+Concurrency.swift"; path = "RxSwift/Traits/PrimitiveSequence/PrimitiveSequence+Concurrency.swift"; sourceTree = ""; }; + 5199D7F70873229982B2F72B8936532C /* NSButton+Rx.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "NSButton+Rx.swift"; path = "RxCocoa/macOS/NSButton+Rx.swift"; sourceTree = ""; }; + 51A46EAF7F0B2189DCBD9F0F6421E082 /* RxRelay-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "RxRelay-prefix.pch"; sourceTree = ""; }; + 522ADF4C87AB47378E5E7A5BBE7A5A06 /* Moya-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Moya-umbrella.h"; sourceTree = ""; }; + 52695BEF29103B49AFA3E6D07B5DA251 /* RedirectHandler.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RedirectHandler.swift; path = Source/RedirectHandler.swift; sourceTree = ""; }; + 5282835C10E3DDCB84C4EDCA95B66570 /* AnonymousObserver.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AnonymousObserver.swift; path = RxSwift/Observers/AnonymousObserver.swift; sourceTree = ""; }; + 52F19A2FED9748DDCC88CC53ED49F836 /* Atomic.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Atomic.swift; path = Sources/Moya/Atomic.swift; sourceTree = ""; }; + 5313AE65D24BCCBB0C1A5D107FDA0320 /* RefCountDisposable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RefCountDisposable.swift; path = RxSwift/Disposables/RefCountDisposable.swift; sourceTree = ""; }; + 5318A43EFBD28DC81CEED3CDEB871ABF /* PrimitiveSequence+Zip+arity.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "PrimitiveSequence+Zip+arity.swift"; path = "RxSwift/Traits/PrimitiveSequence/PrimitiveSequence+Zip+arity.swift"; sourceTree = ""; }; + 54779717E744F4352FECD7330BA2BC68 /* Notifications.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Notifications.swift; path = Source/Notifications.swift; sourceTree = ""; }; + 54A2A4168F5796023E4AB2257079E82B /* ConstraintConstantTarget.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintConstantTarget.swift; path = Sources/ConstraintConstantTarget.swift; sourceTree = ""; }; + 54BE630532FAC36AF8CA970B716390DF /* _RXObjCRuntime.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = _RXObjCRuntime.h; path = RxCocoa/Runtime/include/_RXObjCRuntime.h; sourceTree = ""; }; + 54C1F34CF6E3BFA0DE23BE942DC3EAEA /* Runtime.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Runtime.swift; path = Sources/Utility/Runtime.swift; sourceTree = ""; }; + 553C3C596D526067A05D640F3D9E138E /* HasDisposeBag.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = HasDisposeBag.swift; sourceTree = ""; }; + 5560F94CC6C6C8F313BF9612C06F6B89 /* ConstraintPriority.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintPriority.swift; path = Sources/ConstraintPriority.swift; sourceTree = ""; }; + 55A51C4F9C59AECA9A3249965049C715 /* ExtensionHelpers.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ExtensionHelpers.swift; path = Sources/Utility/ExtensionHelpers.swift; sourceTree = ""; }; + 55ACC5695926FA80EAD7978822FEE963 /* SnapKit.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SnapKit.debug.xcconfig; sourceTree = ""; }; + 5643C9FE3B2DD478AC0DDC415BA749A3 /* BooleanDisposable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BooleanDisposable.swift; path = RxSwift/Disposables/BooleanDisposable.swift; sourceTree = ""; }; + 56E4465E500411A8D465BAACA756B3E3 /* TailRecursiveSink.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TailRecursiveSink.swift; path = RxSwift/Observers/TailRecursiveSink.swift; sourceTree = ""; }; + 5722044EB0ADF40364EA6A1133CECF25 /* DeviceKit.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = DeviceKit.release.xcconfig; sourceTree = ""; }; + 58903B90368CCFA6AD11E2E645067FFD /* RequestTaskMap.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RequestTaskMap.swift; path = Source/RequestTaskMap.swift; sourceTree = ""; }; + 58CDFB2FA30EE7E8878B314B6C67A1ED /* RxCollectionViewReactiveArrayDataSource.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RxCollectionViewReactiveArrayDataSource.swift; path = RxCocoa/iOS/DataSources/RxCollectionViewReactiveArrayDataSource.swift; sourceTree = ""; }; + 591AB8C5450EE6C0C636F79E16A7EDBA /* UITableView+Reusable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UITableView+Reusable.swift"; path = "Sources/View/UITableView+Reusable.swift"; sourceTree = ""; }; + 59996E127C2E58DBD70CA09D746BD419 /* Protected.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Protected.swift; path = Source/Protected.swift; sourceTree = ""; }; + 59D764B99FEF1C8EAB4FAE34D802254E /* SubjectType.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SubjectType.swift; path = RxSwift/Subjects/SubjectType.swift; sourceTree = ""; }; + 59D8127EAD2E5B49A393C8B2FBA38256 /* OperationQueueScheduler.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = OperationQueueScheduler.swift; path = RxSwift/Schedulers/OperationQueueScheduler.swift; sourceTree = ""; }; + 5A75CC3715DB197F7CBFDD57D2727036 /* KFImageOptions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = KFImageOptions.swift; path = Sources/SwiftUI/KFImageOptions.swift; sourceTree = ""; }; + 5BAB1E0566059720BF60AC6E48713559 /* NopDisposable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NopDisposable.swift; path = RxSwift/Disposables/NopDisposable.swift; sourceTree = ""; }; + 5C20F2D35CADF661F8FFD19A3406146A /* Observable+Bind.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Observable+Bind.swift"; path = "RxCocoa/Common/Observable+Bind.swift"; sourceTree = ""; }; + 5CDAF0BB1613D4C614630A013D714B1B /* RecursiveLock.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RecursiveLock.swift; path = Platform/RecursiveLock.swift; sourceTree = ""; }; + 5D3B7BB5854217DBA4EC2E013790589F /* Buffer.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Buffer.swift; path = RxSwift/Observables/Buffer.swift; sourceTree = ""; }; 5D797E9A5C5782CE845840781FA1CC81 /* Alamofire */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Alamofire; path = Alamofire.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 5DC90B70DB4293C27D4B5733F05EC3CC /* InvocableScheduledItem.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = InvocableScheduledItem.swift; path = RxSwift/Schedulers/Internal/InvocableScheduledItem.swift; sourceTree = ""; }; - 5DE5F4C9535F3ECFDE536AF77F583A78 /* MemoryStorage.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = MemoryStorage.swift; path = Sources/Cache/MemoryStorage.swift; sourceTree = ""; }; - 5EC0523BF8CA0D3FF2934609B979DBED /* Date+Dispatch.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Date+Dispatch.swift"; path = "RxSwift/Date+Dispatch.swift"; sourceTree = ""; }; - 6009157C9973464C53AFA7E068E984F7 /* Export.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Export.swift; path = Source/Export.swift; sourceTree = ""; }; - 60A3141E90976A3DD62256D0A73B9572 /* EnumType.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = EnumType.swift; path = Source/EnumType.swift; sourceTree = ""; }; - 615C9F76DEEA89A8A3638328942C191B /* NetworkActivityPlugin.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NetworkActivityPlugin.swift; path = Sources/Moya/Plugins/NetworkActivityPlugin.swift; sourceTree = ""; }; - 61ADA54F40A6900545707A222D69889B /* ShareReplayScope.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ShareReplayScope.swift; path = RxSwift/Observables/ShareReplayScope.swift; sourceTree = ""; }; - 628E93CA5921A8FC116E3929C680A27B /* RxRelay-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "RxRelay-Info.plist"; sourceTree = ""; }; - 634E359FC76F57C6E032A112422B8130 /* VirtualTimeConverterType.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = VirtualTimeConverterType.swift; path = RxSwift/Schedulers/VirtualTimeConverterType.swift; sourceTree = ""; }; - 63CF3F8FFB207D7C17E8DB9CB93EDA1E /* RxCocoa.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = RxCocoa.release.xcconfig; sourceTree = ""; }; - 6438C8BA15E4054D7ACA1E3DFF2066DB /* FieldDescriptor.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FieldDescriptor.swift; path = Source/FieldDescriptor.swift; sourceTree = ""; }; - 64576C6FC886A417A4683A9816DA5D4F /* TailRecursiveSink.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TailRecursiveSink.swift; path = RxSwift/Observers/TailRecursiveSink.swift; sourceTree = ""; }; - 645BF6563AFCDBF6A94CF2E1A387FA8C /* Observable+Bind.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Observable+Bind.swift"; path = "RxCocoa/Common/Observable+Bind.swift"; sourceTree = ""; }; - 64854FC0AC6AFE7ACB68D2C7BEAAE398 /* DateTransform.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DateTransform.swift; path = Source/DateTransform.swift; sourceTree = ""; }; - 649D2F79A4B50006D2A9D93E21022944 /* Moya.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Moya.release.xcconfig; sourceTree = ""; }; - 64F516F56589A2470DFA0E30E85DBB80 /* ConstraintDescription.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintDescription.swift; path = Sources/ConstraintDescription.swift; sourceTree = ""; }; - 64FA3F6B350E532395A97AB96530BE97 /* NSObject+Rx.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "NSObject+Rx.swift"; path = "RxCocoa/Foundation/NSObject+Rx.swift"; sourceTree = ""; }; - 654DEBE109ACCEE862E7F084EE7ED13C /* Timeout.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Timeout.swift; path = RxSwift/Observables/Timeout.swift; sourceTree = ""; }; - 65C3DEA44C88982D1639BC1D3AE788E5 /* RxCocoa.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = RxCocoa.modulemap; sourceTree = ""; }; - 6673F5D40ED1C9BF12C1C9864D29C16B /* Maybe.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Maybe.swift; path = RxSwift/Traits/PrimitiveSequence/Maybe.swift; sourceTree = ""; }; - 66BCA8A6AE43B359068161172075AD29 /* MainScheduler.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = MainScheduler.swift; path = RxSwift/Schedulers/MainScheduler.swift; sourceTree = ""; }; - 66EAB16FAAFDFDFF614A83B83544F60A /* RxCocoa-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "RxCocoa-umbrella.h"; sourceTree = ""; }; - 67C143D7E7508931CFD2E2398C7BA9F0 /* RxTableViewDataSourceProxy.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RxTableViewDataSourceProxy.swift; path = RxCocoa/iOS/Proxies/RxTableViewDataSourceProxy.swift; sourceTree = ""; }; - 692E3C85CC1223B95D6A9605B661FA68 /* AnyObserver.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AnyObserver.swift; path = RxSwift/AnyObserver.swift; sourceTree = ""; }; - 69B3A5BB96CFA43786C0ACFCF6162F46 /* URLSession+Rx.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "URLSession+Rx.swift"; path = "RxCocoa/Foundation/URLSession+Rx.swift"; sourceTree = ""; }; - 69C17E66AE494BF8C88740E1EDB36891 /* RefCountDisposable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RefCountDisposable.swift; path = RxSwift/Disposables/RefCountDisposable.swift; sourceTree = ""; }; - 69D940AC28230A45C640E32E10438178 /* SchedulerType.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SchedulerType.swift; path = RxSwift/SchedulerType.swift; sourceTree = ""; }; + 5D9D37A063544BC1FE91BF7860920A13 /* Queue.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Queue.swift; path = Platform/DataStructures/Queue.swift; sourceTree = ""; }; + 5DA4BD616B9BD9CD1C8D382F18E20B78 /* NotificationCenter+Rx.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "NotificationCenter+Rx.swift"; path = "RxCocoa/Foundation/NotificationCenter+Rx.swift"; sourceTree = ""; }; + 5DF8B76B5F07EF21245D918B9B8E2F34 /* Optional.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Optional.swift; path = RxSwift/Observables/Optional.swift; sourceTree = ""; }; + 5EE2EC59B7C72782EF4B25B534D9BB05 /* Date+Dispatch.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Date+Dispatch.swift"; path = "RxSwift/Date+Dispatch.swift"; sourceTree = ""; }; + 5F315A7060EC2E13146D8F6D2A4B3FC6 /* NSObject+Rx-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "NSObject+Rx-prefix.pch"; sourceTree = ""; }; + 5F372CC7F486A1303F495BC208499742 /* Sample.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Sample.swift; path = RxSwift/Observables/Sample.swift; sourceTree = ""; }; + 5F832058F5630D3E59B91B26C91602B9 /* NibOwnerLoadable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NibOwnerLoadable.swift; path = Sources/View/NibOwnerLoadable.swift; sourceTree = ""; }; + 5FC9F13D2042C9127C92E064025DCB3F /* RxPickerViewDelegateProxy.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RxPickerViewDelegateProxy.swift; path = RxCocoa/iOS/Proxies/RxPickerViewDelegateProxy.swift; sourceTree = ""; }; + 5FDA5E220B7A16114705F3FE95ADEB23 /* ReflectionHelper.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ReflectionHelper.swift; path = Source/ReflectionHelper.swift; sourceTree = ""; }; + 5FFE2F1DD561C0411DE7218D5379A366 /* HandyJSON.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = HandyJSON.release.xcconfig; sourceTree = ""; }; + 601D5F306FC97BFA6CC5297D9F072D34 /* Reactive.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Reactive.swift; path = RxSwift/Reactive.swift; sourceTree = ""; }; + 60F589EE2F2776B1BD978CC8FE58CEB4 /* Moya+Alamofire.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Moya+Alamofire.swift"; path = "Sources/Moya/Moya+Alamofire.swift"; sourceTree = ""; }; + 61EE19649DF15827C56F2A3B6E50320E /* RxCocoa.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = RxCocoa.debug.xcconfig; sourceTree = ""; }; + 6209797288E36610C52D246F4FC4ABBD /* Enumerated.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Enumerated.swift; path = RxSwift/Observables/Enumerated.swift; sourceTree = ""; }; + 62188E3304690C4357C8C8667E439968 /* GroupBy.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = GroupBy.swift; path = RxSwift/Observables/GroupBy.swift; sourceTree = ""; }; + 62A9F4EB766642D7053E65AF8420D18E /* MainScheduler.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = MainScheduler.swift; path = RxSwift/Schedulers/MainScheduler.swift; sourceTree = ""; }; + 630898B35BC0EFD786106655DE54474E /* Timer.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Timer.swift; path = RxSwift/Observables/Timer.swift; sourceTree = ""; }; + 63B22F3856B36B6A2522DB57EACF0E7E /* Alamofire.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Alamofire.swift; path = Source/Alamofire.swift; sourceTree = ""; }; + 642B59E09CD7D3A50AB30F1DDEE56BBC /* DateTransform.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DateTransform.swift; path = Source/DateTransform.swift; sourceTree = ""; }; + 64613818A166EF20CF54E805E82F8DF8 /* Reusable-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Reusable-prefix.pch"; sourceTree = ""; }; + 6530C2CD3AD635B5D4BCF2F2F67E5C71 /* URLConvertible+URLRequestConvertible.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "URLConvertible+URLRequestConvertible.swift"; path = "Source/URLConvertible+URLRequestConvertible.swift"; sourceTree = ""; }; + 6540850C0E13B7D1C416C7ED0A60F3B8 /* ConstraintViewDSL.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintViewDSL.swift; path = Sources/ConstraintViewDSL.swift; sourceTree = ""; }; + 660B4328CA8A8264DAA2836298C6176F /* Response.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Response.swift; path = Source/Response.swift; sourceTree = ""; }; + 671544CE3B7A0B0E19382614F50B6863 /* ImageCache.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ImageCache.swift; path = Sources/Cache/ImageCache.swift; sourceTree = ""; }; + 67C1A304B2A6499FF25762F1D9A8C934 /* MultipartFormData.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = MultipartFormData.swift; path = Source/MultipartFormData.swift; sourceTree = ""; }; + 67CE3AEB4FEDAFD9D12E456804298A1B /* Resource.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Resource.swift; path = Sources/General/ImageSource/Resource.swift; sourceTree = ""; }; + 681558DCAFD23649321C935EAF65EA51 /* NSObject+Rx.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "NSObject+Rx.debug.xcconfig"; sourceTree = ""; }; + 681A19C67E1B19C527AE3C5E1D817E06 /* ExtendCustomBasicType.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ExtendCustomBasicType.swift; path = Source/ExtendCustomBasicType.swift; sourceTree = ""; }; 6A1970A14C2672638850C555C17ADE89 /* 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; }; - 6AB41D31B155EAB764A9C053A0DE59CD /* PointerType.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PointerType.swift; path = Source/PointerType.swift; sourceTree = ""; }; - 6BC184BD2886B5395146315871D4F629 /* Sample.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Sample.swift; path = RxSwift/Observables/Sample.swift; sourceTree = ""; }; - 6C198ADB3A802CC083707D46D42F735C /* Endpoint.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Endpoint.swift; path = Sources/Moya/Endpoint.swift; sourceTree = ""; }; - 6C4649E78A32C230E03D17B80A888076 /* Alamofire-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Alamofire-prefix.pch"; sourceTree = ""; }; + 6A71A958C1A2EEE40616625F416BCAD0 /* MBProgressHUD.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = MBProgressHUD.modulemap; sourceTree = ""; }; + 6AA5918C6A2A52AE76DEDD9A67669F56 /* NetworkActivityPlugin.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NetworkActivityPlugin.swift; path = Sources/Moya/Plugins/NetworkActivityPlugin.swift; sourceTree = ""; }; + 6AAB18081D287A3C83DC8FF600036CDC /* UISearchController+Rx.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UISearchController+Rx.swift"; path = "RxCocoa/iOS/UISearchController+Rx.swift"; sourceTree = ""; }; + 6ACFAFC715F32B242C0105DFBD71DCD2 /* WithUnretained.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WithUnretained.swift; path = RxSwift/Observables/WithUnretained.swift; sourceTree = ""; }; + 6B491B22EBB6C0EEA1AA35668A5B9771 /* RequestModifier.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RequestModifier.swift; path = Sources/Networking/RequestModifier.swift; sourceTree = ""; }; + 6B87468206E69D53B049703EDDD01606 /* ConstraintMultiplierTarget.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintMultiplierTarget.swift; path = Sources/ConstraintMultiplierTarget.swift; sourceTree = ""; }; + 6B927F78FBFEF3310D9A4D0AAE0B0848 /* NSTextAttachment+Kingfisher.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "NSTextAttachment+Kingfisher.swift"; path = "Sources/Extensions/NSTextAttachment+Kingfisher.swift"; sourceTree = ""; }; + 6BD44328197D41002A7ABD8129FA0B81 /* ConstraintMakerExtendable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintMakerExtendable.swift; path = Sources/ConstraintMakerExtendable.swift; sourceTree = ""; }; 6C4BAD710FAA4AE5F73353998A04A650 /* Pods-yinmeng-ios.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-yinmeng-ios.release.xcconfig"; sourceTree = ""; }; - 6D060D2BB92C878FBC76760B8F99D911 /* RxSwift-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "RxSwift-prefix.pch"; sourceTree = ""; }; + 6CCFA1427BCBC6BEF685E59C2D078B50 /* OperationQueue+Alamofire.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "OperationQueue+Alamofire.swift"; path = "Source/OperationQueue+Alamofire.swift"; sourceTree = ""; }; + 6CD21EC48FB4C480D181BFF522CAB4BD /* DelegateProxyType.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DelegateProxyType.swift; path = RxCocoa/Common/DelegateProxyType.swift; sourceTree = ""; }; 6D74FF06CA5AE8F2F5D48301BE439D32 /* CFNetwork.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CFNetwork.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS14.0.sdk/System/Library/Frameworks/CFNetwork.framework; sourceTree = DEVELOPER_DIR; }; - 6DEEF0A78457ED9D46DBF84E913E83F6 /* RxRelay-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "RxRelay-umbrella.h"; sourceTree = ""; }; - 6E0F4988883481C19FAFF403697872DD /* Kingfisher.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Kingfisher.swift; path = Sources/General/Kingfisher.swift; sourceTree = ""; }; - 6E269149DE9BA1B81C3504720A668420 /* HTTPMethod.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = HTTPMethod.swift; path = Source/HTTPMethod.swift; sourceTree = ""; }; - 6EA8E69F4FC1AD4BC47B9FAA09D391D1 /* MoyaProvider.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = MoyaProvider.swift; path = Sources/Moya/MoyaProvider.swift; sourceTree = ""; }; - 6EBE2A5988B01C477AFF1CE3128EE8AF /* ConstraintLayoutGuideDSL.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintLayoutGuideDSL.swift; path = Sources/ConstraintLayoutGuideDSL.swift; sourceTree = ""; }; - 6F85D9716CFD2A169AB2FC3954F8916B /* Create.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Create.swift; path = RxSwift/Observables/Create.swift; sourceTree = ""; }; - 6FE1258734CD0D5DE5C0C1545F096DAF /* StringEncoding+Alamofire.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "StringEncoding+Alamofire.swift"; path = "Source/StringEncoding+Alamofire.swift"; sourceTree = ""; }; - 70933FA1D55CE70EA5A4110C98DEC09D /* PublishSubject.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PublishSubject.swift; path = RxSwift/Subjects/PublishSubject.swift; sourceTree = ""; }; - 70B306F880D3FA0554EF152D25916163 /* GraphicsContext.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = GraphicsContext.swift; path = Sources/Image/GraphicsContext.swift; sourceTree = ""; }; + 6DCD6B017FB84FFE7C3BBA95CBF3BACA /* BinaryDisposable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BinaryDisposable.swift; path = RxSwift/Disposables/BinaryDisposable.swift; sourceTree = ""; }; + 6E3BE7A2658D90D7942E77F2812A0C91 /* _RXObjCRuntime.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = _RXObjCRuntime.m; path = RxCocoa/Runtime/_RXObjCRuntime.m; sourceTree = ""; }; + 6E49664D9C90E91EDDAEE87B74B21D22 /* RxCocoa.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RxCocoa.h; path = RxCocoa/RxCocoa.h; sourceTree = ""; }; + 6E4BA970B9A3745A3304F463928510E4 /* Never.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Never.swift; path = RxSwift/Observables/Never.swift; sourceTree = ""; }; + 6E52E6D3D1B60B8D401E9BC11B0D0138 /* RxSearchBarDelegateProxy.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RxSearchBarDelegateProxy.swift; path = RxCocoa/iOS/Proxies/RxSearchBarDelegateProxy.swift; sourceTree = ""; }; + 6E755AE7B4C0AD73F4C39752D2932DAD /* Observable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Observable.swift; path = RxSwift/Observable.swift; sourceTree = ""; }; + 6E8CC12B38B79125BC51EFC8A9D68C2C /* ImageContext.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ImageContext.swift; path = Sources/SwiftUI/ImageContext.swift; sourceTree = ""; }; + 6ED28AA73288F8BA9098167BB3C5DD3E /* First.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = First.swift; path = RxSwift/Observables/First.swift; sourceTree = ""; }; + 6EE797428CE69884503CC9018BA7D72D /* AtomicInt.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AtomicInt.swift; path = Platform/AtomicInt.swift; sourceTree = ""; }; + 6EED46321193DAC05CEB1CA4631F93FE /* VirtualTimeConverterType.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = VirtualTimeConverterType.swift; path = RxSwift/Schedulers/VirtualTimeConverterType.swift; sourceTree = ""; }; + 70C09E238B33E45F334962CE40F8580D /* ControlEvent.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ControlEvent.swift; path = RxCocoa/Traits/ControlEvent.swift; sourceTree = ""; }; + 7143352286BCC6841BFEF03BAA776259 /* ConstraintPriorityTarget.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintPriorityTarget.swift; path = Sources/ConstraintPriorityTarget.swift; sourceTree = ""; }; 7160612C75B8C873D77B5AEDED76632B /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS14.0.sdk/System/Library/Frameworks/CoreGraphics.framework; sourceTree = DEVELOPER_DIR; }; - 71A22E298D1E26A25192B7D79CB9C7BE /* _RX.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = _RX.h; path = RxCocoa/Runtime/include/_RX.h; sourceTree = ""; }; - 720BE3DE6F24DCF57D71D73928C99C2B /* _RXKVOObserver.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = _RXKVOObserver.h; path = RxCocoa/Runtime/include/_RXKVOObserver.h; sourceTree = ""; }; - 728E3C167CE3ED7F8123F48D5A84771E /* ConcurrentMainScheduler.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConcurrentMainScheduler.swift; path = RxSwift/Schedulers/ConcurrentMainScheduler.swift; sourceTree = ""; }; - 739CDDE742C44BA839AD3DA536BDD57F /* RedirectHandler.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RedirectHandler.swift; path = Sources/Networking/RedirectHandler.swift; sourceTree = ""; }; - 7430E48DEB35987DD064EE0D7363953F /* Configuration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Configuration.swift; path = Source/Configuration.swift; sourceTree = ""; }; - 74A65654283AE2CF4A3DFA265199F1C5 /* SnapKit.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SnapKit.release.xcconfig; sourceTree = ""; }; - 74E7B0CB0BD4C32719550BAEE7471ABC /* UITabBar+Rx.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UITabBar+Rx.swift"; path = "RxCocoa/iOS/UITabBar+Rx.swift"; sourceTree = ""; }; - 74F603E9DCC9F74E70AC2EEF9A832481 /* RxTabBarDelegateProxy.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RxTabBarDelegateProxy.swift; path = RxCocoa/iOS/Proxies/RxTabBarDelegateProxy.swift; sourceTree = ""; }; - 7572072A13A12227DE23BD58E99E7B41 /* AuthenticationChallengeResponsable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AuthenticationChallengeResponsable.swift; path = Sources/Networking/AuthenticationChallengeResponsable.swift; sourceTree = ""; }; - 75C831D0F3B6ECF5593AC202900F9B4F /* CallbackQueue.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CallbackQueue.swift; path = Sources/Utility/CallbackQueue.swift; sourceTree = ""; }; - 75FFF56047C4C60A6E7F1E572172AC93 /* Materialize.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Materialize.swift; path = RxSwift/Observables/Materialize.swift; sourceTree = ""; }; - 763C57CB99AAF692D5804D56D94FE7EA /* ConstraintMakerRelatable+Extensions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "ConstraintMakerRelatable+Extensions.swift"; path = "Sources/ConstraintMakerRelatable+Extensions.swift"; sourceTree = ""; }; - 765D531DF5050A417659B07DDB7A51B1 /* BinaryDisposable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BinaryDisposable.swift; path = RxSwift/Disposables/BinaryDisposable.swift; sourceTree = ""; }; - 7867FF4FE4FF1D6345613A45E339635D /* CompositeDisposable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CompositeDisposable.swift; path = RxSwift/Disposables/CompositeDisposable.swift; sourceTree = ""; }; - 78F5BA1E49C1B6FE56A4B5323CD9AFF8 /* Alamofire-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Alamofire-dummy.m"; sourceTree = ""; }; - 7965E10A5058A7FDC743C628B6A209E4 /* ImageFormat.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ImageFormat.swift; path = Sources/Image/ImageFormat.swift; sourceTree = ""; }; - 79A0A26C9F36ABCC4EB50D474EC8DA4D /* SubscribeOn.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SubscribeOn.swift; path = RxSwift/Observables/SubscribeOn.swift; sourceTree = ""; }; - 79AB56ECFE81336CFFB52ADF927D8A7C /* ImageBinder.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ImageBinder.swift; path = Sources/SwiftUI/ImageBinder.swift; sourceTree = ""; }; - 7A6CCF2E51B64ED58E9F5F6BC18C4500 /* UISearchController+Rx.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UISearchController+Rx.swift"; path = "RxCocoa/iOS/UISearchController+Rx.swift"; sourceTree = ""; }; - 7AD5F75086AF715FAD56BDDA5876EA2B /* Disposable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Disposable.swift; path = RxSwift/Disposable.swift; sourceTree = ""; }; - 7B6C73A34CCB4FCB54A17345BD0051FC /* NSSlider+Rx.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "NSSlider+Rx.swift"; path = "RxCocoa/macOS/NSSlider+Rx.swift"; sourceTree = ""; }; - 7B953B1CDFABA00A04E6AC9124999CF9 /* KVORepresentable+Swift.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "KVORepresentable+Swift.swift"; path = "RxCocoa/Foundation/KVORepresentable+Swift.swift"; sourceTree = ""; }; - 7C161168F47BE22BA1D8157F0A37F4C2 /* Timer.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Timer.swift; path = RxSwift/Observables/Timer.swift; sourceTree = ""; }; - 7CDE2F9CE2B04EA6687EE664E9B1F447 /* ConstraintMakerExtendable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintMakerExtendable.swift; path = Sources/ConstraintMakerExtendable.swift; sourceTree = ""; }; - 7CFEE4BC9AEF52579A20AF4717B3205C /* MultipartUpload.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = MultipartUpload.swift; path = Source/MultipartUpload.swift; sourceTree = ""; }; - 7D131FE518C0CECBEA619AA8A5490197 /* Infallible+CombineLatest+arity.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Infallible+CombineLatest+arity.swift"; path = "RxSwift/Traits/Infallible/Infallible+CombineLatest+arity.swift"; sourceTree = ""; }; - 7E97E1D4DF8BFA3FE2C603D6B934D9D2 /* DispatchQueue+Alamofire.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "DispatchQueue+Alamofire.swift"; path = "Source/DispatchQueue+Alamofire.swift"; sourceTree = ""; }; - 7FA5EF7CC85AF8D7A9C4307E6247274B /* Using.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Using.swift; path = RxSwift/Observables/Using.swift; sourceTree = ""; }; - 8051259FDEC630E944D8CD2114B0226B /* WKWebView+Rx.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "WKWebView+Rx.swift"; path = "RxCocoa/iOS/WKWebView+Rx.swift"; sourceTree = ""; }; + 7188F8528517D30F9811E46C3E640076 /* UINavigationController+Rx.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UINavigationController+Rx.swift"; path = "RxCocoa/iOS/UINavigationController+Rx.swift"; sourceTree = ""; }; + 71C481FAF5CC966B3F886064180B2B77 /* SubscriptionDisposable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SubscriptionDisposable.swift; path = RxSwift/Disposables/SubscriptionDisposable.swift; sourceTree = ""; }; + 7206976A160531142A0120F2BFD3B782 /* Moya.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Moya.debug.xcconfig; sourceTree = ""; }; + 724FA757D3BA554538B8410F9B8901D2 /* RxSwift.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = RxSwift.modulemap; sourceTree = ""; }; + 72C1719832669826CE6B99D14E500D80 /* AlamofireExtended.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AlamofireExtended.swift; path = Source/AlamofireExtended.swift; sourceTree = ""; }; + 72C838FF6CC9F15D864FD56DFBD21083 /* SharedSequence.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SharedSequence.swift; path = RxCocoa/Traits/SharedSequence/SharedSequence.swift; sourceTree = ""; }; + 72FAC07B56FC988FC0D93ECAB83C6146 /* NSDecimalNumberTransform.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NSDecimalNumberTransform.swift; path = Source/NSDecimalNumberTransform.swift; sourceTree = ""; }; + 732D486F61D057118E87EF7400F484A8 /* Alamofire-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Alamofire-umbrella.h"; sourceTree = ""; }; + 7397385F7C73F2166AA3C6A0ABA53CCE /* DateFormatterTransform.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DateFormatterTransform.swift; path = Source/DateFormatterTransform.swift; sourceTree = ""; }; + 73A7B013597C0B94813C0F439ADC5DF6 /* DistinctUntilChanged.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DistinctUntilChanged.swift; path = RxSwift/Observables/DistinctUntilChanged.swift; sourceTree = ""; }; + 73BF117C5FBFC1113209C69DDA0449BF /* OtherExtension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = OtherExtension.swift; path = Source/OtherExtension.swift; sourceTree = ""; }; + 74B16913E0CE00E4C26B492DE4863FCB /* ObservableConvertibleType+Infallible.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "ObservableConvertibleType+Infallible.swift"; path = "RxSwift/Traits/Infallible/ObservableConvertibleType+Infallible.swift"; sourceTree = ""; }; + 7500E1DE13C315DD31BC983DB3B142EB /* StringEncoding+Alamofire.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "StringEncoding+Alamofire.swift"; path = "Source/StringEncoding+Alamofire.swift"; sourceTree = ""; }; + 7526F142BBD6241D71384330007F463C /* URLEncodedFormEncoder.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = URLEncodedFormEncoder.swift; path = Source/URLEncodedFormEncoder.swift; sourceTree = ""; }; + 7573B559FCEBCE50DCA43C81890DB9BB /* CPListItem+Kingfisher.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "CPListItem+Kingfisher.swift"; path = "Sources/Extensions/CPListItem+Kingfisher.swift"; sourceTree = ""; }; + 7663B82993DFABAB2F4B389A8FB5C048 /* RxCollectionViewDataSourcePrefetchingProxy.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RxCollectionViewDataSourcePrefetchingProxy.swift; path = RxCocoa/iOS/Proxies/RxCollectionViewDataSourcePrefetchingProxy.swift; sourceTree = ""; }; + 776B96425454A6A164C943EC6F438F82 /* HandyJSON.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HandyJSON.h; path = Source/HandyJSON.h; sourceTree = ""; }; + 779D7401084506CD62E6CAA039E5CA6A /* SwiftSupport.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SwiftSupport.swift; path = RxSwift/SwiftSupport/SwiftSupport.swift; sourceTree = ""; }; + 77B0CF94E940BAD46A317A234F0BD859 /* InvocableScheduledItem.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = InvocableScheduledItem.swift; path = RxSwift/Schedulers/Internal/InvocableScheduledItem.swift; sourceTree = ""; }; + 780972FEEFE3D0DFD064811F1A9CB1CE /* Sink.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Sink.swift; path = RxSwift/Observables/Sink.swift; sourceTree = ""; }; + 790336EDB50A860403CE3AA08BDC2943 /* MBProgressHUD.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = MBProgressHUD.debug.xcconfig; sourceTree = ""; }; + 797B718D90DE78C755DF2EC8CE6AAFF6 /* RxTableViewReactiveArrayDataSource.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RxTableViewReactiveArrayDataSource.swift; path = RxCocoa/iOS/DataSources/RxTableViewReactiveArrayDataSource.swift; sourceTree = ""; }; + 7AAFEC9DFFEE3CC947F622697E73386F /* SynchronizedDisposeType.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SynchronizedDisposeType.swift; path = RxSwift/Concurrency/SynchronizedDisposeType.swift; sourceTree = ""; }; + 7AF21B896BC4832F54A8C972D0B534AD /* AnimatedImageView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AnimatedImageView.swift; path = Sources/Views/AnimatedImageView.swift; sourceTree = ""; }; + 7B12288C33DA62D48C6C165C6AF775E2 /* RxTableViewDelegateProxy.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RxTableViewDelegateProxy.swift; path = RxCocoa/iOS/Proxies/RxTableViewDelegateProxy.swift; sourceTree = ""; }; + 7B1C97EF32D83A495E3E919A226AAD9D /* Result+Alamofire.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Result+Alamofire.swift"; path = "Source/Result+Alamofire.swift"; sourceTree = ""; }; + 7B93F8A5C815D15B602DAA783AD6CCB6 /* ControlEvent+Driver.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "ControlEvent+Driver.swift"; path = "RxCocoa/Traits/Driver/ControlEvent+Driver.swift"; sourceTree = ""; }; + 7CE9E5DCE2431D9DE32637D771EC8877 /* ImmediateSchedulerType.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ImmediateSchedulerType.swift; path = RxSwift/ImmediateSchedulerType.swift; sourceTree = ""; }; + 7D1D67589B0014AD72F1E62127786F32 /* ImageFormat.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ImageFormat.swift; path = Sources/Image/ImageFormat.swift; sourceTree = ""; }; + 7DAFCEAA3AB4D37CB8B1B2D1845D5E61 /* UISegmentedControl+Rx.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UISegmentedControl+Rx.swift"; path = "RxCocoa/iOS/UISegmentedControl+Rx.swift"; sourceTree = ""; }; + 7E1A57DC890CD26CC9D90D8F3EBA9A03 /* Platform.Darwin.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Platform.Darwin.swift; path = Platform/Platform.Darwin.swift; sourceTree = ""; }; + 7F5D105DC72F421147B9A9E5B288E0BD /* AsSingle.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AsSingle.swift; path = RxSwift/Observables/AsSingle.swift; sourceTree = ""; }; + 7F6A38DB775E4F83534083A9B9F3BD0C /* MangledName.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = MangledName.swift; path = Source/MangledName.swift; sourceTree = ""; }; + 7FBB73CDBFC8CDA1A40ECB0C4AB27841 /* ImageProgressive.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ImageProgressive.swift; path = Sources/Image/ImageProgressive.swift; sourceTree = ""; }; + 7FF069A5D3B7CB96B4779D694ABE8A3C /* AsyncSubject.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AsyncSubject.swift; path = RxSwift/Subjects/AsyncSubject.swift; sourceTree = ""; }; + 805828D55129E6EE681F5A33AA93653C /* Observable+Concurrency.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Observable+Concurrency.swift"; path = "RxSwift/Observable+Concurrency.swift"; sourceTree = ""; }; 809C5FAB588354C9BA37DC3EAB8CB45C /* RxSwift */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = RxSwift; path = RxSwift.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 80E741ED9F7CB291A4CA8068F3FE04F2 /* MBProgressHUD.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = MBProgressHUD.debug.xcconfig; sourceTree = ""; }; - 81B176F830BCA2FC63200329DE776384 /* CompactMap.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CompactMap.swift; path = RxSwift/Observables/CompactMap.swift; sourceTree = ""; }; - 82EEBDF2AE2F00B7933D6A5DF8FDF0AD /* ObservableType.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ObservableType.swift; path = RxSwift/ObservableType.swift; sourceTree = ""; }; - 834ED77A734859A8A9236980263E4AF4 /* ConstraintPriority.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintPriority.swift; path = Sources/ConstraintPriority.swift; sourceTree = ""; }; - 840E59B83C8C092BD38138A7D44A473E /* SizeExtensions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SizeExtensions.swift; path = Sources/Utility/SizeExtensions.swift; sourceTree = ""; }; - 8472FB3724242C375626B5D19B004A36 /* Placeholder.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Placeholder.swift; path = Sources/Image/Placeholder.swift; sourceTree = ""; }; - 84E7CDD4F491C19202D78BD1D18EA01E /* Measuable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Measuable.swift; path = Source/Measuable.swift; sourceTree = ""; }; - 8770E250C6062015540FA168FD612B2B /* GroupedObservable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = GroupedObservable.swift; path = RxSwift/GroupedObservable.swift; sourceTree = ""; }; - 87AAF208F89B5776787B00ED7C4139D0 /* RequestInterceptor.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RequestInterceptor.swift; path = Source/RequestInterceptor.swift; sourceTree = ""; }; - 87AD720C8F2A51587F1C491E884DB664 /* URL+Moya.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "URL+Moya.swift"; path = "Sources/Moya/URL+Moya.swift"; sourceTree = ""; }; - 8807FF18BB93251158B72386A622E490 /* RxTableViewDelegateProxy.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RxTableViewDelegateProxy.swift; path = RxCocoa/iOS/Proxies/RxTableViewDelegateProxy.swift; sourceTree = ""; }; - 88195126F4E96A3774802B0BA8877C77 /* Combine.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Combine.swift; path = Source/Combine.swift; sourceTree = ""; }; - 881FD56231A6918A0EAD0806FB1D9A18 /* RxTabBarControllerDelegateProxy.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RxTabBarControllerDelegateProxy.swift; path = RxCocoa/iOS/Proxies/RxTabBarControllerDelegateProxy.swift; sourceTree = ""; }; - 8898277C74B39B8C2709D3BDFF6C793E /* RxCollectionViewDataSourceType.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RxCollectionViewDataSourceType.swift; path = RxCocoa/iOS/Protocols/RxCollectionViewDataSourceType.swift; sourceTree = ""; }; - 8A18BCB5C7FD8D506C4D66B8A1BE5B63 /* ConstraintDirectionalInsets.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintDirectionalInsets.swift; path = Sources/ConstraintDirectionalInsets.swift; sourceTree = ""; }; - 8A3398D47F647EC9C9854F30FAA9A225 /* RxCocoa-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "RxCocoa-dummy.m"; sourceTree = ""; }; - 8A9425DD88305B16CADE1573B70E7D7C /* UIDatePicker+Rx.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UIDatePicker+Rx.swift"; path = "RxCocoa/iOS/UIDatePicker+Rx.swift"; sourceTree = ""; }; - 8AD039748141FD7199964AF985765430 /* MultipartFormData.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = MultipartFormData.swift; path = Sources/Moya/MultipartFormData.swift; sourceTree = ""; }; - 8B3F60740202D2919EAB02088A75C6DE /* ConstraintAttributes.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintAttributes.swift; path = Sources/ConstraintAttributes.swift; sourceTree = ""; }; - 8B776E2E2FACA7C1A7173E403F37910F /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xml; name = PrivacyInfo.xcprivacy; path = Sources/PrivacyInfo.xcprivacy; sourceTree = ""; }; + 80A98418A162685AD31E0933E3F10D05 /* UIControl+Rx.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UIControl+Rx.swift"; path = "RxCocoa/iOS/UIControl+Rx.swift"; sourceTree = ""; }; + 80DADA2BBF563E1B822E3B3FF52DBADF /* RxRelay.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = RxRelay.debug.xcconfig; sourceTree = ""; }; + 80F3E3063C287702E72AA4964AEC41DD /* Moya-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Moya-dummy.m"; sourceTree = ""; }; + 8164ED6B78A39F45495F7E4CCCB38211 /* Reduce.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Reduce.swift; path = RxSwift/Observables/Reduce.swift; sourceTree = ""; }; + 828BD95CDE14B27EF56148093FBD73F9 /* SessionDelegate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SessionDelegate.swift; path = Source/SessionDelegate.swift; sourceTree = ""; }; + 835A4FE4528BFCB9CD61AC9E4E54C93E /* Producer.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Producer.swift; path = RxSwift/Observables/Producer.swift; sourceTree = ""; }; + 837D000C38991D87E5AAD478A7247464 /* ControlProperty.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ControlProperty.swift; path = RxCocoa/Traits/ControlProperty.swift; sourceTree = ""; }; + 8474DE367C89B9185450078267D7A6F9 /* RxSwift-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "RxSwift-umbrella.h"; sourceTree = ""; }; + 854DA502ABB6C02A98EE3953D927CBAF /* ServerTrustEvaluation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ServerTrustEvaluation.swift; path = Source/ServerTrustEvaluation.swift; sourceTree = ""; }; + 8589BE6AA1C030E2B416E7D7567ACDDD /* String+MD5.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "String+MD5.swift"; path = "Sources/Utility/String+MD5.swift"; sourceTree = ""; }; + 85C30E28B3B42AC8DB400B1A3EBD8DFE /* RxSearchControllerDelegateProxy.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RxSearchControllerDelegateProxy.swift; path = RxCocoa/iOS/Proxies/RxSearchControllerDelegateProxy.swift; sourceTree = ""; }; + 867F7AC7C1DAA6563D03B85F8792F0D2 /* SessionDataTask.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SessionDataTask.swift; path = Sources/Networking/SessionDataTask.swift; sourceTree = ""; }; + 8726C717942393D800367AEA1B00B6A2 /* Platform.Linux.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Platform.Linux.swift; path = Platform/Platform.Linux.swift; sourceTree = ""; }; + 874B499F55FCB3AEDBC9CAEF1A35C25A /* ObserverType.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ObserverType.swift; path = RxSwift/ObserverType.swift; sourceTree = ""; }; + 8896796ADE3D457CE11A410DDE855ECB /* NSSlider+Rx.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "NSSlider+Rx.swift"; path = "RxCocoa/macOS/NSSlider+Rx.swift"; sourceTree = ""; }; + 88BF5A084E87427DB713808039C3B9E9 /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xml; name = PrivacyInfo.xcprivacy; path = Sources/PrivacyInfo.xcprivacy; sourceTree = ""; }; + 88FF4B6EC04BE78FC9F26E9CBE1D7696 /* RxSwift.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = RxSwift.release.xcconfig; sourceTree = ""; }; + 8901A1C963EB80D8E32AEF6F15FE5006 /* SwitchIfEmpty.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SwitchIfEmpty.swift; path = RxSwift/Observables/SwitchIfEmpty.swift; sourceTree = ""; }; + 891BB23A8DD867FACFFAF5B22DFDF56E /* Debugging.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Debugging.swift; path = Sources/Debugging.swift; sourceTree = ""; }; + 8989281DFD82465C56C11FA4FA6108AD /* Completable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Completable.swift; path = RxSwift/Traits/PrimitiveSequence/Completable.swift; sourceTree = ""; }; + 89D4F99A22F01FEA581AD3378FB79C2B /* RxRelay-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "RxRelay-umbrella.h"; sourceTree = ""; }; + 8A4DEABC70F31A0D700E8537EED75EBE /* CachedResponseHandler.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CachedResponseHandler.swift; path = Source/CachedResponseHandler.swift; sourceTree = ""; }; + 8AD05713068879A92B91B72A0091CD3C /* SnapKit-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SnapKit-umbrella.h"; sourceTree = ""; }; + 8AE7340B71FE68209D47F08D0A107783 /* UIApplication+Rx.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UIApplication+Rx.swift"; path = "RxCocoa/iOS/UIApplication+Rx.swift"; sourceTree = ""; }; 8B8FAB0D627B17EDE1366984278705D9 /* MBProgressHUD.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = MBProgressHUD.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 8C1E768C4764D3F7B03199D967453517 /* Rx.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Rx.swift; path = RxSwift/Rx.swift; sourceTree = ""; }; - 8CDAEEA9FC477033FF5344F6CBE85CB2 /* DiskStorage.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DiskStorage.swift; path = Sources/Cache/DiskStorage.swift; sourceTree = ""; }; - 8CDDAB158F06801DD368BFA93A07800C /* Debugging.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Debugging.swift; path = Sources/Debugging.swift; sourceTree = ""; }; - 8D02F219043B80DB62FA686E85C09B35 /* RxCollectionViewDataSourcePrefetchingProxy.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RxCollectionViewDataSourcePrefetchingProxy.swift; path = RxCocoa/iOS/Proxies/RxCollectionViewDataSourcePrefetchingProxy.swift; sourceTree = ""; }; - 8D0507B1E2AB4B8A447354D000FEF414 /* KVORepresentable+CoreGraphics.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "KVORepresentable+CoreGraphics.swift"; path = "RxCocoa/Foundation/KVORepresentable+CoreGraphics.swift"; sourceTree = ""; }; - 8DA1B7070D9B7E6489E50762BA7CC29B /* TransformOf.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TransformOf.swift; path = Source/TransformOf.swift; sourceTree = ""; }; - 8DCA321A43CEC56664AD41086F8B7141 /* UISwitch+Rx.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UISwitch+Rx.swift"; path = "RxCocoa/iOS/UISwitch+Rx.swift"; sourceTree = ""; }; - 8DD8CAC74ECCE5DF13BE36C29354F6B3 /* PriorityQueue.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PriorityQueue.swift; path = Platform/DataStructures/PriorityQueue.swift; sourceTree = ""; }; - 8FC8131B3030B737FB4BE9DBCBAB4C9E /* Infallible+Operators.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Infallible+Operators.swift"; path = "RxSwift/Traits/Infallible/Infallible+Operators.swift"; sourceTree = ""; }; - 8FF51600836B6E9C1393D1B32AE0409F /* Constraint.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Constraint.swift; path = Sources/Constraint.swift; sourceTree = ""; }; - 90028E4B472E1FCD0B7A391D37BC0C80 /* RxCollectionViewDelegateProxy.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RxCollectionViewDelegateProxy.swift; path = RxCocoa/iOS/Proxies/RxCollectionViewDelegateProxy.swift; sourceTree = ""; }; - 913295D3902A731E0FEF7891F2DFFD66 /* HistoricalSchedulerTimeConverter.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = HistoricalSchedulerTimeConverter.swift; path = RxSwift/Schedulers/HistoricalSchedulerTimeConverter.swift; sourceTree = ""; }; - 917C955DCF6B29BABB9B623BE0758691 /* CombineLatest+Collection.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "CombineLatest+Collection.swift"; path = "RxSwift/Observables/CombineLatest+Collection.swift"; sourceTree = ""; }; - 91834F0831C28901ECD936CE6E242605 /* TargetType.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TargetType.swift; path = Sources/Moya/TargetType.swift; sourceTree = ""; }; - 91B4895A5E4828D58DFE315830059A72 /* ImageDrawing.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ImageDrawing.swift; path = Sources/Image/ImageDrawing.swift; sourceTree = ""; }; - 92037C313E25E9C5B1ECD6B53CF18C6C /* ScheduledItemType.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ScheduledItemType.swift; path = RxSwift/Schedulers/Internal/ScheduledItemType.swift; sourceTree = ""; }; - 924E596CD9FDC9E228B02FD51DF48901 /* ResourceBundle-Kingfisher-Kingfisher-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "ResourceBundle-Kingfisher-Kingfisher-Info.plist"; sourceTree = ""; }; - 932FF7024616D8D82633AB22546C7DC0 /* NSTextStorage+Rx.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "NSTextStorage+Rx.swift"; path = "RxCocoa/iOS/NSTextStorage+Rx.swift"; sourceTree = ""; }; - 9382A27EEA32D49627659BC72C56FCBF /* BehaviorRelay.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BehaviorRelay.swift; path = RxRelay/BehaviorRelay.swift; sourceTree = ""; }; - 93BD071E578B69235CCADBFBE9FBAA1B /* Kingfisher.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Kingfisher.release.xcconfig; sourceTree = ""; }; - 947FCB4637962EF20818268291E26E85 /* Zip.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Zip.swift; path = RxSwift/Observables/Zip.swift; sourceTree = ""; }; - 94B8075CA095FDBA9AE87F86A21B0C30 /* Resource.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Resource.swift; path = Sources/General/ImageSource/Resource.swift; sourceTree = ""; }; - 94C392D9062D4196B340E6F77067B6F2 /* Queue.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Queue.swift; path = Platform/DataStructures/Queue.swift; sourceTree = ""; }; - 94CA369E5A9E7E47E7DBCAAD6F63D296 /* Infallible+Create.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Infallible+Create.swift"; path = "RxSwift/Traits/Infallible/Infallible+Create.swift"; sourceTree = ""; }; - 9541ABA1A2C54DE7EED55370247C46AA /* ControlEvent.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ControlEvent.swift; path = RxCocoa/Traits/ControlEvent.swift; sourceTree = ""; }; - 95509362358E1B4F96EED27DC01B1C24 /* WithUnretained.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WithUnretained.swift; path = RxSwift/Observables/WithUnretained.swift; sourceTree = ""; }; - 95AF3FFD5DA43879FFD1FEF529C36275 /* Result.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Result.swift; path = Sources/Utility/Result.swift; sourceTree = ""; }; - 95D551A418E6BD3AAE54051EE0A0129C /* Signal+Subscription.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Signal+Subscription.swift"; path = "RxCocoa/Traits/Signal/Signal+Subscription.swift"; sourceTree = ""; }; - 95F799040C1A70E136CAE7A41476545C /* UITableView+Reusable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UITableView+Reusable.swift"; path = "Sources/View/UITableView+Reusable.swift"; sourceTree = ""; }; - 960152331447046185D9888B4AED166C /* Infallible+Zip+arity.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Infallible+Zip+arity.swift"; path = "RxSwift/Traits/Infallible/Infallible+Zip+arity.swift"; sourceTree = ""; }; - 96DB504A50F1E4FBCD16D5BC49EFCF0C /* UIPickerView+Rx.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UIPickerView+Rx.swift"; path = "RxCocoa/iOS/UIPickerView+Rx.swift"; sourceTree = ""; }; - 96EB1FBABEA3906F0EF58EE47E45A83B /* ConstraintLayoutGuide+Extensions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "ConstraintLayoutGuide+Extensions.swift"; path = "Sources/ConstraintLayoutGuide+Extensions.swift"; sourceTree = ""; }; - 972FCFDB49C8D15767A6488B65F2999B /* Deserializer.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Deserializer.swift; path = Source/Deserializer.swift; sourceTree = ""; }; - 97360AE19AF07AC87B391E1E0C708F18 /* LayoutConstraintItem.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = LayoutConstraintItem.swift; path = Sources/LayoutConstraintItem.swift; sourceTree = ""; }; + 8C97E5F221CEBF1DDB031DCD1D90DA87 /* DeviceKit-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "DeviceKit-Info.plist"; sourceTree = ""; }; + 8CAD2D04C99413F3E14E56ABA2A1DFE1 /* RecursiveScheduler.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RecursiveScheduler.swift; path = RxSwift/Schedulers/RecursiveScheduler.swift; sourceTree = ""; }; + 8CD1B580C9C0101E40FA9EBD90B8AFAD /* GraphicsContext.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = GraphicsContext.swift; path = Sources/Image/GraphicsContext.swift; sourceTree = ""; }; + 8D005EBBF6DAF0E261F25A203A5C5D53 /* FieldDescriptor.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FieldDescriptor.swift; path = Source/FieldDescriptor.swift; sourceTree = ""; }; + 8D595EA69AB680F872D031230F31D7A6 /* CBridge.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CBridge.swift; path = Source/CBridge.swift; sourceTree = ""; }; + 8DB159B8B7B0B87A7131D6BAD2807EAA /* DispatchQueue+Extensions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "DispatchQueue+Extensions.swift"; path = "Platform/DispatchQueue+Extensions.swift"; sourceTree = ""; }; + 8DB50915A05E4C0612B30E266B639416 /* Bag.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Bag.swift; path = Platform/DataStructures/Bag.swift; sourceTree = ""; }; + 8E1A6B38D65DA7312685F61ED10C9517 /* CombineLatest.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CombineLatest.swift; path = RxSwift/Observables/CombineLatest.swift; sourceTree = ""; }; + 8EB2629FA6E66B8FF126D13CB6CC5E13 /* AsMaybe.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AsMaybe.swift; path = RxSwift/Observables/AsMaybe.swift; sourceTree = ""; }; + 8F00C3B7BB283013813E07EE2B6A61BF /* KF.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = KF.swift; path = Sources/General/KF.swift; sourceTree = ""; }; + 90BEC58B5C6F7A75AB0627499CBA9255 /* NSControl+Rx.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "NSControl+Rx.swift"; path = "RxCocoa/macOS/NSControl+Rx.swift"; sourceTree = ""; }; + 90D162E9EAE135DB021185F702C46E93 /* Switch.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Switch.swift; path = RxSwift/Observables/Switch.swift; sourceTree = ""; }; + 911E7BDC50FA73E9DCBC1A9621ED9FA0 /* Disposable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Disposable.swift; path = RxSwift/Disposable.swift; sourceTree = ""; }; + 92C2FB4372B817EAF1113F1ACB67709D /* Kingfisher.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Kingfisher.release.xcconfig; sourceTree = ""; }; + 934A64AB1E023E9BF70C5E552133EACB /* Single.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Single.swift; path = RxSwift/Traits/PrimitiveSequence/Single.swift; sourceTree = ""; }; + 939A49D359540D422C2ADD34ECC46BC5 /* Materialize.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Materialize.swift; path = RxSwift/Observables/Materialize.swift; sourceTree = ""; }; + 94179F5DA3ACDE995E738C53BB155B3B /* UIBarButtonItem+Rx.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UIBarButtonItem+Rx.swift"; path = "RxCocoa/iOS/UIBarButtonItem+Rx.swift"; sourceTree = ""; }; + 9493AECC1368AB403C436652FD76779D /* UISlider+Rx.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UISlider+Rx.swift"; path = "RxCocoa/iOS/UISlider+Rx.swift"; sourceTree = ""; }; + 949EBF7C76A9DAF117E0718527067B58 /* Session.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Session.swift; path = Source/Session.swift; sourceTree = ""; }; + 94FB97545AED325C27CE747A88828D80 /* ObserveOn.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ObserveOn.swift; path = RxSwift/Observables/ObserveOn.swift; sourceTree = ""; }; + 955D722D26AFAB40DDD143D1AEC241FB /* TVMonogramView+Kingfisher.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "TVMonogramView+Kingfisher.swift"; path = "Sources/Extensions/TVMonogramView+Kingfisher.swift"; sourceTree = ""; }; + 971B12D8DAD57B9C0CD67715AF1A2709 /* SchedulerType+SharedSequence.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "SchedulerType+SharedSequence.swift"; path = "RxCocoa/Traits/SharedSequence/SchedulerType+SharedSequence.swift"; sourceTree = ""; }; + 972FD799761051BD9F30028901FFE2D9 /* Cancelable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Cancelable.swift; path = RxSwift/Cancelable.swift; sourceTree = ""; }; + 9766FEB80005F68D2896C349B273959A /* KFAnimatedImage.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = KFAnimatedImage.swift; path = Sources/SwiftUI/KFAnimatedImage.swift; sourceTree = ""; }; 979486118B3E90C08386079D57962701 /* SnapKit */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = SnapKit; path = SnapKit.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 97E745BB2E59AE041727B826B1E61BBB /* ControlEvent+Driver.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "ControlEvent+Driver.swift"; path = "RxCocoa/Traits/Driver/ControlEvent+Driver.swift"; sourceTree = ""; }; - 98358BCC95E6655702825CEE45C0C8FA /* Reactive.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Reactive.swift; path = RxSwift/Reactive.swift; sourceTree = ""; }; - 983A6B351A04E8A201ECBA3C765A4B43 /* MBProgressHUD-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "MBProgressHUD-Info.plist"; sourceTree = ""; }; - 9895F4D070396F9D33D6C602E53C0D77 /* ReplaySubject.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ReplaySubject.swift; path = RxSwift/Subjects/ReplaySubject.swift; sourceTree = ""; }; - 98AC09B0DB090CDE2D7CC82E1811FA69 /* RxRelay.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = RxRelay.release.xcconfig; sourceTree = ""; }; - 99155CE8434026F99E70418FAEF41EEA /* Debug.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Debug.swift; path = RxSwift/Observables/Debug.swift; sourceTree = ""; }; - 9A2C43D00EDD3B8E5B6D1AC17B1E48E1 /* ControlEvent+Signal.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "ControlEvent+Signal.swift"; path = "RxCocoa/Traits/Signal/ControlEvent+Signal.swift"; sourceTree = ""; }; - 9B09861BBDC46C3D1F767E4F57F0FCD6 /* RequestTypeWrapper.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RequestTypeWrapper.swift; path = Sources/Moya/RequestTypeWrapper.swift; sourceTree = ""; }; + 98221F3A69B48EF2E218B063D7EE6F62 /* HandyJSON.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = HandyJSON.debug.xcconfig; sourceTree = ""; }; + 987ABDCE9F23E9D217AD38F146E4CB10 /* Image.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Image.swift; path = Sources/Image/Image.swift; sourceTree = ""; }; + 98B8B8624E03D27789C636552D51CAD6 /* RxCocoa-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "RxCocoa-prefix.pch"; sourceTree = ""; }; + 9950CF3634C1F0413A7BCE982F5B51C3 /* ConstraintAttributes.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintAttributes.swift; path = Sources/ConstraintAttributes.swift; sourceTree = ""; }; + 9A443EFC304DBF7C56799E9938EEF73E /* SharedSequence+Concurrency.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "SharedSequence+Concurrency.swift"; path = "RxCocoa/Traits/SharedSequence/SharedSequence+Concurrency.swift"; sourceTree = ""; }; + 9A9A8F4777748089F7189B8B3DB36B3A /* ConstraintMakerPrioritizable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintMakerPrioritizable.swift; path = Sources/ConstraintMakerPrioritizable.swift; sourceTree = ""; }; 9B3AF9BB0F7EB5558031DD21AD2F86CC /* Pods-yinmeng-ios-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-yinmeng-ios-umbrella.h"; sourceTree = ""; }; - 9BAC09FA3F4AA34E2FD9045902942CE8 /* KFImage.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = KFImage.swift; path = Sources/SwiftUI/KFImage.swift; sourceTree = ""; }; + 9B56AA75BDFFAA97675054E142082543 /* Alamofire.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Alamofire.release.xcconfig; sourceTree = ""; }; + 9BA9940CE715B04D7270803925659D6C /* Bag+Rx.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Bag+Rx.swift"; path = "RxSwift/Extensions/Bag+Rx.swift"; sourceTree = ""; }; 9BC03DDC341E7F14C1F96A0C0F826FD3 /* Pods-yinmeng-ios */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = "Pods-yinmeng-ios"; path = Pods_yinmeng_ios.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 9BF394511EEFCC9854970C278A4EEFAB /* TakeWithPredicate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TakeWithPredicate.swift; path = RxSwift/Observables/TakeWithPredicate.swift; sourceTree = ""; }; - 9BFCC48A5DBF6A66F64E5ACE27854985 /* ResponseSerialization.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ResponseSerialization.swift; path = Source/ResponseSerialization.swift; sourceTree = ""; }; - 9C6E055D8D9B83521DB2D0B74D91A032 /* UITableView+Rx.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UITableView+Rx.swift"; path = "RxCocoa/iOS/UITableView+Rx.swift"; sourceTree = ""; }; - 9D3BCD1EA3553D12354FD5FA1FAE15CC /* EnumTransform.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = EnumTransform.swift; path = Source/EnumTransform.swift; sourceTree = ""; }; - 9D4D5FD14129673A9CDB7002DBABE33E /* Skip.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Skip.swift; path = RxSwift/Observables/Skip.swift; sourceTree = ""; }; - 9D5553E70A731CAE3CC0589428DF9FFA /* Error.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Error.swift; path = RxSwift/Observables/Error.swift; sourceTree = ""; }; - 9D5A16599059CA238869B241131BA02D /* AccessTokenPlugin.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AccessTokenPlugin.swift; path = Sources/Moya/Plugins/AccessTokenPlugin.swift; sourceTree = ""; }; - 9D73294AC7AF8EC9156DBA588DC9CE3D /* GIFAnimatedImage.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = GIFAnimatedImage.swift; path = Sources/Image/GIFAnimatedImage.swift; sourceTree = ""; }; + 9CE1DBCF62BAFD642139E7EB9B585091 /* TakeLast.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TakeLast.swift; path = RxSwift/Observables/TakeLast.swift; sourceTree = ""; }; 9D940727FF8FB9C785EB98E56350EF41 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; - 9DBF24BFBDEDD9C43BB60E43954D93C9 /* KFImageProtocol.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = KFImageProtocol.swift; path = Sources/SwiftUI/KFImageProtocol.swift; sourceTree = ""; }; - 9FC9415FA1C1593D995CF4413F86119E /* UIRefreshControl+Rx.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UIRefreshControl+Rx.swift"; path = "RxCocoa/iOS/UIRefreshControl+Rx.swift"; sourceTree = ""; }; - 9FE80A6E04D0DEC038F7B01D95633AE8 /* Atomic.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Atomic.swift; path = Sources/Moya/Atomic.swift; sourceTree = ""; }; - 9FE96E6FECBEF720CD9DD849F12E6D61 /* ToArray.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ToArray.swift; path = RxSwift/Observables/ToArray.swift; sourceTree = ""; }; - A0989B49F85763612695C610DDE3995F /* Serializer.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Serializer.swift; path = Source/Serializer.swift; sourceTree = ""; }; + 9DCE038776A3A00D1DFE3EA3C156665C /* ConstraintMakerFinalizable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintMakerFinalizable.swift; path = Sources/ConstraintMakerFinalizable.swift; sourceTree = ""; }; + 9E20997B42BFF425BE4C6C1490546436 /* KingfisherOptionsInfo.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = KingfisherOptionsInfo.swift; path = Sources/General/KingfisherOptionsInfo.swift; sourceTree = ""; }; + 9E649BC0C7E070199E068C5A187B882E /* SkipUntil.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SkipUntil.swift; path = RxSwift/Observables/SkipUntil.swift; sourceTree = ""; }; + 9EBB20B835EFB6273EA09069E6083457 /* ConstraintRelatableTarget.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintRelatableTarget.swift; path = Sources/ConstraintRelatableTarget.swift; sourceTree = ""; }; + 9ED9E851B887A10042176A16A8EAD44B /* URL+Moya.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "URL+Moya.swift"; path = "Sources/Moya/URL+Moya.swift"; sourceTree = ""; }; + 9F9971F0EEDB942DE07E15B2369A9534 /* ToArray.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ToArray.swift; path = RxSwift/Observables/ToArray.swift; sourceTree = ""; }; + A01F17CA57F264DA5CB797C94ECFBFD7 /* Take.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Take.swift; path = RxSwift/Observables/Take.swift; sourceTree = ""; }; + A061FC60A71A83F6B8FCFFDEDB1E28EF /* ShareReplayScope.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ShareReplayScope.swift; path = RxSwift/Observables/ShareReplayScope.swift; sourceTree = ""; }; A0ABA07B4D48354ED3F51C2D6AF5426B /* Reusable */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Reusable; path = Reusable.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - A0CB4A2B49E071E7012FEE7D28B8B467 /* Result+Alamofire.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Result+Alamofire.swift"; path = "Source/Result+Alamofire.swift"; sourceTree = ""; }; - A124A76CB3B2F5D7198358B2E123B564 /* PublishRelay+Signal.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "PublishRelay+Signal.swift"; path = "RxCocoa/Traits/Signal/PublishRelay+Signal.swift"; sourceTree = ""; }; - A208FBE87421B2ABC0142F6A07D0B553 /* _RXObjCRuntime.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = _RXObjCRuntime.m; path = RxCocoa/Runtime/_RXObjCRuntime.m; sourceTree = ""; }; - A296A412119288A86A5336E1C181E566 /* ImageDownloaderDelegate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ImageDownloaderDelegate.swift; path = Sources/Networking/ImageDownloaderDelegate.swift; sourceTree = ""; }; - A2D58F2F6C7CC4D368CE0D57F40CD27B /* Completable+AndThen.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Completable+AndThen.swift"; path = "RxSwift/Traits/PrimitiveSequence/Completable+AndThen.swift"; sourceTree = ""; }; - A2FB155675AB0F9CD4391CE05510152D /* ObservableConvertibleType.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ObservableConvertibleType.swift; path = RxSwift/ObservableConvertibleType.swift; sourceTree = ""; }; - A3340A012067886751EC877DE2A085FB /* KFAnimatedImage.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = KFAnimatedImage.swift; path = Sources/SwiftUI/KFAnimatedImage.swift; sourceTree = ""; }; - A35CA8960849EFAC715838CF15CFD05D /* ConstraintMaker.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintMaker.swift; path = Sources/ConstraintMaker.swift; sourceTree = ""; }; - A378747D62E5A19E664AE2A6B7A2ADA6 /* RxRelay.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = RxRelay.modulemap; sourceTree = ""; }; - A3821293C89F3E60BD6231B1E48974A1 /* Properties.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Properties.swift; path = Source/Properties.swift; sourceTree = ""; }; - A3CC4FE478601A48919D7092CBFF414A /* MoyaError.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = MoyaError.swift; path = Sources/Moya/MoyaError.swift; sourceTree = ""; }; - A3F6B5834C04BE54692EFEF14936348F /* AlamofireExtended.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AlamofireExtended.swift; path = Source/AlamofireExtended.swift; sourceTree = ""; }; - A4A885E79A8DF08471834BA9D0D31ED3 /* UIApplication+Rx.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UIApplication+Rx.swift"; path = "RxCocoa/iOS/UIApplication+Rx.swift"; sourceTree = ""; }; - A4DBD0A365804120DBE621B87A954E25 /* RxCocoaObjCRuntimeError+Extensions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "RxCocoaObjCRuntimeError+Extensions.swift"; path = "RxCocoa/Common/RxCocoaObjCRuntimeError+Extensions.swift"; sourceTree = ""; }; - A4E676ABA267DB49404DD1A3CCB33F17 /* WithLatestFrom.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WithLatestFrom.swift; path = RxSwift/Observables/WithLatestFrom.swift; sourceTree = ""; }; - A52935DC312F87728290A3ACA2167BCD /* ConstraintPriorityTarget.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintPriorityTarget.swift; path = Sources/ConstraintPriorityTarget.swift; sourceTree = ""; }; - A54253F4F6876CCFC845DA722D6C8CE8 /* Concat.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Concat.swift; path = RxSwift/Observables/Concat.swift; sourceTree = ""; }; - A5C55ED5BE5E14115CFDB19FC0330C46 /* UIScrollView+Rx.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UIScrollView+Rx.swift"; path = "RxCocoa/iOS/UIScrollView+Rx.swift"; sourceTree = ""; }; - A612F6D773EF0336F7EEA1B142F733F1 /* RxSwift-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "RxSwift-dummy.m"; sourceTree = ""; }; - A6785DD60F3F01E17A54F423E8397E23 /* LayoutConstraint.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = LayoutConstraint.swift; path = Sources/LayoutConstraint.swift; sourceTree = ""; }; - A69562BE3DD6D05DD80BAD1460F44C4C /* Platform.Darwin.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Platform.Darwin.swift; path = Platform/Platform.Darwin.swift; sourceTree = ""; }; - A69D2E9F349C5F6AC3EC7F70DB0CCFDD /* RxCocoaRuntime.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RxCocoaRuntime.h; path = RxCocoa/Runtime/include/RxCocoaRuntime.h; sourceTree = ""; }; - A6A3220A212C0BC4ABE0058268E8FAA6 /* Infallible.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Infallible.swift; path = RxSwift/Traits/Infallible/Infallible.swift; sourceTree = ""; }; - A79AD749EBBF7C8E00F924437B94E568 /* ReflectionHelper.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ReflectionHelper.swift; path = Source/ReflectionHelper.swift; sourceTree = ""; }; - A8A0F224AF15F0E14442ECFCC641E624 /* MBProgressHUD.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = MBProgressHUD.h; sourceTree = ""; }; - A8D08D8E537F6EC253D8EBE79FC6542A /* UIButton+Kingfisher.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UIButton+Kingfisher.swift"; path = "Sources/Extensions/UIButton+Kingfisher.swift"; sourceTree = ""; }; - A91E7B0C850AC3EB49D57C2F5AC657BA /* AddRef.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AddRef.swift; path = RxSwift/Observables/AddRef.swift; sourceTree = ""; }; - AA050A692C8C8C04436B0CB1E5317D3A /* SnapKit.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SnapKit.debug.xcconfig; sourceTree = ""; }; - AA4C20251B8F62BF6DC2548854609658 /* ConstraintMakerEditable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintMakerEditable.swift; path = Sources/ConstraintMakerEditable.swift; sourceTree = ""; }; - AAC31C95D09575257C31EB192272C7C2 /* _RXDelegateProxy.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = _RXDelegateProxy.h; path = RxCocoa/Runtime/include/_RXDelegateProxy.h; sourceTree = ""; }; - AAD6332E824227FDE29BB9A1CB1E6DA4 /* NSDecimalNumberTransform.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NSDecimalNumberTransform.swift; path = Source/NSDecimalNumberTransform.swift; sourceTree = ""; }; - AB1550C20B92B5D8CBB8484C4660BE90 /* Throttle.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Throttle.swift; path = RxSwift/Observables/Throttle.swift; sourceTree = ""; }; - AB1E15FD768D00EEFADE79898DA43AA2 /* Metadata.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Metadata.swift; path = Source/Metadata.swift; sourceTree = ""; }; - AB501C06BD3310ADAA40217FA862D851 /* Deferred.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Deferred.swift; path = RxSwift/Observables/Deferred.swift; sourceTree = ""; }; + A0BE6850E95EC6D542C436671F620A95 /* ImageView+Kingfisher.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "ImageView+Kingfisher.swift"; path = "Sources/Extensions/ImageView+Kingfisher.swift"; sourceTree = ""; }; + A0C2EF509F0F2A4929755C2673CED694 /* Deserializer.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Deserializer.swift; path = Source/Deserializer.swift; sourceTree = ""; }; + A1E89445717405534EAFD75E7A0F6227 /* Observable+Bind.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Observable+Bind.swift"; path = "RxRelay/Observable+Bind.swift"; sourceTree = ""; }; + A2F69FDF2A31BFF7B837CFF8A6177553 /* UITabBar+Rx.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UITabBar+Rx.swift"; path = "RxCocoa/iOS/UITabBar+Rx.swift"; sourceTree = ""; }; + A3010548432087DD11565546C13AF64B /* URLRequest+Encoding.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "URLRequest+Encoding.swift"; path = "Sources/Moya/URLRequest+Encoding.swift"; sourceTree = ""; }; + A36E0AFD9BD64A4CB48DFD2FCC595710 /* SubscribeOn.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SubscribeOn.swift; path = RxSwift/Observables/SubscribeOn.swift; sourceTree = ""; }; + A37057F4C975060277CA62A06928DE06 /* Reusable-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Reusable-dummy.m"; sourceTree = ""; }; + A4E0F907A63923C4154A172688E9888C /* NSObject+Rx */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = "NSObject+Rx"; path = NSObject_Rx.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + A550C82E21F465F618D4420E0F2846CA /* Request.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Request.swift; path = Source/Request.swift; sourceTree = ""; }; + A5E1C3E44A653237ABB964FE3F7940A5 /* UISearchBar+Rx.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UISearchBar+Rx.swift"; path = "RxCocoa/iOS/UISearchBar+Rx.swift"; sourceTree = ""; }; + A5E7D5360870AF5832E1F0DDB5F2CC4C /* RxCocoa-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "RxCocoa-umbrella.h"; sourceTree = ""; }; + A64B04E4E10E94CA896446DD8D0B52A7 /* SerialDisposable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SerialDisposable.swift; path = RxSwift/Disposables/SerialDisposable.swift; sourceTree = ""; }; + A6ABB1D9842860D9D2A8451EFB8A1630 /* SerialDispatchQueueScheduler.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SerialDispatchQueueScheduler.swift; path = RxSwift/Schedulers/SerialDispatchQueueScheduler.swift; sourceTree = ""; }; + A6D7D78B837EEDFF2CAD064BB122C72C /* UITabBarController+Rx.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UITabBarController+Rx.swift"; path = "RxCocoa/iOS/UITabBarController+Rx.swift"; sourceTree = ""; }; + A84A99413C446FE71FC039E3291A9FE1 /* MBProgressHUD-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "MBProgressHUD-prefix.pch"; sourceTree = ""; }; + A96F16021B0B89B248F45B690FEBCD25 /* Alamofire-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Alamofire-dummy.m"; sourceTree = ""; }; + A9A747B03EE699B366FD53FB4ACA433F /* ObservableConvertibleType+Signal.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "ObservableConvertibleType+Signal.swift"; path = "RxCocoa/Traits/Signal/ObservableConvertibleType+Signal.swift"; sourceTree = ""; }; + AAEF10F56C27CDD91F1B1C950F8DE09F /* CompactMap.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CompactMap.swift; path = RxSwift/Observables/CompactMap.swift; sourceTree = ""; }; + AAF909B0263E00FB2CE192D7B8EFA76A /* Typealiases.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Typealiases.swift; path = Sources/Typealiases.swift; sourceTree = ""; }; + AB82E4F472A144DE4566058691C877BE /* RxTabBarControllerDelegateProxy.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RxTabBarControllerDelegateProxy.swift; path = RxCocoa/iOS/Proxies/RxTabBarControllerDelegateProxy.swift; sourceTree = ""; }; AB870D83096A800ECB5E56E7E76FC933 /* Pods-yinmeng-ios-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-yinmeng-ios-acknowledgements.plist"; sourceTree = ""; }; - AB91063BFA0B85155CE39C26F80044C5 /* StoryboardSceneBased.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = StoryboardSceneBased.swift; path = Sources/Storyboard/StoryboardSceneBased.swift; sourceTree = ""; }; - ABF8C3D769C418801ABB2905159428B8 /* URLSessionConfiguration+Alamofire.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "URLSessionConfiguration+Alamofire.swift"; path = "Source/URLSessionConfiguration+Alamofire.swift"; sourceTree = ""; }; - AC6F737678C4E112EBB6476E99F02B44 /* NSButton+Rx.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "NSButton+Rx.swift"; path = "RxCocoa/macOS/NSButton+Rx.swift"; sourceTree = ""; }; - AD3FD403D8E30A8001D1F494B36EFA49 /* Multicast.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Multicast.swift; path = RxSwift/Observables/Multicast.swift; sourceTree = ""; }; - ADE256164152BE966B102C5F104FC06F /* ConstraintMultiplierTarget.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintMultiplierTarget.swift; path = Sources/ConstraintMultiplierTarget.swift; sourceTree = ""; }; - AEE012945F1ACD7D860DD82B208D5D32 /* HexColorTransform.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = HexColorTransform.swift; path = Source/HexColorTransform.swift; sourceTree = ""; }; - AEEBA06C08ECDC8AA5CCA71C013759FA /* Do.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Do.swift; path = RxSwift/Observables/Do.swift; sourceTree = ""; }; - AFF9C7F95915AA09C2220E7711A63B74 /* Dematerialize.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Dematerialize.swift; path = RxSwift/Observables/Dematerialize.swift; sourceTree = ""; }; - B00EB68258A05718515A533A9F917D11 /* ImmediateSchedulerType.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ImmediateSchedulerType.swift; path = RxSwift/ImmediateSchedulerType.swift; sourceTree = ""; }; - B089112AF8A786152A4CFA32042AA817 /* UIGestureRecognizer+Rx.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UIGestureRecognizer+Rx.swift"; path = "RxCocoa/iOS/UIGestureRecognizer+Rx.swift"; sourceTree = ""; }; - B0D85CAD20866F6833A22BDA6668ECB1 /* Cancelable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Cancelable.swift; path = RxSwift/Cancelable.swift; sourceTree = ""; }; - B2301559B216DC943D96B6C3EA6187EE /* Take.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Take.swift; path = RxSwift/Observables/Take.swift; sourceTree = ""; }; - B2679DB8FCA54DDF8E7DA3AC4A11488F /* CredentialsPlugin.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CredentialsPlugin.swift; path = Sources/Moya/Plugins/CredentialsPlugin.swift; sourceTree = ""; }; - B2958A0E6033229331C79C4CD02FB145 /* SessionDataTask.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SessionDataTask.swift; path = Sources/Networking/SessionDataTask.swift; sourceTree = ""; }; - B3492495BDAA3EE808EBA7E27B444532 /* Scan.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Scan.swift; path = RxSwift/Observables/Scan.swift; sourceTree = ""; }; - B35DC4FCD2EEF00AF73453F41872FF54 /* ImageView+Kingfisher.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "ImageView+Kingfisher.swift"; path = "Sources/Extensions/ImageView+Kingfisher.swift"; sourceTree = ""; }; - B43B6B9F0AC1A3B441577C4268863C3B /* KingfisherOptionsInfo.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = KingfisherOptionsInfo.swift; path = Sources/General/KingfisherOptionsInfo.swift; sourceTree = ""; }; - B4C8D32181C1DD0673EF71FC021C399D /* Just.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Just.swift; path = RxSwift/Observables/Just.swift; sourceTree = ""; }; - B4F8C603320BB82716CEBA31405BB25A /* RxPickerViewDelegateProxy.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RxPickerViewDelegateProxy.swift; path = RxCocoa/iOS/Proxies/RxPickerViewDelegateProxy.swift; sourceTree = ""; }; - B4FAC3BE27572FE3185D20211224395A /* Kingfisher-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Kingfisher-dummy.m"; sourceTree = ""; }; - B5077D9342A7330872B9A75748BED92D /* RxRelay.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = RxRelay.debug.xcconfig; sourceTree = ""; }; - B725764E388DB9D2EF9D7D8EA6A0B1D3 /* MBProgressHUD.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = MBProgressHUD.modulemap; sourceTree = ""; }; - B90F3E609D4D31B9CE6BA0937072B8DB /* ConstraintDSL.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintDSL.swift; path = Sources/ConstraintDSL.swift; sourceTree = ""; }; - BA8EAB6201729627D3C7299F26D4EE54 /* RxRelay-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "RxRelay-dummy.m"; sourceTree = ""; }; - BBE5FECC28B966616BA85A7C62F7FA40 /* AnonymousObserver.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AnonymousObserver.swift; path = RxSwift/Observers/AnonymousObserver.swift; sourceTree = ""; }; - BC12D927E7A7FFE4391A073866062EF0 /* ObserveOn.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ObserveOn.swift; path = RxSwift/Observables/ObserveOn.swift; sourceTree = ""; }; + AC486D0BBA80C60E2C371E8881B1EFB2 /* Utils.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Utils.swift; path = RxRelay/Utils.swift; sourceTree = ""; }; + AC7551F9169E9552FB27908C117FA8BD /* Rx.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Rx.swift; path = RxSwift/Rx.swift; sourceTree = ""; }; + AD9DA807844B74F586794E7B3055D8FB /* ScheduledItem.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ScheduledItem.swift; path = RxSwift/Schedulers/Internal/ScheduledItem.swift; sourceTree = ""; }; + ADC9656B5BF0759C69463F58CFE2FEDC /* NSObject+Rx.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "NSObject+Rx.swift"; sourceTree = ""; }; + AEAEA19B2035FF2AEA8C702327CA5B8B /* RxCocoa-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "RxCocoa-dummy.m"; sourceTree = ""; }; + AF1D5851A5405E9DD424261B945C653B /* RetryWhen.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RetryWhen.swift; path = RxSwift/Observables/RetryWhen.swift; sourceTree = ""; }; + AF43BC6419835F3B61D40D5841A3D2D0 /* HTTPHeaders.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = HTTPHeaders.swift; path = Source/HTTPHeaders.swift; sourceTree = ""; }; + B01C629014F7FA5102E051C5F40955BB /* MoyaProvider.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = MoyaProvider.swift; path = Sources/Moya/MoyaProvider.swift; sourceTree = ""; }; + B0A7B2A3A2A3395A70DB106E36C9A10E /* PublishRelay+Signal.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "PublishRelay+Signal.swift"; path = "RxCocoa/Traits/Signal/PublishRelay+Signal.swift"; sourceTree = ""; }; + B0CBB6DFE407F4D1F54246F9C2F11BA7 /* SharedSequence+Operators.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "SharedSequence+Operators.swift"; path = "RxCocoa/Traits/SharedSequence/SharedSequence+Operators.swift"; sourceTree = ""; }; + B0E844C37108CB5F7A6F21E4A7F38B68 /* AccessTokenPlugin.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AccessTokenPlugin.swift; path = Sources/Moya/Plugins/AccessTokenPlugin.swift; sourceTree = ""; }; + B0F0ACB33CAE3E77698A74CDCCF8550B /* AuthenticationInterceptor.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AuthenticationInterceptor.swift; path = Source/AuthenticationInterceptor.swift; sourceTree = ""; }; + B1B9D1AC9BF3E13436BA5E43600B9BA5 /* Kingfisher.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = Kingfisher.modulemap; sourceTree = ""; }; + B2CB77DFD163EB36AFAAB8207182D711 /* Serializer.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Serializer.swift; path = Source/Serializer.swift; sourceTree = ""; }; + B3043A3D0D99BB6BF9070B060B243CCB /* UITableView+Rx.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UITableView+Rx.swift"; path = "RxCocoa/iOS/UITableView+Rx.swift"; sourceTree = ""; }; + B34AEF61AF6C1954E444558440E52BAB /* RxPickerViewDataSourceProxy.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RxPickerViewDataSourceProxy.swift; path = RxCocoa/iOS/Proxies/RxPickerViewDataSourceProxy.swift; sourceTree = ""; }; + B540404EBE2098EDA68ED9FB0A7CFE83 /* Task.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Task.swift; path = Sources/Moya/Task.swift; sourceTree = ""; }; + B5F4CE5B1262BF073019ECBF64CC3909 /* ObservableType+PrimitiveSequence.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "ObservableType+PrimitiveSequence.swift"; path = "RxSwift/Traits/PrimitiveSequence/ObservableType+PrimitiveSequence.swift"; sourceTree = ""; }; + B6A6A8C6A3B9442B5AE6BBB761E13470 /* Delegate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Delegate.swift; path = Sources/Utility/Delegate.swift; sourceTree = ""; }; + B718BA5F8DDCBC7DB30702FCBBA67359 /* ConstraintDirectionalInsets.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintDirectionalInsets.swift; path = Sources/ConstraintDirectionalInsets.swift; sourceTree = ""; }; + B73370718B535EFB49A01C7D71335EA2 /* Alamofire-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Alamofire-prefix.pch"; sourceTree = ""; }; + B7ED0AD4DB118F9A11F8A022912A2C7B /* RetryPolicy.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RetryPolicy.swift; path = Source/RetryPolicy.swift; sourceTree = ""; }; + B894628C91744CB4F70E7BCE4457A4D6 /* Cancellable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Cancellable.swift; path = Sources/Moya/Cancellable.swift; sourceTree = ""; }; + B9AD1DEBB939967A5FB146BB73854EDC /* RxCocoaRuntime.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RxCocoaRuntime.h; path = RxCocoa/Runtime/include/RxCocoaRuntime.h; sourceTree = ""; }; + B9D5C32CADBAFCD3669A4CA9D7481B93 /* ConcurrentMainScheduler.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConcurrentMainScheduler.swift; path = RxSwift/Schedulers/ConcurrentMainScheduler.swift; sourceTree = ""; }; + BB9868FBC8C48073F157C6E6F913C589 /* MultipartFormData.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = MultipartFormData.swift; path = Sources/Moya/MultipartFormData.swift; sourceTree = ""; }; + BBF764008D8A3E76E30BEBB9F91CA836 /* Storage.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Storage.swift; path = Sources/Cache/Storage.swift; sourceTree = ""; }; BC432FD48A5932251F1CAFBC4BF74894 /* RxCocoa */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = RxCocoa; path = RxCocoa.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - BDC9E1192B2CBB200B902E65C687D558 /* NetworkLoggerPlugin.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NetworkLoggerPlugin.swift; path = Sources/Moya/Plugins/NetworkLoggerPlugin.swift; sourceTree = ""; }; - BE3D4635725BE29F6866D4B1964447A8 /* KFImageOptions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = KFImageOptions.swift; path = Sources/SwiftUI/KFImageOptions.swift; sourceTree = ""; }; - BE8D91CD998AB1AE8E676FD3F36C8F2D /* UITextField+Rx.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UITextField+Rx.swift"; path = "RxCocoa/iOS/UITextField+Rx.swift"; sourceTree = ""; }; - BF481B014D924D41F0FDE7089D3263B0 /* Range.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Range.swift; path = RxSwift/Observables/Range.swift; sourceTree = ""; }; - C019E68F4B2DE55C5FD2493950035664 /* ConstraintRelatableTarget.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintRelatableTarget.swift; path = Sources/ConstraintRelatableTarget.swift; sourceTree = ""; }; - C0F94D368DE622488019CFFA18E34262 /* RedirectHandler.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RedirectHandler.swift; path = Source/RedirectHandler.swift; sourceTree = ""; }; - C1706327EA78CAEFF1336CC5568AD36C /* NotificationCenter+Rx.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "NotificationCenter+Rx.swift"; path = "RxCocoa/Foundation/NotificationCenter+Rx.swift"; sourceTree = ""; }; - C22601C0B2814C78512F594A7731DE19 /* SharedSequence+Operators+arity.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "SharedSequence+Operators+arity.swift"; path = "RxCocoa/Traits/SharedSequence/SharedSequence+Operators+arity.swift"; sourceTree = ""; }; - C2265CF40B5E3E71870047392079AF16 /* Response.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Response.swift; path = Sources/Moya/Response.swift; sourceTree = ""; }; + BC481A53F6E3B805C15CDF42E9CD6584 /* SizeExtensions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SizeExtensions.swift; path = Sources/Utility/SizeExtensions.swift; sourceTree = ""; }; + BD9DA75620D3E2DB804A112BCAA0DBF5 /* ScheduledDisposable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ScheduledDisposable.swift; path = RxSwift/Disposables/ScheduledDisposable.swift; sourceTree = ""; }; + BD9FBE81ABDDD90E6597902D02BC59B1 /* NSTextField+Rx.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "NSTextField+Rx.swift"; path = "RxCocoa/macOS/NSTextField+Rx.swift"; sourceTree = ""; }; + BE5D7603CD5F22048BEB1AA008C9A3AA /* UICollectionView+Rx.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UICollectionView+Rx.swift"; path = "RxCocoa/iOS/UICollectionView+Rx.swift"; sourceTree = ""; }; + BE63071AED4B1A38AA47DA74EA879436 /* Reusable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Reusable.swift; path = Sources/View/Reusable.swift; sourceTree = ""; }; + BE6C54A617FAADE38236FE2D20E7903B /* ExtendCustomModelType.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ExtendCustomModelType.swift; path = Source/ExtendCustomModelType.swift; sourceTree = ""; }; + BEB49B7DBACBB2DE7681100F59C92E91 /* MoyaProvider+Defaults.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "MoyaProvider+Defaults.swift"; path = "Sources/Moya/MoyaProvider+Defaults.swift"; sourceTree = ""; }; + BEB85D3B26062C7D22EFC3C18796B7A9 /* HelpingMapper.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = HelpingMapper.swift; path = Source/HelpingMapper.swift; sourceTree = ""; }; + BED29F4C40D5447CD01F4447AD616AE1 /* DelaySubscription.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DelaySubscription.swift; path = RxSwift/Observables/DelaySubscription.swift; sourceTree = ""; }; + BF2D19394AB19510A2247A7E9082CEEB /* InvocableType.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = InvocableType.swift; path = RxSwift/Schedulers/Internal/InvocableType.swift; sourceTree = ""; }; + BF350D2B11D5C3D8C1ABA31691E2A505 /* RxNavigationControllerDelegateProxy.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RxNavigationControllerDelegateProxy.swift; path = RxCocoa/iOS/Proxies/RxNavigationControllerDelegateProxy.swift; sourceTree = ""; }; + BF57B73019D99E3A7652684FB3EDBEA7 /* Generate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Generate.swift; path = RxSwift/Observables/Generate.swift; sourceTree = ""; }; + BFAA3983046B2C0FD73171FFDAF6449C /* NSObject+Rx+RawRepresentable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "NSObject+Rx+RawRepresentable.swift"; path = "RxCocoa/Foundation/NSObject+Rx+RawRepresentable.swift"; sourceTree = ""; }; + BFD4A32376631D1ABEDEC8C2BD7874CC /* DiskStorage.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DiskStorage.swift; path = Sources/Cache/DiskStorage.swift; sourceTree = ""; }; + C07D50DBC240EE3A1E6AB263F208F036 /* HistoricalScheduler.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = HistoricalScheduler.swift; path = RxSwift/Schedulers/HistoricalScheduler.swift; sourceTree = ""; }; + C0FA798817E2B39E4D96485B677C60A8 /* UIStepper+Rx.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UIStepper+Rx.swift"; path = "RxCocoa/iOS/UIStepper+Rx.swift"; sourceTree = ""; }; + C14D52C61907DC105B61762C9E936A8E /* Kingfisher-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Kingfisher-dummy.m"; sourceTree = ""; }; + C165CAFBC5D2DF632181A1CE3BD9CE40 /* ScheduledItemType.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ScheduledItemType.swift; path = RxSwift/Schedulers/Internal/ScheduledItemType.swift; sourceTree = ""; }; + C2751DE6799286E9880D9D4EF188BB67 /* MBProgressHUD-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "MBProgressHUD-dummy.m"; sourceTree = ""; }; C298ABB78D9B05529B89D8322DB2E7B0 /* Kingfisher-Kingfisher */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; name = "Kingfisher-Kingfisher"; path = Kingfisher.bundle; sourceTree = BUILT_PRODUCTS_DIR; }; - C32614C0F923CC34E7C2BE3F692976AB /* SectionedViewDataSourceType.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SectionedViewDataSourceType.swift; path = RxCocoa/Common/SectionedViewDataSourceType.swift; sourceTree = ""; }; - C33F711F76B40DF65DA404994ED241BA /* PriorityQueue.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PriorityQueue.swift; path = Platform/DataStructures/PriorityQueue.swift; sourceTree = ""; }; - C3ABFDAE24AACD8E1EEE68793DE9803B /* MBProgressHUD-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "MBProgressHUD-umbrella.h"; sourceTree = ""; }; - C3D7C8B8CB5663108F150E48EB940FDF /* ExtendCustomBasicType.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ExtendCustomBasicType.swift; path = Source/ExtendCustomBasicType.swift; sourceTree = ""; }; + C2B360D337689EDAD19C0E26CC458AF5 /* _RXKVOObserver.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = _RXKVOObserver.m; path = RxCocoa/Runtime/_RXKVOObserver.m; sourceTree = ""; }; + C2BEF4114836F577C9696EBEDE2A19AF /* RxSwift-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "RxSwift-dummy.m"; sourceTree = ""; }; + C2DAB1D8451D1E92990CAE3C44061A5A /* _RXDelegateProxy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = _RXDelegateProxy.m; path = RxCocoa/Runtime/_RXDelegateProxy.m; sourceTree = ""; }; C3F44C782D64D7EB20B61CE3844EBFAD /* Kingfisher */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Kingfisher; path = Kingfisher.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - C4166DF44E4B7DCF69575608F281517C /* MBProgressHUD-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "MBProgressHUD-dummy.m"; sourceTree = ""; }; - C426FFC0480ABDFDDC457EE5FE191E5E /* DefaultIfEmpty.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DefaultIfEmpty.swift; path = RxSwift/Observables/DefaultIfEmpty.swift; sourceTree = ""; }; - C45FE00D96FB11A4BF6998884E30C879 /* Reduce.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Reduce.swift; path = RxSwift/Observables/Reduce.swift; sourceTree = ""; }; - C4E611CCA47B1AFF3C1E57F8C2965B0C /* URLRequest+Alamofire.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "URLRequest+Alamofire.swift"; path = "Source/URLRequest+Alamofire.swift"; sourceTree = ""; }; - C4E6211C49C3ADB158FA16A1751D5E34 /* InvocableType.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = InvocableType.swift; path = RxSwift/Schedulers/Internal/InvocableType.swift; sourceTree = ""; }; - C526294611337A8D4EF5C3D3D571C77B /* RxTarget.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RxTarget.swift; path = RxCocoa/Common/RxTarget.swift; sourceTree = ""; }; - C599239C5C9502586FE95F6C59479D15 /* AnyExtensions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AnyExtensions.swift; path = Source/AnyExtensions.swift; sourceTree = ""; }; - C689E3BB4983E6D479A62F1211506E90 /* BehaviorSubject.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BehaviorSubject.swift; path = RxSwift/Subjects/BehaviorSubject.swift; sourceTree = ""; }; - C6D030CA131DAC625D4D9FDC5FD000E3 /* Request.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Request.swift; path = Source/Request.swift; sourceTree = ""; }; - C71988E85D3858110A6CEEF81B0B0CBE /* Reusable.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Reusable.release.xcconfig; sourceTree = ""; }; + C48CD3953729D98D6A5337AF0126DE8B /* DeviceKit-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "DeviceKit-umbrella.h"; sourceTree = ""; }; + C49A85743EFF6429C1ABCECA6BE66EAB /* AnyExtensions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AnyExtensions.swift; path = Source/AnyExtensions.swift; sourceTree = ""; }; + C4A7A8E5BA93425EA472EF38CB4DC88B /* Maybe.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Maybe.swift; path = RxSwift/Traits/PrimitiveSequence/Maybe.swift; sourceTree = ""; }; + C51D1220E0DE4651C911E69AE36EBD61 /* Debug.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Debug.swift; path = RxSwift/Observables/Debug.swift; sourceTree = ""; }; + C542F39E93EE6DDBE3B1FBC107902524 /* TransformOf.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TransformOf.swift; path = Source/TransformOf.swift; sourceTree = ""; }; + C54A185423B2B26F7B189D29730CAE61 /* Infallible.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Infallible.swift; path = RxSwift/Traits/Infallible/Infallible.swift; sourceTree = ""; }; + C666280F2BC5552707A2F0DDCF8CF403 /* Plugin.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Plugin.swift; path = Sources/Moya/Plugin.swift; sourceTree = ""; }; + C6AB98914F4BC90B03288E5B05AB76CB /* EnumTransform.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = EnumTransform.swift; path = Source/EnumTransform.swift; sourceTree = ""; }; + C6CD72DF9F93DEE8354B6153B8C32F8C /* Bag.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Bag.swift; path = Platform/DataStructures/Bag.swift; sourceTree = ""; }; + C6FFF237D80AA47205BFEF310DE226B0 /* DataTransform.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DataTransform.swift; path = Source/DataTransform.swift; sourceTree = ""; }; + C7C72013A14D25D1022975FE6A4F837A /* DispatchQueue+Extensions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "DispatchQueue+Extensions.swift"; path = "Platform/DispatchQueue+Extensions.swift"; sourceTree = ""; }; C7CE4D7E07321EBA8053DBEF4867408A /* Pods-yinmeng-ios.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-yinmeng-ios.debug.xcconfig"; sourceTree = ""; }; - C807A9D8CD9D55D1BD98345635AE1623 /* ValidationType.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ValidationType.swift; path = Sources/Moya/ValidationType.swift; sourceTree = ""; }; - C8B337D475349119A9023DB9A04FAED7 /* ISO8601DateTransform.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ISO8601DateTransform.swift; path = Source/ISO8601DateTransform.swift; sourceTree = ""; }; - C8B66F25D7F18C08892764CAD99E025D /* KFOptionsSetter.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = KFOptionsSetter.swift; path = Sources/General/KFOptionsSetter.swift; sourceTree = ""; }; - C909B32972D2D22DB9AE521E98C47040 /* OperationQueueScheduler.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = OperationQueueScheduler.swift; path = RxSwift/Schedulers/OperationQueueScheduler.swift; sourceTree = ""; }; - C963DD2091D258FD11B459ACF20AF09A /* CPListItem+Kingfisher.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "CPListItem+Kingfisher.swift"; path = "Sources/Extensions/CPListItem+Kingfisher.swift"; sourceTree = ""; }; - CA138CAED2178679471A0C1994A53ADD /* UIStepper+Rx.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UIStepper+Rx.swift"; path = "RxCocoa/iOS/UIStepper+Rx.swift"; sourceTree = ""; }; - CA8EB7DF526B4C2F17EB0BBE0F8760CC /* ParameterEncoder.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ParameterEncoder.swift; path = Source/ParameterEncoder.swift; sourceTree = ""; }; - CBB2733EB8602C8BA1DE249204349BBB /* ConstraintDirectionalInsetTarget.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintDirectionalInsetTarget.swift; path = Sources/ConstraintDirectionalInsetTarget.swift; sourceTree = ""; }; - CBFCE48108EA5B7391D309F207FA3E5A /* Reusable-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Reusable-umbrella.h"; sourceTree = ""; }; - CC92DDE2881965C74B23F6A422B435B3 /* Zip+Collection.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Zip+Collection.swift"; path = "RxSwift/Observables/Zip+Collection.swift"; sourceTree = ""; }; - CCB3459EBA17D69CB52198314FF7186C /* Response.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Response.swift; path = Source/Response.swift; sourceTree = ""; }; - CCF0B72B35A6BCD96CBC1A3F6A6ED7B4 /* ServerTrustEvaluation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ServerTrustEvaluation.swift; path = Source/ServerTrustEvaluation.swift; sourceTree = ""; }; - CD4F149DBFD18F4A20A4320599D8CC19 /* KingfisherError.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = KingfisherError.swift; path = Sources/General/KingfisherError.swift; sourceTree = ""; }; + C839D69F06DDF8DE6308B2D831E7D343 /* BehaviorSubject.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BehaviorSubject.swift; path = RxSwift/Subjects/BehaviorSubject.swift; sourceTree = ""; }; + C83D8C5EA8967529E1C69178F9281437 /* BuiltInBridgeType.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BuiltInBridgeType.swift; path = Source/BuiltInBridgeType.swift; sourceTree = ""; }; + C9EB1448B3BC513A50D0393719C91DB9 /* Range.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Range.swift; path = RxSwift/Observables/Range.swift; sourceTree = ""; }; + CA7D16256C92CFB8BF9E9407887AC51D /* RxCollectionViewDelegateProxy.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RxCollectionViewDelegateProxy.swift; path = RxCocoa/iOS/Proxies/RxCollectionViewDelegateProxy.swift; sourceTree = ""; }; + CADF0AF9690433E38BDFDD8EFD54895F /* Transformable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Transformable.swift; path = Source/Transformable.swift; sourceTree = ""; }; + CAF91C57750D831CDD907982A98F83C6 /* URLRequest+Alamofire.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "URLRequest+Alamofire.swift"; path = "Source/URLRequest+Alamofire.swift"; sourceTree = ""; }; + CB337D23E1C7AD19CB57B084B1AAE780 /* ItemEvents.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ItemEvents.swift; path = RxCocoa/iOS/Events/ItemEvents.swift; sourceTree = ""; }; + CB4E1A851C80303503357F057E6DC3CF /* RxScrollViewDelegateProxy.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RxScrollViewDelegateProxy.swift; path = RxCocoa/iOS/Proxies/RxScrollViewDelegateProxy.swift; sourceTree = ""; }; + CBF3537D66ECCB1FE5D0D12E2A357AE6 /* ReplayRelay.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ReplayRelay.swift; path = RxRelay/ReplayRelay.swift; sourceTree = ""; }; + CC41093A359C57FEC27213A32557E60F /* ConstraintInsets.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintInsets.swift; path = Sources/ConstraintInsets.swift; sourceTree = ""; }; + CC548D1159236D578360D83A866AB7F8 /* KFImageProtocol.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = KFImageProtocol.swift; path = Sources/SwiftUI/KFImageProtocol.swift; sourceTree = ""; }; + CC8B88972BBBEFD7514D12BD5A60921D /* ObservableConvertibleType+SharedSequence.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "ObservableConvertibleType+SharedSequence.swift"; path = "RxCocoa/Traits/SharedSequence/ObservableConvertibleType+SharedSequence.swift"; sourceTree = ""; }; + CCA9765CD1D8A3679F44C631D5EE14F9 /* Infallible+Create.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Infallible+Create.swift"; path = "RxSwift/Traits/Infallible/Infallible+Create.swift"; sourceTree = ""; }; + CCF002BE9BFC08B04EDB88C1BED7F8A5 /* Alamofire.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Alamofire.debug.xcconfig; sourceTree = ""; }; CD54121DDA84872534168702B5F92950 /* HandyJSON.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = HandyJSON.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - CD8E57ECFD6B142763B5C63323162920 /* ObservableType+Extensions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "ObservableType+Extensions.swift"; path = "RxSwift/ObservableType+Extensions.swift"; sourceTree = ""; }; - CE1FB66738FC326A45E13D4A2F9039DC /* Reusable.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = Reusable.modulemap; sourceTree = ""; }; - CF107C4AC5643080B30C4DC1AD3CA088 /* Binder.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Binder.swift; path = RxSwift/Binder.swift; sourceTree = ""; }; - CF2909F5D4495CA4ADC352EEF99AA4EC /* Signal.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Signal.swift; path = RxCocoa/Traits/Signal/Signal.swift; sourceTree = ""; }; - CF309802F2CAB75940F49AD77E8DFA05 /* _RXDelegateProxy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = _RXDelegateProxy.m; path = RxCocoa/Runtime/_RXDelegateProxy.m; sourceTree = ""; }; - CFD438AE9A13700F3A27158491EDF9CD /* DistinctUntilChanged.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DistinctUntilChanged.swift; path = RxSwift/Observables/DistinctUntilChanged.swift; sourceTree = ""; }; - D05C01883F0A989F4169EA75A319E4CE /* NSObject+Rx+KVORepresentable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "NSObject+Rx+KVORepresentable.swift"; path = "RxCocoa/Foundation/NSObject+Rx+KVORepresentable.swift"; sourceTree = ""; }; + CD81B21F95DE13DB23F7B642F80EAF3D /* WithLatestFrom.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WithLatestFrom.swift; path = RxSwift/Observables/WithLatestFrom.swift; sourceTree = ""; }; + CDA8C7742762C3B7BB46EB42B0E8F088 /* MoyaProvider+Internal.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "MoyaProvider+Internal.swift"; path = "Sources/Moya/MoyaProvider+Internal.swift"; sourceTree = ""; }; + CDBAB1F0679E368DFDD19F9545B77090 /* Moya.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = Moya.modulemap; sourceTree = ""; }; + CDCB27A05975B5FE898AE6FC219EB03D /* ConstraintLayoutGuideDSL.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintLayoutGuideDSL.swift; path = Sources/ConstraintLayoutGuideDSL.swift; sourceTree = ""; }; + CEE56EB1F6863DFA466860E91716ACC2 /* RxCocoaObjCRuntimeError+Extensions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "RxCocoaObjCRuntimeError+Extensions.swift"; path = "RxCocoa/Common/RxCocoaObjCRuntimeError+Extensions.swift"; sourceTree = ""; }; + CFB888EC77A3E7F852453F600894C3A8 /* SnapKit-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SnapKit-prefix.pch"; sourceTree = ""; }; + D0BD5D30ED2CC599E8F6BAA21229E823 /* ConstraintLayoutSupportDSL.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintLayoutSupportDSL.swift; path = Sources/ConstraintLayoutSupportDSL.swift; sourceTree = ""; }; + D12566209108F6AAB337B62C9A2D0B17 /* Driver.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Driver.swift; path = RxCocoa/Traits/Driver/Driver.swift; sourceTree = ""; }; D1336AFDB9F472B9E17B6861880F66FA /* Accelerate.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Accelerate.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS14.0.sdk/System/Library/Frameworks/Accelerate.framework; sourceTree = DEVELOPER_DIR; }; - D205770569FAE2C81B52F154322D2563 /* Reusable-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Reusable-dummy.m"; sourceTree = ""; }; - D247DB9583EC8A9EA2396FEEE9A0BEBC /* Window.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Window.swift; path = RxSwift/Observables/Window.swift; sourceTree = ""; }; - D37B24A95EEF2249678FBE363925D312 /* UICollectionView+Rx.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UICollectionView+Rx.swift"; path = "RxCocoa/iOS/UICollectionView+Rx.swift"; sourceTree = ""; }; - D389385F88DD239B71595D6B278BC5EA /* Sink.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Sink.swift; path = RxSwift/Observables/Sink.swift; sourceTree = ""; }; - D38B8AB8BAF2B28F16F577931098B969 /* ConcurrentDispatchQueueScheduler.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConcurrentDispatchQueueScheduler.swift; path = RxSwift/Schedulers/ConcurrentDispatchQueueScheduler.swift; sourceTree = ""; }; - D3D2E46D8BE94722DCF2428829BFE1C4 /* Moya+Alamofire.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Moya+Alamofire.swift"; path = "Sources/Moya/Moya+Alamofire.swift"; sourceTree = ""; }; - D4F121F8F3564995DB1C8EEF45128BEC /* RxCocoa.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = RxCocoa.debug.xcconfig; sourceTree = ""; }; - D5405426B1D820B97554FFA85005A6A7 /* DisposeBag.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DisposeBag.swift; path = RxSwift/Disposables/DisposeBag.swift; sourceTree = ""; }; - D5773666DA885BF217F31523BE08FD6B /* ConstraintViewDSL.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintViewDSL.swift; path = Sources/ConstraintViewDSL.swift; sourceTree = ""; }; - D6575A7C92CAA45BC7CAAB15672122A1 /* SkipUntil.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SkipUntil.swift; path = RxSwift/Observables/SkipUntil.swift; sourceTree = ""; }; - D6D6C3517EAD559475BB89B3A07F826D /* ConstraintConfig.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintConfig.swift; path = Sources/ConstraintConfig.swift; sourceTree = ""; }; - D741ADECEE7BA668846D15DEE1332031 /* CustomDateFormatTransform.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CustomDateFormatTransform.swift; path = Source/CustomDateFormatTransform.swift; sourceTree = ""; }; - D88811C8F2904BE3EDD7B26CE505C673 /* RecursiveLock.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RecursiveLock.swift; path = Platform/RecursiveLock.swift; sourceTree = ""; }; - D9244D2668F560CE0CB0F0065186F8EB /* Observable+Bind.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Observable+Bind.swift"; path = "RxRelay/Observable+Bind.swift"; sourceTree = ""; }; - D9278F439B7C4235C53C200B17F84E46 /* ConstraintLayoutSupportDSL.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintLayoutSupportDSL.swift; path = Sources/ConstraintLayoutSupportDSL.swift; sourceTree = ""; }; - D93E22C14E699039A509F617FA39695B /* NSButton+Kingfisher.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "NSButton+Kingfisher.swift"; path = "Sources/Extensions/NSButton+Kingfisher.swift"; sourceTree = ""; }; - DA05AFE5E1E48A41436B4A70147E660C /* CombineLatest+arity.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "CombineLatest+arity.swift"; path = "RxSwift/Observables/CombineLatest+arity.swift"; sourceTree = ""; }; - DA54EB4CF78AC3516E9E65506DE207FB /* VirtualTimeScheduler.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = VirtualTimeScheduler.swift; path = RxSwift/Schedulers/VirtualTimeScheduler.swift; sourceTree = ""; }; - DB2C7BCF3EA896AC2BAD9CAD275BB460 /* AnimatedImageView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AnimatedImageView.swift; path = Sources/Views/AnimatedImageView.swift; sourceTree = ""; }; - DB9D0DFFB1AA39DDF8B49325F07BEBD1 /* AuthenticationInterceptor.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AuthenticationInterceptor.swift; path = Source/AuthenticationInterceptor.swift; sourceTree = ""; }; - DCD283B934B4346CF12CEB62458A829D /* ImagePrefetcher.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ImagePrefetcher.swift; path = Sources/Networking/ImagePrefetcher.swift; sourceTree = ""; }; - DCE9ED04C9F6410492A87A2B8BC43451 /* Zip+arity.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Zip+arity.swift"; path = "RxSwift/Observables/Zip+arity.swift"; sourceTree = ""; }; - DCEC2DBF8E26969A4BB2B54F2B1EA8A7 /* NSControl+Rx.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "NSControl+Rx.swift"; path = "RxCocoa/macOS/NSControl+Rx.swift"; sourceTree = ""; }; - DDB4D4AEF2A47181ABD692BE53C6DF1A /* Bag.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Bag.swift; path = Platform/DataStructures/Bag.swift; sourceTree = ""; }; - DEA1B032D5AF107EC317CDAE847D3CE5 /* RxMutableBox.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RxMutableBox.swift; path = RxSwift/RxMutableBox.swift; sourceTree = ""; }; - DEA6B630488DF0930202C22D36F757CB /* DateFormatterTransform.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DateFormatterTransform.swift; path = Source/DateFormatterTransform.swift; sourceTree = ""; }; - DEBFD271D48A85EF07F3B6731D534416 /* InfiniteSequence.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = InfiniteSequence.swift; path = Platform/DataStructures/InfiniteSequence.swift; sourceTree = ""; }; - DF2E2C729461BB0F5D730E63F64A5F23 /* RxPickerViewDataSourceType.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RxPickerViewDataSourceType.swift; path = RxCocoa/iOS/Protocols/RxPickerViewDataSourceType.swift; sourceTree = ""; }; - DF65591BAA77BD5923D4083691EB5F0F /* URLConvertible+URLRequestConvertible.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "URLConvertible+URLRequestConvertible.swift"; path = "Source/URLConvertible+URLRequestConvertible.swift"; sourceTree = ""; }; - DFBC5B2993997B725D364216FE7C3DF6 /* ImageModifier.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ImageModifier.swift; path = Sources/Networking/ImageModifier.swift; sourceTree = ""; }; - DFCC95E9F5590674CB559C0596A2DC4A /* ItemEvents.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ItemEvents.swift; path = RxCocoa/iOS/Events/ItemEvents.swift; sourceTree = ""; }; - DFDBA24A5039ED5E5456D2E8FC495205 /* Completable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Completable.swift; path = RxSwift/Traits/PrimitiveSequence/Completable.swift; sourceTree = ""; }; - E0231B13AFD942D7715BD4A70ABFE808 /* ConstraintMakerPrioritizable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintMakerPrioritizable.swift; path = Sources/ConstraintMakerPrioritizable.swift; sourceTree = ""; }; - E02AEC6F043CC7E4CACFA5D1EFD6EB27 /* Driver.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Driver.swift; path = RxCocoa/Traits/Driver/Driver.swift; sourceTree = ""; }; - E08F77D6D513C32F418E1FC2AE7AD85A /* AsMaybe.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AsMaybe.swift; path = RxSwift/Observables/AsMaybe.swift; sourceTree = ""; }; - E1876E647F0F13D8AD9A41FED3B7C6C2 /* Producer.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Producer.swift; path = RxSwift/Observables/Producer.swift; sourceTree = ""; }; - E20F55B135E3C24173DF453318747D59 /* InfiniteSequence.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = InfiniteSequence.swift; path = Platform/DataStructures/InfiniteSequence.swift; sourceTree = ""; }; - E2CC1F55AB1BB43F87FEC4D4CD10D1FE /* CBridge.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CBridge.swift; path = Source/CBridge.swift; sourceTree = ""; }; + D24A5830A6FE8C50CEFC970D54052EB4 /* PriorityQueue.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PriorityQueue.swift; path = Platform/DataStructures/PriorityQueue.swift; sourceTree = ""; }; + D2653695D1C807B2D2551C8FB25010C9 /* RxPickerViewDataSourceType.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RxPickerViewDataSourceType.swift; path = RxCocoa/iOS/Protocols/RxPickerViewDataSourceType.swift; sourceTree = ""; }; + D2D84B31C49B39414DBBE8DE045E843D /* RxPickerViewAdapter.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RxPickerViewAdapter.swift; path = RxCocoa/iOS/DataSources/RxPickerViewAdapter.swift; sourceTree = ""; }; + D2EC26F92526046B9B561F9EA9C8D99E /* Combine.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Combine.swift; path = Source/Combine.swift; sourceTree = ""; }; + D4A4E4F19AF294A1D4F2D4BC4F769B32 /* UIRefreshControl+Rx.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UIRefreshControl+Rx.swift"; path = "RxCocoa/iOS/UIRefreshControl+Rx.swift"; sourceTree = ""; }; + D4CADEC0640302766DA4113ABC5C3A68 /* DeviceKit.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = DeviceKit.debug.xcconfig; sourceTree = ""; }; + D4F15099DB21F14B9B47C347C2471752 /* CompositeDisposable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CompositeDisposable.swift; path = RxSwift/Disposables/CompositeDisposable.swift; sourceTree = ""; }; + D50C4D2C19EF6C50713D221D0F66F8D6 /* UIButton+Kingfisher.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UIButton+Kingfisher.swift"; path = "Sources/Extensions/UIButton+Kingfisher.swift"; sourceTree = ""; }; + D690DCA319DFA6651B299C6B5817F9B8 /* UICollectionView+Reusable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UICollectionView+Reusable.swift"; path = "Sources/View/UICollectionView+Reusable.swift"; sourceTree = ""; }; + D6AFD2107F53E376519440BC6D6851A2 /* RequestCompression.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RequestCompression.swift; path = Source/RequestCompression.swift; sourceTree = ""; }; + D74E043A1ED1197420865CCA40E92FD8 /* LayoutConstraint.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = LayoutConstraint.swift; path = Sources/LayoutConstraint.swift; sourceTree = ""; }; + D86CFE6F415E2AB61916500BF1777A86 /* ImageDataProcessor.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ImageDataProcessor.swift; path = Sources/Networking/ImageDataProcessor.swift; sourceTree = ""; }; + D9117E1056E8FA02344165D342F67E0E /* RxCocoa.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = RxCocoa.modulemap; sourceTree = ""; }; + D96CC2D966F98D09F28A5265DB12C96F /* ConstraintMakerRelatable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintMakerRelatable.swift; path = Sources/ConstraintMakerRelatable.swift; sourceTree = ""; }; + D9BB0947A7AE31EA2B8C9D699BCE442E /* ObservableType+Extensions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "ObservableType+Extensions.swift"; path = "RxSwift/ObservableType+Extensions.swift"; sourceTree = ""; }; + DAA61E9AC252B34578D82C434C038FA9 /* Event.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Event.swift; path = RxSwift/Event.swift; sourceTree = ""; }; + DB0B1372A476B63A768D0A5DD78D54CD /* ControlProperty+Driver.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "ControlProperty+Driver.swift"; path = "RxCocoa/Traits/Driver/ControlProperty+Driver.swift"; sourceTree = ""; }; + DC0BF37A545A2FFC2F023A0057EE555B /* Merge.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Merge.swift; path = RxSwift/Observables/Merge.swift; sourceTree = ""; }; + DC1B01CE2D3C9033BD4A3FCFBCE68E9A /* Infallible+Bind.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Infallible+Bind.swift"; path = "RxCocoa/Common/Infallible+Bind.swift"; sourceTree = ""; }; + DC5ACFA51037D91CC52CC7F6938DBFF2 /* RetryStrategy.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RetryStrategy.swift; path = Sources/Networking/RetryStrategy.swift; sourceTree = ""; }; + DC5F4C64EC4980537B042AC46C13A0CA /* SingleAsync.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SingleAsync.swift; path = RxSwift/Observables/SingleAsync.swift; sourceTree = ""; }; + DCF6A3A628FF5CB4FBFDA361BC29932A /* NibLoadable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NibLoadable.swift; path = Sources/View/NibLoadable.swift; sourceTree = ""; }; + DD212364A39920E5CF66E4E7EACD6905 /* Repeat.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Repeat.swift; path = RxSwift/Observables/Repeat.swift; sourceTree = ""; }; + DD29391A869E5B2061C3F8BEBCD3ABF7 /* RxWKNavigationDelegateProxy.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RxWKNavigationDelegateProxy.swift; path = RxCocoa/iOS/Proxies/RxWKNavigationDelegateProxy.swift; sourceTree = ""; }; + DE191B418684DC7372DB53B2BC08F17D /* CombineLatest+arity.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "CombineLatest+arity.swift"; path = "RxSwift/Observables/CombineLatest+arity.swift"; sourceTree = ""; }; + DE2376CD620ED6EF2597200BE22E70EF /* Moya.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Moya.release.xcconfig; sourceTree = ""; }; + DE5ACE88C667E3B293957A0360342E21 /* ISO8601DateTransform.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ISO8601DateTransform.swift; path = Source/ISO8601DateTransform.swift; sourceTree = ""; }; + DEC311ABC4CB7755878BF3395D0D038F /* ReplaySubject.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ReplaySubject.swift; path = RxSwift/Subjects/ReplaySubject.swift; sourceTree = ""; }; + DEDF97D3E33EECB364C3BBE1B19AFD9A /* Lock.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Lock.swift; path = RxSwift/Concurrency/Lock.swift; sourceTree = ""; }; + DEFFE158B59848DCB356E5A47368D145 /* Image.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Image.swift; path = Sources/Moya/Image.swift; sourceTree = ""; }; + DF261538555506668246F4EC68BFA022 /* DefaultIfEmpty.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DefaultIfEmpty.swift; path = RxSwift/Observables/DefaultIfEmpty.swift; sourceTree = ""; }; + DF4663BDF3FF1BBB328D1386EEA720FB /* Infallible+CombineLatest+arity.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Infallible+CombineLatest+arity.swift"; path = "RxSwift/Traits/Infallible/Infallible+CombineLatest+arity.swift"; sourceTree = ""; }; + DF7C9423979FB22EBF915FE0945A632C /* ObservableConvertibleType.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ObservableConvertibleType.swift; path = RxSwift/ObservableConvertibleType.swift; sourceTree = ""; }; + E02ECC057CFBF25C9FEF6D5B6B4A93DF /* CredentialsPlugin.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CredentialsPlugin.swift; path = Sources/Moya/Plugins/CredentialsPlugin.swift; sourceTree = ""; }; + E03CA372E000764E088E683B7E007A35 /* RxRelay-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "RxRelay-dummy.m"; sourceTree = ""; }; + E0BD07972C102D29E80B1C92CB461DAF /* UIActivityIndicatorView+Rx.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UIActivityIndicatorView+Rx.swift"; path = "RxCocoa/iOS/UIActivityIndicatorView+Rx.swift"; sourceTree = ""; }; + E0C2DFAEFE293A47D68CF49BF41D9A0B /* UIScrollView+Rx.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UIScrollView+Rx.swift"; path = "RxCocoa/iOS/UIScrollView+Rx.swift"; sourceTree = ""; }; + E10C4362F4CFE97054F4E028403D85A5 /* NSObject+Rx+KVORepresentable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "NSObject+Rx+KVORepresentable.swift"; path = "RxCocoa/Foundation/NSObject+Rx+KVORepresentable.swift"; sourceTree = ""; }; + E11CA30C898D891460BDDC338CDB3BC1 /* NSTextStorage+Rx.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "NSTextStorage+Rx.swift"; path = "RxCocoa/iOS/NSTextStorage+Rx.swift"; sourceTree = ""; }; + E1A0C144985B2BE2F2DCD7D49970DE87 /* ControlEvent+Signal.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "ControlEvent+Signal.swift"; path = "RxCocoa/Traits/Signal/ControlEvent+Signal.swift"; sourceTree = ""; }; + E1AB5743647FBCA4208C1A659B52012D /* KingfisherManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = KingfisherManager.swift; path = Sources/General/KingfisherManager.swift; sourceTree = ""; }; + E264463631A0AA7ADDAE5D3D0F697763 /* MemoryStorage.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = MemoryStorage.swift; path = Sources/Cache/MemoryStorage.swift; sourceTree = ""; }; + E2A5E0F3259773A7801D450E0319DA78 /* HandyJSON-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "HandyJSON-prefix.pch"; sourceTree = ""; }; + E346F2FEC081E7D04E06DDDFE37D9C31 /* RxCollectionViewDataSourceType.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RxCollectionViewDataSourceType.swift; path = RxCocoa/iOS/Protocols/RxCollectionViewDataSourceType.swift; sourceTree = ""; }; + E36E9932F71A7D0C22933E4CAD959B09 /* Dematerialize.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Dematerialize.swift; path = RxSwift/Observables/Dematerialize.swift; sourceTree = ""; }; + E37A1E2D1F9EC555E135331F35DF60C8 /* Alamofire.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = Alamofire.modulemap; sourceTree = ""; }; E3A080F230A46B8C0F73FF8AA678A95A /* Pods-yinmeng-ios-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-yinmeng-ios-Info.plist"; sourceTree = ""; }; - E3F3D140901AD39649AC074216CAC836 /* RxPickerViewDataSourceProxy.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RxPickerViewDataSourceProxy.swift; path = RxCocoa/iOS/Proxies/RxPickerViewDataSourceProxy.swift; sourceTree = ""; }; - E4AD07036A83707DD229318C03B6CE81 /* Infallible+Concurrency.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Infallible+Concurrency.swift"; path = "RxSwift/Traits/Infallible/Infallible+Concurrency.swift"; sourceTree = ""; }; - E4E95E8B077E462C80766715ADCA4CF0 /* Map.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Map.swift; path = RxSwift/Observables/Map.swift; sourceTree = ""; }; - E520F3EC8458D3F1E6174E0EC460E79B /* SharedSequence+Operators.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "SharedSequence+Operators.swift"; path = "RxCocoa/Traits/SharedSequence/SharedSequence+Operators.swift"; sourceTree = ""; }; - E52F3E93B1A3D47F523D83D8473237C0 /* RxCollectionViewReactiveArrayDataSource.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RxCollectionViewReactiveArrayDataSource.swift; path = RxCocoa/iOS/DataSources/RxCollectionViewReactiveArrayDataSource.swift; sourceTree = ""; }; - E597FA331BDE835D4356BA91AC2EE05B /* SessionDelegate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SessionDelegate.swift; path = Source/SessionDelegate.swift; sourceTree = ""; }; - E60F8ED3C26A4DFE0400C21FB2BE072B /* ConstraintLayoutSupport.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintLayoutSupport.swift; path = Sources/ConstraintLayoutSupport.swift; sourceTree = ""; }; - E68CB21AF7E7B8C4BFF5A00B209D9666 /* Sequence.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Sequence.swift; path = RxSwift/Observables/Sequence.swift; sourceTree = ""; }; - E6EA7642AC0A935140B695C8DE1F91B1 /* HandyJSON-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "HandyJSON-umbrella.h"; sourceTree = ""; }; - E727269035DBECA74CF6FA02E1B24B09 /* UITabBarController+Rx.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UITabBarController+Rx.swift"; path = "RxCocoa/iOS/UITabBarController+Rx.swift"; sourceTree = ""; }; - E743F2C861099DDED46F43D21958AD4E /* Moya.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Moya.debug.xcconfig; sourceTree = ""; }; - E76B1466F3C89ABD081A805991109083 /* RxTextStorageDelegateProxy.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RxTextStorageDelegateProxy.swift; path = RxCocoa/iOS/Proxies/RxTextStorageDelegateProxy.swift; sourceTree = ""; }; - E78DB89A84C09AD3FA55F3FEF697370C /* SchedulerServices+Emulation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "SchedulerServices+Emulation.swift"; path = "RxSwift/Schedulers/SchedulerServices+Emulation.swift"; sourceTree = ""; }; - E7B65070F724AC357CCEA7DBCA350373 /* ConstraintConstantTarget.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintConstantTarget.swift; path = Sources/ConstraintConstantTarget.swift; sourceTree = ""; }; - E83D56D118A8CD729AB9F4DD106214B6 /* SwitchIfEmpty.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SwitchIfEmpty.swift; path = RxSwift/Observables/SwitchIfEmpty.swift; sourceTree = ""; }; - E8A3665F113C176C699C4A60D6739452 /* KVORepresentable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = KVORepresentable.swift; path = RxCocoa/Foundation/KVORepresentable.swift; sourceTree = ""; }; - E8FC0222908D1595E407695DD27A15FB /* NSObject+Rx+RawRepresentable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "NSObject+Rx+RawRepresentable.swift"; path = "RxCocoa/Foundation/NSObject+Rx+RawRepresentable.swift"; sourceTree = ""; }; - EAEC2944E172B383CBFA48D2746EFFEC /* Alamofire-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Alamofire-Info.plist"; sourceTree = ""; }; - EB54968F135513C686F7D4461CD71248 /* Kingfisher-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Kingfisher-Info.plist"; sourceTree = ""; }; - EC50DBE03FF22FAAF1D4BE41AAFB9A8A /* ElementAt.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ElementAt.swift; path = RxSwift/Observables/ElementAt.swift; sourceTree = ""; }; - ECAC747BA8670ABD37A0C5AA715875AF /* SnapKit-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "SnapKit-dummy.m"; sourceTree = ""; }; - ECBD12025121C746DDEB9B44E608E3E6 /* Utils.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Utils.swift; path = RxRelay/Utils.swift; sourceTree = ""; }; - ED35C12CB343C92F81259E4F33B299B5 /* Amb.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Amb.swift; path = RxSwift/Observables/Amb.swift; sourceTree = ""; }; - ED443DD7A5B81CF799FF1A9B14CA60C8 /* First.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = First.swift; path = RxSwift/Observables/First.swift; sourceTree = ""; }; - ED806FA43E5458BB64EB1B488B5B6772 /* ScheduledItem.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ScheduledItem.swift; path = RxSwift/Schedulers/Internal/ScheduledItem.swift; sourceTree = ""; }; - EDB3853E94E387C7E2F1D43C468ED500 /* OtherExtension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = OtherExtension.swift; path = Source/OtherExtension.swift; sourceTree = ""; }; - EE92ADF7F5D694CD90670878273D0E22 /* ConstraintInsets.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintInsets.swift; path = Sources/ConstraintInsets.swift; sourceTree = ""; }; - EEB214E2E4C3D3FB6CA0C4109D2F0FF6 /* RxTableViewReactiveArrayDataSource.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RxTableViewReactiveArrayDataSource.swift; path = RxCocoa/iOS/DataSources/RxTableViewReactiveArrayDataSource.swift; sourceTree = ""; }; - EF183BEFE853EAAC18B3D0F5E20DE4C9 /* RxRelay-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "RxRelay-prefix.pch"; sourceTree = ""; }; - EF5F5DC6C61E0C786AA3BA02874662A1 /* ControlTarget.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ControlTarget.swift; path = RxCocoa/Common/ControlTarget.swift; sourceTree = ""; }; - EF820E238AB6C626388D71E7F83DD362 /* UILayoutSupport+Extensions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UILayoutSupport+Extensions.swift"; path = "Sources/UILayoutSupport+Extensions.swift"; sourceTree = ""; }; - EFC734B57692B8F617FD03908D932F63 /* ObservableConvertibleType+Driver.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "ObservableConvertibleType+Driver.swift"; path = "RxCocoa/Traits/Driver/ObservableConvertibleType+Driver.swift"; sourceTree = ""; }; - EFD03F6EF61FF91A6224DD8CF8BF2FCE /* ObservableConvertibleType+Signal.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "ObservableConvertibleType+Signal.swift"; path = "RxCocoa/Traits/Signal/ObservableConvertibleType+Signal.swift"; sourceTree = ""; }; - F02A17D4EB2C620CA1EDD34E9934989F /* Task.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Task.swift; path = Sources/Moya/Task.swift; sourceTree = ""; }; - F035F0F1D2D858918B6C937E1F71A98E /* ObservableConvertibleType+SharedSequence.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "ObservableConvertibleType+SharedSequence.swift"; path = "RxCocoa/Traits/SharedSequence/ObservableConvertibleType+SharedSequence.swift"; sourceTree = ""; }; - F0933F5FD3BA39AA382ECC963D6550B8 /* HTTPHeaders.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = HTTPHeaders.swift; path = Source/HTTPHeaders.swift; sourceTree = ""; }; - F098DF51276D641070E6E01539D4B986 /* NSTextAttachment+Kingfisher.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "NSTextAttachment+Kingfisher.swift"; path = "Sources/Extensions/NSTextAttachment+Kingfisher.swift"; sourceTree = ""; }; - F0A41DDDA8CABBF8754FE1EE9942B51A /* DataTransform.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DataTransform.swift; path = Source/DataTransform.swift; sourceTree = ""; }; - F1A40D020BF4C65249FEA2EDF53B89F5 /* RxSwift-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "RxSwift-umbrella.h"; sourceTree = ""; }; - F2D487B9F0F6B5545D5A1715E39B9BCA /* Buffer.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Buffer.swift; path = RxSwift/Observables/Buffer.swift; sourceTree = ""; }; - F306E6A5D3D559D9E47C8FF351159D2B /* TextInput.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TextInput.swift; path = RxCocoa/Common/TextInput.swift; sourceTree = ""; }; - F329A03B4D1A8412BFD9F49535A2D291 /* ImageProgressive.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ImageProgressive.swift; path = Sources/Image/ImageProgressive.swift; sourceTree = ""; }; - F3C1412570858A4A38DEC91D9865AC1F /* Alamofire.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = Alamofire.modulemap; sourceTree = ""; }; - F3DA46923ADA705C392069960BB60E9A /* SingleAssignmentDisposable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SingleAssignmentDisposable.swift; path = RxSwift/Disposables/SingleAssignmentDisposable.swift; sourceTree = ""; }; - F3EF76F454F323E3B71A0221AFFC8238 /* NSTextField+Rx.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "NSTextField+Rx.swift"; path = "RxCocoa/macOS/NSTextField+Rx.swift"; sourceTree = ""; }; - F4457E12C3F2B5AADAA643E6B0F5C555 /* BuiltInBridgeType.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BuiltInBridgeType.swift; path = Source/BuiltInBridgeType.swift; sourceTree = ""; }; - F45DCBE864FA17C68B639547AEB93B03 /* Merge.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Merge.swift; path = RxSwift/Observables/Merge.swift; sourceTree = ""; }; - F52EC1967CD22048EB37327070C47EB5 /* ConstraintRelation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintRelation.swift; path = Sources/ConstraintRelation.swift; sourceTree = ""; }; - F63084A32C04D39192F17E5B2082033C /* OperationQueue+Alamofire.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "OperationQueue+Alamofire.swift"; path = "Source/OperationQueue+Alamofire.swift"; sourceTree = ""; }; - F75DD06A2A169049C9A0D1E77A6D13EA /* UIBarButtonItem+Rx.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UIBarButtonItem+Rx.swift"; path = "RxCocoa/iOS/UIBarButtonItem+Rx.swift"; sourceTree = ""; }; - F7B5707C4DB109E219C5031257DCD1F3 /* ControlProperty+Driver.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "ControlProperty+Driver.swift"; path = "RxCocoa/Traits/Driver/ControlProperty+Driver.swift"; sourceTree = ""; }; - F9E3641046F777BA820AB2055AA51792 /* RequestModifier.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RequestModifier.swift; path = Sources/Networking/RequestModifier.swift; sourceTree = ""; }; - F9F013D28FC8ECBAF33DF99272DEC729 /* Delegate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Delegate.swift; path = Sources/Utility/Delegate.swift; sourceTree = ""; }; - FA5485B4C3E504F337F2AD065ABAEF76 /* ConnectableObservableType.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConnectableObservableType.swift; path = RxSwift/ConnectableObservableType.swift; sourceTree = ""; }; - FA5D56DE5D48CA926F73DF626BACA99D /* SynchronizedUnsubscribeType.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SynchronizedUnsubscribeType.swift; path = RxSwift/Concurrency/SynchronizedUnsubscribeType.swift; sourceTree = ""; }; - FA88BA483915DE8B6B9D5D7B9A4AAE90 /* Platform.Darwin.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Platform.Darwin.swift; path = Platform/Platform.Darwin.swift; sourceTree = ""; }; - FA92B06C831BE63EC9C993A1217E090D /* MBProgressHUD.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = MBProgressHUD.release.xcconfig; sourceTree = ""; }; - FAC78FA49D7FB72A1D9081306F499298 /* ConstraintView+Extensions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "ConstraintView+Extensions.swift"; path = "Sources/ConstraintView+Extensions.swift"; sourceTree = ""; }; + E652E7EE345B1555C611DC594858587E /* ConstraintView+Extensions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "ConstraintView+Extensions.swift"; path = "Sources/ConstraintView+Extensions.swift"; sourceTree = ""; }; + E6BE85A9F49A4855D5FF72A06664152B /* AnyEncodable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AnyEncodable.swift; path = Sources/Moya/AnyEncodable.swift; sourceTree = ""; }; + E6C5412523E874E9C261AB2262436FF9 /* Indicator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Indicator.swift; path = Sources/Views/Indicator.swift; sourceTree = ""; }; + E6F928FF402786D74E3A6D837708D4F2 /* TransformType.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TransformType.swift; path = Source/TransformType.swift; sourceTree = ""; }; + E6FA6D023072C141A351AD5D46629828 /* UIDatePicker+Rx.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UIDatePicker+Rx.swift"; path = "RxCocoa/iOS/UIDatePicker+Rx.swift"; sourceTree = ""; }; + E6FE525FF43934A9EF0A2F369F4CFAC2 /* InfiniteSequence.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = InfiniteSequence.swift; path = Platform/DataStructures/InfiniteSequence.swift; sourceTree = ""; }; + E756E5BB90F20E7F2836EB665424DED4 /* Infallible+Concurrency.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Infallible+Concurrency.swift"; path = "RxSwift/Traits/Infallible/Infallible+Concurrency.swift"; sourceTree = ""; }; + E830424E3DC3D56DBC832F937673750D /* RxSwift-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "RxSwift-Info.plist"; sourceTree = ""; }; + E8E36794B98A1B699B24623E054E3FBE /* SchedulerServices+Emulation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "SchedulerServices+Emulation.swift"; path = "RxSwift/Schedulers/SchedulerServices+Emulation.swift"; sourceTree = ""; }; + E97143342A596294F88E8236E265EA0C /* Driver+Subscription.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Driver+Subscription.swift"; path = "RxCocoa/Traits/Driver/Driver+Subscription.swift"; sourceTree = ""; }; + E9DA779F73802F9220D73CCF52B57652 /* RxCocoa.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = RxCocoa.release.xcconfig; sourceTree = ""; }; + EA6CBE76CA70E503E459DAA0FF1E1222 /* SnapKit.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = SnapKit.modulemap; sourceTree = ""; }; + EA8432760419A0907C9472A6D4440832 /* StoryboardBased.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = StoryboardBased.swift; path = Sources/Storyboard/StoryboardBased.swift; sourceTree = ""; }; + EA9FC32738C9D5E323D868E7A799826F /* Properties.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Properties.swift; path = Source/Properties.swift; sourceTree = ""; }; + EC5E75D1658C650BA87C811D7CD7156D /* StoryboardSceneBased.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = StoryboardSceneBased.swift; path = Sources/Storyboard/StoryboardSceneBased.swift; sourceTree = ""; }; + EC856F74320EC24B0753D770C502CAD2 /* Error.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Error.swift; path = RxSwift/Observables/Error.swift; sourceTree = ""; }; + EC98215DC0A2719779B6D65EC9309229 /* AFError.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AFError.swift; path = Source/AFError.swift; sourceTree = ""; }; + ECBA1AF036FE57E1D0C22CFC2D2C9AA1 /* DisposeBase.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DisposeBase.swift; path = RxSwift/Disposables/DisposeBase.swift; sourceTree = ""; }; + ECF0CA0527D3E3C273596D98282BCF21 /* ConstraintOffsetTarget.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintOffsetTarget.swift; path = Sources/ConstraintOffsetTarget.swift; sourceTree = ""; }; + ED28EE01309B97FE2EB665B34E784772 /* PriorityQueue.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PriorityQueue.swift; path = Platform/DataStructures/PriorityQueue.swift; sourceTree = ""; }; + ED67B988502C7AB4929A3C3E6B9420F2 /* CombineLatest+Collection.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "CombineLatest+Collection.swift"; path = "RxSwift/Observables/CombineLatest+Collection.swift"; sourceTree = ""; }; + EF0027BBA07105D44F14C69C3E249A16 /* Placeholder.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Placeholder.swift; path = Sources/Image/Placeholder.swift; sourceTree = ""; }; + F03BFE5F051F40E0B1BDB61B10301FE0 /* SynchronizedUnsubscribeType.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SynchronizedUnsubscribeType.swift; path = RxSwift/Concurrency/SynchronizedUnsubscribeType.swift; sourceTree = ""; }; + F102A674F5AB5FDB619EB5A2EFBE5CA5 /* NSObject+Rx-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "NSObject+Rx-Info.plist"; sourceTree = ""; }; + F1B7EEF4A20D9F7AD75570A99658C1F4 /* PropertyInfo.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PropertyInfo.swift; path = Source/PropertyInfo.swift; sourceTree = ""; }; + F1D65E19993C7C2988D59E23E28B379B /* AnyObserver.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AnyObserver.swift; path = RxSwift/AnyObserver.swift; sourceTree = ""; }; + F1EDD07C51A918C584FBEA9C681D495D /* Result.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Result.swift; path = Sources/Utility/Result.swift; sourceTree = ""; }; + F22E73020A3A8145E0ADBE0FD72D77A8 /* ImageTransition.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ImageTransition.swift; path = Sources/Image/ImageTransition.swift; sourceTree = ""; }; + F2CC9A7324F90E05437F3130B878E67E /* ImageProcessor.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ImageProcessor.swift; path = Sources/Image/ImageProcessor.swift; sourceTree = ""; }; + F2E087AF46FA61B270B18F5569F1BCF3 /* Skip.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Skip.swift; path = RxSwift/Observables/Skip.swift; sourceTree = ""; }; + F33E90A51F2D6C8E352A6891D3A3919B /* NetworkLoggerPlugin.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NetworkLoggerPlugin.swift; path = Sources/Moya/Plugins/NetworkLoggerPlugin.swift; sourceTree = ""; }; + F38946B4AF556B4C5DFAFD2DB7F00F05 /* RequestInterceptor.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RequestInterceptor.swift; path = Source/RequestInterceptor.swift; sourceTree = ""; }; + F4F4389BBFA828FF969DE3437BD85F07 /* DispatchQueueConfiguration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DispatchQueueConfiguration.swift; path = RxSwift/Schedulers/Internal/DispatchQueueConfiguration.swift; sourceTree = ""; }; + F56D400C75D0C3EF1E3D2B809A1FECD7 /* WKWebView+Rx.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "WKWebView+Rx.swift"; path = "RxCocoa/iOS/WKWebView+Rx.swift"; sourceTree = ""; }; + F63572E2F8B504EC2553A11DE735DD0C /* _RX.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = _RX.h; path = RxCocoa/Runtime/include/_RX.h; sourceTree = ""; }; + F6A2EF3587DCD8E2A3C1D9F246BAD154 /* KFImageRenderer.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = KFImageRenderer.swift; path = Sources/SwiftUI/KFImageRenderer.swift; sourceTree = ""; }; + F73807F2EA9D53C1EEBE9F4604500BD0 /* Logger.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Logger.swift; path = Source/Logger.swift; sourceTree = ""; }; + F78C1E37154D5F6CF70286AE878E31CA /* Timeout.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Timeout.swift; path = RxSwift/Observables/Timeout.swift; sourceTree = ""; }; + F7A49D27F9237B76381C7A2B119910AE /* RxTextViewDelegateProxy.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RxTextViewDelegateProxy.swift; path = RxCocoa/iOS/Proxies/RxTextViewDelegateProxy.swift; sourceTree = ""; }; + F8D3AE3B2E4560C3687781ED7152AB01 /* ImageBinder.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ImageBinder.swift; path = Sources/SwiftUI/ImageBinder.swift; sourceTree = ""; }; + F8E25D44B2C0A0D21213190A0A538C72 /* DelegateProxy.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DelegateProxy.swift; path = RxCocoa/Common/DelegateProxy.swift; sourceTree = ""; }; + FA1F46C8FE73CA33109112241DFE48AF /* ParameterEncoding.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ParameterEncoding.swift; path = Source/ParameterEncoding.swift; sourceTree = ""; }; + FA75F4F8E194009F8B667AD557222845 /* RxTableViewDataSourceProxy.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RxTableViewDataSourceProxy.swift; path = RxCocoa/iOS/Proxies/RxTableViewDataSourceProxy.swift; sourceTree = ""; }; + FACADE26349CFDD7B90344C5E0DA8149 /* EnumType.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = EnumType.swift; path = Source/EnumType.swift; sourceTree = ""; }; FB540682DA51451BDAD851F89E558DD5 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS14.0.sdk/System/Library/Frameworks/QuartzCore.framework; sourceTree = DEVELOPER_DIR; }; - FB5DD901158FEFCA27ADE24D3A8E12FA /* ImageDataProcessor.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ImageDataProcessor.swift; path = Sources/Networking/ImageDataProcessor.swift; sourceTree = ""; }; - FBA54F39E869CCC3D040A46FA1737ED1 /* HandyJSON-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "HandyJSON-Info.plist"; sourceTree = ""; }; - FBD270BC6C902DDBA8971425BF78B4A3 /* RecursiveLock.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RecursiveLock.swift; path = Platform/RecursiveLock.swift; sourceTree = ""; }; - FBD96A9F6932FA01432273082AB94D9C /* LockOwnerType.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = LockOwnerType.swift; path = RxSwift/Concurrency/LockOwnerType.swift; sourceTree = ""; }; - FBDDA0D117F42E4FE226978800527457 /* FormatIndicatedCacheSerializer.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FormatIndicatedCacheSerializer.swift; path = Sources/Cache/FormatIndicatedCacheSerializer.swift; sourceTree = ""; }; - FC28EF831FDDD06091CC7AB0416845FC /* PrimitiveSequence+Zip+arity.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "PrimitiveSequence+Zip+arity.swift"; path = "RxSwift/Traits/PrimitiveSequence/PrimitiveSequence+Zip+arity.swift"; sourceTree = ""; }; - FE06975BE3E77F3DFD642DD868FE617D /* NSView+Rx.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "NSView+Rx.swift"; path = "RxCocoa/macOS/NSView+Rx.swift"; sourceTree = ""; }; - FE2C700E88155AD2A39178D87B6644F5 /* ImageProcessor.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ImageProcessor.swift; path = Sources/Image/ImageProcessor.swift; sourceTree = ""; }; - FE77747AB7C6876DC80B43C5DCE4ABF0 /* ConstraintItem.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintItem.swift; path = Sources/ConstraintItem.swift; sourceTree = ""; }; - FEDFCFC90E99F4AD01D5647DF4CB5FB4 /* Bag.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Bag.swift; path = Platform/DataStructures/Bag.swift; sourceTree = ""; }; + FB8B7E1A52CD158EB2B71DBF0F4F751F /* ElementAt.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ElementAt.swift; path = RxSwift/Observables/ElementAt.swift; sourceTree = ""; }; + FBD7C0610C2D316D26B21D2B7ECE7324 /* MBProgressHUD-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "MBProgressHUD-Info.plist"; sourceTree = ""; }; + FCC5042AA7F7651A1A4C7752569A2A38 /* ObservableConvertibleType+Driver.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "ObservableConvertibleType+Driver.swift"; path = "RxCocoa/Traits/Driver/ObservableConvertibleType+Driver.swift"; sourceTree = ""; }; + FD25B60171608A79B5490000C04B2692 /* GIFAnimatedImage.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = GIFAnimatedImage.swift; path = Sources/Image/GIFAnimatedImage.swift; sourceTree = ""; }; + FD3CD2B6C6794094723AB8AD96C5A568 /* SessionDelegate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SessionDelegate.swift; path = Sources/Networking/SessionDelegate.swift; sourceTree = ""; }; + FD4536105F8DDB1089C31E4DE8BA5900 /* RxTableViewDataSourceType.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RxTableViewDataSourceType.swift; path = RxCocoa/iOS/Protocols/RxTableViewDataSourceType.swift; sourceTree = ""; }; + FD6AC3A8B3333B1457F3E81E148A79D4 /* Export.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Export.swift; path = Source/Export.swift; sourceTree = ""; }; + FD70F140A41DC88D730A21E3BF31BDFF /* Configuration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Configuration.swift; path = Source/Configuration.swift; sourceTree = ""; }; + FD72EA464CE8C36C57A0BD6F808CC568 /* HexColorTransform.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = HexColorTransform.swift; path = Source/HexColorTransform.swift; sourceTree = ""; }; + FE30AA6CA2D2B70E4F4C11DFD6A41C88 /* ImagePrefetcher.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ImagePrefetcher.swift; path = Sources/Networking/ImagePrefetcher.swift; sourceTree = ""; }; + FE496B694D1165BD65966E93199DF347 /* UITextField+Rx.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UITextField+Rx.swift"; path = "RxCocoa/iOS/UITextField+Rx.swift"; sourceTree = ""; }; + FEA4904DACA1746B0F30B6E97B6BAF9A /* Kingfisher.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Kingfisher.debug.xcconfig; sourceTree = ""; }; + FEC1ECEDDCAA2CFA6A99C880B214F7C6 /* NSObject+Rx.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "NSObject+Rx.release.xcconfig"; sourceTree = ""; }; + FECF71053F4B7A6E457DA1D583768776 /* Zip+arity.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Zip+arity.swift"; path = "RxSwift/Observables/Zip+arity.swift"; sourceTree = ""; }; + FEED31AF10BFFB4CB8549FAA56320BAC /* NSObject+Rx.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "NSObject+Rx.swift"; path = "RxCocoa/Foundation/NSObject+Rx.swift"; sourceTree = ""; }; FF8B264DFE802855D5D67E7CDDABFC3C /* RxRelay */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = RxRelay; path = RxRelay.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + FF8C48E3A0A17C9A96AB5EFECAED7A39 /* Reusable.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Reusable.debug.xcconfig; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - 022CF4B8BBD5C8D34A275928347518C5 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 71E6B1C3D8711A083F76B6D3C0D561B6 /* Foundation.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; 41444FC6B9FA2D386D58EF06093B5C77 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; @@ -1262,18 +1303,11 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 69E41FE1C983D4504EF52D46E5289EA7 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - A77BC5063F494F8F4F92644B6A8C93E0 /* Foundation.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 7384B674865A3735705993DE278F24FB /* Frameworks */ = { + 6C616238525BCC61AE0C0C4690227BE1 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 1E909EB12C1EAC4BA141FB502654D49B /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1287,11 +1321,26 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - AB4F7BDEBC13070575FC00805E8C810B /* Frameworks */ = { + A8D9529A344F04D1B3DFAA6B08FD1D85 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - C549FDEDD8E7F6D7AE0B15C125D183A8 /* Foundation.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + AFB10A2257938CA640B7D9E4871C89B6 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 5D7DB7B34B4C3F708EB593AF3B5C7F67 /* Foundation.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + BDB96F442E1AF21C8D92CB35978F1D8E /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + AF983CFBAC7AC7EE33B52AB91B4A0C86 /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1305,6 +1354,14 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + DFB46A614E93E582396BD10D4F22CC10 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 8AA504CD9C7D8939D061376309ED11F4 /* Foundation.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; E877FC0D3719519B688F3E17FF0228B2 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; @@ -1321,165 +1378,73 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + EE7F84658DCF4174B94C296BEF716DE0 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 156C8D395F1C21F019723FE061193771 /* Foundation.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 087868B262FF2BC66129825C09A683E4 /* Support Files */ = { + 08DE95AD4F9C469D3178D4CF67CC86F6 /* SnapKit */ = { isa = PBXGroup; children = ( - 4D43B9A8506661F18ED1E7EDF570932D /* SnapKit.modulemap */, - ECAC747BA8670ABD37A0C5AA715875AF /* SnapKit-dummy.m */, - 0AA9F81ECF26C389EB0017F3D63D208A /* SnapKit-Info.plist */, - 47110AC6AA4D44E8FCEB9552C18577A1 /* SnapKit-prefix.pch */, - 04860F824879B09726E0E71EE19968C8 /* SnapKit-umbrella.h */, - AA050A692C8C8C04436B0CB1E5317D3A /* SnapKit.debug.xcconfig */, - 74A65654283AE2CF4A3DFA265199F1C5 /* SnapKit.release.xcconfig */, + 10B622DDF8C2ABA8EC74EEA0B9C93A7D /* Constraint.swift */, + 9950CF3634C1F0413A7BCE982F5B51C3 /* ConstraintAttributes.swift */, + 04A45391C09A593CEB4478041D5286C4 /* ConstraintConfig.swift */, + 54A2A4168F5796023E4AB2257079E82B /* ConstraintConstantTarget.swift */, + 3AB290E5F66DA867FF1CAD22F03C68A7 /* ConstraintDescription.swift */, + B718BA5F8DDCBC7DB30702FCBBA67359 /* ConstraintDirectionalInsets.swift */, + 4A7EB3BD395A8A96548F70E8CBFB7DDE /* ConstraintDirectionalInsetTarget.swift */, + 327008B830C64C1E6228192790D867B8 /* ConstraintDSL.swift */, + CC41093A359C57FEC27213A32557E60F /* ConstraintInsets.swift */, + 4B3A450E2CC7D682194A21EC144E69AA /* ConstraintInsetTarget.swift */, + 102BAF91E1EB63518F37D45A477DD641 /* ConstraintItem.swift */, + 41491929AE0B59666CA9824E3700BD2E /* ConstraintLayoutGuide.swift */, + 43652B2DDB3366769FD0266CDC2F4D8C /* ConstraintLayoutGuide+Extensions.swift */, + CDCB27A05975B5FE898AE6FC219EB03D /* ConstraintLayoutGuideDSL.swift */, + 1893EA38121A4B02DF5CD011EB861FA2 /* ConstraintLayoutSupport.swift */, + D0BD5D30ED2CC599E8F6BAA21229E823 /* ConstraintLayoutSupportDSL.swift */, + 1D188AA6717470D032D31BE0526B5642 /* ConstraintMaker.swift */, + 297BA7C8A73508DACAEB8B56F61CB0A7 /* ConstraintMakerEditable.swift */, + 6BD44328197D41002A7ABD8129FA0B81 /* ConstraintMakerExtendable.swift */, + 9DCE038776A3A00D1DFE3EA3C156665C /* ConstraintMakerFinalizable.swift */, + 9A9A8F4777748089F7189B8B3DB36B3A /* ConstraintMakerPrioritizable.swift */, + D96CC2D966F98D09F28A5265DB12C96F /* ConstraintMakerRelatable.swift */, + 013EF561C07F573DB885A241B0BCE5D8 /* ConstraintMakerRelatable+Extensions.swift */, + 6B87468206E69D53B049703EDDD01606 /* ConstraintMultiplierTarget.swift */, + ECF0CA0527D3E3C273596D98282BCF21 /* ConstraintOffsetTarget.swift */, + 5560F94CC6C6C8F313BF9612C06F6B89 /* ConstraintPriority.swift */, + 7143352286BCC6841BFEF03BAA776259 /* ConstraintPriorityTarget.swift */, + 9EBB20B835EFB6273EA09069E6083457 /* ConstraintRelatableTarget.swift */, + 4C895A93F8613A05F2D58A9EC42B44F8 /* ConstraintRelation.swift */, + 4462CFADBA30107E65E48BB377D89CDC /* ConstraintView.swift */, + E652E7EE345B1555C611DC594858587E /* ConstraintView+Extensions.swift */, + 6540850C0E13B7D1C416C7ED0A60F3B8 /* ConstraintViewDSL.swift */, + 891BB23A8DD867FACFFAF5B22DFDF56E /* Debugging.swift */, + D74E043A1ED1197420865CCA40E92FD8 /* LayoutConstraint.swift */, + 338D6E590301EFE0F556243B86D27B00 /* LayoutConstraintItem.swift */, + AAF909B0263E00FB2CE192D7B8EFA76A /* Typealiases.swift */, + 0CC2D1BB9EEBEA95ED9544793D54CFC3 /* UILayoutSupport+Extensions.swift */, + EE919988B95E2DA090D94BD1035935C1 /* Support Files */, ); - name = "Support Files"; - path = "../Target Support Files/SnapKit"; + path = SnapKit; sourceTree = ""; }; - 0ACF7A29FEB8DF4457DE6C976823731D /* Support Files */ = { - isa = PBXGroup; - children = ( - F3C1412570858A4A38DEC91D9865AC1F /* Alamofire.modulemap */, - 78F5BA1E49C1B6FE56A4B5323CD9AFF8 /* Alamofire-dummy.m */, - EAEC2944E172B383CBFA48D2746EFFEC /* Alamofire-Info.plist */, - 6C4649E78A32C230E03D17B80A888076 /* Alamofire-prefix.pch */, - 166CB5B3B91C1FF4370249653FD8320D /* Alamofire-umbrella.h */, - 19D15B6F087615D6E6964610E2461AAD /* Alamofire.debug.xcconfig */, - 36DFFD75B7479E1705FAC0F110CE34DC /* Alamofire.release.xcconfig */, - ); - name = "Support Files"; - path = "../Target Support Files/Alamofire"; - sourceTree = ""; - }; - 0F9BCF6B6B1C3846EB3915D29498BD08 /* Resources */ = { - isa = PBXGroup; - children = ( - 8B776E2E2FACA7C1A7173E403F37910F /* PrivacyInfo.xcprivacy */, - ); - name = Resources; - sourceTree = ""; - }; - 208D83938308FFB539726DDAF4BDAAC5 /* Targets Support Files */ = { - isa = PBXGroup; - children = ( - AA82EC4AF35A3C8A786A5503BE530EF2 /* Pods-yinmeng-ios */, - ); - name = "Targets Support Files"; - sourceTree = ""; - }; - 295AFD80C44BCD5AE0CFE5ED66C0EF6D /* Support Files */ = { - isa = PBXGroup; - children = ( - 65C3DEA44C88982D1639BC1D3AE788E5 /* RxCocoa.modulemap */, - 8A3398D47F647EC9C9854F30FAA9A225 /* RxCocoa-dummy.m */, - 03480C2AB8FE1C2C40314057985B0228 /* RxCocoa-Info.plist */, - 2BAC1650A187C2915C972E5571EE0B96 /* RxCocoa-prefix.pch */, - 66EAB16FAAFDFDFF614A83B83544F60A /* RxCocoa-umbrella.h */, - D4F121F8F3564995DB1C8EEF45128BEC /* RxCocoa.debug.xcconfig */, - 63CF3F8FFB207D7C17E8DB9CB93EDA1E /* RxCocoa.release.xcconfig */, - ); - name = "Support Files"; - path = "../Target Support Files/RxCocoa"; - sourceTree = ""; - }; - 34329BC0E5C3F008BA4775286EF55C4E /* Support Files */ = { - isa = PBXGroup; - children = ( - A378747D62E5A19E664AE2A6B7A2ADA6 /* RxRelay.modulemap */, - BA8EAB6201729627D3C7299F26D4EE54 /* RxRelay-dummy.m */, - 628E93CA5921A8FC116E3929C680A27B /* RxRelay-Info.plist */, - EF183BEFE853EAAC18B3D0F5E20DE4C9 /* RxRelay-prefix.pch */, - 6DEEF0A78457ED9D46DBF84E913E83F6 /* RxRelay-umbrella.h */, - B5077D9342A7330872B9A75748BED92D /* RxRelay.debug.xcconfig */, - 98AC09B0DB090CDE2D7CC82E1811FA69 /* RxRelay.release.xcconfig */, - ); - name = "Support Files"; - path = "../Target Support Files/RxRelay"; - sourceTree = ""; - }; - 3B5E9879778791C70F44EA9C986AAAF4 /* HandyJSON */ = { - isa = PBXGroup; - children = ( - C599239C5C9502586FE95F6C59479D15 /* AnyExtensions.swift */, - 16B897EE9E0FB539D6DCE44EC4FE5968 /* BuiltInBasicType.swift */, - F4457E12C3F2B5AADAA643E6B0F5C555 /* BuiltInBridgeType.swift */, - E2CC1F55AB1BB43F87FEC4D4CD10D1FE /* CBridge.swift */, - 7430E48DEB35987DD064EE0D7363953F /* Configuration.swift */, - 1B2863E7FB03DAF37957D8B19A20FAF5 /* ContextDescriptorType.swift */, - D741ADECEE7BA668846D15DEE1332031 /* CustomDateFormatTransform.swift */, - F0A41DDDA8CABBF8754FE1EE9942B51A /* DataTransform.swift */, - DEA6B630488DF0930202C22D36F757CB /* DateFormatterTransform.swift */, - 64854FC0AC6AFE7ACB68D2C7BEAAE398 /* DateTransform.swift */, - 972FCFDB49C8D15767A6488B65F2999B /* Deserializer.swift */, - 9D3BCD1EA3553D12354FD5FA1FAE15CC /* EnumTransform.swift */, - 60A3141E90976A3DD62256D0A73B9572 /* EnumType.swift */, - 6009157C9973464C53AFA7E068E984F7 /* Export.swift */, - C3D7C8B8CB5663108F150E48EB940FDF /* ExtendCustomBasicType.swift */, - 5096A43515DC7129C76B0F73FC4B6049 /* ExtendCustomModelType.swift */, - 6438C8BA15E4054D7ACA1E3DFF2066DB /* FieldDescriptor.swift */, - 1710DBE3C7151B8AB47F7A9F74055B64 /* HandyJSON.h */, - 1BBE63969630CA64CDD14AE518F9ED70 /* HelpingMapper.swift */, - AEE012945F1ACD7D860DD82B208D5D32 /* HexColorTransform.swift */, - C8B337D475349119A9023DB9A04FAED7 /* ISO8601DateTransform.swift */, - 418F325839254785FCE40E01EC615D42 /* Logger.swift */, - 2A8DE9D85F9B8D23A00C6EDE272AAE8D /* MangledName.swift */, - 84E7CDD4F491C19202D78BD1D18EA01E /* Measuable.swift */, - AB1E15FD768D00EEFADE79898DA43AA2 /* Metadata.swift */, - AAD6332E824227FDE29BB9A1CB1E6DA4 /* NSDecimalNumberTransform.swift */, - EDB3853E94E387C7E2F1D43C468ED500 /* OtherExtension.swift */, - 6AB41D31B155EAB764A9C053A0DE59CD /* PointerType.swift */, - A3821293C89F3E60BD6231B1E48974A1 /* Properties.swift */, - 477447EAA52D7E8C1E3C05F2DD47F9B1 /* PropertyInfo.swift */, - A79AD749EBBF7C8E00F924437B94E568 /* ReflectionHelper.swift */, - A0989B49F85763612695C610DDE3995F /* Serializer.swift */, - 1DDD0126DBB77C7B793703E3B7918072 /* Transformable.swift */, - 8DA1B7070D9B7E6489E50762BA7CC29B /* TransformOf.swift */, - 1CEDEE8EE3D758478549E54DB2D8CB8D /* TransformType.swift */, - 2C4725814B303164AE7425543FDA788C /* URLTransform.swift */, - 84CB1D96BB3C8A96122B486161B750D5 /* Support Files */, - ); - path = HandyJSON; - sourceTree = ""; - }; - 3FB04A789BFFEAF480028A2C5599933C /* Pods */ = { - isa = PBXGroup; - children = ( - 6648C46CB637AC25933390CFA01B6E44 /* Alamofire */, - 3B5E9879778791C70F44EA9C986AAAF4 /* HandyJSON */, - 8AACD370BEA282A3E8F4B1A30CBEE7BB /* Kingfisher */, - 472947FD3012563582985D640A1C1B89 /* MBProgressHUD */, - C08390ED8A4F067D1F1476DD6F94AEFD /* Moya */, - 6F0835F9A2B10364B21DAD66EE1AED12 /* Reusable */, - E82B7085CA7098C59B6758A4756704C2 /* RxCocoa */, - 4D443E7921FBD163086C75A4E464D0B3 /* RxRelay */, - 8C243E4EC8CAF1BD18D04A085617A090 /* RxSwift */, - BDB006AD0630C93386D9F397A4A6E3E8 /* SnapKit */, - ); - name = Pods; - sourceTree = ""; - }; - 472947FD3012563582985D640A1C1B89 /* MBProgressHUD */ = { - isa = PBXGroup; - children = ( - A8A0F224AF15F0E14442ECFCC641E624 /* MBProgressHUD.h */, - 56969AC68B2EED540B9FBF1E0D237B8D /* MBProgressHUD.m */, - 6D3627A4475DCC07A111B46FA8742810 /* Support Files */, - ); - path = MBProgressHUD; - sourceTree = ""; - }; - 4ACE8263887E88BE1B13DCD869DFFCAF /* Products */ = { + 08F310D7489D1EBC9403C00B094A10ED /* Products */ = { isa = PBXGroup; children = ( 5D797E9A5C5782CE845840781FA1CC81 /* Alamofire */, + 190D7383CCEFD8AB3F8CB93098A3F214 /* DeviceKit */, CD54121DDA84872534168702B5F92950 /* HandyJSON.framework */, C3F44C782D64D7EB20B61CE3844EBFAD /* Kingfisher */, C298ABB78D9B05529B89D8322DB2E7B0 /* Kingfisher-Kingfisher */, 8B8FAB0D627B17EDE1366984278705D9 /* MBProgressHUD.framework */, 3756A9BBE41ABEE8DCBF5BCA6972C4DA /* Moya */, + A4E0F907A63923C4154A172688E9888C /* NSObject+Rx */, 9BC03DDC341E7F14C1F96A0C0F826FD3 /* Pods-yinmeng-ios */, A0ABA07B4D48354ED3F51C2D6AF5426B /* Reusable */, BC432FD48A5932251F1CAFBC4BF74894 /* RxCocoa */, @@ -1490,412 +1455,595 @@ name = Products; sourceTree = ""; }; - 4B1B230A86A5086852705822097E9BDB /* Core */ = { + 0BFE105642232D1E56190DAF29FAF945 /* RxCocoa */ = { isa = PBXGroup; children = ( - 9D5A16599059CA238869B241131BA02D /* AccessTokenPlugin.swift */, - 045D5D90782798F36E8E8F973DAC5B28 /* AnyEncodable.swift */, - 9FE80A6E04D0DEC038F7B01D95633AE8 /* Atomic.swift */, - 57BE0C87BBB0A537606F16CD108FAECF /* Cancellable.swift */, - B2679DB8FCA54DDF8E7DA3AC4A11488F /* CredentialsPlugin.swift */, - 6C198ADB3A802CC083707D46D42F735C /* Endpoint.swift */, - 002ED0D813882532198DEB9328551828 /* Image.swift */, - D3D2E46D8BE94722DCF2428829BFE1C4 /* Moya+Alamofire.swift */, - A3CC4FE478601A48919D7092CBFF414A /* MoyaError.swift */, - 6EA8E69F4FC1AD4BC47B9FAA09D391D1 /* MoyaProvider.swift */, - 4189EEA5194A0B67B0929125B7D8F3B9 /* MoyaProvider+Defaults.swift */, - 0764DAF106A0E6A03874313AD80FDDB7 /* MoyaProvider+Internal.swift */, - 8AD039748141FD7199964AF985765430 /* MultipartFormData.swift */, - 1D524DB6FB9E645710C7B04B107FB333 /* MultiTarget.swift */, - 615C9F76DEEA89A8A3638328942C191B /* NetworkActivityPlugin.swift */, - BDC9E1192B2CBB200B902E65C687D558 /* NetworkLoggerPlugin.swift */, - 07360B313B37C9A5C5310D3E0442D54B /* Plugin.swift */, - 9B09861BBDC46C3D1F767E4F57F0FCD6 /* RequestTypeWrapper.swift */, - C2265CF40B5E3E71870047392079AF16 /* Response.swift */, - 91834F0831C28901ECD936CE6E242605 /* TargetType.swift */, - F02A17D4EB2C620CA1EDD34E9934989F /* Task.swift */, - 87AD720C8F2A51587F1C491E884DB664 /* URL+Moya.swift */, - 5859599DB876A373ACA4D7088EA30151 /* URLRequest+Encoding.swift */, - C807A9D8CD9D55D1BD98345635AE1623 /* ValidationType.swift */, + F63572E2F8B504EC2553A11DE735DD0C /* _RX.h */, + 11A5C21AE17E6B568C618DAF6914B0C1 /* _RX.m */, + 3E8562C07C099D3B20C9B72A98742C11 /* _RXDelegateProxy.h */, + C2DAB1D8451D1E92990CAE3C44061A5A /* _RXDelegateProxy.m */, + 2EF303B0A0DC567059DE329212C8EA8A /* _RXKVOObserver.h */, + C2B360D337689EDAD19C0E26CC458AF5 /* _RXKVOObserver.m */, + 54BE630532FAC36AF8CA970B716390DF /* _RXObjCRuntime.h */, + 6E3BE7A2658D90D7942E77F2812A0C91 /* _RXObjCRuntime.m */, + 8DB50915A05E4C0612B30E266B639416 /* Bag.swift */, + 0ACF64AE573B1EBE4C718E1894A0743E /* BehaviorRelay+Driver.swift */, + 70C09E238B33E45F334962CE40F8580D /* ControlEvent.swift */, + 7B93F8A5C815D15B602DAA783AD6CCB6 /* ControlEvent+Driver.swift */, + E1A0C144985B2BE2F2DCD7D49970DE87 /* ControlEvent+Signal.swift */, + 837D000C38991D87E5AAD478A7247464 /* ControlProperty.swift */, + DB0B1372A476B63A768D0A5DD78D54CD /* ControlProperty+Driver.swift */, + 029DD43B88E15C10495709D19F72F255 /* ControlTarget.swift */, + F8E25D44B2C0A0D21213190A0A538C72 /* DelegateProxy.swift */, + 6CD21EC48FB4C480D181BFF522CAB4BD /* DelegateProxyType.swift */, + C7C72013A14D25D1022975FE6A4F837A /* DispatchQueue+Extensions.swift */, + D12566209108F6AAB337B62C9A2D0B17 /* Driver.swift */, + E97143342A596294F88E8236E265EA0C /* Driver+Subscription.swift */, + DC1B01CE2D3C9033BD4A3FCFBCE68E9A /* Infallible+Bind.swift */, + 39AE268F8D5447D09C20B5D3F21C71BE /* InfiniteSequence.swift */, + CB337D23E1C7AD19CB57B084B1AAE780 /* ItemEvents.swift */, + 3A39C453126A11DB65BED928ABC782A3 /* KVORepresentable.swift */, + 3C7269135874D7BBF7B4F321BC23D34C /* KVORepresentable+CoreGraphics.swift */, + 27ACD601BA2AB4266E3C72370222DA52 /* KVORepresentable+Swift.swift */, + 5DA4BD616B9BD9CD1C8D382F18E20B78 /* NotificationCenter+Rx.swift */, + 5199D7F70873229982B2F72B8936532C /* NSButton+Rx.swift */, + 90BEC58B5C6F7A75AB0627499CBA9255 /* NSControl+Rx.swift */, + FEED31AF10BFFB4CB8549FAA56320BAC /* NSObject+Rx.swift */, + E10C4362F4CFE97054F4E028403D85A5 /* NSObject+Rx+KVORepresentable.swift */, + BFAA3983046B2C0FD73171FFDAF6449C /* NSObject+Rx+RawRepresentable.swift */, + 8896796ADE3D457CE11A410DDE855ECB /* NSSlider+Rx.swift */, + BD9FBE81ABDDD90E6597902D02BC59B1 /* NSTextField+Rx.swift */, + E11CA30C898D891460BDDC338CDB3BC1 /* NSTextStorage+Rx.swift */, + 3A6FD86129892C128B4883B000C969DE /* NSTextView+Rx.swift */, + 0160BDC3EB8B8E1F24F1C231DD0170F6 /* NSView+Rx.swift */, + 5C20F2D35CADF661F8FFD19A3406146A /* Observable+Bind.swift */, + FCC5042AA7F7651A1A4C7752569A2A38 /* ObservableConvertibleType+Driver.swift */, + CC8B88972BBBEFD7514D12BD5A60921D /* ObservableConvertibleType+SharedSequence.swift */, + A9A747B03EE699B366FD53FB4ACA433F /* ObservableConvertibleType+Signal.swift */, + 1453836E21AC5CF84521F96905B6E510 /* Platform.Darwin.swift */, + 8726C717942393D800367AEA1B00B6A2 /* Platform.Linux.swift */, + D24A5830A6FE8C50CEFC970D54052EB4 /* PriorityQueue.swift */, + B0A7B2A3A2A3395A70DB106E36C9A10E /* PublishRelay+Signal.swift */, + 5D9D37A063544BC1FE91BF7860920A13 /* Queue.swift */, + 5CDAF0BB1613D4C614630A013D714B1B /* RecursiveLock.swift */, + 6E49664D9C90E91EDDAEE87B74B21D22 /* RxCocoa.h */, + 2295FFA92EC6E5469475072C9CDC772F /* RxCocoa.swift */, + CEE56EB1F6863DFA466860E91716ACC2 /* RxCocoaObjCRuntimeError+Extensions.swift */, + B9AD1DEBB939967A5FB146BB73854EDC /* RxCocoaRuntime.h */, + 7663B82993DFABAB2F4B389A8FB5C048 /* RxCollectionViewDataSourcePrefetchingProxy.swift */, + 2C22489767232A13091ED62587C286C2 /* RxCollectionViewDataSourceProxy.swift */, + E346F2FEC081E7D04E06DDDFE37D9C31 /* RxCollectionViewDataSourceType.swift */, + CA7D16256C92CFB8BF9E9407887AC51D /* RxCollectionViewDelegateProxy.swift */, + 58CDFB2FA30EE7E8878B314B6C67A1ED /* RxCollectionViewReactiveArrayDataSource.swift */, + BF350D2B11D5C3D8C1ABA31691E2A505 /* RxNavigationControllerDelegateProxy.swift */, + D2D84B31C49B39414DBBE8DE045E843D /* RxPickerViewAdapter.swift */, + B34AEF61AF6C1954E444558440E52BAB /* RxPickerViewDataSourceProxy.swift */, + D2653695D1C807B2D2551C8FB25010C9 /* RxPickerViewDataSourceType.swift */, + 5FC9F13D2042C9127C92E064025DCB3F /* RxPickerViewDelegateProxy.swift */, + CB4E1A851C80303503357F057E6DC3CF /* RxScrollViewDelegateProxy.swift */, + 6E52E6D3D1B60B8D401E9BC11B0D0138 /* RxSearchBarDelegateProxy.swift */, + 85C30E28B3B42AC8DB400B1A3EBD8DFE /* RxSearchControllerDelegateProxy.swift */, + AB82E4F472A144DE4566058691C877BE /* RxTabBarControllerDelegateProxy.swift */, + 09FAFC68060797D75A0359C60B6E853B /* RxTabBarDelegateProxy.swift */, + 2B9E485C0CA9736A9D0918B0DE34D9E3 /* RxTableViewDataSourcePrefetchingProxy.swift */, + FA75F4F8E194009F8B667AD557222845 /* RxTableViewDataSourceProxy.swift */, + FD4536105F8DDB1089C31E4DE8BA5900 /* RxTableViewDataSourceType.swift */, + 7B12288C33DA62D48C6C165C6AF775E2 /* RxTableViewDelegateProxy.swift */, + 797B718D90DE78C755DF2EC8CE6AAFF6 /* RxTableViewReactiveArrayDataSource.swift */, + 513A35C6696CAB5A33FC454009387362 /* RxTarget.swift */, + 2FE341F08B89C3BC700983C1AD50F7B6 /* RxTextStorageDelegateProxy.swift */, + F7A49D27F9237B76381C7A2B119910AE /* RxTextViewDelegateProxy.swift */, + DD29391A869E5B2061C3F8BEBCD3ABF7 /* RxWKNavigationDelegateProxy.swift */, + 971B12D8DAD57B9C0CD67715AF1A2709 /* SchedulerType+SharedSequence.swift */, + 3E1B746DF53091FB3B3D48C0F5019479 /* SectionedViewDataSourceType.swift */, + 72C838FF6CC9F15D864FD56DFBD21083 /* SharedSequence.swift */, + 9A443EFC304DBF7C56799E9938EEF73E /* SharedSequence+Concurrency.swift */, + B0CBB6DFE407F4D1F54246F9C2F11BA7 /* SharedSequence+Operators.swift */, + 03DB0A294FB90E896367AF7F25CE6F5D /* SharedSequence+Operators+arity.swift */, + 27A67104EF0235D1668652F304608779 /* Signal.swift */, + 041FA2EF962E0A05A873BCEB0B86907B /* Signal+Subscription.swift */, + 3410B22D578C139B16E380E9330BEDEB /* TextInput.swift */, + E0BD07972C102D29E80B1C92CB461DAF /* UIActivityIndicatorView+Rx.swift */, + 8AE7340B71FE68209D47F08D0A107783 /* UIApplication+Rx.swift */, + 94179F5DA3ACDE995E738C53BB155B3B /* UIBarButtonItem+Rx.swift */, + 1C4747029AFD3F49EEC44FFF619D4A63 /* UIButton+Rx.swift */, + BE5D7603CD5F22048BEB1AA008C9A3AA /* UICollectionView+Rx.swift */, + 80A98418A162685AD31E0933E3F10D05 /* UIControl+Rx.swift */, + E6FA6D023072C141A351AD5D46629828 /* UIDatePicker+Rx.swift */, + 1F2B92ABD48C41214F990AD1FE1BCCD2 /* UIGestureRecognizer+Rx.swift */, + 7188F8528517D30F9811E46C3E640076 /* UINavigationController+Rx.swift */, + 33C76ABDC182971F95E0D3E659859C92 /* UIPickerView+Rx.swift */, + D4A4E4F19AF294A1D4F2D4BC4F769B32 /* UIRefreshControl+Rx.swift */, + E0C2DFAEFE293A47D68CF49BF41D9A0B /* UIScrollView+Rx.swift */, + A5E1C3E44A653237ABB964FE3F7940A5 /* UISearchBar+Rx.swift */, + 6AAB18081D287A3C83DC8FF600036CDC /* UISearchController+Rx.swift */, + 7DAFCEAA3AB4D37CB8B1B2D1845D5E61 /* UISegmentedControl+Rx.swift */, + 9493AECC1368AB403C436652FD76779D /* UISlider+Rx.swift */, + C0FA798817E2B39E4D96485B677C60A8 /* UIStepper+Rx.swift */, + 503238E19CB138CABE150E1CB3A5374E /* UISwitch+Rx.swift */, + A2F69FDF2A31BFF7B837CFF8A6177553 /* UITabBar+Rx.swift */, + A6D7D78B837EEDFF2CAD064BB122C72C /* UITabBarController+Rx.swift */, + B3043A3D0D99BB6BF9070B060B243CCB /* UITableView+Rx.swift */, + FE496B694D1165BD65966E93199DF347 /* UITextField+Rx.swift */, + 04E35B0D16A80E7522873FFE2BE9BBF3 /* UITextView+Rx.swift */, + 0C65E46783FF6B995032B422A723E607 /* URLSession+Rx.swift */, + F56D400C75D0C3EF1E3D2B809A1FECD7 /* WKWebView+Rx.swift */, + BE3F123DA92D366C250DA81350CE675E /* Support Files */, ); - name = Core; + path = RxCocoa; sourceTree = ""; }; - 4D443E7921FBD163086C75A4E464D0B3 /* RxRelay */ = { + 16F196A72FF44DD80DEF33E372BF1517 /* Support Files */ = { isa = PBXGroup; children = ( - 9382A27EEA32D49627659BC72C56FCBF /* BehaviorRelay.swift */, - D9244D2668F560CE0CB0F0065186F8EB /* Observable+Bind.swift */, - 52F042037CA28D5A455E060DD097C638 /* PublishRelay.swift */, - 2868D931558DCC05627934B9EF6362E6 /* ReplayRelay.swift */, - ECBD12025121C746DDEB9B44E608E3E6 /* Utils.swift */, - 34329BC0E5C3F008BA4775286EF55C4E /* Support Files */, - ); - path = RxRelay; - sourceTree = ""; - }; - 6648C46CB637AC25933390CFA01B6E44 /* Alamofire */ = { - isa = PBXGroup; - children = ( - 443CA8C627022D8C1934F8F42533236E /* AFError.swift */, - 220B3F8A303994576980CB9C15199150 /* Alamofire.swift */, - A3F6B5834C04BE54692EFEF14936348F /* AlamofireExtended.swift */, - DB9D0DFFB1AA39DDF8B49325F07BEBD1 /* AuthenticationInterceptor.swift */, - 54C7D8C91C6BD127E758FD153F5CAE2A /* CachedResponseHandler.swift */, - 88195126F4E96A3774802B0BA8877C77 /* Combine.swift */, - 4B2092F7A452FCAC892734476E6676E3 /* Concurrency.swift */, - 7E97E1D4DF8BFA3FE2C603D6B934D9D2 /* DispatchQueue+Alamofire.swift */, - 2D85DF2E1C33DB9B470D4EFFB7F4A1FC /* EventMonitor.swift */, - F0933F5FD3BA39AA382ECC963D6550B8 /* HTTPHeaders.swift */, - 6E269149DE9BA1B81C3504720A668420 /* HTTPMethod.swift */, - 215B8518AD4396707F88E578B313121F /* MultipartFormData.swift */, - 7CFEE4BC9AEF52579A20AF4717B3205C /* MultipartUpload.swift */, - 4917FB9D005872281B22F006F7001E9E /* NetworkReachabilityManager.swift */, - 05C2B32ED7987DD94725453C00328CE3 /* Notifications.swift */, - F63084A32C04D39192F17E5B2082033C /* OperationQueue+Alamofire.swift */, - CA8EB7DF526B4C2F17EB0BBE0F8760CC /* ParameterEncoder.swift */, - 2E78E508B94164D9227009C03D41986A /* ParameterEncoding.swift */, - 518597BD67B90E044EDCA15142FA2D54 /* Protected.swift */, - C0F94D368DE622488019CFFA18E34262 /* RedirectHandler.swift */, - C6D030CA131DAC625D4D9FDC5FD000E3 /* Request.swift */, - 516DBB0CADC2C6DBC5C12C20E9C7DFE4 /* RequestCompression.swift */, - 87AAF208F89B5776787B00ED7C4139D0 /* RequestInterceptor.swift */, - 44142825DF6D5162BCAC2FEFBF148BED /* RequestTaskMap.swift */, - CCB3459EBA17D69CB52198314FF7186C /* Response.swift */, - 9BFCC48A5DBF6A66F64E5ACE27854985 /* ResponseSerialization.swift */, - A0CB4A2B49E071E7012FEE7D28B8B467 /* Result+Alamofire.swift */, - 2A271DE0F470E6D6B4CF963A21854DEA /* RetryPolicy.swift */, - CCF0B72B35A6BCD96CBC1A3F6A6ED7B4 /* ServerTrustEvaluation.swift */, - 5254AF871AE5D79369426F1E9DFD4BFB /* Session.swift */, - E597FA331BDE835D4356BA91AC2EE05B /* SessionDelegate.swift */, - 6FE1258734CD0D5DE5C0C1545F096DAF /* StringEncoding+Alamofire.swift */, - DF65591BAA77BD5923D4083691EB5F0F /* URLConvertible+URLRequestConvertible.swift */, - 0FE18AD6C78E4D9C1E9EDB83E8763861 /* URLEncodedFormEncoder.swift */, - C4E611CCA47B1AFF3C1E57F8C2965B0C /* URLRequest+Alamofire.swift */, - ABF8C3D769C418801ABB2905159428B8 /* URLSessionConfiguration+Alamofire.swift */, - 383C3B11450462CA845076D5A31455A7 /* Validation.swift */, - 0ACF7A29FEB8DF4457DE6C976823731D /* Support Files */, - ); - path = Alamofire; - sourceTree = ""; - }; - 6BD347D3775B5ECCFFF3B7129D5BF1AE /* Support Files */ = { - isa = PBXGroup; - children = ( - CE1FB66738FC326A45E13D4A2F9039DC /* Reusable.modulemap */, - D205770569FAE2C81B52F154322D2563 /* Reusable-dummy.m */, - 41FE8293A6AF96E011A77F789193CD99 /* Reusable-Info.plist */, - 017CB031F08EF999D20BCEE492444892 /* Reusable-prefix.pch */, - CBFCE48108EA5B7391D309F207FA3E5A /* Reusable-umbrella.h */, - 03B41EBBD593C680744DAD960E245F91 /* Reusable.debug.xcconfig */, - C71988E85D3858110A6CEEF81B0B0CBE /* Reusable.release.xcconfig */, + 35B8EADA92D8CD4783E5912386C4B4CB /* Reusable.modulemap */, + A37057F4C975060277CA62A06928DE06 /* Reusable-dummy.m */, + 04CDBB438938CFA5379E0FFB6BA3077A /* Reusable-Info.plist */, + 64613818A166EF20CF54E805E82F8DF8 /* Reusable-prefix.pch */, + 1C8706A0387AE42502D4E50D02F89863 /* Reusable-umbrella.h */, + FF8C48E3A0A17C9A96AB5EFECAED7A39 /* Reusable.debug.xcconfig */, + 2A99485BC5FEED1E79382726A5659675 /* Reusable.release.xcconfig */, ); name = "Support Files"; path = "../Target Support Files/Reusable"; sourceTree = ""; }; - 6D3627A4475DCC07A111B46FA8742810 /* Support Files */ = { + 17F43588605C3E46CCFE9FE168F17CF6 /* Support Files */ = { isa = PBXGroup; children = ( - B725764E388DB9D2EF9D7D8EA6A0B1D3 /* MBProgressHUD.modulemap */, - C4166DF44E4B7DCF69575608F281517C /* MBProgressHUD-dummy.m */, - 983A6B351A04E8A201ECBA3C765A4B43 /* MBProgressHUD-Info.plist */, - 107549C133EE5267BA358393A90EF059 /* MBProgressHUD-prefix.pch */, - C3ABFDAE24AACD8E1EEE68793DE9803B /* MBProgressHUD-umbrella.h */, - 80E741ED9F7CB291A4CA8068F3FE04F2 /* MBProgressHUD.debug.xcconfig */, - FA92B06C831BE63EC9C993A1217E090D /* MBProgressHUD.release.xcconfig */, - ); - name = "Support Files"; - path = "../Target Support Files/MBProgressHUD"; - sourceTree = ""; - }; - 6F0835F9A2B10364B21DAD66EE1AED12 /* Reusable */ = { - isa = PBXGroup; - children = ( - A6010E4A5136F149C6DDE0539B4C6D95 /* Storyboard */, - 6BD347D3775B5ECCFFF3B7129D5BF1AE /* Support Files */, - B072DDD8A4BB384ABB1652090ADD8257 /* View */, - ); - path = Reusable; - sourceTree = ""; - }; - 84CB1D96BB3C8A96122B486161B750D5 /* Support Files */ = { - isa = PBXGroup; - children = ( - 5264BE1108D40329A508922AD0245365 /* HandyJSON.modulemap */, - 2C97BCD706DEE807EF3868F37A8ECCA1 /* HandyJSON-dummy.m */, - FBA54F39E869CCC3D040A46FA1737ED1 /* HandyJSON-Info.plist */, - 3B6E3E1498C003DB8CBD3643CD2AD2A6 /* HandyJSON-prefix.pch */, - E6EA7642AC0A935140B695C8DE1F91B1 /* HandyJSON-umbrella.h */, - 45E1E6ADB66DF96376E308D63F6B71D8 /* HandyJSON.debug.xcconfig */, - 1A9CF67CD4186CDC93B9439A7C72E036 /* HandyJSON.release.xcconfig */, + 2D36AD72D4DA7BD92924651BBFFFCC9C /* HandyJSON.modulemap */, + 034B622836FB450CF2B24AEE78EDCB81 /* HandyJSON-dummy.m */, + 29FEC47051A8DEA7E3BB9CA030BA6924 /* HandyJSON-Info.plist */, + E2A5E0F3259773A7801D450E0319DA78 /* HandyJSON-prefix.pch */, + 225D675BE9C4CAAA4F998D261FA57EF3 /* HandyJSON-umbrella.h */, + 98221F3A69B48EF2E218B063D7EE6F62 /* HandyJSON.debug.xcconfig */, + 5FFE2F1DD561C0411DE7218D5379A366 /* HandyJSON.release.xcconfig */, ); name = "Support Files"; path = "../Target Support Files/HandyJSON"; sourceTree = ""; }; - 8AACD370BEA282A3E8F4B1A30CBEE7BB /* Kingfisher */ = { + 208D83938308FFB539726DDAF4BDAAC5 /* Targets Support Files */ = { isa = PBXGroup; children = ( - DB2C7BCF3EA896AC2BAD9CAD275BB460 /* AnimatedImageView.swift */, - 7572072A13A12227DE23BD58E99E7B41 /* AuthenticationChallengeResponsable.swift */, - 420DDEA65A2C63C6CA966D994E696D54 /* AVAssetImageDataProvider.swift */, - 1828EE850F0785BEBBEEB6381406536B /* Box.swift */, - 27459C8DF241339CDE5DD49FB1C25C8D /* CacheSerializer.swift */, - 75C831D0F3B6ECF5593AC202900F9B4F /* CallbackQueue.swift */, - C963DD2091D258FD11B459ACF20AF09A /* CPListItem+Kingfisher.swift */, - F9F013D28FC8ECBAF33DF99272DEC729 /* Delegate.swift */, - 8CDAEEA9FC477033FF5344F6CBE85CB2 /* DiskStorage.swift */, - 501CF92DCF5E2F25FE033F445BAA7A3A /* ExtensionHelpers.swift */, - 590615ED68A80BD1EF1DBF8F477F1B12 /* Filter.swift */, - FBDDA0D117F42E4FE226978800527457 /* FormatIndicatedCacheSerializer.swift */, - 9D73294AC7AF8EC9156DBA588DC9CE3D /* GIFAnimatedImage.swift */, - 70B306F880D3FA0554EF152D25916163 /* GraphicsContext.swift */, - 4DB0FE9FA272BBF1E359F79E2FE6B469 /* Image.swift */, - 79AB56ECFE81336CFFB52ADF927D8A7C /* ImageBinder.swift */, - 48252905C19EDB8DCAE2BE4BE7B68A85 /* ImageCache.swift */, - 0F964475871A4284F485DC930EB7FE0D /* ImageContext.swift */, - FB5DD901158FEFCA27ADE24D3A8E12FA /* ImageDataProcessor.swift */, - 005B0AA170372B033FC09D4E58FBAC9A /* ImageDataProvider.swift */, - 3C27EB2E04E045DFB79BE6AAA63A7EA2 /* ImageDownloader.swift */, - A296A412119288A86A5336E1C181E566 /* ImageDownloaderDelegate.swift */, - 91B4895A5E4828D58DFE315830059A72 /* ImageDrawing.swift */, - 7965E10A5058A7FDC743C628B6A209E4 /* ImageFormat.swift */, - DFBC5B2993997B725D364216FE7C3DF6 /* ImageModifier.swift */, - DCD283B934B4346CF12CEB62458A829D /* ImagePrefetcher.swift */, - FE2C700E88155AD2A39178D87B6644F5 /* ImageProcessor.swift */, - F329A03B4D1A8412BFD9F49535A2D291 /* ImageProgressive.swift */, - 2686E2F30E71D302C7EC46BF9AC726BE /* ImageTransition.swift */, - B35DC4FCD2EEF00AF73453F41872FF54 /* ImageView+Kingfisher.swift */, - 31BB5D3806E36F2811C5F7E9C7E0A00B /* Indicator.swift */, - 105DC924B68D07DCCA5F7BBD13103F15 /* KF.swift */, - A3340A012067886751EC877DE2A085FB /* KFAnimatedImage.swift */, - 9BAC09FA3F4AA34E2FD9045902942CE8 /* KFImage.swift */, - BE3D4635725BE29F6866D4B1964447A8 /* KFImageOptions.swift */, - 9DBF24BFBDEDD9C43BB60E43954D93C9 /* KFImageProtocol.swift */, - 11D7747447E5C511F9D8307F10E5168C /* KFImageRenderer.swift */, - C8B66F25D7F18C08892764CAD99E025D /* KFOptionsSetter.swift */, - 6E0F4988883481C19FAFF403697872DD /* Kingfisher.swift */, - CD4F149DBFD18F4A20A4320599D8CC19 /* KingfisherError.swift */, - 0292DCF642DD7EA1D1116B8623A8C599 /* KingfisherManager.swift */, - B43B6B9F0AC1A3B441577C4268863C3B /* KingfisherOptionsInfo.swift */, - 5DE5F4C9535F3ECFDE536AF77F583A78 /* MemoryStorage.swift */, - D93E22C14E699039A509F617FA39695B /* NSButton+Kingfisher.swift */, - F098DF51276D641070E6E01539D4B986 /* NSTextAttachment+Kingfisher.swift */, - 8472FB3724242C375626B5D19B004A36 /* Placeholder.swift */, - 739CDDE742C44BA839AD3DA536BDD57F /* RedirectHandler.swift */, - F9E3641046F777BA820AB2055AA51792 /* RequestModifier.swift */, - 94B8075CA095FDBA9AE87F86A21B0C30 /* Resource.swift */, - 95AF3FFD5DA43879FFD1FEF529C36275 /* Result.swift */, - 553E529F93F751DF0489E958694F11D8 /* RetryStrategy.swift */, - 4A9962A1E3D931E363F3C4D48522361B /* Runtime.swift */, - B2958A0E6033229331C79C4CD02FB145 /* SessionDataTask.swift */, - 5A549727CCD5C1657E53A8BAE5E58145 /* SessionDelegate.swift */, - 840E59B83C8C092BD38138A7D44A473E /* SizeExtensions.swift */, - 1BC8BE591A383FB0802A1161825B227F /* Source.swift */, - 2AE83D49E82297DF5D76F3A85D2DBEF1 /* Storage.swift */, - 0DD70DADAD30E2F4D27E3DD7A1EAC006 /* String+MD5.swift */, - 17D5BC96435F4DD211BCF227E506B92E /* TVMonogramView+Kingfisher.swift */, - A8D08D8E537F6EC253D8EBE79FC6542A /* UIButton+Kingfisher.swift */, - 2AEBE0DF14984ECC53D005ED92A73024 /* WKInterfaceImage+Kingfisher.swift */, - 0F9BCF6B6B1C3846EB3915D29498BD08 /* Resources */, - B94B0C6561164D381BC2F291DAC4F7BA /* Support Files */, + AA82EC4AF35A3C8A786A5503BE530EF2 /* Pods-yinmeng-ios */, ); - path = Kingfisher; + name = "Targets Support Files"; sourceTree = ""; }; - 8C243E4EC8CAF1BD18D04A085617A090 /* RxSwift */ = { + 24A6BC2B61E5CDB353CAB14BBBB935F8 /* Moya */ = { isa = PBXGroup; children = ( - A91E7B0C850AC3EB49D57C2F5AC657BA /* AddRef.swift */, - ED35C12CB343C92F81259E4F33B299B5 /* Amb.swift */, - 30F3EE79D4A82DDA5FBAD0C2C8D6753A /* AnonymousDisposable.swift */, - BBE5FECC28B966616BA85A7C62F7FA40 /* AnonymousObserver.swift */, - 692E3C85CC1223B95D6A9605B661FA68 /* AnyObserver.swift */, - E08F77D6D513C32F418E1FC2AE7AD85A /* AsMaybe.swift */, - 21E4BE15EF64CDD45908BF2A541F2A66 /* AsSingle.swift */, - 5318EE8340C75CB1C311FB0C5C0035CE /* AsyncLock.swift */, - 46CE5C282594AAB0BC74E3DE1A773F2B /* AsyncSubject.swift */, - 0A998D586FC04E7F45D15D9E8E02E70B /* AtomicInt.swift */, - FEDFCFC90E99F4AD01D5647DF4CB5FB4 /* Bag.swift */, - 402F4EF7983996E485AA8AD6E305B46D /* Bag+Rx.swift */, - C689E3BB4983E6D479A62F1211506E90 /* BehaviorSubject.swift */, - 765D531DF5050A417659B07DDB7A51B1 /* BinaryDisposable.swift */, - CF107C4AC5643080B30C4DC1AD3CA088 /* Binder.swift */, - 1E088C67BD72950301BB89F16F31469A /* BooleanDisposable.swift */, - F2D487B9F0F6B5545D5A1715E39B9BCA /* Buffer.swift */, - B0D85CAD20866F6833A22BDA6668ECB1 /* Cancelable.swift */, - 4B40027C27CE4E459A38C1D87C106545 /* Catch.swift */, - 02F4A94A543B7090414D2D11E1C5F3A2 /* CombineLatest.swift */, - DA05AFE5E1E48A41436B4A70147E660C /* CombineLatest+arity.swift */, - 917C955DCF6B29BABB9B623BE0758691 /* CombineLatest+Collection.swift */, - 81B176F830BCA2FC63200329DE776384 /* CompactMap.swift */, - DFDBA24A5039ED5E5456D2E8FC495205 /* Completable.swift */, - A2D58F2F6C7CC4D368CE0D57F40CD27B /* Completable+AndThen.swift */, - 7867FF4FE4FF1D6345613A45E339635D /* CompositeDisposable.swift */, - A54253F4F6876CCFC845DA722D6C8CE8 /* Concat.swift */, - D38B8AB8BAF2B28F16F577931098B969 /* ConcurrentDispatchQueueScheduler.swift */, - 728E3C167CE3ED7F8123F48D5A84771E /* ConcurrentMainScheduler.swift */, - FA5485B4C3E504F337F2AD065ABAEF76 /* ConnectableObservableType.swift */, - 6F85D9716CFD2A169AB2FC3954F8916B /* Create.swift */, - 18C45484AE9F211603671E126686D88F /* CurrentThreadScheduler.swift */, - 5EC0523BF8CA0D3FF2934609B979DBED /* Date+Dispatch.swift */, - 2DAD506D24AC12D48E8C572B4C5B8674 /* Debounce.swift */, - 99155CE8434026F99E70418FAEF41EEA /* Debug.swift */, - 08095C11257E23D25E208304881B3A90 /* Decode.swift */, - C426FFC0480ABDFDDC457EE5FE191E5E /* DefaultIfEmpty.swift */, - AB501C06BD3310ADAA40217FA862D851 /* Deferred.swift */, - 445854BBB677492BEB10430E549CF31D /* Delay.swift */, - 3F6E79FDA2485804EB4B20DAEDA26366 /* DelaySubscription.swift */, - AFF9C7F95915AA09C2220E7711A63B74 /* Dematerialize.swift */, - 0BBE9868390C0ACA219A59A1F61C4F09 /* DispatchQueue+Extensions.swift */, - 3956A13898BA7AE3AD6AED0406907F52 /* DispatchQueueConfiguration.swift */, - 7AD5F75086AF715FAD56BDDA5876EA2B /* Disposable.swift */, - 56D520627040A3B6D58DF009393C985E /* Disposables.swift */, - D5405426B1D820B97554FFA85005A6A7 /* DisposeBag.swift */, - 1CCA1BCCD3C2E9007F3F56C9E8AC6398 /* DisposeBase.swift */, - CFD438AE9A13700F3A27158491EDF9CD /* DistinctUntilChanged.swift */, - AEEBA06C08ECDC8AA5CCA71C013759FA /* Do.swift */, - EC50DBE03FF22FAAF1D4BE41AAFB9A8A /* ElementAt.swift */, - 25CF572152EDEF89E43D914242F08BE0 /* Empty.swift */, - 2A36E5193632E241668CBF9B7B2CB7D5 /* Enumerated.swift */, - 9D5553E70A731CAE3CC0589428DF9FFA /* Error.swift */, - 1E818ED04F94422CB5C8B2554572826C /* Errors.swift */, - 1C7BAB5978403A78EBF174C01FF8C71E /* Event.swift */, - 5C17122D9169B76E0AB08E43B215523C /* Filter.swift */, - ED443DD7A5B81CF799FF1A9B14CA60C8 /* First.swift */, - 591861115B56C34EE893545E4F44ECE0 /* Generate.swift */, - 22B9AC50C1A66CFB12BF81596173CD39 /* GroupBy.swift */, - 8770E250C6062015540FA168FD612B2B /* GroupedObservable.swift */, - 086CC48512270C1C4BB20AE3B7A179F9 /* HistoricalScheduler.swift */, - 913295D3902A731E0FEF7891F2DFFD66 /* HistoricalSchedulerTimeConverter.swift */, - B00EB68258A05718515A533A9F917D11 /* ImmediateSchedulerType.swift */, - A6A3220A212C0BC4ABE0058268E8FAA6 /* Infallible.swift */, - 7D131FE518C0CECBEA619AA8A5490197 /* Infallible+CombineLatest+arity.swift */, - E4AD07036A83707DD229318C03B6CE81 /* Infallible+Concurrency.swift */, - 94CA369E5A9E7E47E7DBCAAD6F63D296 /* Infallible+Create.swift */, - 8FC8131B3030B737FB4BE9DBCBAB4C9E /* Infallible+Operators.swift */, - 960152331447046185D9888B4AED166C /* Infallible+Zip+arity.swift */, - E20F55B135E3C24173DF453318747D59 /* InfiniteSequence.swift */, - 5DC90B70DB4293C27D4B5733F05EC3CC /* InvocableScheduledItem.swift */, - C4E6211C49C3ADB158FA16A1751D5E34 /* InvocableType.swift */, - B4C8D32181C1DD0673EF71FC021C399D /* Just.swift */, - 259AF82D05F6D3AF5D26FB0CCF6354E5 /* Lock.swift */, - FBD96A9F6932FA01432273082AB94D9C /* LockOwnerType.swift */, - 66BCA8A6AE43B359068161172075AD29 /* MainScheduler.swift */, - E4E95E8B077E462C80766715ADCA4CF0 /* Map.swift */, - 75FFF56047C4C60A6E7F1E572172AC93 /* Materialize.swift */, - 6673F5D40ED1C9BF12C1C9864D29C16B /* Maybe.swift */, - F45DCBE864FA17C68B639547AEB93B03 /* Merge.swift */, - AD3FD403D8E30A8001D1F494B36EFA49 /* Multicast.swift */, - 4F5800717EBB5879045C06670DA4C8AC /* Never.swift */, - 5BBD217833E818303FFD2DD7E1DD6817 /* NopDisposable.swift */, - 4529DBA9667227E1B099ADC681AB5850 /* Observable.swift */, - 10DF3559568462A634A6F7EE6FFBCA00 /* Observable+Concurrency.swift */, - A2FB155675AB0F9CD4391CE05510152D /* ObservableConvertibleType.swift */, - 10D600B6F7169DFD7E81912260743F3F /* ObservableConvertibleType+Infallible.swift */, - 82EEBDF2AE2F00B7933D6A5DF8FDF0AD /* ObservableType.swift */, - CD8E57ECFD6B142763B5C63323162920 /* ObservableType+Extensions.swift */, - 36683A54CDD175D2798404369B19387A /* ObservableType+PrimitiveSequence.swift */, - BC12D927E7A7FFE4391A073866062EF0 /* ObserveOn.swift */, - 207583CD61F84971AE55DE2ACF2B29A9 /* ObserverBase.swift */, - 2DAB2159DEB43FA519F6B8254AF5728E /* ObserverType.swift */, - C909B32972D2D22DB9AE521E98C47040 /* OperationQueueScheduler.swift */, - 1517F2B568C0846F286EF269D17902A5 /* Optional.swift */, - FA88BA483915DE8B6B9D5D7B9A4AAE90 /* Platform.Darwin.swift */, - 14F206D32E3EFDDDBDCA5B559448999B /* Platform.Linux.swift */, - 065A74676EEAD75E1F49A21AACEAF349 /* PrimitiveSequence.swift */, - 3AF54C9D06FA26EEFB4A6D8DDB4C6C83 /* PrimitiveSequence+Concurrency.swift */, - FC28EF831FDDD06091CC7AB0416845FC /* PrimitiveSequence+Zip+arity.swift */, - 8DD8CAC74ECCE5DF13BE36C29354F6B3 /* PriorityQueue.swift */, - E1876E647F0F13D8AD9A41FED3B7C6C2 /* Producer.swift */, - 70933FA1D55CE70EA5A4110C98DEC09D /* PublishSubject.swift */, - 94C392D9062D4196B340E6F77067B6F2 /* Queue.swift */, - BF481B014D924D41F0FDE7089D3263B0 /* Range.swift */, - 98358BCC95E6655702825CEE45C0C8FA /* Reactive.swift */, - D88811C8F2904BE3EDD7B26CE505C673 /* RecursiveLock.swift */, - 09071625C0D4ED0715EBF9938CAB0C6B /* RecursiveScheduler.swift */, - C45FE00D96FB11A4BF6998884E30C879 /* Reduce.swift */, - 69C17E66AE494BF8C88740E1EDB36891 /* RefCountDisposable.swift */, - 1E14FBC686914E2AF7C4383BFAA062B5 /* Repeat.swift */, - 9895F4D070396F9D33D6C602E53C0D77 /* ReplaySubject.swift */, - 29305731B01CF8E4A32561061D6EA1AE /* RetryWhen.swift */, - 8C1E768C4764D3F7B03199D967453517 /* Rx.swift */, - DEA1B032D5AF107EC317CDAE847D3CE5 /* RxMutableBox.swift */, - 6BC184BD2886B5395146315871D4F629 /* Sample.swift */, - B3492495BDAA3EE808EBA7E27B444532 /* Scan.swift */, - 42F715AC86D9585FC5BB7F7C07DD7DAC /* ScheduledDisposable.swift */, - ED806FA43E5458BB64EB1B488B5B6772 /* ScheduledItem.swift */, - 92037C313E25E9C5B1ECD6B53CF18C6C /* ScheduledItemType.swift */, - E78DB89A84C09AD3FA55F3FEF697370C /* SchedulerServices+Emulation.swift */, - 69D940AC28230A45C640E32E10438178 /* SchedulerType.swift */, - E68CB21AF7E7B8C4BFF5A00B209D9666 /* Sequence.swift */, - 154835255F9916E0769C0D71A8A3267C /* SerialDispatchQueueScheduler.swift */, - 28E9D0CEE48F6310B3A68093744A1146 /* SerialDisposable.swift */, - 61ADA54F40A6900545707A222D69889B /* ShareReplayScope.swift */, - 4DB8E452090D235990597C3AB1BE8E11 /* Single.swift */, - F3DA46923ADA705C392069960BB60E9A /* SingleAssignmentDisposable.swift */, - 33055FA32252223B1AB3116721D6096B /* SingleAsync.swift */, - D389385F88DD239B71595D6B278BC5EA /* Sink.swift */, - 9D4D5FD14129673A9CDB7002DBABE33E /* Skip.swift */, - D6575A7C92CAA45BC7CAAB15672122A1 /* SkipUntil.swift */, - 4B32547DF2C9A9E64087A593AC3EE911 /* SkipWhile.swift */, - 3602398BB4B83B59240F9614C1DF5EA4 /* StartWith.swift */, - 17D7B878065E9387C23C43CFACC3A867 /* SubjectType.swift */, - 79A0A26C9F36ABCC4EB50D474EC8DA4D /* SubscribeOn.swift */, - 4E71EDCC1B6F580E01E54903C36737EB /* SubscriptionDisposable.swift */, - 239DDF3AEECE822C3281639FD6546369 /* SwiftSupport.swift */, - 0487859709F230146392D21D1B192DC0 /* Switch.swift */, - E83D56D118A8CD729AB9F4DD106214B6 /* SwitchIfEmpty.swift */, - 537DF163C75C79892595630BC3CBA09F /* SynchronizedDisposeType.swift */, - 37706A10928DD59317F2AABB995786F0 /* SynchronizedOnType.swift */, - FA5D56DE5D48CA926F73DF626BACA99D /* SynchronizedUnsubscribeType.swift */, - 64576C6FC886A417A4683A9816DA5D4F /* TailRecursiveSink.swift */, - B2301559B216DC943D96B6C3EA6187EE /* Take.swift */, - 0705C992AE1A7F2F2FF703DD1338C3F7 /* TakeLast.swift */, - 9BF394511EEFCC9854970C278A4EEFAB /* TakeWithPredicate.swift */, - AB1550C20B92B5D8CBB8484C4660BE90 /* Throttle.swift */, - 654DEBE109ACCEE862E7F084EE7ED13C /* Timeout.swift */, - 7C161168F47BE22BA1D8157F0A37F4C2 /* Timer.swift */, - 9FE96E6FECBEF720CD9DD849F12E6D61 /* ToArray.swift */, - 7FA5EF7CC85AF8D7A9C4307E6247274B /* Using.swift */, - 634E359FC76F57C6E032A112422B8130 /* VirtualTimeConverterType.swift */, - DA54EB4CF78AC3516E9E65506DE207FB /* VirtualTimeScheduler.swift */, - D247DB9583EC8A9EA2396FEEE9A0BEBC /* Window.swift */, - A4E676ABA267DB49404DD1A3CCB33F17 /* WithLatestFrom.swift */, - 95509362358E1B4F96EED27DC01B1C24 /* WithUnretained.swift */, - 947FCB4637962EF20818268291E26E85 /* Zip.swift */, - DCE9ED04C9F6410492A87A2B8BC43451 /* Zip+arity.swift */, - CC92DDE2881965C74B23F6A422B435B3 /* Zip+Collection.swift */, - 9D5C3A856749DB28C0E46B808023828B /* Support Files */, + E6D246B5DB2CF168BBE8610284F36560 /* Core */, + 66970F68D1FFC14A1ED93344DE299F4F /* Support Files */, + ); + path = Moya; + sourceTree = ""; + }; + 2BB545742134C3DF95A530E9A627700C /* RxSwift */ = { + isa = PBXGroup; + children = ( + 4BD0F9668F43AD97E6D6BF91D2013874 /* AddRef.swift */, + 3E12B8EDB7687514ED89C97F314FD768 /* Amb.swift */, + 1B564EDE807D5C02DF36179FD4238A80 /* AnonymousDisposable.swift */, + 5282835C10E3DDCB84C4EDCA95B66570 /* AnonymousObserver.swift */, + F1D65E19993C7C2988D59E23E28B379B /* AnyObserver.swift */, + 8EB2629FA6E66B8FF126D13CB6CC5E13 /* AsMaybe.swift */, + 7F5D105DC72F421147B9A9E5B288E0BD /* AsSingle.swift */, + 28B2449937EB3C563C98A2FEB77E44BE /* AsyncLock.swift */, + 7FF069A5D3B7CB96B4779D694ABE8A3C /* AsyncSubject.swift */, + 6EE797428CE69884503CC9018BA7D72D /* AtomicInt.swift */, + C6CD72DF9F93DEE8354B6153B8C32F8C /* Bag.swift */, + 9BA9940CE715B04D7270803925659D6C /* Bag+Rx.swift */, + C839D69F06DDF8DE6308B2D831E7D343 /* BehaviorSubject.swift */, + 6DCD6B017FB84FFE7C3BBA95CBF3BACA /* BinaryDisposable.swift */, + 22646F56965E6A2F3ED913569EB1551B /* Binder.swift */, + 5643C9FE3B2DD478AC0DDC415BA749A3 /* BooleanDisposable.swift */, + 5D3B7BB5854217DBA4EC2E013790589F /* Buffer.swift */, + 972FD799761051BD9F30028901FFE2D9 /* Cancelable.swift */, + 30F4DD17DC3AB94AFDA917627B4F4769 /* Catch.swift */, + 8E1A6B38D65DA7312685F61ED10C9517 /* CombineLatest.swift */, + DE191B418684DC7372DB53B2BC08F17D /* CombineLatest+arity.swift */, + ED67B988502C7AB4929A3C3E6B9420F2 /* CombineLatest+Collection.swift */, + AAEF10F56C27CDD91F1B1C950F8DE09F /* CompactMap.swift */, + 8989281DFD82465C56C11FA4FA6108AD /* Completable.swift */, + 37235A5B924CDEB3D6C61B8124D9D393 /* Completable+AndThen.swift */, + D4F15099DB21F14B9B47C347C2471752 /* CompositeDisposable.swift */, + 2D8E5AF2E1D0B7EF828267B843BF717E /* Concat.swift */, + 3436C8ADCA803A30CBBD89A79C679F35 /* ConcurrentDispatchQueueScheduler.swift */, + B9D5C32CADBAFCD3669A4CA9D7481B93 /* ConcurrentMainScheduler.swift */, + 4967D1F77D7563DAB388410E2B241A4D /* ConnectableObservableType.swift */, + 0A9053A0CF13DED3A71CB28D7D0BFD43 /* Create.swift */, + 4B5BA1D7ED3028BF894494B600B47283 /* CurrentThreadScheduler.swift */, + 5EE2EC59B7C72782EF4B25B534D9BB05 /* Date+Dispatch.swift */, + 46D5EDE888660B65AA60955BE47FF397 /* Debounce.swift */, + C51D1220E0DE4651C911E69AE36EBD61 /* Debug.swift */, + 4854F4F0A5C1E92E33C88AAD6CD40C13 /* Decode.swift */, + DF261538555506668246F4EC68BFA022 /* DefaultIfEmpty.swift */, + 1D63C72EA6032CFEFC949E6E220D2B77 /* Deferred.swift */, + 00DA9C81EB81E19B9D108BF0A4969BE5 /* Delay.swift */, + BED29F4C40D5447CD01F4447AD616AE1 /* DelaySubscription.swift */, + E36E9932F71A7D0C22933E4CAD959B09 /* Dematerialize.swift */, + 8DB159B8B7B0B87A7131D6BAD2807EAA /* DispatchQueue+Extensions.swift */, + F4F4389BBFA828FF969DE3437BD85F07 /* DispatchQueueConfiguration.swift */, + 911E7BDC50FA73E9DCBC1A9621ED9FA0 /* Disposable.swift */, + 0C01DA440B65529FF3B4C97B189FFB2C /* Disposables.swift */, + 157B8B68660A148A589449C9A07DB11D /* DisposeBag.swift */, + ECBA1AF036FE57E1D0C22CFC2D2C9AA1 /* DisposeBase.swift */, + 73A7B013597C0B94813C0F439ADC5DF6 /* DistinctUntilChanged.swift */, + 15253BA385640332852445D8AA76FA5E /* Do.swift */, + FB8B7E1A52CD158EB2B71DBF0F4F751F /* ElementAt.swift */, + 5118C995324C7B3659B66FDA337AB87B /* Empty.swift */, + 6209797288E36610C52D246F4FC4ABBD /* Enumerated.swift */, + EC856F74320EC24B0753D770C502CAD2 /* Error.swift */, + 0AC7740E93EFA65D1A194E2E4DD35984 /* Errors.swift */, + DAA61E9AC252B34578D82C434C038FA9 /* Event.swift */, + 2F90B8FD0550654BC8D540D028C777CD /* Filter.swift */, + 6ED28AA73288F8BA9098167BB3C5DD3E /* First.swift */, + BF57B73019D99E3A7652684FB3EDBEA7 /* Generate.swift */, + 62188E3304690C4357C8C8667E439968 /* GroupBy.swift */, + 068F26D8E6DB6ECB7BA6646333D6EDB8 /* GroupedObservable.swift */, + C07D50DBC240EE3A1E6AB263F208F036 /* HistoricalScheduler.swift */, + 1F5CF1C02486E62B0556A27B747BC446 /* HistoricalSchedulerTimeConverter.swift */, + 7CE9E5DCE2431D9DE32637D771EC8877 /* ImmediateSchedulerType.swift */, + C54A185423B2B26F7B189D29730CAE61 /* Infallible.swift */, + DF4663BDF3FF1BBB328D1386EEA720FB /* Infallible+CombineLatest+arity.swift */, + E756E5BB90F20E7F2836EB665424DED4 /* Infallible+Concurrency.swift */, + CCA9765CD1D8A3679F44C631D5EE14F9 /* Infallible+Create.swift */, + 191F95E8076B377937623541593EC613 /* Infallible+Operators.swift */, + 3DE4961B99785332E30F42CC8EB4E2DC /* Infallible+Zip+arity.swift */, + E6FE525FF43934A9EF0A2F369F4CFAC2 /* InfiniteSequence.swift */, + 77B0CF94E940BAD46A317A234F0BD859 /* InvocableScheduledItem.swift */, + BF2D19394AB19510A2247A7E9082CEEB /* InvocableType.swift */, + 3962E67A06976A66996359C96512F7D7 /* Just.swift */, + DEDF97D3E33EECB364C3BBE1B19AFD9A /* Lock.swift */, + 34EDEA2265558C468F2231C83850DEB7 /* LockOwnerType.swift */, + 62A9F4EB766642D7053E65AF8420D18E /* MainScheduler.swift */, + 178BE4DDDDC57D9E204C896C50DF833F /* Map.swift */, + 939A49D359540D422C2ADD34ECC46BC5 /* Materialize.swift */, + C4A7A8E5BA93425EA472EF38CB4DC88B /* Maybe.swift */, + DC0BF37A545A2FFC2F023A0057EE555B /* Merge.swift */, + 14CE20C13CFA6A48A0A27244C1052417 /* Multicast.swift */, + 6E4BA970B9A3745A3304F463928510E4 /* Never.swift */, + 5BAB1E0566059720BF60AC6E48713559 /* NopDisposable.swift */, + 6E755AE7B4C0AD73F4C39752D2932DAD /* Observable.swift */, + 805828D55129E6EE681F5A33AA93653C /* Observable+Concurrency.swift */, + DF7C9423979FB22EBF915FE0945A632C /* ObservableConvertibleType.swift */, + 74B16913E0CE00E4C26B492DE4863FCB /* ObservableConvertibleType+Infallible.swift */, + 39BA0BA7675D16BA37F824C93FEA6BC9 /* ObservableType.swift */, + D9BB0947A7AE31EA2B8C9D699BCE442E /* ObservableType+Extensions.swift */, + B5F4CE5B1262BF073019ECBF64CC3909 /* ObservableType+PrimitiveSequence.swift */, + 94FB97545AED325C27CE747A88828D80 /* ObserveOn.swift */, + 32FE0D015A342DAAB434FE66B1B7BE80 /* ObserverBase.swift */, + 874B499F55FCB3AEDBC9CAEF1A35C25A /* ObserverType.swift */, + 59D8127EAD2E5B49A393C8B2FBA38256 /* OperationQueueScheduler.swift */, + 5DF8B76B5F07EF21245D918B9B8E2F34 /* Optional.swift */, + 7E1A57DC890CD26CC9D90D8F3EBA9A03 /* Platform.Darwin.swift */, + 146080884BFC8E1B4B8239EDF4466A73 /* Platform.Linux.swift */, + 05B61E58D267CACDD4934BD61AC0B73F /* PrimitiveSequence.swift */, + 5166292190C01036F73A0906BF5FD044 /* PrimitiveSequence+Concurrency.swift */, + 5318A43EFBD28DC81CEED3CDEB871ABF /* PrimitiveSequence+Zip+arity.swift */, + ED28EE01309B97FE2EB665B34E784772 /* PriorityQueue.swift */, + 835A4FE4528BFCB9CD61AC9E4E54C93E /* Producer.swift */, + 2BEDED02E7B40AAB1C0499CE312B9834 /* PublishSubject.swift */, + 461ED89ECEE76824079F017B8BD76777 /* Queue.swift */, + C9EB1448B3BC513A50D0393719C91DB9 /* Range.swift */, + 601D5F306FC97BFA6CC5297D9F072D34 /* Reactive.swift */, + 350EE72F9FF046E0FA79C61626804AF6 /* RecursiveLock.swift */, + 8CAD2D04C99413F3E14E56ABA2A1DFE1 /* RecursiveScheduler.swift */, + 8164ED6B78A39F45495F7E4CCCB38211 /* Reduce.swift */, + 5313AE65D24BCCBB0C1A5D107FDA0320 /* RefCountDisposable.swift */, + DD212364A39920E5CF66E4E7EACD6905 /* Repeat.swift */, + DEC311ABC4CB7755878BF3395D0D038F /* ReplaySubject.swift */, + AF1D5851A5405E9DD424261B945C653B /* RetryWhen.swift */, + AC7551F9169E9552FB27908C117FA8BD /* Rx.swift */, + 032CFC70FF289E344663B4BA3446793E /* RxMutableBox.swift */, + 5F372CC7F486A1303F495BC208499742 /* Sample.swift */, + 35CDF9DC56A581AAF5D46688489C220D /* Scan.swift */, + BD9DA75620D3E2DB804A112BCAA0DBF5 /* ScheduledDisposable.swift */, + AD9DA807844B74F586794E7B3055D8FB /* ScheduledItem.swift */, + C165CAFBC5D2DF632181A1CE3BD9CE40 /* ScheduledItemType.swift */, + E8E36794B98A1B699B24623E054E3FBE /* SchedulerServices+Emulation.swift */, + 0335780FBC4E8A5662B698341536C915 /* SchedulerType.swift */, + 2A83A2BCE506773C11E35D1ED3FFFDA6 /* Sequence.swift */, + A6ABB1D9842860D9D2A8451EFB8A1630 /* SerialDispatchQueueScheduler.swift */, + A64B04E4E10E94CA896446DD8D0B52A7 /* SerialDisposable.swift */, + A061FC60A71A83F6B8FCFFDEDB1E28EF /* ShareReplayScope.swift */, + 934A64AB1E023E9BF70C5E552133EACB /* Single.swift */, + 2EF95160B26D4B42AE93171F97C3A226 /* SingleAssignmentDisposable.swift */, + DC5F4C64EC4980537B042AC46C13A0CA /* SingleAsync.swift */, + 780972FEEFE3D0DFD064811F1A9CB1CE /* Sink.swift */, + F2E087AF46FA61B270B18F5569F1BCF3 /* Skip.swift */, + 9E649BC0C7E070199E068C5A187B882E /* SkipUntil.swift */, + 29739B8669AE8FF9BEC09C7CB39A7342 /* SkipWhile.swift */, + 4AAD522335F458B3E36AB629E5EE5D10 /* StartWith.swift */, + 59D764B99FEF1C8EAB4FAE34D802254E /* SubjectType.swift */, + A36E0AFD9BD64A4CB48DFD2FCC595710 /* SubscribeOn.swift */, + 71C481FAF5CC966B3F886064180B2B77 /* SubscriptionDisposable.swift */, + 779D7401084506CD62E6CAA039E5CA6A /* SwiftSupport.swift */, + 90D162E9EAE135DB021185F702C46E93 /* Switch.swift */, + 8901A1C963EB80D8E32AEF6F15FE5006 /* SwitchIfEmpty.swift */, + 7AAFEC9DFFEE3CC947F622697E73386F /* SynchronizedDisposeType.swift */, + 3F16ACF2D5C26A2D4DE234E6A8C7A48F /* SynchronizedOnType.swift */, + F03BFE5F051F40E0B1BDB61B10301FE0 /* SynchronizedUnsubscribeType.swift */, + 56E4465E500411A8D465BAACA756B3E3 /* TailRecursiveSink.swift */, + A01F17CA57F264DA5CB797C94ECFBFD7 /* Take.swift */, + 9CE1DBCF62BAFD642139E7EB9B585091 /* TakeLast.swift */, + 4B432ADCCF45D2F06C6A44A350B8981F /* TakeWithPredicate.swift */, + 072B55799DE68D25E127A0A4393FD8C2 /* Throttle.swift */, + F78C1E37154D5F6CF70286AE878E31CA /* Timeout.swift */, + 630898B35BC0EFD786106655DE54474E /* Timer.swift */, + 9F9971F0EEDB942DE07E15B2369A9534 /* ToArray.swift */, + 3F0ADD4CACEAF1922058DC8D7BCAF276 /* Using.swift */, + 6EED46321193DAC05CEB1CA4631F93FE /* VirtualTimeConverterType.swift */, + 4C25BE1C4603FAA6BD979DBF725998BD /* VirtualTimeScheduler.swift */, + 0C3F03AF494DD751698B191249F3CC5C /* Window.swift */, + CD81B21F95DE13DB23F7B642F80EAF3D /* WithLatestFrom.swift */, + 6ACFAFC715F32B242C0105DFBD71DCD2 /* WithUnretained.swift */, + 35D18B04304514C01F1A974665923E6F /* Zip.swift */, + FECF71053F4B7A6E457DA1D583768776 /* Zip+arity.swift */, + 226E801C799DBC77E78A7D466C49FA01 /* Zip+Collection.swift */, + A387E362FD949022230D1F749E4BDA90 /* Support Files */, ); path = RxSwift; sourceTree = ""; }; - 9D5C3A856749DB28C0E46B808023828B /* Support Files */ = { + 3A394E18B8F5795277F3E06E5A7A462E /* HandyJSON */ = { isa = PBXGroup; children = ( - 2CB6A627D9F759981FF9B741C57D0E1D /* RxSwift.modulemap */, - A612F6D773EF0336F7EEA1B142F733F1 /* RxSwift-dummy.m */, - 2A1E8C07BD53C5A3B5242F95A74991F9 /* RxSwift-Info.plist */, - 6D060D2BB92C878FBC76760B8F99D911 /* RxSwift-prefix.pch */, - F1A40D020BF4C65249FEA2EDF53B89F5 /* RxSwift-umbrella.h */, - 537B39F9D626350F9BD4A28C6DF455B6 /* RxSwift.debug.xcconfig */, - 19B712EE8F117D2EC35F9A295028959B /* RxSwift.release.xcconfig */, + C49A85743EFF6429C1ABCECA6BE66EAB /* AnyExtensions.swift */, + 3307A3315488FFE0D213C7D5D5293588 /* BuiltInBasicType.swift */, + C83D8C5EA8967529E1C69178F9281437 /* BuiltInBridgeType.swift */, + 8D595EA69AB680F872D031230F31D7A6 /* CBridge.swift */, + FD70F140A41DC88D730A21E3BF31BDFF /* Configuration.swift */, + 18EF92144BBBACCC71547660A1EEC23F /* ContextDescriptorType.swift */, + 0C045BBF13DA4C94B106E8CD4D649379 /* CustomDateFormatTransform.swift */, + C6FFF237D80AA47205BFEF310DE226B0 /* DataTransform.swift */, + 7397385F7C73F2166AA3C6A0ABA53CCE /* DateFormatterTransform.swift */, + 642B59E09CD7D3A50AB30F1DDEE56BBC /* DateTransform.swift */, + A0C2EF509F0F2A4929755C2673CED694 /* Deserializer.swift */, + C6AB98914F4BC90B03288E5B05AB76CB /* EnumTransform.swift */, + FACADE26349CFDD7B90344C5E0DA8149 /* EnumType.swift */, + FD6AC3A8B3333B1457F3E81E148A79D4 /* Export.swift */, + 681A19C67E1B19C527AE3C5E1D817E06 /* ExtendCustomBasicType.swift */, + BE6C54A617FAADE38236FE2D20E7903B /* ExtendCustomModelType.swift */, + 8D005EBBF6DAF0E261F25A203A5C5D53 /* FieldDescriptor.swift */, + 776B96425454A6A164C943EC6F438F82 /* HandyJSON.h */, + BEB85D3B26062C7D22EFC3C18796B7A9 /* HelpingMapper.swift */, + FD72EA464CE8C36C57A0BD6F808CC568 /* HexColorTransform.swift */, + DE5ACE88C667E3B293957A0360342E21 /* ISO8601DateTransform.swift */, + F73807F2EA9D53C1EEBE9F4604500BD0 /* Logger.swift */, + 7F6A38DB775E4F83534083A9B9F3BD0C /* MangledName.swift */, + 11EAD2B482787D72AAE913B5CF8FE61B /* Measuable.swift */, + 288EDCCA5333BD2B7DFC5198A4FED9D6 /* Metadata.swift */, + 72FAC07B56FC988FC0D93ECAB83C6146 /* NSDecimalNumberTransform.swift */, + 73BF117C5FBFC1113209C69DDA0449BF /* OtherExtension.swift */, + 3B892E6E18D0B642C25931CAF766DB42 /* PointerType.swift */, + EA9FC32738C9D5E323D868E7A799826F /* Properties.swift */, + F1B7EEF4A20D9F7AD75570A99658C1F4 /* PropertyInfo.swift */, + 5FDA5E220B7A16114705F3FE95ADEB23 /* ReflectionHelper.swift */, + B2CB77DFD163EB36AFAAB8207182D711 /* Serializer.swift */, + CADF0AF9690433E38BDFDD8EFD54895F /* Transformable.swift */, + C542F39E93EE6DDBE3B1FBC107902524 /* TransformOf.swift */, + E6F928FF402786D74E3A6D837708D4F2 /* TransformType.swift */, + 3396E3FD8A4F78E500752C9FD423D4C4 /* URLTransform.swift */, + 17F43588605C3E46CCFE9FE168F17CF6 /* Support Files */, + ); + path = HandyJSON; + sourceTree = ""; + }; + 45950F98C9DEE187653214D0A6D0EEDC /* Support Files */ = { + isa = PBXGroup; + children = ( + 4D66C4F18801749D7E9995D4285851CE /* DeviceKit.modulemap */, + 07223854880AEC32576775DB6FF2DA1C /* DeviceKit-dummy.m */, + 8C97E5F221CEBF1DDB031DCD1D90DA87 /* DeviceKit-Info.plist */, + 3A469FB2DA7AC0C26B21DF1B0D11A029 /* DeviceKit-prefix.pch */, + C48CD3953729D98D6A5337AF0126DE8B /* DeviceKit-umbrella.h */, + D4CADEC0640302766DA4113ABC5C3A68 /* DeviceKit.debug.xcconfig */, + 5722044EB0ADF40364EA6A1133CECF25 /* DeviceKit.release.xcconfig */, + ); + name = "Support Files"; + path = "../Target Support Files/DeviceKit"; + sourceTree = ""; + }; + 484394A2FF75588AAE62E45545DA3F91 /* Kingfisher */ = { + isa = PBXGroup; + children = ( + 7AF21B896BC4832F54A8C972D0B534AD /* AnimatedImageView.swift */, + 4B36B590364171FD6B554283EEBAFFD7 /* AuthenticationChallengeResponsable.swift */, + 480EDAA6B7D36E9874494B2E6151C5E4 /* AVAssetImageDataProvider.swift */, + 1B44A5BD90DDFAEC2424B393A087DA84 /* Box.swift */, + 14E888C57B32FF17FC055F7CFCE72655 /* CacheSerializer.swift */, + 27F49368F1C164882B86D4FEE7E48F36 /* CallbackQueue.swift */, + 7573B559FCEBCE50DCA43C81890DB9BB /* CPListItem+Kingfisher.swift */, + B6A6A8C6A3B9442B5AE6BBB761E13470 /* Delegate.swift */, + BFD4A32376631D1ABEDEC8C2BD7874CC /* DiskStorage.swift */, + 55A51C4F9C59AECA9A3249965049C715 /* ExtensionHelpers.swift */, + 0EB7321B3C92137653B3779354AB496A /* Filter.swift */, + 2C2707D7BC93E582CF0CEBC96CEFA74A /* FormatIndicatedCacheSerializer.swift */, + FD25B60171608A79B5490000C04B2692 /* GIFAnimatedImage.swift */, + 8CD1B580C9C0101E40FA9EBD90B8AFAD /* GraphicsContext.swift */, + 987ABDCE9F23E9D217AD38F146E4CB10 /* Image.swift */, + F8D3AE3B2E4560C3687781ED7152AB01 /* ImageBinder.swift */, + 671544CE3B7A0B0E19382614F50B6863 /* ImageCache.swift */, + 6E8CC12B38B79125BC51EFC8A9D68C2C /* ImageContext.swift */, + D86CFE6F415E2AB61916500BF1777A86 /* ImageDataProcessor.swift */, + 4E97863139CB6E7C08BDC69AD152C6B0 /* ImageDataProvider.swift */, + 1AC0F530B9698AA71CCB1E40934C472F /* ImageDownloader.swift */, + 2D953A89B8322FDD3E894FC124AD487A /* ImageDownloaderDelegate.swift */, + 32EA191B6F76C10D3E8A94A63DBC6387 /* ImageDrawing.swift */, + 7D1D67589B0014AD72F1E62127786F32 /* ImageFormat.swift */, + 09B232CCEFA17A5D9EB3501E35D94EFE /* ImageModifier.swift */, + FE30AA6CA2D2B70E4F4C11DFD6A41C88 /* ImagePrefetcher.swift */, + F2CC9A7324F90E05437F3130B878E67E /* ImageProcessor.swift */, + 7FBB73CDBFC8CDA1A40ECB0C4AB27841 /* ImageProgressive.swift */, + F22E73020A3A8145E0ADBE0FD72D77A8 /* ImageTransition.swift */, + A0BE6850E95EC6D542C436671F620A95 /* ImageView+Kingfisher.swift */, + E6C5412523E874E9C261AB2262436FF9 /* Indicator.swift */, + 8F00C3B7BB283013813E07EE2B6A61BF /* KF.swift */, + 9766FEB80005F68D2896C349B273959A /* KFAnimatedImage.swift */, + 39F8A591ACEFEAB180B56137DCDCEEE8 /* KFImage.swift */, + 5A75CC3715DB197F7CBFDD57D2727036 /* KFImageOptions.swift */, + CC548D1159236D578360D83A866AB7F8 /* KFImageProtocol.swift */, + F6A2EF3587DCD8E2A3C1D9F246BAD154 /* KFImageRenderer.swift */, + 30CC56020AC14B9B2D0B00A51B6B6F3D /* KFOptionsSetter.swift */, + 072A25A8F051BA7011D988BCB8FAAE2D /* Kingfisher.swift */, + 1FDB6197AB736E1084083F4E493BA2E6 /* KingfisherError.swift */, + E1AB5743647FBCA4208C1A659B52012D /* KingfisherManager.swift */, + 9E20997B42BFF425BE4C6C1490546436 /* KingfisherOptionsInfo.swift */, + E264463631A0AA7ADDAE5D3D0F697763 /* MemoryStorage.swift */, + 08CD0C6D58745B17854A0B374D4B5591 /* NSButton+Kingfisher.swift */, + 6B927F78FBFEF3310D9A4D0AAE0B0848 /* NSTextAttachment+Kingfisher.swift */, + EF0027BBA07105D44F14C69C3E249A16 /* Placeholder.swift */, + 02D807D8CB2F4C889568E7417FBFD65B /* RedirectHandler.swift */, + 6B491B22EBB6C0EEA1AA35668A5B9771 /* RequestModifier.swift */, + 67CE3AEB4FEDAFD9D12E456804298A1B /* Resource.swift */, + F1EDD07C51A918C584FBEA9C681D495D /* Result.swift */, + DC5ACFA51037D91CC52CC7F6938DBFF2 /* RetryStrategy.swift */, + 54C1F34CF6E3BFA0DE23BE942DC3EAEA /* Runtime.swift */, + 867F7AC7C1DAA6563D03B85F8792F0D2 /* SessionDataTask.swift */, + FD3CD2B6C6794094723AB8AD96C5A568 /* SessionDelegate.swift */, + BC481A53F6E3B805C15CDF42E9CD6584 /* SizeExtensions.swift */, + 1BC1EF2589F486F510B047DF00284303 /* Source.swift */, + BBF764008D8A3E76E30BEBB9F91CA836 /* Storage.swift */, + 8589BE6AA1C030E2B416E7D7567ACDDD /* String+MD5.swift */, + 955D722D26AFAB40DDD143D1AEC241FB /* TVMonogramView+Kingfisher.swift */, + D50C4D2C19EF6C50713D221D0F66F8D6 /* UIButton+Kingfisher.swift */, + 1439B673FB05A03E7B7E02DFD72E71D0 /* WKInterfaceImage+Kingfisher.swift */, + B99729686E0C72E577051E6BEB00994C /* Resources */, + 6E2634417ACC787D2F04748EC178C0AB /* Support Files */, + ); + path = Kingfisher; + sourceTree = ""; + }; + 63A9A44658A195291089417E0C1DE14D /* View */ = { + isa = PBXGroup; + children = ( + DCF6A3A628FF5CB4FBFDA361BC29932A /* NibLoadable.swift */, + 5F832058F5630D3E59B91B26C91602B9 /* NibOwnerLoadable.swift */, + BE63071AED4B1A38AA47DA74EA879436 /* Reusable.swift */, + D690DCA319DFA6651B299C6B5817F9B8 /* UICollectionView+Reusable.swift */, + 591AB8C5450EE6C0C636F79E16A7EDBA /* UITableView+Reusable.swift */, + ); + name = View; + sourceTree = ""; + }; + 66970F68D1FFC14A1ED93344DE299F4F /* Support Files */ = { + isa = PBXGroup; + children = ( + CDBAB1F0679E368DFDD19F9545B77090 /* Moya.modulemap */, + 80F3E3063C287702E72AA4964AEC41DD /* Moya-dummy.m */, + 5164F785056F2EC3F1618F455171885F /* Moya-Info.plist */, + 1C20BB3F8A81AADCB7032E16A40B7C22 /* Moya-prefix.pch */, + 522ADF4C87AB47378E5E7A5BBE7A5A06 /* Moya-umbrella.h */, + 7206976A160531142A0120F2BFD3B782 /* Moya.debug.xcconfig */, + DE2376CD620ED6EF2597200BE22E70EF /* Moya.release.xcconfig */, + ); + name = "Support Files"; + path = "../Target Support Files/Moya"; + sourceTree = ""; + }; + 688B26E17B8B669A92F0384B8E110913 /* Reusable */ = { + isa = PBXGroup; + children = ( + D3AD39510D997B580ED383C1DCF55DBB /* Storyboard */, + 16F196A72FF44DD80DEF33E372BF1517 /* Support Files */, + 63A9A44658A195291089417E0C1DE14D /* View */, + ); + path = Reusable; + sourceTree = ""; + }; + 6E2634417ACC787D2F04748EC178C0AB /* Support Files */ = { + isa = PBXGroup; + children = ( + B1B9D1AC9BF3E13436BA5E43600B9BA5 /* Kingfisher.modulemap */, + C14D52C61907DC105B61762C9E936A8E /* Kingfisher-dummy.m */, + 0167E4EE6973882C4A08152842368D65 /* Kingfisher-Info.plist */, + 0A043445AC27DA4DC50ED867E3650165 /* Kingfisher-prefix.pch */, + 1E03F6DB166ADA29B61BC0A7F8CC0D9A /* Kingfisher-umbrella.h */, + FEA4904DACA1746B0F30B6E97B6BAF9A /* Kingfisher.debug.xcconfig */, + 92C2FB4372B817EAF1113F1ACB67709D /* Kingfisher.release.xcconfig */, + 2BFAB529B49C127A77EF4F956E246CF6 /* ResourceBundle-Kingfisher-Kingfisher-Info.plist */, + ); + name = "Support Files"; + path = "../Target Support Files/Kingfisher"; + sourceTree = ""; + }; + 9421A428C46D4C85138F06A0574C5156 /* Support Files */ = { + isa = PBXGroup; + children = ( + 0B09A6C2B029E2E6A793FDA312313D67 /* RxRelay.modulemap */, + E03CA372E000764E088E683B7E007A35 /* RxRelay-dummy.m */, + 1E63F7B2B97D0E8F974F7B516831CF04 /* RxRelay-Info.plist */, + 51A46EAF7F0B2189DCBD9F0F6421E082 /* RxRelay-prefix.pch */, + 89D4F99A22F01FEA581AD3378FB79C2B /* RxRelay-umbrella.h */, + 80DADA2BBF563E1B822E3B3FF52DBADF /* RxRelay.debug.xcconfig */, + 08FC94C88B8CC56DBFE85B65C6478B2A /* RxRelay.release.xcconfig */, + ); + name = "Support Files"; + path = "../Target Support Files/RxRelay"; + sourceTree = ""; + }; + 9C401DC67510CBACC3F18ACE1C423024 /* MBProgressHUD */ = { + isa = PBXGroup; + children = ( + 06DFC1DD89D70D6B98C5BC9EC418AA53 /* MBProgressHUD.h */, + 1F2C897C4143997BE62B53F6B4535DA9 /* MBProgressHUD.m */, + A0DC17A37840424649380AEF6E19DC3D /* Support Files */, + ); + path = MBProgressHUD; + sourceTree = ""; + }; + A0DC17A37840424649380AEF6E19DC3D /* Support Files */ = { + isa = PBXGroup; + children = ( + 6A71A958C1A2EEE40616625F416BCAD0 /* MBProgressHUD.modulemap */, + C2751DE6799286E9880D9D4EF188BB67 /* MBProgressHUD-dummy.m */, + FBD7C0610C2D316D26B21D2B7ECE7324 /* MBProgressHUD-Info.plist */, + A84A99413C446FE71FC039E3291A9FE1 /* MBProgressHUD-prefix.pch */, + 05A9AE844A45DE0A673C91E7E9DED633 /* MBProgressHUD-umbrella.h */, + 790336EDB50A860403CE3AA08BDC2943 /* MBProgressHUD.debug.xcconfig */, + 3C1A2B0C590F3A8B6CB87FAEA993A0DA /* MBProgressHUD.release.xcconfig */, + ); + name = "Support Files"; + path = "../Target Support Files/MBProgressHUD"; + sourceTree = ""; + }; + A2664A44793CFD716F67FBDFEA2CA0CD /* Pods */ = { + isa = PBXGroup; + children = ( + C62A3B792D0EAEBFE9F3F4BAC4828F75 /* Alamofire */, + DAE6D6289D027CA75B3B64E36E2FC7D3 /* DeviceKit */, + 3A394E18B8F5795277F3E06E5A7A462E /* HandyJSON */, + 484394A2FF75588AAE62E45545DA3F91 /* Kingfisher */, + 9C401DC67510CBACC3F18ACE1C423024 /* MBProgressHUD */, + 24A6BC2B61E5CDB353CAB14BBBB935F8 /* Moya */, + F8CE3FCAB825E53BD7490991C288FE55 /* NSObject+Rx */, + 688B26E17B8B669A92F0384B8E110913 /* Reusable */, + 0BFE105642232D1E56190DAF29FAF945 /* RxCocoa */, + B48303EB6DF35242A5CEBC75454E84F4 /* RxRelay */, + 2BB545742134C3DF95A530E9A627700C /* RxSwift */, + 08DE95AD4F9C469D3178D4CF67CC86F6 /* SnapKit */, + ); + name = Pods; + sourceTree = ""; + }; + A387E362FD949022230D1F749E4BDA90 /* Support Files */ = { + isa = PBXGroup; + children = ( + 724FA757D3BA554538B8410F9B8901D2 /* RxSwift.modulemap */, + C2BEF4114836F577C9696EBEDE2A19AF /* RxSwift-dummy.m */, + E830424E3DC3D56DBC832F937673750D /* RxSwift-Info.plist */, + 13B433151A352866F20C6FFB9E7EC250 /* RxSwift-prefix.pch */, + 8474DE367C89B9185450078267D7A6F9 /* RxSwift-umbrella.h */, + 137B4C7C2E94357736C830A5EA42777C /* RxSwift.debug.xcconfig */, + 88FF4B6EC04BE78FC9F26E9CBE1D7696 /* RxSwift.release.xcconfig */, ); name = "Support Files"; path = "../Target Support Files/RxSwift"; sourceTree = ""; }; - A6010E4A5136F149C6DDE0539B4C6D95 /* Storyboard */ = { - isa = PBXGroup; - children = ( - 0F2F174FA9B884D41464BD84265273E9 /* StoryboardBased.swift */, - AB91063BFA0B85155CE39C26F80044C5 /* StoryboardSceneBased.swift */, - ); - name = Storyboard; - sourceTree = ""; - }; AA82EC4AF35A3C8A786A5503BE530EF2 /* Pods-yinmeng-ios */ = { isa = PBXGroup; children = ( @@ -1913,86 +2061,100 @@ path = "Target Support Files/Pods-yinmeng-ios"; sourceTree = ""; }; - B072DDD8A4BB384ABB1652090ADD8257 /* View */ = { + B48303EB6DF35242A5CEBC75454E84F4 /* RxRelay */ = { isa = PBXGroup; children = ( - 2B48BE2A6404DB81C7324A3CE9177FCA /* NibLoadable.swift */, - 0A4ABF00795A4D24AA39AE0648DAAFF8 /* NibOwnerLoadable.swift */, - 0D924D0F2142E1C7FED799E98F5B5A2C /* Reusable.swift */, - 016AA1ECBFE5BEF6D881059F1B2DD9BC /* UICollectionView+Reusable.swift */, - 95F799040C1A70E136CAE7A41476545C /* UITableView+Reusable.swift */, + 0C6F2AF7CD8F66870099308891009AF6 /* BehaviorRelay.swift */, + A1E89445717405534EAFD75E7A0F6227 /* Observable+Bind.swift */, + 04971EB91A18482322553B45F6D1064A /* PublishRelay.swift */, + CBF3537D66ECCB1FE5D0D12E2A357AE6 /* ReplayRelay.swift */, + AC486D0BBA80C60E2C371E8881B1EFB2 /* Utils.swift */, + 9421A428C46D4C85138F06A0574C5156 /* Support Files */, ); - name = View; + path = RxRelay; sourceTree = ""; }; - B94B0C6561164D381BC2F291DAC4F7BA /* Support Files */ = { + B99729686E0C72E577051E6BEB00994C /* Resources */ = { isa = PBXGroup; children = ( - 3DF97E8D675384337BA22ED93D008910 /* Kingfisher.modulemap */, - B4FAC3BE27572FE3185D20211224395A /* Kingfisher-dummy.m */, - EB54968F135513C686F7D4461CD71248 /* Kingfisher-Info.plist */, - 20B0FF4D5789DB2CC388939C196538A9 /* Kingfisher-prefix.pch */, - 4FE70A655C85EA7C91C24E5B3457D9B0 /* Kingfisher-umbrella.h */, - 43A9212FF806B13E885C7019E059D160 /* Kingfisher.debug.xcconfig */, - 93BD071E578B69235CCADBFBE9FBAA1B /* Kingfisher.release.xcconfig */, - 924E596CD9FDC9E228B02FD51DF48901 /* ResourceBundle-Kingfisher-Kingfisher-Info.plist */, + 88BF5A084E87427DB713808039C3B9E9 /* PrivacyInfo.xcprivacy */, + ); + name = Resources; + sourceTree = ""; + }; + BE3F123DA92D366C250DA81350CE675E /* Support Files */ = { + isa = PBXGroup; + children = ( + D9117E1056E8FA02344165D342F67E0E /* RxCocoa.modulemap */, + AEAEA19B2035FF2AEA8C702327CA5B8B /* RxCocoa-dummy.m */, + 4ECD015D1E33C0A413C1B58BE7CB5AD9 /* RxCocoa-Info.plist */, + 98B8B8624E03D27789C636552D51CAD6 /* RxCocoa-prefix.pch */, + A5E7D5360870AF5832E1F0DDB5F2CC4C /* RxCocoa-umbrella.h */, + 61EE19649DF15827C56F2A3B6E50320E /* RxCocoa.debug.xcconfig */, + E9DA779F73802F9220D73CCF52B57652 /* RxCocoa.release.xcconfig */, ); name = "Support Files"; - path = "../Target Support Files/Kingfisher"; + path = "../Target Support Files/RxCocoa"; sourceTree = ""; }; - BDB006AD0630C93386D9F397A4A6E3E8 /* SnapKit */ = { + C170508EE8F164074492E3EC128B46B8 /* Support Files */ = { isa = PBXGroup; children = ( - 8FF51600836B6E9C1393D1B32AE0409F /* Constraint.swift */, - 8B3F60740202D2919EAB02088A75C6DE /* ConstraintAttributes.swift */, - D6D6C3517EAD559475BB89B3A07F826D /* ConstraintConfig.swift */, - E7B65070F724AC357CCEA7DBCA350373 /* ConstraintConstantTarget.swift */, - 64F516F56589A2470DFA0E30E85DBB80 /* ConstraintDescription.swift */, - 8A18BCB5C7FD8D506C4D66B8A1BE5B63 /* ConstraintDirectionalInsets.swift */, - CBB2733EB8602C8BA1DE249204349BBB /* ConstraintDirectionalInsetTarget.swift */, - B90F3E609D4D31B9CE6BA0937072B8DB /* ConstraintDSL.swift */, - EE92ADF7F5D694CD90670878273D0E22 /* ConstraintInsets.swift */, - 45FEC9077C3B5C14B02AB4E46F22E157 /* ConstraintInsetTarget.swift */, - FE77747AB7C6876DC80B43C5DCE4ABF0 /* ConstraintItem.swift */, - 594A5F9AE55C8EAD11AFE74EE0DAC3C7 /* ConstraintLayoutGuide.swift */, - 96EB1FBABEA3906F0EF58EE47E45A83B /* ConstraintLayoutGuide+Extensions.swift */, - 6EBE2A5988B01C477AFF1CE3128EE8AF /* ConstraintLayoutGuideDSL.swift */, - E60F8ED3C26A4DFE0400C21FB2BE072B /* ConstraintLayoutSupport.swift */, - D9278F439B7C4235C53C200B17F84E46 /* ConstraintLayoutSupportDSL.swift */, - A35CA8960849EFAC715838CF15CFD05D /* ConstraintMaker.swift */, - AA4C20251B8F62BF6DC2548854609658 /* ConstraintMakerEditable.swift */, - 7CDE2F9CE2B04EA6687EE664E9B1F447 /* ConstraintMakerExtendable.swift */, - 0E6A6730169419E002FF07C1AE880F77 /* ConstraintMakerFinalizable.swift */, - E0231B13AFD942D7715BD4A70ABFE808 /* ConstraintMakerPrioritizable.swift */, - 32639E8193F95CA5F554F746CA3F05AD /* ConstraintMakerRelatable.swift */, - 763C57CB99AAF692D5804D56D94FE7EA /* ConstraintMakerRelatable+Extensions.swift */, - ADE256164152BE966B102C5F104FC06F /* ConstraintMultiplierTarget.swift */, - 1DCDE799B9543F90237D7DA862252A2B /* ConstraintOffsetTarget.swift */, - 834ED77A734859A8A9236980263E4AF4 /* ConstraintPriority.swift */, - A52935DC312F87728290A3ACA2167BCD /* ConstraintPriorityTarget.swift */, - C019E68F4B2DE55C5FD2493950035664 /* ConstraintRelatableTarget.swift */, - F52EC1967CD22048EB37327070C47EB5 /* ConstraintRelation.swift */, - 0D0D830BAD1F66163C68EB9A1BA9E147 /* ConstraintView.swift */, - FAC78FA49D7FB72A1D9081306F499298 /* ConstraintView+Extensions.swift */, - D5773666DA885BF217F31523BE08FD6B /* ConstraintViewDSL.swift */, - 8CDDAB158F06801DD368BFA93A07800C /* Debugging.swift */, - A6785DD60F3F01E17A54F423E8397E23 /* LayoutConstraint.swift */, - 97360AE19AF07AC87B391E1E0C708F18 /* LayoutConstraintItem.swift */, - 1EF2CDD729DADF5969E617BB9AD37B87 /* Typealiases.swift */, - EF820E238AB6C626388D71E7F83DD362 /* UILayoutSupport+Extensions.swift */, - 087868B262FF2BC66129825C09A683E4 /* Support Files */, + E37A1E2D1F9EC555E135331F35DF60C8 /* Alamofire.modulemap */, + A96F16021B0B89B248F45B690FEBCD25 /* Alamofire-dummy.m */, + 1D44E2D2057CC1A6FD79DFA84C35418E /* Alamofire-Info.plist */, + B73370718B535EFB49A01C7D71335EA2 /* Alamofire-prefix.pch */, + 732D486F61D057118E87EF7400F484A8 /* Alamofire-umbrella.h */, + CCF002BE9BFC08B04EDB88C1BED7F8A5 /* Alamofire.debug.xcconfig */, + 9B56AA75BDFFAA97675054E142082543 /* Alamofire.release.xcconfig */, ); - path = SnapKit; + name = "Support Files"; + path = "../Target Support Files/Alamofire"; sourceTree = ""; }; - C08390ED8A4F067D1F1476DD6F94AEFD /* Moya */ = { + C62A3B792D0EAEBFE9F3F4BAC4828F75 /* Alamofire */ = { isa = PBXGroup; children = ( - 4B1B230A86A5086852705822097E9BDB /* Core */, - E07F044EFF8C1A668518642530859393 /* Support Files */, + EC98215DC0A2719779B6D65EC9309229 /* AFError.swift */, + 63B22F3856B36B6A2522DB57EACF0E7E /* Alamofire.swift */, + 72C1719832669826CE6B99D14E500D80 /* AlamofireExtended.swift */, + B0F0ACB33CAE3E77698A74CDCCF8550B /* AuthenticationInterceptor.swift */, + 8A4DEABC70F31A0D700E8537EED75EBE /* CachedResponseHandler.swift */, + D2EC26F92526046B9B561F9EA9C8D99E /* Combine.swift */, + 0F3660AA3ED8785C700E05C1D4CB48A0 /* Concurrency.swift */, + 378E73C013F3E7A63685D3EC6675D746 /* DispatchQueue+Alamofire.swift */, + 05448EE1CD5430DBD9EE0F232E4FF340 /* EventMonitor.swift */, + AF43BC6419835F3B61D40D5841A3D2D0 /* HTTPHeaders.swift */, + 0831AAE60460A0112B7E7B06862B6848 /* HTTPMethod.swift */, + 67C1A304B2A6499FF25762F1D9A8C934 /* MultipartFormData.swift */, + 126BBAC0881E93CE9DD61E7ACE696606 /* MultipartUpload.swift */, + 2567962E6EC96FE05567738B6C23F98B /* NetworkReachabilityManager.swift */, + 54779717E744F4352FECD7330BA2BC68 /* Notifications.swift */, + 6CCFA1427BCBC6BEF685E59C2D078B50 /* OperationQueue+Alamofire.swift */, + 397DE032C55F073078554C6ED3C13C5A /* ParameterEncoder.swift */, + FA1F46C8FE73CA33109112241DFE48AF /* ParameterEncoding.swift */, + 59996E127C2E58DBD70CA09D746BD419 /* Protected.swift */, + 52695BEF29103B49AFA3E6D07B5DA251 /* RedirectHandler.swift */, + A550C82E21F465F618D4420E0F2846CA /* Request.swift */, + D6AFD2107F53E376519440BC6D6851A2 /* RequestCompression.swift */, + F38946B4AF556B4C5DFAFD2DB7F00F05 /* RequestInterceptor.swift */, + 58903B90368CCFA6AD11E2E645067FFD /* RequestTaskMap.swift */, + 660B4328CA8A8264DAA2836298C6176F /* Response.swift */, + 1D2EDB69BD3AF777FC271C11BC562F89 /* ResponseSerialization.swift */, + 7B1C97EF32D83A495E3E919A226AAD9D /* Result+Alamofire.swift */, + B7ED0AD4DB118F9A11F8A022912A2C7B /* RetryPolicy.swift */, + 854DA502ABB6C02A98EE3953D927CBAF /* ServerTrustEvaluation.swift */, + 949EBF7C76A9DAF117E0718527067B58 /* Session.swift */, + 828BD95CDE14B27EF56148093FBD73F9 /* SessionDelegate.swift */, + 7500E1DE13C315DD31BC983DB3B142EB /* StringEncoding+Alamofire.swift */, + 6530C2CD3AD635B5D4BCF2F2F67E5C71 /* URLConvertible+URLRequestConvertible.swift */, + 7526F142BBD6241D71384330007F463C /* URLEncodedFormEncoder.swift */, + CAF91C57750D831CDD907982A98F83C6 /* URLRequest+Alamofire.swift */, + 4AC772523424F6E978DBA32038CFABCB /* URLSessionConfiguration+Alamofire.swift */, + 29A78EC7F575296035EE55CC0ABA362A /* Validation.swift */, + C170508EE8F164074492E3EC128B46B8 /* Support Files */, ); - path = Moya; + path = Alamofire; sourceTree = ""; }; CD7CD1D695F30348342B62DC3DAD63F0 /* iOS */ = { @@ -2013,12 +2175,21 @@ children = ( 9D940727FF8FB9C785EB98E56350EF41 /* Podfile */, D68CA58901FBF589D75F5E40F1EAF5BA /* Frameworks */, - 3FB04A789BFFEAF480028A2C5599933C /* Pods */, - 4ACE8263887E88BE1B13DCD869DFFCAF /* Products */, + A2664A44793CFD716F67FBDFEA2CA0CD /* Pods */, + 08F310D7489D1EBC9403C00B094A10ED /* Products */, 208D83938308FFB539726DDAF4BDAAC5 /* Targets Support Files */, ); sourceTree = ""; }; + D3AD39510D997B580ED383C1DCF55DBB /* Storyboard */ = { + isa = PBXGroup; + children = ( + EA8432760419A0907C9472A6D4440832 /* StoryboardBased.swift */, + EC5E75D1658C650BA87C811D7CD7156D /* StoryboardSceneBased.swift */, + ); + name = Storyboard; + sourceTree = ""; + }; D68CA58901FBF589D75F5E40F1EAF5BA /* Frameworks */ = { isa = PBXGroup; children = ( @@ -2027,137 +2198,84 @@ name = Frameworks; sourceTree = ""; }; - E07F044EFF8C1A668518642530859393 /* Support Files */ = { + DAE6D6289D027CA75B3B64E36E2FC7D3 /* DeviceKit */ = { isa = PBXGroup; children = ( - 57C844D869CA97E3BCD995BAE39B0811 /* Moya.modulemap */, - 2CCCFEF676D5297ACAAB23C1A5CB7CAE /* Moya-dummy.m */, - 43090D0C397209BB21ADF13605474623 /* Moya-Info.plist */, - 013009926D6AF27C596929D48AB266B6 /* Moya-prefix.pch */, - 126D7923B95B1B893763329F065ECC1C /* Moya-umbrella.h */, - E743F2C861099DDED46F43D21958AD4E /* Moya.debug.xcconfig */, - 649D2F79A4B50006D2A9D93E21022944 /* Moya.release.xcconfig */, + 28863D8DFB04B5977BD55BDFFE26E6A8 /* Device.generated.swift */, + 45950F98C9DEE187653214D0A6D0EEDC /* Support Files */, ); - name = "Support Files"; - path = "../Target Support Files/Moya"; + path = DeviceKit; sourceTree = ""; }; - E82B7085CA7098C59B6758A4756704C2 /* RxCocoa */ = { + E6D246B5DB2CF168BBE8610284F36560 /* Core */ = { isa = PBXGroup; children = ( - 71A22E298D1E26A25192B7D79CB9C7BE /* _RX.h */, - 0D5B6D4F9F8CF76D040623D82B12D15E /* _RX.m */, - AAC31C95D09575257C31EB192272C7C2 /* _RXDelegateProxy.h */, - CF309802F2CAB75940F49AD77E8DFA05 /* _RXDelegateProxy.m */, - 720BE3DE6F24DCF57D71D73928C99C2B /* _RXKVOObserver.h */, - 3B45D252945E879A3B88C8989E5C2CC6 /* _RXKVOObserver.m */, - 35651FD3900CCCFFCDA6DD8ECE470B93 /* _RXObjCRuntime.h */, - A208FBE87421B2ABC0142F6A07D0B553 /* _RXObjCRuntime.m */, - DDB4D4AEF2A47181ABD692BE53C6DF1A /* Bag.swift */, - 48BEA0546BD26740F65A619717216925 /* BehaviorRelay+Driver.swift */, - 9541ABA1A2C54DE7EED55370247C46AA /* ControlEvent.swift */, - 97E745BB2E59AE041727B826B1E61BBB /* ControlEvent+Driver.swift */, - 9A2C43D00EDD3B8E5B6D1AC17B1E48E1 /* ControlEvent+Signal.swift */, - 588185259F665B2270B61BC5EEEDB105 /* ControlProperty.swift */, - F7B5707C4DB109E219C5031257DCD1F3 /* ControlProperty+Driver.swift */, - EF5F5DC6C61E0C786AA3BA02874662A1 /* ControlTarget.swift */, - 33B4FAC947A0378CAAD60F6A6B4DBCC6 /* DelegateProxy.swift */, - 544D687E21BDD58B48D554A5709A7901 /* DelegateProxyType.swift */, - 24119F92E2DB0B0C6650DEA1131020F3 /* DispatchQueue+Extensions.swift */, - E02AEC6F043CC7E4CACFA5D1EFD6EB27 /* Driver.swift */, - 19B406112800825F5B01A0BBED47F0BE /* Driver+Subscription.swift */, - 394A07B9CD7A0E87C54639C7326B5B28 /* Infallible+Bind.swift */, - DEBFD271D48A85EF07F3B6731D534416 /* InfiniteSequence.swift */, - DFCC95E9F5590674CB559C0596A2DC4A /* ItemEvents.swift */, - E8A3665F113C176C699C4A60D6739452 /* KVORepresentable.swift */, - 8D0507B1E2AB4B8A447354D000FEF414 /* KVORepresentable+CoreGraphics.swift */, - 7B953B1CDFABA00A04E6AC9124999CF9 /* KVORepresentable+Swift.swift */, - C1706327EA78CAEFF1336CC5568AD36C /* NotificationCenter+Rx.swift */, - AC6F737678C4E112EBB6476E99F02B44 /* NSButton+Rx.swift */, - DCEC2DBF8E26969A4BB2B54F2B1EA8A7 /* NSControl+Rx.swift */, - 64FA3F6B350E532395A97AB96530BE97 /* NSObject+Rx.swift */, - D05C01883F0A989F4169EA75A319E4CE /* NSObject+Rx+KVORepresentable.swift */, - E8FC0222908D1595E407695DD27A15FB /* NSObject+Rx+RawRepresentable.swift */, - 7B6C73A34CCB4FCB54A17345BD0051FC /* NSSlider+Rx.swift */, - F3EF76F454F323E3B71A0221AFFC8238 /* NSTextField+Rx.swift */, - 932FF7024616D8D82633AB22546C7DC0 /* NSTextStorage+Rx.swift */, - 0CA26D23785504CD85C0BA05F5263AB7 /* NSTextView+Rx.swift */, - FE06975BE3E77F3DFD642DD868FE617D /* NSView+Rx.swift */, - 645BF6563AFCDBF6A94CF2E1A387FA8C /* Observable+Bind.swift */, - EFC734B57692B8F617FD03908D932F63 /* ObservableConvertibleType+Driver.swift */, - F035F0F1D2D858918B6C937E1F71A98E /* ObservableConvertibleType+SharedSequence.swift */, - EFD03F6EF61FF91A6224DD8CF8BF2FCE /* ObservableConvertibleType+Signal.swift */, - A69562BE3DD6D05DD80BAD1460F44C4C /* Platform.Darwin.swift */, - 06FAB48DA0C18A3EE1754D953DB58E96 /* Platform.Linux.swift */, - C33F711F76B40DF65DA404994ED241BA /* PriorityQueue.swift */, - A124A76CB3B2F5D7198358B2E123B564 /* PublishRelay+Signal.swift */, - 29CBD6F8B67F5629CFB1D1326F23E28A /* Queue.swift */, - FBD270BC6C902DDBA8971425BF78B4A3 /* RecursiveLock.swift */, - 057D6C489248FFA4166DD24D93435763 /* RxCocoa.h */, - 326857EAC596FAC2DD9D5071A5B96D15 /* RxCocoa.swift */, - A4DBD0A365804120DBE621B87A954E25 /* RxCocoaObjCRuntimeError+Extensions.swift */, - A69D2E9F349C5F6AC3EC7F70DB0CCFDD /* RxCocoaRuntime.h */, - 8D02F219043B80DB62FA686E85C09B35 /* RxCollectionViewDataSourcePrefetchingProxy.swift */, - 42D446B359AD540FA2AEFD87D7ABE15C /* RxCollectionViewDataSourceProxy.swift */, - 8898277C74B39B8C2709D3BDFF6C793E /* RxCollectionViewDataSourceType.swift */, - 90028E4B472E1FCD0B7A391D37BC0C80 /* RxCollectionViewDelegateProxy.swift */, - E52F3E93B1A3D47F523D83D8473237C0 /* RxCollectionViewReactiveArrayDataSource.swift */, - 304C3471BD45700A1BFEFC1877E24B5A /* RxNavigationControllerDelegateProxy.swift */, - 2E6CA143EB6F64C9E9AD81EF8A9D3820 /* RxPickerViewAdapter.swift */, - E3F3D140901AD39649AC074216CAC836 /* RxPickerViewDataSourceProxy.swift */, - DF2E2C729461BB0F5D730E63F64A5F23 /* RxPickerViewDataSourceType.swift */, - B4F8C603320BB82716CEBA31405BB25A /* RxPickerViewDelegateProxy.swift */, - 165629B479649391782C794AE7C8E435 /* RxScrollViewDelegateProxy.swift */, - 3F5105C63B26C8CD36ECD3E4D25A4DFC /* RxSearchBarDelegateProxy.swift */, - 192C6CC3B7F6F517C4D157448480ECF7 /* RxSearchControllerDelegateProxy.swift */, - 881FD56231A6918A0EAD0806FB1D9A18 /* RxTabBarControllerDelegateProxy.swift */, - 74F603E9DCC9F74E70AC2EEF9A832481 /* RxTabBarDelegateProxy.swift */, - 1FCF2D3324E392803C9EFBB38E7A9ABA /* RxTableViewDataSourcePrefetchingProxy.swift */, - 67C143D7E7508931CFD2E2398C7BA9F0 /* RxTableViewDataSourceProxy.swift */, - 26A2F37034623F4E9BF155F2042659EF /* RxTableViewDataSourceType.swift */, - 8807FF18BB93251158B72386A622E490 /* RxTableViewDelegateProxy.swift */, - EEB214E2E4C3D3FB6CA0C4109D2F0FF6 /* RxTableViewReactiveArrayDataSource.swift */, - C526294611337A8D4EF5C3D3D571C77B /* RxTarget.swift */, - E76B1466F3C89ABD081A805991109083 /* RxTextStorageDelegateProxy.swift */, - 29D71D26A754963F763183793E0737A6 /* RxTextViewDelegateProxy.swift */, - 4488B560629B5C88A5E9FF2ED9FCDFD5 /* RxWKNavigationDelegateProxy.swift */, - 495812E6EEB9BFC5FBAD933FB325C0BE /* SchedulerType+SharedSequence.swift */, - C32614C0F923CC34E7C2BE3F692976AB /* SectionedViewDataSourceType.swift */, - 2B46D1FBCE62A21E03DAB229F57AD114 /* SharedSequence.swift */, - 191A401108B388D3700F7B69157F58FA /* SharedSequence+Concurrency.swift */, - E520F3EC8458D3F1E6174E0EC460E79B /* SharedSequence+Operators.swift */, - C22601C0B2814C78512F594A7731DE19 /* SharedSequence+Operators+arity.swift */, - CF2909F5D4495CA4ADC352EEF99AA4EC /* Signal.swift */, - 95D551A418E6BD3AAE54051EE0A0129C /* Signal+Subscription.swift */, - F306E6A5D3D559D9E47C8FF351159D2B /* TextInput.swift */, - 55D10B797A89889598E86DF39D020451 /* UIActivityIndicatorView+Rx.swift */, - A4A885E79A8DF08471834BA9D0D31ED3 /* UIApplication+Rx.swift */, - F75DD06A2A169049C9A0D1E77A6D13EA /* UIBarButtonItem+Rx.swift */, - 3497648C5E7B80D2ABC218A50A6CA389 /* UIButton+Rx.swift */, - D37B24A95EEF2249678FBE363925D312 /* UICollectionView+Rx.swift */, - 4ED914EA5EE1E5DAC87E75CFEEEBE002 /* UIControl+Rx.swift */, - 8A9425DD88305B16CADE1573B70E7D7C /* UIDatePicker+Rx.swift */, - B089112AF8A786152A4CFA32042AA817 /* UIGestureRecognizer+Rx.swift */, - 1A5F64B79665DAAF7330A9B901B15EFF /* UINavigationController+Rx.swift */, - 96DB504A50F1E4FBCD16D5BC49EFCF0C /* UIPickerView+Rx.swift */, - 9FC9415FA1C1593D995CF4413F86119E /* UIRefreshControl+Rx.swift */, - A5C55ED5BE5E14115CFDB19FC0330C46 /* UIScrollView+Rx.swift */, - 0F1253A739AF193B8223BE13ABA2A2BE /* UISearchBar+Rx.swift */, - 7A6CCF2E51B64ED58E9F5F6BC18C4500 /* UISearchController+Rx.swift */, - 2B71FB79E7C0B7102E8EF89E2C326862 /* UISegmentedControl+Rx.swift */, - 160D2BDCA79733E1BBB01B00F9404132 /* UISlider+Rx.swift */, - CA138CAED2178679471A0C1994A53ADD /* UIStepper+Rx.swift */, - 8DCA321A43CEC56664AD41086F8B7141 /* UISwitch+Rx.swift */, - 74E7B0CB0BD4C32719550BAEE7471ABC /* UITabBar+Rx.swift */, - E727269035DBECA74CF6FA02E1B24B09 /* UITabBarController+Rx.swift */, - 9C6E055D8D9B83521DB2D0B74D91A032 /* UITableView+Rx.swift */, - BE8D91CD998AB1AE8E676FD3F36C8F2D /* UITextField+Rx.swift */, - 089F4ED85F7C9FD8E053CA99D41D3132 /* UITextView+Rx.swift */, - 69B3A5BB96CFA43786C0ACFCF6162F46 /* URLSession+Rx.swift */, - 8051259FDEC630E944D8CD2114B0226B /* WKWebView+Rx.swift */, - 295AFD80C44BCD5AE0CFE5ED66C0EF6D /* Support Files */, + B0E844C37108CB5F7A6F21E4A7F38B68 /* AccessTokenPlugin.swift */, + E6BE85A9F49A4855D5FF72A06664152B /* AnyEncodable.swift */, + 52F19A2FED9748DDCC88CC53ED49F836 /* Atomic.swift */, + B894628C91744CB4F70E7BCE4457A4D6 /* Cancellable.swift */, + E02ECC057CFBF25C9FEF6D5B6B4A93DF /* CredentialsPlugin.swift */, + 392891C2723384FABB073976816A97F6 /* Endpoint.swift */, + DEFFE158B59848DCB356E5A47368D145 /* Image.swift */, + 60F589EE2F2776B1BD978CC8FE58CEB4 /* Moya+Alamofire.swift */, + 3FC888A9DBD325CD3A356153EE825663 /* MoyaError.swift */, + B01C629014F7FA5102E051C5F40955BB /* MoyaProvider.swift */, + BEB49B7DBACBB2DE7681100F59C92E91 /* MoyaProvider+Defaults.swift */, + CDA8C7742762C3B7BB46EB42B0E8F088 /* MoyaProvider+Internal.swift */, + BB9868FBC8C48073F157C6E6F913C589 /* MultipartFormData.swift */, + 0D1BECCFF9D91B95AB55CF3C774AFAEB /* MultiTarget.swift */, + 6AA5918C6A2A52AE76DEDD9A67669F56 /* NetworkActivityPlugin.swift */, + F33E90A51F2D6C8E352A6891D3A3919B /* NetworkLoggerPlugin.swift */, + C666280F2BC5552707A2F0DDCF8CF403 /* Plugin.swift */, + 2018E1C6707E4D5B4685D5D380B9CEAF /* RequestTypeWrapper.swift */, + 020375D25093FA92367C3FE6CE85990C /* Response.swift */, + 2BBA1A91105F54BBB00715BA89D800A5 /* TargetType.swift */, + B540404EBE2098EDA68ED9FB0A7CFE83 /* Task.swift */, + 9ED9E851B887A10042176A16A8EAD44B /* URL+Moya.swift */, + A3010548432087DD11565546C13AF64B /* URLRequest+Encoding.swift */, + 2161633FBED9887F60DF703652A74B00 /* ValidationType.swift */, ); - path = RxCocoa; + name = Core; + sourceTree = ""; + }; + EE919988B95E2DA090D94BD1035935C1 /* Support Files */ = { + isa = PBXGroup; + children = ( + EA6CBE76CA70E503E459DAA0FF1E1222 /* SnapKit.modulemap */, + 43CCB937D1696F335DE8C8BB7A3B4E87 /* SnapKit-dummy.m */, + 3E09B2632A5F5E233E32552E8E8C2D49 /* SnapKit-Info.plist */, + CFB888EC77A3E7F852453F600894C3A8 /* SnapKit-prefix.pch */, + 8AD05713068879A92B91B72A0091CD3C /* SnapKit-umbrella.h */, + 55ACC5695926FA80EAD7978822FEE963 /* SnapKit.debug.xcconfig */, + 14F91E4F17CF9C5B257D5502CA5AEF69 /* SnapKit.release.xcconfig */, + ); + name = "Support Files"; + path = "../Target Support Files/SnapKit"; + sourceTree = ""; + }; + F5353250BBA1BE1692C76DE57E066A8A /* Support Files */ = { + isa = PBXGroup; + children = ( + 33BC5C5156F151D3CB558218797FC303 /* NSObject+Rx.modulemap */, + 1353995A8016A914A20D44B2F14C8E44 /* NSObject+Rx-dummy.m */, + F102A674F5AB5FDB619EB5A2EFBE5CA5 /* NSObject+Rx-Info.plist */, + 5F315A7060EC2E13146D8F6D2A4B3FC6 /* NSObject+Rx-prefix.pch */, + 3A4F4D9372A79E9AF21ECE5F57A01154 /* NSObject+Rx-umbrella.h */, + 681558DCAFD23649321C935EAF65EA51 /* NSObject+Rx.debug.xcconfig */, + FEC1ECEDDCAA2CFA6A99C880B214F7C6 /* NSObject+Rx.release.xcconfig */, + ); + name = "Support Files"; + path = "../Target Support Files/NSObject+Rx"; + sourceTree = ""; + }; + F8CE3FCAB825E53BD7490991C288FE55 /* NSObject+Rx */ = { + isa = PBXGroup; + children = ( + 553C3C596D526067A05D640F3D9E138E /* HasDisposeBag.swift */, + ADC9656B5BF0759C69463F58CFE2FEDC /* NSObject+Rx.swift */, + F5353250BBA1BE1692C76DE57E066A8A /* Support Files */, + ); + path = "NSObject+Rx"; sourceTree = ""; }; /* End PBXGroup section */ @@ -2219,27 +2337,43 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 76797DC1949EF10E4CD36CF86C9A5F73 /* Headers */ = { + 776FB4BC3E500449F97E6D3EDF2CDF8B /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - CCBCFE35FEFAD9C1307334491148DA27 /* RxRelay-umbrella.h in Headers */, + CD366AAB9E9D1BA3F59FE05A7BA1BE19 /* RxRelay-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - 7BA941A73E8FBF5B0419B83592AA4F77 /* Headers */ = { + 99B9709251D95E3974D8E28346ECE025 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - B4ED29084E130F41F61D6E4B15DB3551 /* RxSwift-umbrella.h in Headers */, + 83BED922C4A3EA7ACC4E314361940ACF /* Pods-yinmeng-ios-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - 9F4F99D2A751CF26D6C10130E33EBBC8 /* Headers */ = { + A6C9A41B7BCE5A8F1B7988412F0236E9 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 612674D32D68391DF2AF6E89FA6D9BBC /* Pods-yinmeng-ios-umbrella.h in Headers */, + 2EB811D42F51FDAA8C55017BD799F5C0 /* NSObject+Rx-umbrella.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B869F45523B08C188EC6722E1DD8C363 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + AE419A0EB119A1B529D3E851011B031C /* DeviceKit-umbrella.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + D5A9A14F44CC783F383AA2A131896CE0 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 9307BA30D82319F60C5E2441C55232A0 /* RxSwift-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -2292,7 +2426,7 @@ buildRules = ( ); dependencies = ( - 861D671FE3252AAF9F3546CB1B7E113C /* PBXTargetDependency */, + C237BAED368E981FEA756F00CFA18C60 /* PBXTargetDependency */, ); name = Moya; productName = Moya; @@ -2319,26 +2453,28 @@ }; 20A1E7406A71749DBD4ADC955548E4AF /* Pods-yinmeng-ios */ = { isa = PBXNativeTarget; - buildConfigurationList = 09CCB2E572716A4C9765854032B74A05 /* Build configuration list for PBXNativeTarget "Pods-yinmeng-ios" */; + buildConfigurationList = E1077D7814A0ED6B17AB361205CD7502 /* Build configuration list for PBXNativeTarget "Pods-yinmeng-ios" */; buildPhases = ( - 9F4F99D2A751CF26D6C10130E33EBBC8 /* Headers */, - B61519DD991056A1D585A34B6FA1D19C /* Sources */, - AB4F7BDEBC13070575FC00805E8C810B /* Frameworks */, - 4177B571C700B914AC7CAFACDF839D37 /* Resources */, + 99B9709251D95E3974D8E28346ECE025 /* Headers */, + 576442AD898E88C3CAD7B345BDB329BD /* Sources */, + AFB10A2257938CA640B7D9E4871C89B6 /* Frameworks */, + 254A0A625938124464E077F5BA661E10 /* Resources */, ); buildRules = ( ); dependencies = ( - 294D4F167509B367133479F70C99FAAE /* PBXTargetDependency */, - 9D46F8983711587F027876C6D9483255 /* PBXTargetDependency */, - 7AB2CEB2384A2E610A19A45C46C38838 /* PBXTargetDependency */, - 94F1664E9E64C92DEFB0970E1925F652 /* PBXTargetDependency */, - 9A711F5A31AD64A8B5050478F04948AD /* PBXTargetDependency */, - F6A63E96803B3C03A914736028E41D5E /* PBXTargetDependency */, - D7BCCB438C6783D4AD34AFA01C3017E2 /* PBXTargetDependency */, - BB9A3FAEC46882D1BE980F96D535919F /* PBXTargetDependency */, - AAA859713D3E1B87E847AD768604A711 /* PBXTargetDependency */, - 19677A4C977E43BF6FDC659077FF8F64 /* PBXTargetDependency */, + 675DCDC218FC93971126BB4B47CD0191 /* PBXTargetDependency */, + 5F7C3C75D608DDACAE5E5C0137619083 /* PBXTargetDependency */, + D468E169E00C67B355EE9BFEFA6D5AF7 /* PBXTargetDependency */, + 88775B66BFB89D573853AC735719B7DC /* PBXTargetDependency */, + 0D23A6E8DB6A05869376B736F3F1AF29 /* PBXTargetDependency */, + 1D8AE589CDF7EDDC4DB4FAC93E2687CE /* PBXTargetDependency */, + 85B7B27C6CFB48D892CB740F00AB55D1 /* PBXTargetDependency */, + 6DE74CB8D14878ACF8C9391649131129 /* PBXTargetDependency */, + 4F1139E707EF459E6BBE2DF69BAFB5BF /* PBXTargetDependency */, + 07921877E6ECDF534C58E72DEA30C47F /* PBXTargetDependency */, + BFB35570FD7A4A438D9154C3A8C924B1 /* PBXTargetDependency */, + 50CBC7693D8CA96F4289DF07FF9583EA /* PBXTargetDependency */, ); name = "Pods-yinmeng-ios"; productName = Pods_yinmeng_ios; @@ -2347,23 +2483,41 @@ }; 4622BFEF3DC16E8BD15EEFC30D4D0084 /* RxRelay */ = { isa = PBXNativeTarget; - buildConfigurationList = 5D6B3CF88B71711BCA7DA130AF7EC13D /* Build configuration list for PBXNativeTarget "RxRelay" */; + buildConfigurationList = E8F74B6601063818A4A45D8DE46F1659 /* Build configuration list for PBXNativeTarget "RxRelay" */; buildPhases = ( - 76797DC1949EF10E4CD36CF86C9A5F73 /* Headers */, - D21AEE57BB74E8BE2A5ABEE23432A806 /* Sources */, - 69E41FE1C983D4504EF52D46E5289EA7 /* Frameworks */, - 76CC561DC552B829176FBDE7B0EA1979 /* Resources */, + 776FB4BC3E500449F97E6D3EDF2CDF8B /* Headers */, + 03B3122BDC0D3EACD377287C6ED886F0 /* Sources */, + DFB46A614E93E582396BD10D4F22CC10 /* Frameworks */, + 45ED2109D6939B452C5EBC2EABA42DAC /* Resources */, ); buildRules = ( ); dependencies = ( - 129B8D6EDBC0E697BF55B3C8FE0FE1A6 /* PBXTargetDependency */, + DF6DAA0CDECA8EB9CBF9AA8B7B447EDA /* PBXTargetDependency */, ); name = RxRelay; productName = RxRelay; productReference = FF8B264DFE802855D5D67E7CDDABFC3C /* RxRelay */; productType = "com.apple.product-type.framework"; }; + 4CDD1C6C8885D07092D8EA708AAC0E53 /* DeviceKit */ = { + isa = PBXNativeTarget; + buildConfigurationList = EE2416AB9D0716DFAC4C6C724B0E6744 /* Build configuration list for PBXNativeTarget "DeviceKit" */; + buildPhases = ( + B869F45523B08C188EC6722E1DD8C363 /* Headers */, + B024EDE69B3C51D739853194CE746FE4 /* Sources */, + 6C616238525BCC61AE0C0C4690227BE1 /* Frameworks */, + 8EE6FBD90231B8B4128EE874B295E36F /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = DeviceKit; + productName = DeviceKit; + productReference = 190D7383CCEFD8AB3F8CB93098A3F214 /* DeviceKit */; + productType = "com.apple.product-type.framework"; + }; 542460E7CDF2A9D5B2ECB5F8CE549E34 /* Reusable */ = { isa = PBXNativeTarget; buildConfigurationList = 865D36780A78CA83F04FC3A8CDB81EE4 /* Build configuration list for PBXNativeTarget "Reusable" */; @@ -2394,8 +2548,8 @@ buildRules = ( ); dependencies = ( - D9B00D70E911FF84772D30A6F17F24C2 /* PBXTargetDependency */, - 41D57993E84517CD638C70ADEC5E44C6 /* PBXTargetDependency */, + 1A0FAD97C82D0C3D6F804DEA53831D56 /* PBXTargetDependency */, + 9039C5B03F17EE8597B6EF0F2F5A0F54 /* PBXTargetDependency */, ); name = RxCocoa; productName = RxCocoa; @@ -2422,11 +2576,11 @@ }; 9828BBC09E9FB1238624113D7456E59E /* Kingfisher-Kingfisher */ = { isa = PBXNativeTarget; - buildConfigurationList = E29E987197D3C29B626AB8FA0A012C04 /* Build configuration list for PBXNativeTarget "Kingfisher-Kingfisher" */; + buildConfigurationList = 44439F3B5C48C4B17D9AB8166C9A4F69 /* Build configuration list for PBXNativeTarget "Kingfisher-Kingfisher" */; buildPhases = ( - B9C4339E494FCDEDF339AE80CF8263B3 /* Sources */, - 7384B674865A3735705993DE278F24FB /* Frameworks */, - 534208814D98B46052FC5F7AF7F8CB0C /* Resources */, + F459C8474B539DB0D25F559F82506E56 /* Sources */, + A8D9529A344F04D1B3DFAA6B08FD1D85 /* Frameworks */, + 57C76A06A6CC079BA44414CD63E960D0 /* Resources */, ); buildRules = ( ); @@ -2437,6 +2591,25 @@ productReference = C298ABB78D9B05529B89D8322DB2E7B0 /* Kingfisher-Kingfisher */; productType = "com.apple.product-type.bundle"; }; + B8A8605EB5769E41DC25E1879868AF1C /* NSObject+Rx */ = { + isa = PBXNativeTarget; + buildConfigurationList = C57DD85F01E6A4EFCD618B61EA506080 /* Build configuration list for PBXNativeTarget "NSObject+Rx" */; + buildPhases = ( + A6C9A41B7BCE5A8F1B7988412F0236E9 /* Headers */, + 34514B9E84CC1F454B3BA7A37D82B976 /* Sources */, + BDB96F442E1AF21C8D92CB35978F1D8E /* Frameworks */, + 60C75B352ED18CBEEBA18A5EFB26014B /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + C1F3CD5F253C1C133A15C1BD581A96CB /* PBXTargetDependency */, + ); + name = "NSObject+Rx"; + productName = NSObject_Rx; + productReference = A4E0F907A63923C4154A172688E9888C /* NSObject+Rx */; + productType = "com.apple.product-type.framework"; + }; E8022D22FAA6690B5E1C379C1BCE1491 /* Kingfisher */ = { isa = PBXNativeTarget; buildConfigurationList = 61C623C1EDB6AD9DC66AD8969115C6E1 /* Build configuration list for PBXNativeTarget "Kingfisher" */; @@ -2449,7 +2622,7 @@ buildRules = ( ); dependencies = ( - E7FE09331A2C0535926E5A346DDFE0AB /* PBXTargetDependency */, + F507F53540F057039809FEEED5BB1F05 /* PBXTargetDependency */, ); name = Kingfisher; productName = Kingfisher; @@ -2458,12 +2631,12 @@ }; EA9EA43B3B503823EE36C60D9C8A865F /* RxSwift */ = { isa = PBXNativeTarget; - buildConfigurationList = BD779400D1CA952C3C31F225A3BA7650 /* Build configuration list for PBXNativeTarget "RxSwift" */; + buildConfigurationList = 53A660BF65161DD4A44087C68C0A5639 /* Build configuration list for PBXNativeTarget "RxSwift" */; buildPhases = ( - 7BA941A73E8FBF5B0419B83592AA4F77 /* Headers */, - 647BE045D378FFA99A884983B70E9E03 /* Sources */, - 022CF4B8BBD5C8D34A275928347518C5 /* Frameworks */, - 32EBDC9D24846EFD7CC23F9D0F90F003 /* Resources */, + D5A9A14F44CC783F383AA2A131896CE0 /* Headers */, + 8A688EC0E687537D1BD2F4243A3091A6 /* Sources */, + EE7F84658DCF4174B94C296BEF716DE0 /* Frameworks */, + E3B1B81A6EB2279F7D282BCBC6E260E2 /* Resources */, ); buildRules = ( ); @@ -2510,16 +2683,18 @@ en, ); mainGroup = CF1408CF629C7361332E53B88F7BD30C; - productRefGroup = 4ACE8263887E88BE1B13DCD869DFFCAF /* Products */; + productRefGroup = 08F310D7489D1EBC9403C00B094A10ED /* Products */; projectDirPath = ""; projectRoot = ""; targets = ( EAAA1AD3A8A1B59AB91319EE40752C6D /* Alamofire */, + 4CDD1C6C8885D07092D8EA708AAC0E53 /* DeviceKit */, 10D88C24864319FF583AD6D156896F32 /* HandyJSON */, E8022D22FAA6690B5E1C379C1BCE1491 /* Kingfisher */, 9828BBC09E9FB1238624113D7456E59E /* Kingfisher-Kingfisher */, 82B0A41D3031FF27D78E17B0A9A46FB0 /* MBProgressHUD */, 17F9141D333DA1A7BE5937F227221070 /* Moya */, + B8A8605EB5769E41DC25E1879868AF1C /* NSObject+Rx */, 20A1E7406A71749DBD4ADC955548E4AF /* Pods-yinmeng-ios */, 542460E7CDF2A9D5B2ECB5F8CE549E34 /* Reusable */, 7AD0C6DCDC9CEC8A3C7C10C7FEE07BE6 /* RxCocoa */, @@ -2539,14 +2714,14 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 32EBDC9D24846EFD7CC23F9D0F90F003 /* Resources */ = { + 254A0A625938124464E077F5BA661E10 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - 4177B571C700B914AC7CAFACDF839D37 /* Resources */ = { + 45ED2109D6939B452C5EBC2EABA42DAC /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( @@ -2560,14 +2735,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 534208814D98B46052FC5F7AF7F8CB0C /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - CFB94F60324C50650E055314D46837BA /* PrivacyInfo.xcprivacy in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; 565FD2058706F22D2347B30C65280F30 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; @@ -2575,6 +2742,14 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 57C76A06A6CC079BA44414CD63E960D0 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 786E83A679FFB395C5EE432ACDDBB663 /* PrivacyInfo.xcprivacy in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 5D4809C72FC4B366B262906F436A3EF1 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; @@ -2582,6 +2757,13 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 60C75B352ED18CBEEBA18A5EFB26014B /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; 661A1BDB1E080B04B6F0DD83DE90E23A /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; @@ -2589,14 +2771,14 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 76CC561DC552B829176FBDE7B0EA1979 /* Resources */ = { + 820C67429A90336F5AF1C850DF03B1B9 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - 820C67429A90336F5AF1C850DF03B1B9 /* Resources */ = { + 8EE6FBD90231B8B4128EE874B295E36F /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( @@ -2617,9 +2799,29 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + E3B1B81A6EB2279F7D282BCBC6E260E2 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXResourcesBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ + 03B3122BDC0D3EACD377287C6ED886F0 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + BAD9594DEBA160DA493D3D72B2DC2C06 /* BehaviorRelay.swift in Sources */, + 99A4941E31E52F345CA74F45AAECA804 /* Observable+Bind.swift in Sources */, + F28EE02273BA1FC5950A0CB1C9917B9A /* PublishRelay.swift in Sources */, + 412C30D55C0E93742F9946FDF78FFAD7 /* ReplayRelay.swift in Sources */, + 21F5DB4B9033B8470441859D0BE37796 /* RxRelay-dummy.m in Sources */, + 6185C40F38B67CF4487629C9167889D1 /* Utils.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 0F059D90C50CD829E3DBCB5EB514E8DD /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -2697,6 +2899,16 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 34514B9E84CC1F454B3BA7A37D82B976 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + A98B7BBA1D12696C4525F89A0B3B8B33 /* HasDisposeBag.swift in Sources */, + 790DD7DB2D45C00C26EA15E0DF744322 /* NSObject+Rx.swift in Sources */, + F52A66B839B19416A9DA04290F203E2C /* NSObject+Rx-dummy.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 3DA8F71AF3BF41150950832BA8D64BFE /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -2893,171 +3105,11 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 647BE045D378FFA99A884983B70E9E03 /* Sources */ = { + 576442AD898E88C3CAD7B345BDB329BD /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 2A4D8872017458ADB952D7362CD3216D /* AddRef.swift in Sources */, - 96C658C96E9D8CCC2C450D5615A348AF /* Amb.swift in Sources */, - 61E63227D5A012BA17E37229455BA5B8 /* AnonymousDisposable.swift in Sources */, - 5150F2661A947E67A50557847BAA22C0 /* AnonymousObserver.swift in Sources */, - F2B61F23B613A4D92CE8459C4BE431BE /* AnyObserver.swift in Sources */, - A606B3D514262F030ED18600F01588BF /* AsMaybe.swift in Sources */, - 31E3621410AFFDD2DC866DAC48B735CE /* AsSingle.swift in Sources */, - AD635D9C6B76653B9049C2767A165CDC /* AsyncLock.swift in Sources */, - 3278ED404885BB1E20388250FC601681 /* AsyncSubject.swift in Sources */, - DB975FF8F6C9DE0D5B319961CAEDD4E1 /* AtomicInt.swift in Sources */, - 28A857C092C01D8BE7257A552DDDCD7F /* Bag.swift in Sources */, - 9D798263C35826FDE38859EFF5CC9542 /* Bag+Rx.swift in Sources */, - C39C9E0F5F4CB376E9C8286E5838B7DD /* BehaviorSubject.swift in Sources */, - AC3FB067C57DB569636CAFD05974F484 /* BinaryDisposable.swift in Sources */, - E424F89BEDDE19083BAAB0FA1D73E853 /* Binder.swift in Sources */, - ABD5C72702876EFB6C39BCC62269DED2 /* BooleanDisposable.swift in Sources */, - 42E7EEF0A33D83D355C821212F97A390 /* Buffer.swift in Sources */, - E154CD956DF116A1E59C8D6A6891A9BF /* Cancelable.swift in Sources */, - BBC7EE440D9B9A4B3511B1831C428A0D /* Catch.swift in Sources */, - D2032194EB7D200A1F6715A3C024D994 /* CombineLatest.swift in Sources */, - 2E9420467955EA6220D079A3678B4CCF /* CombineLatest+arity.swift in Sources */, - 598A8B5AC028B7EAFE6339965A063384 /* CombineLatest+Collection.swift in Sources */, - 196351F59003315C03DD17E9536AAD36 /* CompactMap.swift in Sources */, - AC5802EA58F43F1223804D5CF9E51A31 /* Completable.swift in Sources */, - DEBBCD7FF906F4D5F2CC4BF62F3A5803 /* Completable+AndThen.swift in Sources */, - 17A8E8E15AA453D69DEF72EA593C00CA /* CompositeDisposable.swift in Sources */, - 80F0B9ABC3E9D190B7A3C755A903EF54 /* Concat.swift in Sources */, - 444DBA6CD07054A7900CF1A1334419BC /* ConcurrentDispatchQueueScheduler.swift in Sources */, - 54A091154030EF2F51399D01C732D578 /* ConcurrentMainScheduler.swift in Sources */, - A473AE2DB5554BC6CB289664628012A5 /* ConnectableObservableType.swift in Sources */, - BFDCAD2AEBDD1AEF0345EE96D33DAC94 /* Create.swift in Sources */, - 12490402D5B61C9A226CBBDA0CC9AA23 /* CurrentThreadScheduler.swift in Sources */, - 42A1F6E790D900B1AC3653DBEFF8EAA6 /* Date+Dispatch.swift in Sources */, - 6DA16B11139D88B0C3BD21BF65790D34 /* Debounce.swift in Sources */, - FDE4F53FC806778F0FEE26810D359D79 /* Debug.swift in Sources */, - D525A536B7A32329405A34062C2BCED6 /* Decode.swift in Sources */, - 2742BB22F7F098635E8D99F6A6FF844A /* DefaultIfEmpty.swift in Sources */, - 2F7ECD73855CF5C4B91D44495A9D186D /* Deferred.swift in Sources */, - 5B0CD721D955D01B28AFE5291318A7DE /* Delay.swift in Sources */, - C00C4FF56C3B54CEB62ACA9DFB166FCD /* DelaySubscription.swift in Sources */, - 529BE65BAC3A56AB2FF74B26B63D3029 /* Dematerialize.swift in Sources */, - CEB12B808790BBA447EF912D41AB9C78 /* DispatchQueue+Extensions.swift in Sources */, - A766E407DA39FF588AEC62A4C30387A6 /* DispatchQueueConfiguration.swift in Sources */, - FA823A5BF5E118ADBC89B7CCD6B433A3 /* Disposable.swift in Sources */, - B53EB1446767571221ED954E16FDE1AA /* Disposables.swift in Sources */, - FDBC11E754B3FD24CE89D3587C34793D /* DisposeBag.swift in Sources */, - 16F9DEE85ECC94DE79B387073AC78AC7 /* DisposeBase.swift in Sources */, - 956ACEDE64971D2B3AE15D1EDAD4AB56 /* DistinctUntilChanged.swift in Sources */, - 2DAB889F1C979E0BDF2A951CF07F453E /* Do.swift in Sources */, - F79760816256C3B04E54319DA3A105E2 /* ElementAt.swift in Sources */, - 78EB4944F6EE0CF299F715B7340E19AB /* Empty.swift in Sources */, - 414CF2DE69210BDE0A1C0256F87E061A /* Enumerated.swift in Sources */, - 64986C72DEBFAB6607409ED2AC830D1E /* Error.swift in Sources */, - E65F73FA2E14351853CD4EB8729D0AC7 /* Errors.swift in Sources */, - 4965C451517127864A70BD41E0FA8AF9 /* Event.swift in Sources */, - 1A3A6D1CD56F36D4F2C74B4EA79967E7 /* Filter.swift in Sources */, - A61CDA7A9C259DC743A7553676B4E537 /* First.swift in Sources */, - 810421CBB613D2EA65E39D66C98C1B5A /* Generate.swift in Sources */, - F0D6C540C0CAEFE51A29FC9C5867096E /* GroupBy.swift in Sources */, - 20C99AA440645B161DCD0E6698F4A351 /* GroupedObservable.swift in Sources */, - 98CC71A93BBD481D6C77E99854E65282 /* HistoricalScheduler.swift in Sources */, - 7B81980B63BBD77A851BCD01FF160D44 /* HistoricalSchedulerTimeConverter.swift in Sources */, - 160F66863942DB8C996DB1D79984C7AD /* ImmediateSchedulerType.swift in Sources */, - 186E59D8CB5FC42AA40B9F8B1C0C27A5 /* Infallible.swift in Sources */, - 729183886B27549C5B666CC3F5C1B495 /* Infallible+CombineLatest+arity.swift in Sources */, - F0483870DE1B0E2DD94DAAA7287E46AD /* Infallible+Concurrency.swift in Sources */, - C20F7278CDDB5021D18140A001BA7470 /* Infallible+Create.swift in Sources */, - 6B4A32082CED69B110A83E603813FDB7 /* Infallible+Operators.swift in Sources */, - 0CB878167AA17431D1069C94A3EFF8F4 /* Infallible+Zip+arity.swift in Sources */, - FCA5D79BFD9CAE6F09CF2D9E4CCB7C9B /* InfiniteSequence.swift in Sources */, - 5223E292D90519A9F902F743DE388C22 /* InvocableScheduledItem.swift in Sources */, - 54EEEBA0AA7C4D84A5D0752813489F5F /* InvocableType.swift in Sources */, - 8BE63006C33671D8617303C1FBDF4AD0 /* Just.swift in Sources */, - B13CAD74E806387CF131495AD8CF453F /* Lock.swift in Sources */, - C46DF9765B3769C9EDA8BCC7052B6D23 /* LockOwnerType.swift in Sources */, - 362DD94616F8D1CA08A33B4F41273239 /* MainScheduler.swift in Sources */, - 89EE8751EC67604A80510F131F373127 /* Map.swift in Sources */, - 3957E07A50A304366C83854C41E6013B /* Materialize.swift in Sources */, - AACC3B4A90C3C71FEF3BB1C2FC0374F1 /* Maybe.swift in Sources */, - F2EF471EA98AA31CA53CEE65F76F151E /* Merge.swift in Sources */, - E3B0F5D520566D7244B300501D43F86E /* Multicast.swift in Sources */, - 8E6F33205BF126E6DECF929A32A98869 /* Never.swift in Sources */, - 10FF6AC524FAED0730F4BB577CF243B9 /* NopDisposable.swift in Sources */, - 97F63B52ED34F3A5A222C208253462F1 /* Observable.swift in Sources */, - 7542BDA803F84EC71005AE526659436A /* Observable+Concurrency.swift in Sources */, - F006EB7A9EF6612EE871EBBF1EE4655B /* ObservableConvertibleType.swift in Sources */, - AE64B504EC63283C3EEC47A88A0C5F43 /* ObservableConvertibleType+Infallible.swift in Sources */, - 3118CFD451916A9BB78E222597E8969E /* ObservableType.swift in Sources */, - BBDD1E970F7D15CEA5E1F39F47641664 /* ObservableType+Extensions.swift in Sources */, - 8951BE47D18264444C90F76B1695A1D0 /* ObservableType+PrimitiveSequence.swift in Sources */, - 094F725274CC4EC8EB2F0D2551C26019 /* ObserveOn.swift in Sources */, - B4BA49385319831FD3A3921DFCF76230 /* ObserverBase.swift in Sources */, - 0A7B97BD9262E628FCF5684C817D3D73 /* ObserverType.swift in Sources */, - 924E2F405AE00EDF695B3D926EB6BB1A /* OperationQueueScheduler.swift in Sources */, - 5357162246E301753EE5CBE40BF75038 /* Optional.swift in Sources */, - 753A064C58BBF2D833F709412D9E9FE3 /* Platform.Darwin.swift in Sources */, - FFEA28FE74753ABA9BDD87EDB46E5910 /* Platform.Linux.swift in Sources */, - DC4F588F90F6E49F9B67F0782B392E39 /* PrimitiveSequence.swift in Sources */, - 4BFFEA52EC61D92F315006DEB55CC6E5 /* PrimitiveSequence+Concurrency.swift in Sources */, - AEF083E81756E640AB92BFF5CC853355 /* PrimitiveSequence+Zip+arity.swift in Sources */, - B274128C2FE5EDE87850D4C9B996F4C8 /* PriorityQueue.swift in Sources */, - A9FB28DEC9FEAD03294A753F0C6A738B /* Producer.swift in Sources */, - 53F5DA7BA570018EFB8761D97C00DA6D /* PublishSubject.swift in Sources */, - B66C3C5709346F849100234EFCDB664E /* Queue.swift in Sources */, - C17A8818F6F518F4367C0C551782FB3B /* Range.swift in Sources */, - D507CB260B300128E39601CD83627509 /* Reactive.swift in Sources */, - 4D5E233A3AAB006B7EC565C74D18A8C1 /* RecursiveLock.swift in Sources */, - D73BED39648BD901FA022356FD6A4468 /* RecursiveScheduler.swift in Sources */, - 82747E86C0002A1A0BE8467C000C88F9 /* Reduce.swift in Sources */, - EBE8A06FA3C662A9D01320EF1FD0E120 /* RefCountDisposable.swift in Sources */, - A6D2F8EBCCEE6CE64FA4964877BF89F3 /* Repeat.swift in Sources */, - 1B9E805DAD08E186C49A07E76CE551F2 /* ReplaySubject.swift in Sources */, - F3ED4CDEB88F2CFB6AE17AEB4C59F210 /* RetryWhen.swift in Sources */, - D3318EE7E4339E6C5A6070D251DC845F /* Rx.swift in Sources */, - A2A423B6246A35EB8FB11B1924389E05 /* RxMutableBox.swift in Sources */, - 28F7BF27F82AD7A83B634F70E879ECFA /* RxSwift-dummy.m in Sources */, - 6339E0715C212DB48BD9F6A3FFD883DA /* Sample.swift in Sources */, - A549C0E0DBBD2D57F007FD6088F426BD /* Scan.swift in Sources */, - E895A8F95627AB1F7C2F1D7B035BAE1C /* ScheduledDisposable.swift in Sources */, - C812836F779AF53458795EEF5066F29A /* ScheduledItem.swift in Sources */, - 2CF7F5AEDD22D446868F6EC11694B46A /* ScheduledItemType.swift in Sources */, - ED3841B1E7CECC078D6BCDD78FDA7E36 /* SchedulerServices+Emulation.swift in Sources */, - B4AE9B23299C9CE3B70FAA7A66D50F7C /* SchedulerType.swift in Sources */, - E21CC70AD211E5F874C1208BA7D1631E /* Sequence.swift in Sources */, - 9FD204AB576F46B2AFA28B4074837ABC /* SerialDispatchQueueScheduler.swift in Sources */, - E54EA1C1B2B9304A9F7956AE0C9589D2 /* SerialDisposable.swift in Sources */, - AC8A2E59A2B5FFAD78AD95F4B053DB76 /* ShareReplayScope.swift in Sources */, - 4DDE90582DEB58DC0EF7BCC911D3BCBA /* Single.swift in Sources */, - A58048C722771C3C46C2623274174B7B /* SingleAssignmentDisposable.swift in Sources */, - B5E5A2CB9CD57723F8117D9402A80FD3 /* SingleAsync.swift in Sources */, - AF0C1DE86BD97C967EAD57DD459EDE65 /* Sink.swift in Sources */, - 1CBDD9F1C5BE4FAE59177A9E4E26ED68 /* Skip.swift in Sources */, - 13F86B00E27F85F2A19E7FC2D60032D3 /* SkipUntil.swift in Sources */, - CBF35F58D74E7F9E25EA97F82CBCEA10 /* SkipWhile.swift in Sources */, - 9EED5194D92B5A4B4E81FF9D6D98B7E0 /* StartWith.swift in Sources */, - 5FEA895A04C350A054C05410C2807F00 /* SubjectType.swift in Sources */, - D2C1DE6833F16A9EDEAE12D39DBBECD8 /* SubscribeOn.swift in Sources */, - 7E29FFE700C1C3AC047E58CC1E8EA468 /* SubscriptionDisposable.swift in Sources */, - A12579942726F0D2EC587B8ED74D6253 /* SwiftSupport.swift in Sources */, - 0E1A429FC9CD37AF039A2A19A0D018D9 /* Switch.swift in Sources */, - CDD0A0D9253EFF9923F92E89BC96A882 /* SwitchIfEmpty.swift in Sources */, - 76F608B4608884FCB00256FEF79A61E3 /* SynchronizedDisposeType.swift in Sources */, - CCADF670B558392F08CC5302CE8DFC34 /* SynchronizedOnType.swift in Sources */, - 5A8A82AA7F76A861CE989B801C506551 /* SynchronizedUnsubscribeType.swift in Sources */, - 8F1CD0744791BEC18F73D6FF3A150090 /* TailRecursiveSink.swift in Sources */, - 946AABD244DF0FA4F9BE1A018AF02D44 /* Take.swift in Sources */, - ED4155032D3BF65BD7B649E490A6EEFE /* TakeLast.swift in Sources */, - D4A79D2D2532673DF39ED456EB7005CF /* TakeWithPredicate.swift in Sources */, - 558B0B6DA4F450EB47428619840800E9 /* Throttle.swift in Sources */, - 514272471493DBBD026BC35D58547601 /* Timeout.swift in Sources */, - 23CB3C6D36D477A8DDBDA86ED0C29396 /* Timer.swift in Sources */, - E99A170AB4E460307ACAFC938CA2B591 /* ToArray.swift in Sources */, - 79F3A6E62579CE8906D3DA8B984347CC /* Using.swift in Sources */, - E4CA5C8A54DD0978858EE82D7D78ECB1 /* VirtualTimeConverterType.swift in Sources */, - D204501A876D178E882CF0D3CAA30473 /* VirtualTimeScheduler.swift in Sources */, - 2AF40AD9BAE58EECFEE829EF7996669B /* Window.swift in Sources */, - 6AFDE75A0DBBC5BB095963EFD1DBE944 /* WithLatestFrom.swift in Sources */, - E4AC5D4B5B930DDF6912483ED8436635 /* WithUnretained.swift in Sources */, - 24F54746A72C89AED62D33CF008D0BE1 /* Zip.swift in Sources */, - D072D375CE0C6D2F4A98A57FEEBF6BA2 /* Zip+arity.swift in Sources */, - F07878596C474719C556096025C2E9E4 /* Zip+Collection.swift in Sources */, + FD1BF457164F358AF1E54CE2E1924EA6 /* Pods-yinmeng-ios-dummy.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -3115,6 +3167,183 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 8A688EC0E687537D1BD2F4243A3091A6 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 0EACA1E672529677D63011DA749A35BA /* AddRef.swift in Sources */, + FB4062E0349D728498566DCD98A78FE5 /* Amb.swift in Sources */, + 1615B2DC97CA6544B0E7ED0AE2A728EE /* AnonymousDisposable.swift in Sources */, + 7AA4EB9FDD9E650BCA8546CA218B5EA3 /* AnonymousObserver.swift in Sources */, + 054C14ADE3D15C3B3C7F51D520CCBA9F /* AnyObserver.swift in Sources */, + 015492E68D4309406247D3266BFE9B80 /* AsMaybe.swift in Sources */, + CADF1FAC380CB281017003AB7D268C54 /* AsSingle.swift in Sources */, + 26B5D0908762ECED515D6EAC78404F51 /* AsyncLock.swift in Sources */, + F03BD177FAB4FDA5703314BFE1B168BD /* AsyncSubject.swift in Sources */, + B1AE438D8A35FA42A8B8586B6F105D61 /* AtomicInt.swift in Sources */, + 5C88DF247BA73E9B1BA2FF5B306F8FA5 /* Bag.swift in Sources */, + 16FD798823F8146105E11C43941D3942 /* Bag+Rx.swift in Sources */, + A916ED2FF276F6CE8709810902FAB23B /* BehaviorSubject.swift in Sources */, + 96AC9C43C808AA26F7C4E3C04EE3EDB0 /* BinaryDisposable.swift in Sources */, + 11DD0DC84B243688663D2F6EDA182857 /* Binder.swift in Sources */, + 879B1179CFF8CB6E0395704CDC863DCB /* BooleanDisposable.swift in Sources */, + 83B7973D15DE179FFF9EFE1FBDAAA5D5 /* Buffer.swift in Sources */, + 783766B3CC003125786CECE51E20DD54 /* Cancelable.swift in Sources */, + D8EEEAF9B379C8249E9383FD3C181FAA /* Catch.swift in Sources */, + 80A85B1CEAC54DA784A029228941DF71 /* CombineLatest.swift in Sources */, + E272CB950FEF5B18081DCA1F010A0D29 /* CombineLatest+arity.swift in Sources */, + A3B80F3FDDD56B49D8A426D49ABC9248 /* CombineLatest+Collection.swift in Sources */, + DE81C3C6F59AE565E1675E35F40DB294 /* CompactMap.swift in Sources */, + 5EE20DB81D6F720C853B641619EAF0B6 /* Completable.swift in Sources */, + 71932F720AF55B42771534F4C1041BBB /* Completable+AndThen.swift in Sources */, + 4F338C4F636BFA65E949C5073F150BEB /* CompositeDisposable.swift in Sources */, + 54459F364B87546B71444553CA0206B0 /* Concat.swift in Sources */, + AFC8036282A975A4BD2F28810A6CBA30 /* ConcurrentDispatchQueueScheduler.swift in Sources */, + 7265BBDB5713757F3888B56AC96269F9 /* ConcurrentMainScheduler.swift in Sources */, + AC4D902AA6A56A0F077CF49E4DA85ECB /* ConnectableObservableType.swift in Sources */, + C68CFD35BE3AFDEB5960495EB0C831D5 /* Create.swift in Sources */, + AD156222E26D183562B047EF578E6033 /* CurrentThreadScheduler.swift in Sources */, + 3622DBD9AC58959E0588D7E5E11C444B /* Date+Dispatch.swift in Sources */, + A6D76FDE71F6F2FF67CC9889284F60D2 /* Debounce.swift in Sources */, + 721B4BF2D6B4FFF95C4950F05B9F13C9 /* Debug.swift in Sources */, + B045E2AB4176809A7D90B3DEDEA97671 /* Decode.swift in Sources */, + 804C6B756FF1108C9801AFF1CE0188DE /* DefaultIfEmpty.swift in Sources */, + DB1905124BE5655DCB20BE14C96953CE /* Deferred.swift in Sources */, + DA229928A668E57F71D034F9C4C96B77 /* Delay.swift in Sources */, + B92CEB2694E699AB7DDBD66172BC594F /* DelaySubscription.swift in Sources */, + 57F071B82DB46978509EC998957DE642 /* Dematerialize.swift in Sources */, + 50FFA85C7F86571E7388F585CF1C7B5A /* DispatchQueue+Extensions.swift in Sources */, + 1D9D29667203F00351479B33861A925D /* DispatchQueueConfiguration.swift in Sources */, + ABF338E4AECF28898DAB7BD5A37D5D12 /* Disposable.swift in Sources */, + E960539876F49FCF04221527CADA80EB /* Disposables.swift in Sources */, + 4EF7F0FD183DF30DD6C838FE84C936E9 /* DisposeBag.swift in Sources */, + 625F92130284B464BE682122C39ADC35 /* DisposeBase.swift in Sources */, + 176281AFF9F858AE63E3AEDA118CF51B /* DistinctUntilChanged.swift in Sources */, + 72A860533A0764790667A6C9919552D2 /* Do.swift in Sources */, + 20DDD9329E51949E0A220536989F518E /* ElementAt.swift in Sources */, + 3440ECD5BB4FF90DB8909A9A3AB3FEFB /* Empty.swift in Sources */, + 45E536C0D99DF4CAC24B25004B0BCD32 /* Enumerated.swift in Sources */, + B79B431564A301C69BF86D1379B7FF0A /* Error.swift in Sources */, + 75AA62779CA4BC0A2B54E18A90B6B21D /* Errors.swift in Sources */, + C99F1DDFCBECB67F78E8999E6BFA8064 /* Event.swift in Sources */, + 19C870EBB9A104E36995F8FDCBB4463B /* Filter.swift in Sources */, + 281E6E48EFBD4A508F87406F117E476F /* First.swift in Sources */, + 23878F770AFFBAFBA47A7C75CE2A730A /* Generate.swift in Sources */, + BAEAE9A2BD7E93EB5346E01B57D47920 /* GroupBy.swift in Sources */, + 000655664225AD48DC62F98075CCAB58 /* GroupedObservable.swift in Sources */, + E1506563BAB53B8F3F8F1CFC48CC6E7F /* HistoricalScheduler.swift in Sources */, + 2D86C286A021C3335872DE20FCBAFFBE /* HistoricalSchedulerTimeConverter.swift in Sources */, + BB8585825189B0FC964A7BB862FBB849 /* ImmediateSchedulerType.swift in Sources */, + 62E2AE9505A0A1E265CD062AF56EAA03 /* Infallible.swift in Sources */, + E96237AD09307C04347214A1E8406DE4 /* Infallible+CombineLatest+arity.swift in Sources */, + 6159628D93CC097B3683FBB6E383EEB3 /* Infallible+Concurrency.swift in Sources */, + EF1D2EF3DB382FD8FC8F2F81D1970929 /* Infallible+Create.swift in Sources */, + 3D2A9FBA6C97C4CE53CDBA9275639096 /* Infallible+Operators.swift in Sources */, + 5DBB211037D712A6A0A33C51456C638A /* Infallible+Zip+arity.swift in Sources */, + 5D8B42D24D9D57EDEE86986497BA25AF /* InfiniteSequence.swift in Sources */, + D75D6A004BF4CB9564240228C390E4D9 /* InvocableScheduledItem.swift in Sources */, + 667FA1FBFA2A0CA7A8E56958F705063E /* InvocableType.swift in Sources */, + 31A6CFCC14906B5B581BF20C4D444D14 /* Just.swift in Sources */, + D3CD6C1FB099C0A853024D320B3699CD /* Lock.swift in Sources */, + 0FA61CCFC9E2DD88F82514B41798D36D /* LockOwnerType.swift in Sources */, + 354E901277130C9A040211773FD3AB53 /* MainScheduler.swift in Sources */, + 5DA9C5E832DFF6135D757D326AFB79D6 /* Map.swift in Sources */, + 997C201DF728F8C88AF7B059A43EBAE2 /* Materialize.swift in Sources */, + 55F03E1F23CBEB106D165A1554C73F33 /* Maybe.swift in Sources */, + 4990FC3CE6A37C6A0EB9717C5C30998A /* Merge.swift in Sources */, + 857B409FAE3BBE1B3B68362E0510ADAC /* Multicast.swift in Sources */, + 1F9FC3C038F56FFE0CD1D2453B9545B2 /* Never.swift in Sources */, + FF1287B03147BA35D6EDBAE2F399AB81 /* NopDisposable.swift in Sources */, + 500DA15769AC7D2BC6186F2BF88832AD /* Observable.swift in Sources */, + 7931A808A0184B210B70945E2149EFC1 /* Observable+Concurrency.swift in Sources */, + B82BE7DF0907532F092BECDD73E78BEA /* ObservableConvertibleType.swift in Sources */, + 881E066A5872EBFA54CE48265DD13C5A /* ObservableConvertibleType+Infallible.swift in Sources */, + 369A041408BC17AFFCA35B5B8914B5AA /* ObservableType.swift in Sources */, + 62CA2784A4C3E922CE6DA1F48FDAAC0D /* ObservableType+Extensions.swift in Sources */, + 58B6E8C96476F601AFC210FC5FFBE331 /* ObservableType+PrimitiveSequence.swift in Sources */, + 02DACDAB3EC93D12823E002677B08727 /* ObserveOn.swift in Sources */, + F5D2C6A309A21B2C62AD709CE3CD4D1E /* ObserverBase.swift in Sources */, + 331AA426FED092F2FB5FFFECA80098DC /* ObserverType.swift in Sources */, + F81CCD2588F442839855E2B6B2C715B3 /* OperationQueueScheduler.swift in Sources */, + AD1D94077D7C7618D18F732B8C4B5C2C /* Optional.swift in Sources */, + 073A2A51ECD5DB9E8F4C35A483EC227A /* Platform.Darwin.swift in Sources */, + AF3239F66FE15C7881EEB0EFE95B7B35 /* Platform.Linux.swift in Sources */, + C26D7F712971BE2F45A8CA84FE4338D5 /* PrimitiveSequence.swift in Sources */, + 993A850E6056CE7125CB2EA24C9F89B3 /* PrimitiveSequence+Concurrency.swift in Sources */, + 7E9E6A3497E776A6BFB7C6BC6D26944B /* PrimitiveSequence+Zip+arity.swift in Sources */, + 80965B906B13E7FB49C907EBB06C6C4F /* PriorityQueue.swift in Sources */, + F3356E1AF0712E99435E5833E757A5B1 /* Producer.swift in Sources */, + A198B149825B68AA27652683A615A7E3 /* PublishSubject.swift in Sources */, + A178A1016FCDEB4452B50F321AF59C62 /* Queue.swift in Sources */, + BD14CA7C76E861E9848DF5064811ABBA /* Range.swift in Sources */, + F4C32EE4E7CADA2147793A0BCEB0D31F /* Reactive.swift in Sources */, + 09301ECCA99201DBAFFB454E61BF3CCA /* RecursiveLock.swift in Sources */, + 3E5FD873CD9A5C7D9ACC8EEB6CC70F8B /* RecursiveScheduler.swift in Sources */, + 1AE1D847FBF8B943B8244A0A4361F13C /* Reduce.swift in Sources */, + A87183A60E3E28C37BCEB7D48D6229F9 /* RefCountDisposable.swift in Sources */, + 74D263F22C5075D04C3E2BAD605C24C9 /* Repeat.swift in Sources */, + 745942D7C7F8D1EF271AA1978387364B /* ReplaySubject.swift in Sources */, + 252E4C2F3DBB874320103B96E4C578DD /* RetryWhen.swift in Sources */, + DCB842F5E9B4A06B14F2535623B21245 /* Rx.swift in Sources */, + BE408A6C4D9214606EFBE93B002B006A /* RxMutableBox.swift in Sources */, + A95BB172DF3A5E76A1BE513A2A6BCA8D /* RxSwift-dummy.m in Sources */, + FE10E869E5E56AEFD51256C51CD411F7 /* Sample.swift in Sources */, + A93F57843E0A4AF8F132A6AE6A21306F /* Scan.swift in Sources */, + 600B0431415616483ADFA292D48B754E /* ScheduledDisposable.swift in Sources */, + 3CA3290D8BD9A3BCF8C736D98353F6A8 /* ScheduledItem.swift in Sources */, + 2FD9C57A66582864772DB81E5266F4F2 /* ScheduledItemType.swift in Sources */, + 4058AED958386F42B26BEEBA2C9595EF /* SchedulerServices+Emulation.swift in Sources */, + 888C9E9AA154C630AE69E10D5A56AB95 /* SchedulerType.swift in Sources */, + 0E680B509EE0CEC74859E1EC706D58F3 /* Sequence.swift in Sources */, + 465C00E154960471E7FC90A7AB2E71B4 /* SerialDispatchQueueScheduler.swift in Sources */, + 7A19453906B6FA55169A2A02131E9875 /* SerialDisposable.swift in Sources */, + 35601C1F3FB1685E3DADE2264C1AA8CE /* ShareReplayScope.swift in Sources */, + 9239A65144607B6CBE9308B6ED8E6697 /* Single.swift in Sources */, + 982A5AA888EF57772C6AEB72CE13BA99 /* SingleAssignmentDisposable.swift in Sources */, + 12BA6CD96BB59ABAE47E1EE7A3624F42 /* SingleAsync.swift in Sources */, + 4ED1D5C9C2438C159915EC1BBDABF094 /* Sink.swift in Sources */, + 3BFBFF7DEF537868D62E42177E8A585F /* Skip.swift in Sources */, + 9499A9573DEDD36F064800A76F1956B5 /* SkipUntil.swift in Sources */, + 4270FF0A0B35AFCC499E76D02FE0CD2F /* SkipWhile.swift in Sources */, + 6C8817D2B9C500F56412FC269573D03E /* StartWith.swift in Sources */, + 7D2CA323BF9CDCED10FD04FCFD92EF2E /* SubjectType.swift in Sources */, + 322BB51CEFFF441B7AC73E0114685726 /* SubscribeOn.swift in Sources */, + ECC476559FEE897DAEA42170D3A20385 /* SubscriptionDisposable.swift in Sources */, + 7F6057B63D8F4105069F095840210BE9 /* SwiftSupport.swift in Sources */, + 90FE9C00A5D701C905A120B020EB2BDF /* Switch.swift in Sources */, + 576CD031E268053E9B9256FDC9E4A021 /* SwitchIfEmpty.swift in Sources */, + D0877E1BA5A586656A247CEBFD9CD193 /* SynchronizedDisposeType.swift in Sources */, + 64FF933E8B83FBF1EDD84E509BD2CA77 /* SynchronizedOnType.swift in Sources */, + 3C21708718768BE03359E89136D4C173 /* SynchronizedUnsubscribeType.swift in Sources */, + 8A5AB956CCD3F604AB6C7FAB8D2AA76B /* TailRecursiveSink.swift in Sources */, + 620CAA943303A257C2B10427AF2BB338 /* Take.swift in Sources */, + 6F9A363E934866CE611303879B3AE85F /* TakeLast.swift in Sources */, + 8521832472A2732E061B06D0A16A9A97 /* TakeWithPredicate.swift in Sources */, + 22FF4EB2B24CB81EAE06C5255AFEBBF8 /* Throttle.swift in Sources */, + 16AB40FBAEB09168884904A039C11483 /* Timeout.swift in Sources */, + 1F41901788FE8B5D4342A2164C8025CC /* Timer.swift in Sources */, + 852B713A5AD8151B146DFDC503FDBD53 /* ToArray.swift in Sources */, + 7C37C4D053EA08CA507F89F10FCA97F0 /* Using.swift in Sources */, + 44E6B65B0A98B5C87696EBBAF9D23240 /* VirtualTimeConverterType.swift in Sources */, + C6007A95971AFACFBD7EAFB247C4C3CB /* VirtualTimeScheduler.swift in Sources */, + 311000A901EDEC58409BE164C577EC44 /* Window.swift in Sources */, + 79A353C7AC79BDB7BD95F687464A9E28 /* WithLatestFrom.swift in Sources */, + 83EA91EFE500ACB0FB39D0DB57A2523B /* WithUnretained.swift in Sources */, + FB8965FC9A4BF1CCA1A87C8D795EB3AF /* Zip.swift in Sources */, + 636AE6329BEA18CD56A5B058E2C881C9 /* Zip+arity.swift in Sources */, + B504ECB7FC90BA6DA6319B35FDA5990B /* Zip+Collection.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B024EDE69B3C51D739853194CE746FE4 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + C5C71141A72424BC3711B53BB4726744 /* Device.generated.swift in Sources */, + 44FDC841C20165E2DE68E31737A401DC /* DeviceKit-dummy.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; B186292004011247A56FAC41B9D6C6A2 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -3158,133 +3387,147 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - B61519DD991056A1D585A34B6FA1D19C /* Sources */ = { + F459C8474B539DB0D25F559F82506E56 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 0DA0657F0B4D4AF03048C3F0591C5F07 /* Pods-yinmeng-ios-dummy.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B9C4339E494FCDEDF339AE80CF8263B3 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - D21AEE57BB74E8BE2A5ABEE23432A806 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - E0D995EBFD58A33805684F01024138E7 /* BehaviorRelay.swift in Sources */, - 2F29E8F0615655488301B37DCCE74DD2 /* Observable+Bind.swift in Sources */, - 0A50200D02E79569C5EAFEDE5448DEA8 /* PublishRelay.swift in Sources */, - 5BA418EFF060B7BEFDAF9B3E1E56ED4E /* ReplayRelay.swift in Sources */, - 0024FB3EA4398F0CCE435DF4134077AB /* RxRelay-dummy.m in Sources */, - C538C2B3F5A5D6BA85BBDCB544777AD4 /* Utils.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ - 129B8D6EDBC0E697BF55B3C8FE0FE1A6 /* PBXTargetDependency */ = { + 07921877E6ECDF534C58E72DEA30C47F /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = RxSwift; - target = EA9EA43B3B503823EE36C60D9C8A865F /* RxSwift */; - targetProxy = 4C27EC4B5188F89173A9C29D169E0032 /* PBXContainerItemProxy */; + name = RxRelay; + target = 4622BFEF3DC16E8BD15EEFC30D4D0084 /* RxRelay */; + targetProxy = 402F54D26A06D6C5E833E16587124F23 /* PBXContainerItemProxy */; }; - 19677A4C977E43BF6FDC659077FF8F64 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = SnapKit; - target = 19622742EBA51E823D6DAE3F8CDBFAD4 /* SnapKit */; - targetProxy = 6FE4ADF80639F6BB7A8166750DAACBCB /* PBXContainerItemProxy */; - }; - 294D4F167509B367133479F70C99FAAE /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = Alamofire; - target = EAAA1AD3A8A1B59AB91319EE40752C6D /* Alamofire */; - targetProxy = 72174616F0F2B6A658A39627B9B3AB27 /* PBXContainerItemProxy */; - }; - 41D57993E84517CD638C70ADEC5E44C6 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = RxSwift; - target = EA9EA43B3B503823EE36C60D9C8A865F /* RxSwift */; - targetProxy = 9453D1A2DED6629FB2E6B2F47B5861EC /* PBXContainerItemProxy */; - }; - 7AB2CEB2384A2E610A19A45C46C38838 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = Kingfisher; - target = E8022D22FAA6690B5E1C379C1BCE1491 /* Kingfisher */; - targetProxy = D55789695C0CB9279A0E694653D0BE12 /* PBXContainerItemProxy */; - }; - 861D671FE3252AAF9F3546CB1B7E113C /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = Alamofire; - target = EAAA1AD3A8A1B59AB91319EE40752C6D /* Alamofire */; - targetProxy = D7630C5D5DEF74799EEF3A89A7518F08 /* PBXContainerItemProxy */; - }; - 94F1664E9E64C92DEFB0970E1925F652 /* PBXTargetDependency */ = { + 0D23A6E8DB6A05869376B736F3F1AF29 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = MBProgressHUD; target = 82B0A41D3031FF27D78E17B0A9A46FB0 /* MBProgressHUD */; - targetProxy = 2945BE7CD469F91A2F51C450AFA05666 /* PBXContainerItemProxy */; + targetProxy = D2469B53360567BD082331A5A60665FD /* PBXContainerItemProxy */; }; - 9A711F5A31AD64A8B5050478F04948AD /* PBXTargetDependency */ = { + 1A0FAD97C82D0C3D6F804DEA53831D56 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = RxRelay; + target = 4622BFEF3DC16E8BD15EEFC30D4D0084 /* RxRelay */; + targetProxy = 4D3A30CCAB72C8ECC00FD44C6CDED8C5 /* PBXContainerItemProxy */; + }; + 1D8AE589CDF7EDDC4DB4FAC93E2687CE /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = Moya; target = 17F9141D333DA1A7BE5937F227221070 /* Moya */; - targetProxy = 1658A2BFA314B61B2A73634AD62CE881 /* PBXContainerItemProxy */; + targetProxy = 94525AEEB7E7F123EE4AF1079FC14C80 /* PBXContainerItemProxy */; }; - 9D46F8983711587F027876C6D9483255 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = HandyJSON; - target = 10D88C24864319FF583AD6D156896F32 /* HandyJSON */; - targetProxy = FF15280D6E3817C68943D4D47FCE6488 /* PBXContainerItemProxy */; - }; - AAA859713D3E1B87E847AD768604A711 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = RxSwift; - target = EA9EA43B3B503823EE36C60D9C8A865F /* RxSwift */; - targetProxy = B250CBDA21743BA7F971FA3FFEF57DAA /* PBXContainerItemProxy */; - }; - BB9A3FAEC46882D1BE980F96D535919F /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = RxRelay; - target = 4622BFEF3DC16E8BD15EEFC30D4D0084 /* RxRelay */; - targetProxy = DB1DC5BEA8CCBF1B3FD2396BBBEC7A93 /* PBXContainerItemProxy */; - }; - D7BCCB438C6783D4AD34AFA01C3017E2 /* PBXTargetDependency */ = { + 4F1139E707EF459E6BBE2DF69BAFB5BF /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = RxCocoa; target = 7AD0C6DCDC9CEC8A3C7C10C7FEE07BE6 /* RxCocoa */; - targetProxy = 374C7A97590E5FE0A51BFBBD65FB78D1 /* PBXContainerItemProxy */; + targetProxy = AA2EB75C26728BA7FB2D706C5430CB7B /* PBXContainerItemProxy */; }; - D9B00D70E911FF84772D30A6F17F24C2 /* PBXTargetDependency */ = { + 50CBC7693D8CA96F4289DF07FF9583EA /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = RxRelay; - target = 4622BFEF3DC16E8BD15EEFC30D4D0084 /* RxRelay */; - targetProxy = 304B703E396722BB916969650EE3ECE3 /* PBXContainerItemProxy */; + name = SnapKit; + target = 19622742EBA51E823D6DAE3F8CDBFAD4 /* SnapKit */; + targetProxy = 0A81B2EC8C597FDA069C0B11987DC810 /* PBXContainerItemProxy */; }; - E7FE09331A2C0535926E5A346DDFE0AB /* PBXTargetDependency */ = { + 5F7C3C75D608DDACAE5E5C0137619083 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = "Kingfisher-Kingfisher"; - target = 9828BBC09E9FB1238624113D7456E59E /* Kingfisher-Kingfisher */; - targetProxy = A699C0A386EEF6602AED63A3F0386D29 /* PBXContainerItemProxy */; + name = DeviceKit; + target = 4CDD1C6C8885D07092D8EA708AAC0E53 /* DeviceKit */; + targetProxy = 3FC034BCEB7D4CE3EA1D2EF340010ED2 /* PBXContainerItemProxy */; }; - F6A63E96803B3C03A914736028E41D5E /* PBXTargetDependency */ = { + 675DCDC218FC93971126BB4B47CD0191 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = Alamofire; + target = EAAA1AD3A8A1B59AB91319EE40752C6D /* Alamofire */; + targetProxy = B857D0F6FA0B2C3F52609C41D19C7023 /* PBXContainerItemProxy */; + }; + 6DE74CB8D14878ACF8C9391649131129 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = Reusable; target = 542460E7CDF2A9D5B2ECB5F8CE549E34 /* Reusable */; - targetProxy = 355C8F2CEBF2108145CF958E67525E6C /* PBXContainerItemProxy */; + targetProxy = 1662CE3F756ADE8C7A3E1F896F07BE96 /* PBXContainerItemProxy */; + }; + 85B7B27C6CFB48D892CB740F00AB55D1 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "NSObject+Rx"; + target = B8A8605EB5769E41DC25E1879868AF1C /* NSObject+Rx */; + targetProxy = 72D44FBBEFFE5BAF3B93DF0403BC5637 /* PBXContainerItemProxy */; + }; + 88775B66BFB89D573853AC735719B7DC /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = Kingfisher; + target = E8022D22FAA6690B5E1C379C1BCE1491 /* Kingfisher */; + targetProxy = 6CF83AF81A68BEEAE89B106B7EBAF508 /* PBXContainerItemProxy */; + }; + 9039C5B03F17EE8597B6EF0F2F5A0F54 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = RxSwift; + target = EA9EA43B3B503823EE36C60D9C8A865F /* RxSwift */; + targetProxy = E0831A863E8B9AE418AF7834ED71D85A /* PBXContainerItemProxy */; + }; + BFB35570FD7A4A438D9154C3A8C924B1 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = RxSwift; + target = EA9EA43B3B503823EE36C60D9C8A865F /* RxSwift */; + targetProxy = 79EF2EC5DAE04B56C1D03F2210B851DC /* PBXContainerItemProxy */; + }; + C1F3CD5F253C1C133A15C1BD581A96CB /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = RxSwift; + target = EA9EA43B3B503823EE36C60D9C8A865F /* RxSwift */; + targetProxy = 1BCA4EE3183108ECFD407E332E1B217D /* PBXContainerItemProxy */; + }; + C237BAED368E981FEA756F00CFA18C60 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = Alamofire; + target = EAAA1AD3A8A1B59AB91319EE40752C6D /* Alamofire */; + targetProxy = 999C27382BDBA2CA41120036900543E2 /* PBXContainerItemProxy */; + }; + D468E169E00C67B355EE9BFEFA6D5AF7 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = HandyJSON; + target = 10D88C24864319FF583AD6D156896F32 /* HandyJSON */; + targetProxy = 89040DAE0AA56A42D266BAD1727E0015 /* PBXContainerItemProxy */; + }; + DF6DAA0CDECA8EB9CBF9AA8B7B447EDA /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = RxSwift; + target = EA9EA43B3B503823EE36C60D9C8A865F /* RxSwift */; + targetProxy = 8E5134625B7004AE055563C4DE6EDA4B /* PBXContainerItemProxy */; + }; + F507F53540F057039809FEEED5BB1F05 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "Kingfisher-Kingfisher"; + target = 9828BBC09E9FB1238624113D7456E59E /* Kingfisher-Kingfisher */; + targetProxy = 4540F1BF1F57246A75E8301328A7B7CE /* PBXContainerItemProxy */; }; /* End PBXTargetDependency section */ /* Begin XCBuildConfiguration section */ - 166E9C881152A0BEAAF3B03A4FCB9878 /* Release */ = { + 01B3F5D6253CE2E8CCBC7D499EB4E9E6 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 19B712EE8F117D2EC35F9A295028959B /* RxSwift.release.xcconfig */; + baseConfigurationReference = 92C2FB4372B817EAF1113F1ACB67709D /* Kingfisher.release.xcconfig */; + buildSettings = { + CODE_SIGNING_ALLOWED = NO; + CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/Kingfisher"; + IBSC_MODULE = Kingfisher; + INFOPLIST_FILE = "Target Support Files/Kingfisher/ResourceBundle-Kingfisher-Kingfisher-Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; + PRODUCT_NAME = Kingfisher; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + WRAPPER_EXTENSION = bundle; + }; + name = Release; + }; + 0BAB4444C96091E66B52660F78B04A06 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 681558DCAFD23649321C935EAF65EA51 /* NSObject+Rx.debug.xcconfig */; buildSettings = { "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -3294,8 +3537,8 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_PREFIX_HEADER = "Target Support Files/RxSwift/RxSwift-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/RxSwift/RxSwift-Info.plist"; + GCC_PREFIX_HEADER = "Target Support Files/NSObject+Rx/NSObject+Rx-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/NSObject+Rx/NSObject+Rx-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 9.0; LD_RUNPATH_SEARCH_PATHS = ( @@ -3303,23 +3546,22 @@ "@executable_path/Frameworks", "@loader_path/Frameworks", ); - MODULEMAP_FILE = "Target Support Files/RxSwift/RxSwift.modulemap"; - PRODUCT_MODULE_NAME = RxSwift; - PRODUCT_NAME = RxSwift; + MODULEMAP_FILE = "Target Support Files/NSObject+Rx/NSObject+Rx.modulemap"; + PRODUCT_MODULE_NAME = NSObject_Rx; + PRODUCT_NAME = NSObject_Rx; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 5.1; + SWIFT_VERSION = 5.2; TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; - name = Release; + name = Debug; }; 195F1AC8F6BD95FEFB9983CAC195FCAE /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 93BD071E578B69235CCADBFBE9FBAA1B /* Kingfisher.release.xcconfig */; + baseConfigurationReference = 92C2FB4372B817EAF1113F1ACB67709D /* Kingfisher.release.xcconfig */; buildSettings = { CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -3355,7 +3597,7 @@ }; 1ABF49ADDB0430B6FFCC63A8184EACA2 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 649D2F79A4B50006D2A9D93E21022944 /* Moya.release.xcconfig */; + baseConfigurationReference = DE2376CD620ED6EF2597200BE22E70EF /* Moya.release.xcconfig */; buildSettings = { CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -3391,7 +3633,7 @@ }; 2D9905F00DBA0E0A2C139BAFDE426559 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = C71988E85D3858110A6CEEF81B0B0CBE /* Reusable.release.xcconfig */; + baseConfigurationReference = 2A99485BC5FEED1E79382726A5659675 /* Reusable.release.xcconfig */; buildSettings = { "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -3424,9 +3666,114 @@ }; name = Release; }; + 2DE15074050361C271BA4AF8F3492ECA /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = D4CADEC0640302766DA4113ABC5C3A68 /* DeviceKit.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/DeviceKit/DeviceKit-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/DeviceKit/DeviceKit-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/DeviceKit/DeviceKit.modulemap"; + PRODUCT_MODULE_NAME = DeviceKit; + PRODUCT_NAME = DeviceKit; + 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; + }; + 31693BFB44D50466394493D0A02BA7F2 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = C7CE4D7E07321EBA8053DBEF4867408A /* Pods-yinmeng-ios.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-yinmeng-ios/Pods-yinmeng-ios-Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MACH_O_TYPE = staticlib; + MODULEMAP_FILE = "Target Support Files/Pods-yinmeng-ios/Pods-yinmeng-ios.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; + }; + 3B1F5F9C73DECE2C4B437131AA1A604D /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 80DADA2BBF563E1B822E3B3FF52DBADF /* RxRelay.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/RxRelay/RxRelay-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/RxRelay/RxRelay-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/RxRelay/RxRelay.modulemap"; + PRODUCT_MODULE_NAME = RxRelay; + PRODUCT_NAME = RxRelay; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_VERSION = 5.1; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; 5614F562617D1EE7A1A60E422C2D007A /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 03B41EBBD593C680744DAD960E245F91 /* Reusable.debug.xcconfig */; + baseConfigurationReference = FF8C48E3A0A17C9A96AB5EFECAED7A39 /* Reusable.debug.xcconfig */; buildSettings = { "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -3458,9 +3805,44 @@ }; name = Debug; }; + 56AC7335090B7ACEECAB3EA279214F7E /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 5722044EB0ADF40364EA6A1133CECF25 /* DeviceKit.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/DeviceKit/DeviceKit-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/DeviceKit/DeviceKit-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/DeviceKit/DeviceKit.modulemap"; + PRODUCT_MODULE_NAME = DeviceKit; + PRODUCT_NAME = DeviceKit; + 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; + }; 577A24D81FA00BED9154F445BE58F743 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 63CF3F8FFB207D7C17E8DB9CB93EDA1E /* RxCocoa.release.xcconfig */; + baseConfigurationReference = E9DA779F73802F9220D73CCF52B57652 /* RxCocoa.release.xcconfig */; buildSettings = { "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -3493,7 +3875,7 @@ }; name = Release; }; - 614A05FBF51042DF76C96CCD248FB774 /* Release */ = { + 743570CEF642FE313DD87B43CE4A6EA6 /* Release */ = { isa = XCBuildConfiguration; baseConfigurationReference = 6C4BAD710FAA4AE5F73353998A04A650 /* Pods-yinmeng-ios.release.xcconfig */; buildSettings = { @@ -3533,7 +3915,7 @@ }; 74FCF40A76D1E62C63837B25FCE9F45D /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 1A9CF67CD4186CDC93B9439A7C72E036 /* HandyJSON.release.xcconfig */; + baseConfigurationReference = 5FFE2F1DD561C0411DE7218D5379A366 /* HandyJSON.release.xcconfig */; buildSettings = { "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -3567,7 +3949,7 @@ }; 8C925430B65BE03F92ABCD1B2005EE0C /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 74A65654283AE2CF4A3DFA265199F1C5 /* SnapKit.release.xcconfig */; + baseConfigurationReference = 14F91E4F17CF9C5B257D5502CA5AEF69 /* SnapKit.release.xcconfig */; buildSettings = { CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -3667,40 +4049,6 @@ }; name = Debug; }; - 960DBC77E1DF531EDC9D62CD1E847BA2 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 537B39F9D626350F9BD4A28C6DF455B6 /* RxSwift.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/RxSwift/RxSwift-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/RxSwift/RxSwift-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/RxSwift/RxSwift.modulemap"; - PRODUCT_MODULE_NAME = RxSwift; - PRODUCT_NAME = RxSwift; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 5.1; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; 9E406C6AAF85E580207CD97B0044DEAB /* Release */ = { isa = XCBuildConfiguration; buildSettings = { @@ -3763,46 +4111,9 @@ }; name = Release; }; - A6974CAC511C0AC2C4BED7CA1BB9D70C /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = C7CE4D7E07321EBA8053DBEF4867408A /* Pods-yinmeng-ios.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-yinmeng-ios/Pods-yinmeng-ios-Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 13.0; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - MACH_O_TYPE = staticlib; - MODULEMAP_FILE = "Target Support Files/Pods-yinmeng-ios/Pods-yinmeng-ios.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; - }; A6F0173BAEB974532D93E05E5A94E50A /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = AA050A692C8C8C04436B0CB1E5317D3A /* SnapKit.debug.xcconfig */; + baseConfigurationReference = 55ACC5695926FA80EAD7978822FEE963 /* SnapKit.debug.xcconfig */; buildSettings = { CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -3837,7 +4148,7 @@ }; B7D9E7CD650F798EC835C67DACFEBC4F /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 19D15B6F087615D6E6964610E2461AAD /* Alamofire.debug.xcconfig */; + baseConfigurationReference = CCF002BE9BFC08B04EDB88C1BED7F8A5 /* Alamofire.debug.xcconfig */; buildSettings = { CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -3872,7 +4183,7 @@ }; BC856BC9A4C1242C1AFA559E24FF0568 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 43A9212FF806B13E885C7019E059D160 /* Kingfisher.debug.xcconfig */; + baseConfigurationReference = FEA4904DACA1746B0F30B6E97B6BAF9A /* Kingfisher.debug.xcconfig */; buildSettings = { CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -3905,9 +4216,26 @@ }; name = Debug; }; + BCB2FBC369A55C0E132D5306B63DD5B5 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = FEA4904DACA1746B0F30B6E97B6BAF9A /* Kingfisher.debug.xcconfig */; + buildSettings = { + CODE_SIGNING_ALLOWED = NO; + CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/Kingfisher"; + IBSC_MODULE = Kingfisher; + INFOPLIST_FILE = "Target Support Files/Kingfisher/ResourceBundle-Kingfisher-Kingfisher-Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; + PRODUCT_NAME = Kingfisher; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + WRAPPER_EXTENSION = bundle; + }; + name = Debug; + }; C12D9C5CC8F2071662A98F549A9E6FB4 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = D4F121F8F3564995DB1C8EEF45128BEC /* RxCocoa.debug.xcconfig */; + baseConfigurationReference = 61EE19649DF15827C56F2A3B6E50320E /* RxCocoa.debug.xcconfig */; buildSettings = { "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -3941,7 +4269,7 @@ }; C3C37B487645A54D043C2C18BF002F24 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = FA92B06C831BE63EC9C993A1217E090D /* MBProgressHUD.release.xcconfig */; + baseConfigurationReference = 3C1A2B0C590F3A8B6CB87FAEA993A0DA /* MBProgressHUD.release.xcconfig */; buildSettings = { "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -3974,9 +4302,78 @@ }; name = Release; }; - C3D15EBC00CE0C7A89C80FF91D85E3DF /* Release */ = { + CB0E80DD9132AA0059F1F93F4FCD8BFD /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 98AC09B0DB090CDE2D7CC82E1811FA69 /* RxRelay.release.xcconfig */; + baseConfigurationReference = 137B4C7C2E94357736C830A5EA42777C /* RxSwift.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/RxSwift/RxSwift-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/RxSwift/RxSwift-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/RxSwift/RxSwift.modulemap"; + PRODUCT_MODULE_NAME = RxSwift; + PRODUCT_NAME = RxSwift; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_VERSION = 5.1; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; + CC8DD7B8210D40D186536532B63FFE22 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = FEC1ECEDDCAA2CFA6A99C880B214F7C6 /* NSObject+Rx.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/NSObject+Rx/NSObject+Rx-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/NSObject+Rx/NSObject+Rx-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/NSObject+Rx/NSObject+Rx.modulemap"; + PRODUCT_MODULE_NAME = NSObject_Rx; + PRODUCT_NAME = NSObject_Rx; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_VERSION = 5.2; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; + DC5E21B739FC02D438551EBFEEDBDC87 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 08FC94C88B8CC56DBFE85B65C6478B2A /* RxRelay.release.xcconfig */; buildSettings = { "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -4009,60 +4406,9 @@ }; name = Release; }; - C844A53BB6B41D694E97EC9D893859EA /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = B5077D9342A7330872B9A75748BED92D /* RxRelay.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/RxRelay/RxRelay-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/RxRelay/RxRelay-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/RxRelay/RxRelay.modulemap"; - PRODUCT_MODULE_NAME = RxRelay; - PRODUCT_NAME = RxRelay; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 5.1; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; - CF6CA7FF39CA75947971C5770D398B3C /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 43A9212FF806B13E885C7019E059D160 /* Kingfisher.debug.xcconfig */; - buildSettings = { - CODE_SIGNING_ALLOWED = NO; - CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/Kingfisher"; - IBSC_MODULE = Kingfisher; - INFOPLIST_FILE = "Target Support Files/Kingfisher/ResourceBundle-Kingfisher-Kingfisher-Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; - PRODUCT_NAME = Kingfisher; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - WRAPPER_EXTENSION = bundle; - }; - name = Debug; - }; DE569755C8FE69395D8E6C347DC7A5F8 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 80E741ED9F7CB291A4CA8068F3FE04F2 /* MBProgressHUD.debug.xcconfig */; + baseConfigurationReference = 790336EDB50A860403CE3AA08BDC2943 /* MBProgressHUD.debug.xcconfig */; buildSettings = { "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -4096,7 +4442,7 @@ }; F5F3306F2C09AB4B623C805497E28D51 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 36DFFD75B7479E1705FAC0F110CE34DC /* Alamofire.release.xcconfig */; + baseConfigurationReference = 9B56AA75BDFFAA97675054E142082543 /* Alamofire.release.xcconfig */; buildSettings = { CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -4130,26 +4476,9 @@ }; name = Release; }; - FA4895DBEAEBEAC4FD8B516447AB8E02 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 93BD071E578B69235CCADBFBE9FBAA1B /* Kingfisher.release.xcconfig */; - buildSettings = { - CODE_SIGNING_ALLOWED = NO; - CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/Kingfisher"; - IBSC_MODULE = Kingfisher; - INFOPLIST_FILE = "Target Support Files/Kingfisher/ResourceBundle-Kingfisher-Kingfisher-Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; - PRODUCT_NAME = Kingfisher; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - WRAPPER_EXTENSION = bundle; - }; - name = Release; - }; FA8A3A80F26337CABC8F2D46E5924112 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = E743F2C861099DDED46F43D21958AD4E /* Moya.debug.xcconfig */; + baseConfigurationReference = 7206976A160531142A0120F2BFD3B782 /* Moya.debug.xcconfig */; buildSettings = { CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -4184,7 +4513,7 @@ }; FC6D85641022ADC4C2AE37E5380D4C88 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 45E1E6ADB66DF96376E308D63F6B71D8 /* HandyJSON.debug.xcconfig */; + baseConfigurationReference = 98221F3A69B48EF2E218B063D7EE6F62 /* HandyJSON.debug.xcconfig */; buildSettings = { "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -4215,6 +4544,41 @@ }; name = Debug; }; + FD579612DA95411F49927210E4B6F4A1 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 88FF4B6EC04BE78FC9F26E9CBE1D7696 /* RxSwift.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/RxSwift/RxSwift-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/RxSwift/RxSwift-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/RxSwift/RxSwift.modulemap"; + PRODUCT_MODULE_NAME = RxSwift; + PRODUCT_NAME = RxSwift; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_VERSION = 5.1; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ @@ -4227,15 +4591,6 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 09CCB2E572716A4C9765854032B74A05 /* Build configuration list for PBXNativeTarget "Pods-yinmeng-ios" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - A6974CAC511C0AC2C4BED7CA1BB9D70C /* Debug */, - 614A05FBF51042DF76C96CCD248FB774 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; 1E42B460D55BA3EBE021004CC2CE312C /* Build configuration list for PBXNativeTarget "RxCocoa" */ = { isa = XCConfigurationList; buildConfigurations = ( @@ -4245,6 +4600,15 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; + 44439F3B5C48C4B17D9AB8166C9A4F69 /* Build configuration list for PBXNativeTarget "Kingfisher-Kingfisher" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + BCB2FBC369A55C0E132D5306B63DD5B5 /* Debug */, + 01B3F5D6253CE2E8CCBC7D499EB4E9E6 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; 4821239608C13582E20E6DA73FD5F1F9 /* Build configuration list for PBXProject "Pods" */ = { isa = XCConfigurationList; buildConfigurations = ( @@ -4263,6 +4627,15 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; + 53A660BF65161DD4A44087C68C0A5639 /* Build configuration list for PBXNativeTarget "RxSwift" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + CB0E80DD9132AA0059F1F93F4FCD8BFD /* Debug */, + FD579612DA95411F49927210E4B6F4A1 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; 58EAA7FF29EA237538F747F2AF468203 /* Build configuration list for PBXNativeTarget "SnapKit" */ = { isa = XCConfigurationList; buildConfigurations = ( @@ -4272,15 +4645,6 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 5D6B3CF88B71711BCA7DA130AF7EC13D /* Build configuration list for PBXNativeTarget "RxRelay" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - C844A53BB6B41D694E97EC9D893859EA /* Debug */, - C3D15EBC00CE0C7A89C80FF91D85E3DF /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; 61C623C1EDB6AD9DC66AD8969115C6E1 /* Build configuration list for PBXNativeTarget "Kingfisher" */ = { isa = XCConfigurationList; buildConfigurations = ( @@ -4308,11 +4672,11 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - BD779400D1CA952C3C31F225A3BA7650 /* Build configuration list for PBXNativeTarget "RxSwift" */ = { + C57DD85F01E6A4EFCD618B61EA506080 /* Build configuration list for PBXNativeTarget "NSObject+Rx" */ = { isa = XCConfigurationList; buildConfigurations = ( - 960DBC77E1DF531EDC9D62CD1E847BA2 /* Debug */, - 166E9C881152A0BEAAF3B03A4FCB9878 /* Release */, + 0BAB4444C96091E66B52660F78B04A06 /* Debug */, + CC8DD7B8210D40D186536532B63FFE22 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -4326,11 +4690,29 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - E29E987197D3C29B626AB8FA0A012C04 /* Build configuration list for PBXNativeTarget "Kingfisher-Kingfisher" */ = { + E1077D7814A0ED6B17AB361205CD7502 /* Build configuration list for PBXNativeTarget "Pods-yinmeng-ios" */ = { isa = XCConfigurationList; buildConfigurations = ( - CF6CA7FF39CA75947971C5770D398B3C /* Debug */, - FA4895DBEAEBEAC4FD8B516447AB8E02 /* Release */, + 31693BFB44D50466394493D0A02BA7F2 /* Debug */, + 743570CEF642FE313DD87B43CE4A6EA6 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + E8F74B6601063818A4A45D8DE46F1659 /* Build configuration list for PBXNativeTarget "RxRelay" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 3B1F5F9C73DECE2C4B437131AA1A604D /* Debug */, + DC5E21B739FC02D438551EBFEEDBDC87 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + EE2416AB9D0716DFAC4C6C724B0E6744 /* Build configuration list for PBXNativeTarget "DeviceKit" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 2DE15074050361C271BA4AF8F3492ECA /* Debug */, + 56AC7335090B7ACEECAB3EA279214F7E /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; diff --git a/Pods/Pods.xcodeproj/xcuserdata/fengshuo.xcuserdatad/xcschemes/xcschememanagement.plist b/Pods/Pods.xcodeproj/xcuserdata/fengshuo.xcuserdatad/xcschemes/xcschememanagement.plist index 44066f6..802e4d9 100644 --- a/Pods/Pods.xcodeproj/xcuserdata/fengshuo.xcuserdatad/xcschemes/xcschememanagement.plist +++ b/Pods/Pods.xcodeproj/xcuserdata/fengshuo.xcuserdatad/xcschemes/xcschememanagement.plist @@ -11,83 +11,97 @@ orderHint 0 - HandyJSON.xcscheme + DeviceKit.xcscheme isShown orderHint 1 - Kingfisher-Kingfisher.xcscheme - - isShown - - orderHint - 3 - - Kingfisher.xcscheme + HandyJSON.xcscheme isShown orderHint 2 - MBProgressHUD.xcscheme + Kingfisher-Kingfisher.xcscheme isShown orderHint 4 - Moya.xcscheme + Kingfisher.xcscheme + + isShown + + orderHint + 3 + + MBProgressHUD.xcscheme isShown orderHint 5 - Pods-yinmeng-ios.xcscheme + Moya.xcscheme isShown orderHint 6 - Reusable.xcscheme + NSObject+Rx.xcscheme isShown orderHint 7 - RxCocoa.xcscheme + Pods-yinmeng-ios.xcscheme isShown orderHint 8 - RxRelay.xcscheme + Reusable.xcscheme isShown orderHint 9 - RxSwift.xcscheme + RxCocoa.xcscheme isShown orderHint 10 - SnapKit.xcscheme + RxRelay.xcscheme isShown orderHint 11 + RxSwift.xcscheme + + isShown + + orderHint + 12 + + SnapKit.xcscheme + + isShown + + orderHint + 13 + SuppressBuildableAutocreation diff --git a/Pods/Target Support Files/Alamofire/Alamofire-Info.plist b/Pods/Target Support Files/Alamofire/Alamofire-Info.plist index af3ef2c..d1ca5f0 100644 --- a/Pods/Target Support Files/Alamofire/Alamofire-Info.plist +++ b/Pods/Target Support Files/Alamofire/Alamofire-Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 5.7.1 + 5.8.1 CFBundleSignature ???? CFBundleVersion diff --git a/Pods/Target Support Files/Pods-yinmeng-ios/Pods-yinmeng-ios-acknowledgements.markdown b/Pods/Target Support Files/Pods-yinmeng-ios/Pods-yinmeng-ios-acknowledgements.markdown index 667b6ab..637f7be 100644 --- a/Pods/Target Support Files/Pods-yinmeng-ios/Pods-yinmeng-ios-acknowledgements.markdown +++ b/Pods/Target Support Files/Pods-yinmeng-ios/Pods-yinmeng-ios-acknowledgements.markdown @@ -24,6 +24,28 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +## DeviceKit + +Copyright (c) 2015 Dennis Weissmann + +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. + ## HandyJSON Copyright 1999-2016 Alibaba Group Holding Ltd. @@ -149,6 +171,32 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +## NSObject+Rx + +The MIT License (MIT) + +Copyright (c) 2015 Ash Furrow + +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. + + + ## Reusable The MIT License (MIT) diff --git a/Pods/Target Support Files/Pods-yinmeng-ios/Pods-yinmeng-ios-acknowledgements.plist b/Pods/Target Support Files/Pods-yinmeng-ios/Pods-yinmeng-ios-acknowledgements.plist index cdb29da..4f9af76 100644 --- a/Pods/Target Support Files/Pods-yinmeng-ios/Pods-yinmeng-ios-acknowledgements.plist +++ b/Pods/Target Support Files/Pods-yinmeng-ios/Pods-yinmeng-ios-acknowledgements.plist @@ -41,6 +41,34 @@ THE SOFTWARE. Type PSGroupSpecifier + + FooterText + Copyright (c) 2015 Dennis Weissmann + +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 + DeviceKit + Type + PSGroupSpecifier + FooterText Copyright 1999-2016 Alibaba Group Holding Ltd. @@ -194,6 +222,38 @@ SOFTWARE. FooterText The MIT License (MIT) +Copyright (c) 2015 Ash Furrow + +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 + NSObject+Rx + Type + PSGroupSpecifier + + + FooterText + The MIT License (MIT) + Copyright (c) 2016 AliSoftware Permission is hereby granted, free of charge, to any person obtaining a copy diff --git a/Pods/Target Support Files/Pods-yinmeng-ios/Pods-yinmeng-ios-frameworks-Debug-input-files.xcfilelist b/Pods/Target Support Files/Pods-yinmeng-ios/Pods-yinmeng-ios-frameworks-Debug-input-files.xcfilelist index 76e2bb9..c48358e 100644 --- a/Pods/Target Support Files/Pods-yinmeng-ios/Pods-yinmeng-ios-frameworks-Debug-input-files.xcfilelist +++ b/Pods/Target Support Files/Pods-yinmeng-ios/Pods-yinmeng-ios-frameworks-Debug-input-files.xcfilelist @@ -1,9 +1,11 @@ ${PODS_ROOT}/Target Support Files/Pods-yinmeng-ios/Pods-yinmeng-ios-frameworks.sh ${BUILT_PRODUCTS_DIR}/Alamofire/Alamofire.framework +${BUILT_PRODUCTS_DIR}/DeviceKit/DeviceKit.framework ${BUILT_PRODUCTS_DIR}/HandyJSON/HandyJSON.framework ${BUILT_PRODUCTS_DIR}/Kingfisher/Kingfisher.framework ${BUILT_PRODUCTS_DIR}/MBProgressHUD/MBProgressHUD.framework ${BUILT_PRODUCTS_DIR}/Moya/Moya.framework +${BUILT_PRODUCTS_DIR}/NSObject+Rx/NSObject_Rx.framework ${BUILT_PRODUCTS_DIR}/Reusable/Reusable.framework ${BUILT_PRODUCTS_DIR}/RxCocoa/RxCocoa.framework ${BUILT_PRODUCTS_DIR}/RxRelay/RxRelay.framework diff --git a/Pods/Target Support Files/Pods-yinmeng-ios/Pods-yinmeng-ios-frameworks-Debug-output-files.xcfilelist b/Pods/Target Support Files/Pods-yinmeng-ios/Pods-yinmeng-ios-frameworks-Debug-output-files.xcfilelist index 10ca208..934be18 100644 --- a/Pods/Target Support Files/Pods-yinmeng-ios/Pods-yinmeng-ios-frameworks-Debug-output-files.xcfilelist +++ b/Pods/Target Support Files/Pods-yinmeng-ios/Pods-yinmeng-ios-frameworks-Debug-output-files.xcfilelist @@ -1,8 +1,10 @@ ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Alamofire.framework +${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/DeviceKit.framework ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/HandyJSON.framework ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Kingfisher.framework ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/MBProgressHUD.framework ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Moya.framework +${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/NSObject_Rx.framework ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Reusable.framework ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/RxCocoa.framework ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/RxRelay.framework diff --git a/Pods/Target Support Files/Pods-yinmeng-ios/Pods-yinmeng-ios-frameworks-Release-input-files.xcfilelist b/Pods/Target Support Files/Pods-yinmeng-ios/Pods-yinmeng-ios-frameworks-Release-input-files.xcfilelist index 76e2bb9..c48358e 100644 --- a/Pods/Target Support Files/Pods-yinmeng-ios/Pods-yinmeng-ios-frameworks-Release-input-files.xcfilelist +++ b/Pods/Target Support Files/Pods-yinmeng-ios/Pods-yinmeng-ios-frameworks-Release-input-files.xcfilelist @@ -1,9 +1,11 @@ ${PODS_ROOT}/Target Support Files/Pods-yinmeng-ios/Pods-yinmeng-ios-frameworks.sh ${BUILT_PRODUCTS_DIR}/Alamofire/Alamofire.framework +${BUILT_PRODUCTS_DIR}/DeviceKit/DeviceKit.framework ${BUILT_PRODUCTS_DIR}/HandyJSON/HandyJSON.framework ${BUILT_PRODUCTS_DIR}/Kingfisher/Kingfisher.framework ${BUILT_PRODUCTS_DIR}/MBProgressHUD/MBProgressHUD.framework ${BUILT_PRODUCTS_DIR}/Moya/Moya.framework +${BUILT_PRODUCTS_DIR}/NSObject+Rx/NSObject_Rx.framework ${BUILT_PRODUCTS_DIR}/Reusable/Reusable.framework ${BUILT_PRODUCTS_DIR}/RxCocoa/RxCocoa.framework ${BUILT_PRODUCTS_DIR}/RxRelay/RxRelay.framework diff --git a/Pods/Target Support Files/Pods-yinmeng-ios/Pods-yinmeng-ios-frameworks-Release-output-files.xcfilelist b/Pods/Target Support Files/Pods-yinmeng-ios/Pods-yinmeng-ios-frameworks-Release-output-files.xcfilelist index 10ca208..934be18 100644 --- a/Pods/Target Support Files/Pods-yinmeng-ios/Pods-yinmeng-ios-frameworks-Release-output-files.xcfilelist +++ b/Pods/Target Support Files/Pods-yinmeng-ios/Pods-yinmeng-ios-frameworks-Release-output-files.xcfilelist @@ -1,8 +1,10 @@ ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Alamofire.framework +${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/DeviceKit.framework ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/HandyJSON.framework ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Kingfisher.framework ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/MBProgressHUD.framework ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Moya.framework +${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/NSObject_Rx.framework ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Reusable.framework ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/RxCocoa.framework ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/RxRelay.framework diff --git a/Pods/Target Support Files/Pods-yinmeng-ios/Pods-yinmeng-ios-frameworks.sh b/Pods/Target Support Files/Pods-yinmeng-ios/Pods-yinmeng-ios-frameworks.sh index 59195bc..63f5343 100755 --- a/Pods/Target Support Files/Pods-yinmeng-ios/Pods-yinmeng-ios-frameworks.sh +++ b/Pods/Target Support Files/Pods-yinmeng-ios/Pods-yinmeng-ios-frameworks.sh @@ -177,10 +177,12 @@ code_sign_if_enabled() { if [[ "$CONFIGURATION" == "Debug" ]]; then install_framework "${BUILT_PRODUCTS_DIR}/Alamofire/Alamofire.framework" + install_framework "${BUILT_PRODUCTS_DIR}/DeviceKit/DeviceKit.framework" install_framework "${BUILT_PRODUCTS_DIR}/HandyJSON/HandyJSON.framework" install_framework "${BUILT_PRODUCTS_DIR}/Kingfisher/Kingfisher.framework" install_framework "${BUILT_PRODUCTS_DIR}/MBProgressHUD/MBProgressHUD.framework" install_framework "${BUILT_PRODUCTS_DIR}/Moya/Moya.framework" + install_framework "${BUILT_PRODUCTS_DIR}/NSObject+Rx/NSObject_Rx.framework" install_framework "${BUILT_PRODUCTS_DIR}/Reusable/Reusable.framework" install_framework "${BUILT_PRODUCTS_DIR}/RxCocoa/RxCocoa.framework" install_framework "${BUILT_PRODUCTS_DIR}/RxRelay/RxRelay.framework" @@ -189,10 +191,12 @@ if [[ "$CONFIGURATION" == "Debug" ]]; then fi if [[ "$CONFIGURATION" == "Release" ]]; then install_framework "${BUILT_PRODUCTS_DIR}/Alamofire/Alamofire.framework" + install_framework "${BUILT_PRODUCTS_DIR}/DeviceKit/DeviceKit.framework" install_framework "${BUILT_PRODUCTS_DIR}/HandyJSON/HandyJSON.framework" install_framework "${BUILT_PRODUCTS_DIR}/Kingfisher/Kingfisher.framework" install_framework "${BUILT_PRODUCTS_DIR}/MBProgressHUD/MBProgressHUD.framework" install_framework "${BUILT_PRODUCTS_DIR}/Moya/Moya.framework" + install_framework "${BUILT_PRODUCTS_DIR}/NSObject+Rx/NSObject_Rx.framework" install_framework "${BUILT_PRODUCTS_DIR}/Reusable/Reusable.framework" install_framework "${BUILT_PRODUCTS_DIR}/RxCocoa/RxCocoa.framework" install_framework "${BUILT_PRODUCTS_DIR}/RxRelay/RxRelay.framework" diff --git a/Pods/Target Support Files/Pods-yinmeng-ios/Pods-yinmeng-ios.debug.xcconfig b/Pods/Target Support Files/Pods-yinmeng-ios/Pods-yinmeng-ios.debug.xcconfig index 9aef334..8b711bc 100644 --- a/Pods/Target Support Files/Pods-yinmeng-ios/Pods-yinmeng-ios.debug.xcconfig +++ b/Pods/Target Support Files/Pods-yinmeng-ios/Pods-yinmeng-ios.debug.xcconfig @@ -1,11 +1,11 @@ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO -FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire" "${PODS_CONFIGURATION_BUILD_DIR}/HandyJSON" "${PODS_CONFIGURATION_BUILD_DIR}/Kingfisher" "${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD" "${PODS_CONFIGURATION_BUILD_DIR}/Moya" "${PODS_CONFIGURATION_BUILD_DIR}/Reusable" "${PODS_CONFIGURATION_BUILD_DIR}/RxCocoa" "${PODS_CONFIGURATION_BUILD_DIR}/RxRelay" "${PODS_CONFIGURATION_BUILD_DIR}/RxSwift" "${PODS_CONFIGURATION_BUILD_DIR}/SnapKit" +FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire" "${PODS_CONFIGURATION_BUILD_DIR}/DeviceKit" "${PODS_CONFIGURATION_BUILD_DIR}/HandyJSON" "${PODS_CONFIGURATION_BUILD_DIR}/Kingfisher" "${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD" "${PODS_CONFIGURATION_BUILD_DIR}/Moya" "${PODS_CONFIGURATION_BUILD_DIR}/NSObject+Rx" "${PODS_CONFIGURATION_BUILD_DIR}/Reusable" "${PODS_CONFIGURATION_BUILD_DIR}/RxCocoa" "${PODS_CONFIGURATION_BUILD_DIR}/RxRelay" "${PODS_CONFIGURATION_BUILD_DIR}/RxSwift" "${PODS_CONFIGURATION_BUILD_DIR}/SnapKit" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire/Alamofire.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/HandyJSON/HandyJSON.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Kingfisher/Kingfisher.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD/MBProgressHUD.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Moya/Moya.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Reusable/Reusable.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/RxCocoa/RxCocoa.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/RxRelay/RxRelay.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/RxSwift/RxSwift.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SnapKit/SnapKit.framework/Headers" +HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire/Alamofire.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/DeviceKit/DeviceKit.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/HandyJSON/HandyJSON.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Kingfisher/Kingfisher.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD/MBProgressHUD.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Moya/Moya.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/NSObject+Rx/NSObject_Rx.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Reusable/Reusable.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/RxCocoa/RxCocoa.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/RxRelay/RxRelay.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/RxSwift/RxSwift.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SnapKit/SnapKit.framework/Headers" LD_RUNPATH_SEARCH_PATHS = $(inherited) /usr/lib/swift '@executable_path/Frameworks' '@loader_path/Frameworks' LIBRARY_SEARCH_PATHS = $(inherited) "${DT_TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" /usr/lib/swift -OTHER_LDFLAGS = $(inherited) -framework "Accelerate" -framework "Alamofire" -framework "CFNetwork" -framework "CoreGraphics" -framework "Foundation" -framework "HandyJSON" -framework "Kingfisher" -framework "MBProgressHUD" -framework "Moya" -framework "QuartzCore" -framework "Reusable" -framework "RxCocoa" -framework "RxRelay" -framework "RxSwift" -framework "SnapKit" -framework "UIKit" -weak_framework "Combine" -weak_framework "SwiftUI" +OTHER_LDFLAGS = $(inherited) -framework "Accelerate" -framework "Alamofire" -framework "CFNetwork" -framework "CoreGraphics" -framework "DeviceKit" -framework "Foundation" -framework "HandyJSON" -framework "Kingfisher" -framework "MBProgressHUD" -framework "Moya" -framework "NSObject_Rx" -framework "QuartzCore" -framework "Reusable" -framework "RxCocoa" -framework "RxRelay" -framework "RxSwift" -framework "SnapKit" -framework "UIKit" -weak_framework "Combine" -weak_framework "SwiftUI" OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) diff --git a/Pods/Target Support Files/Pods-yinmeng-ios/Pods-yinmeng-ios.release.xcconfig b/Pods/Target Support Files/Pods-yinmeng-ios/Pods-yinmeng-ios.release.xcconfig index 9aef334..8b711bc 100644 --- a/Pods/Target Support Files/Pods-yinmeng-ios/Pods-yinmeng-ios.release.xcconfig +++ b/Pods/Target Support Files/Pods-yinmeng-ios/Pods-yinmeng-ios.release.xcconfig @@ -1,11 +1,11 @@ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO -FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire" "${PODS_CONFIGURATION_BUILD_DIR}/HandyJSON" "${PODS_CONFIGURATION_BUILD_DIR}/Kingfisher" "${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD" "${PODS_CONFIGURATION_BUILD_DIR}/Moya" "${PODS_CONFIGURATION_BUILD_DIR}/Reusable" "${PODS_CONFIGURATION_BUILD_DIR}/RxCocoa" "${PODS_CONFIGURATION_BUILD_DIR}/RxRelay" "${PODS_CONFIGURATION_BUILD_DIR}/RxSwift" "${PODS_CONFIGURATION_BUILD_DIR}/SnapKit" +FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire" "${PODS_CONFIGURATION_BUILD_DIR}/DeviceKit" "${PODS_CONFIGURATION_BUILD_DIR}/HandyJSON" "${PODS_CONFIGURATION_BUILD_DIR}/Kingfisher" "${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD" "${PODS_CONFIGURATION_BUILD_DIR}/Moya" "${PODS_CONFIGURATION_BUILD_DIR}/NSObject+Rx" "${PODS_CONFIGURATION_BUILD_DIR}/Reusable" "${PODS_CONFIGURATION_BUILD_DIR}/RxCocoa" "${PODS_CONFIGURATION_BUILD_DIR}/RxRelay" "${PODS_CONFIGURATION_BUILD_DIR}/RxSwift" "${PODS_CONFIGURATION_BUILD_DIR}/SnapKit" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire/Alamofire.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/HandyJSON/HandyJSON.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Kingfisher/Kingfisher.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD/MBProgressHUD.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Moya/Moya.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Reusable/Reusable.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/RxCocoa/RxCocoa.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/RxRelay/RxRelay.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/RxSwift/RxSwift.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SnapKit/SnapKit.framework/Headers" +HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire/Alamofire.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/DeviceKit/DeviceKit.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/HandyJSON/HandyJSON.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Kingfisher/Kingfisher.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD/MBProgressHUD.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Moya/Moya.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/NSObject+Rx/NSObject_Rx.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Reusable/Reusable.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/RxCocoa/RxCocoa.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/RxRelay/RxRelay.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/RxSwift/RxSwift.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SnapKit/SnapKit.framework/Headers" LD_RUNPATH_SEARCH_PATHS = $(inherited) /usr/lib/swift '@executable_path/Frameworks' '@loader_path/Frameworks' LIBRARY_SEARCH_PATHS = $(inherited) "${DT_TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" /usr/lib/swift -OTHER_LDFLAGS = $(inherited) -framework "Accelerate" -framework "Alamofire" -framework "CFNetwork" -framework "CoreGraphics" -framework "Foundation" -framework "HandyJSON" -framework "Kingfisher" -framework "MBProgressHUD" -framework "Moya" -framework "QuartzCore" -framework "Reusable" -framework "RxCocoa" -framework "RxRelay" -framework "RxSwift" -framework "SnapKit" -framework "UIKit" -weak_framework "Combine" -weak_framework "SwiftUI" +OTHER_LDFLAGS = $(inherited) -framework "Accelerate" -framework "Alamofire" -framework "CFNetwork" -framework "CoreGraphics" -framework "DeviceKit" -framework "Foundation" -framework "HandyJSON" -framework "Kingfisher" -framework "MBProgressHUD" -framework "Moya" -framework "NSObject_Rx" -framework "QuartzCore" -framework "Reusable" -framework "RxCocoa" -framework "RxRelay" -framework "RxSwift" -framework "SnapKit" -framework "UIKit" -weak_framework "Combine" -weak_framework "SwiftUI" OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) diff --git a/yinmeng-ios.xcodeproj/project.pbxproj b/yinmeng-ios.xcodeproj/project.pbxproj index a7e1d62..7388531 100644 --- a/yinmeng-ios.xcodeproj/project.pbxproj +++ b/yinmeng-ios.xcodeproj/project.pbxproj @@ -8,6 +8,9 @@ /* Begin PBXBuildFile section */ 25C63BC8F805551E8754E409 /* Pods_yinmeng_ios.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B2F175918AD0811681497739 /* Pods_yinmeng_ios.framework */; }; + E81A7BAE2B885B20009E736E /* Base64.m in Sources */ = {isa = PBXBuildFile; fileRef = E81A7BAA2B885B20009E736E /* Base64.m */; }; + E81A7BAF2B885B20009E736E /* MAIDESEncryptTool.m in Sources */ = {isa = PBXBuildFile; fileRef = E81A7BAB2B885B20009E736E /* MAIDESEncryptTool.m */; }; + E81A7BB22B886299009E736E /* HUDTool.swift in Sources */ = {isa = PBXBuildFile; fileRef = E81A7BB12B886299009E736E /* HUDTool.swift */; }; E86A43AA2B85DFA90084C04D /* BaseViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = E86A43A92B85DFA90084C04D /* BaseViewController.swift */; }; E86A43AE2B85DFEA0084C04D /* Color+.swift in Sources */ = {isa = PBXBuildFile; fileRef = E86A43AD2B85DFEA0084C04D /* Color+.swift */; }; E86A43B02B85E11B0084C04D /* BaseNavigationViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = E86A43AF2B85E11B0084C04D /* BaseNavigationViewController.swift */; }; @@ -21,26 +24,32 @@ E86A43C82B8743EA0084C04D /* AuthFillDataVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = E86A43C72B8743EA0084C04D /* AuthFillDataVC.swift */; }; E86A43CB2B874C6F0084C04D /* AuthPrivacyView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E86A43CA2B874C6F0084C04D /* AuthPrivacyView.swift */; }; E86A43CD2B874C8E0084C04D /* BaseView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E86A43CC2B874C8E0084C04D /* BaseView.swift */; }; + E86A43D32B8773C90084C04D /* APPUtils.swift in Sources */ = {isa = PBXBuildFile; fileRef = E86A43D22B8773C90084C04D /* APPUtils.swift */; }; + E86A43D52B8774B70084C04D /* AuthViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = E86A43D42B8774B70084C04D /* AuthViewModel.swift */; }; + E86A43DA2B877A840084C04D /* AppConfigObject.swift in Sources */ = {isa = PBXBuildFile; fileRef = E86A43D92B877A840084C04D /* AppConfigObject.swift */; }; + E86A43E82B884C5E0084C04D /* String+.swift in Sources */ = {isa = PBXBuildFile; fileRef = E86A43E72B884C5E0084C04D /* String+.swift */; }; E884E85F2B6900C500ADE6EE /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = E884E85E2B6900C500ADE6EE /* AppDelegate.swift */; }; E884E8662B6900C500ADE6EE /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = E884E8642B6900C500ADE6EE /* Main.storyboard */; }; E884E8682B6900C600ADE6EE /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = E884E8672B6900C600ADE6EE /* Assets.xcassets */; }; E884E86B2B6900C600ADE6EE /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = E884E8692B6900C600ADE6EE /* LaunchScreen.storyboard */; }; - E897B8D82B6C8D1600F884C2 /* YMNetworkAPI.swift in Sources */ = {isa = PBXBuildFile; fileRef = E897B8D72B6C8D1600F884C2 /* YMNetworkAPI.swift */; }; - E897B8DA2B6C903600F884C2 /* NetworkRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = E897B8D92B6C903600F884C2 /* NetworkRequest.swift */; }; - E897B8DC2B6C916A00F884C2 /* HeadstreamRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = E897B8DB2B6C916A00F884C2 /* HeadstreamRequest.swift */; }; - E897B8DE2B6C91F500F884C2 /* YMRequestX.swift in Sources */ = {isa = PBXBuildFile; fileRef = E897B8DD2B6C91F500F884C2 /* YMRequestX.swift */; }; - E897B8E02B6C929500F884C2 /* SharedDriver.swift in Sources */ = {isa = PBXBuildFile; fileRef = E897B8DF2B6C929500F884C2 /* SharedDriver.swift */; }; - E897B8E22B6C933E00F884C2 /* LevelStatusBarWindowController.swift in Sources */ = {isa = PBXBuildFile; fileRef = E897B8E12B6C933E00F884C2 /* LevelStatusBarWindowController.swift */; }; - E897B8E42B6C93C700F884C2 /* YMRequestConfig.swift in Sources */ = {isa = PBXBuildFile; fileRef = E897B8E32B6C93C700F884C2 /* YMRequestConfig.swift */; }; - E897B8E62B6C941400F884C2 /* YMPluginSubType.swift in Sources */ = {isa = PBXBuildFile; fileRef = E897B8E52B6C941400F884C2 /* YMPluginSubType.swift */; }; - E897B8E82B6C944F00F884C2 /* YMLastNeverResult.swift in Sources */ = {isa = PBXBuildFile; fileRef = E897B8E72B6C944F00F884C2 /* YMLastNeverResult.swift */; }; - E897B8EB2B6CA1DA00F884C2 /* YMRequestLoadingPlugin.swift in Sources */ = {isa = PBXBuildFile; fileRef = E897B8EA2B6CA1DA00F884C2 /* YMRequestLoadingPlugin.swift */; }; + E8D15A9D2B899E1500369467 /* YMNetworkHelper.swift in Sources */ = {isa = PBXBuildFile; fileRef = E8D15A9C2B899E1500369467 /* YMNetworkHelper.swift */; }; + E8D15A9F2B89AED600369467 /* AuthManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = E8D15A9E2B89AED500369467 /* AuthManager.swift */; }; + E8D15AA12B89AF4F00369467 /* UserTokenObject.swift in Sources */ = {isa = PBXBuildFile; fileRef = E8D15AA02B89AF4F00369467 /* UserTokenObject.swift */; }; + E8D15AA32B89B03D00369467 /* Deserialized.swift in Sources */ = {isa = PBXBuildFile; fileRef = E8D15AA22B89B03D00369467 /* Deserialized.swift */; }; + E8D15AA62B89B0C600369467 /* List+.swift in Sources */ = {isa = PBXBuildFile; fileRef = E8D15AA52B89B0C600369467 /* List+.swift */; }; + E8D15AA82B89B74700369467 /* YMRequestX.swift in Sources */ = {isa = PBXBuildFile; fileRef = E8D15AA72B89B74700369467 /* YMRequestX.swift */; }; /* End PBXBuildFile section */ /* Begin PBXFileReference section */ A9FB906EB4D17C552C15A2B3 /* Pods-yinmeng-ios.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-yinmeng-ios.debug.xcconfig"; path = "Target Support Files/Pods-yinmeng-ios/Pods-yinmeng-ios.debug.xcconfig"; sourceTree = ""; }; B2F175918AD0811681497739 /* Pods_yinmeng_ios.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_yinmeng_ios.framework; sourceTree = BUILT_PRODUCTS_DIR; }; CB0AC98C54C1D41FA4CA102B /* Pods-yinmeng-ios.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-yinmeng-ios.release.xcconfig"; path = "Target Support Files/Pods-yinmeng-ios/Pods-yinmeng-ios.release.xcconfig"; sourceTree = ""; }; + E81A7BA92B885B1F009E736E /* yinmeng-ios-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "yinmeng-ios-Bridging-Header.h"; sourceTree = ""; }; + E81A7BAA2B885B20009E736E /* Base64.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Base64.m; sourceTree = ""; }; + E81A7BAB2B885B20009E736E /* MAIDESEncryptTool.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MAIDESEncryptTool.m; sourceTree = ""; }; + E81A7BAC2B885B20009E736E /* Base64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Base64.h; sourceTree = ""; }; + E81A7BAD2B885B20009E736E /* MAIDESEncryptTool.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MAIDESEncryptTool.h; sourceTree = ""; }; + E81A7BB12B886299009E736E /* HUDTool.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HUDTool.swift; sourceTree = ""; }; E86A43A92B85DFA90084C04D /* BaseViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BaseViewController.swift; sourceTree = ""; }; E86A43AD2B85DFEA0084C04D /* Color+.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Color+.swift"; sourceTree = ""; }; E86A43AF2B85E11B0084C04D /* BaseNavigationViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BaseNavigationViewController.swift; sourceTree = ""; }; @@ -54,22 +63,22 @@ E86A43C72B8743EA0084C04D /* AuthFillDataVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AuthFillDataVC.swift; sourceTree = ""; }; E86A43CA2B874C6F0084C04D /* AuthPrivacyView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AuthPrivacyView.swift; sourceTree = ""; }; E86A43CC2B874C8E0084C04D /* BaseView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BaseView.swift; sourceTree = ""; }; + E86A43D22B8773C90084C04D /* APPUtils.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = APPUtils.swift; sourceTree = ""; }; + E86A43D42B8774B70084C04D /* AuthViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AuthViewModel.swift; sourceTree = ""; }; + E86A43D92B877A840084C04D /* AppConfigObject.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppConfigObject.swift; sourceTree = ""; }; + E86A43E72B884C5E0084C04D /* String+.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "String+.swift"; sourceTree = ""; }; E884E85B2B6900C500ADE6EE /* yinmeng-ios.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "yinmeng-ios.app"; sourceTree = BUILT_PRODUCTS_DIR; }; E884E85E2B6900C500ADE6EE /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; E884E8652B6900C500ADE6EE /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; E884E8672B6900C600ADE6EE /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; E884E86A2B6900C600ADE6EE /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; E884E86C2B6900C600ADE6EE /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - E897B8D72B6C8D1600F884C2 /* YMNetworkAPI.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YMNetworkAPI.swift; sourceTree = ""; }; - E897B8D92B6C903600F884C2 /* NetworkRequest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NetworkRequest.swift; sourceTree = ""; }; - E897B8DB2B6C916A00F884C2 /* HeadstreamRequest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HeadstreamRequest.swift; sourceTree = ""; }; - E897B8DD2B6C91F500F884C2 /* YMRequestX.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YMRequestX.swift; sourceTree = ""; }; - E897B8DF2B6C929500F884C2 /* SharedDriver.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SharedDriver.swift; sourceTree = ""; }; - E897B8E12B6C933E00F884C2 /* LevelStatusBarWindowController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LevelStatusBarWindowController.swift; sourceTree = ""; }; - E897B8E32B6C93C700F884C2 /* YMRequestConfig.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YMRequestConfig.swift; sourceTree = ""; }; - E897B8E52B6C941400F884C2 /* YMPluginSubType.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YMPluginSubType.swift; sourceTree = ""; }; - E897B8E72B6C944F00F884C2 /* YMLastNeverResult.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YMLastNeverResult.swift; sourceTree = ""; }; - E897B8EA2B6CA1DA00F884C2 /* YMRequestLoadingPlugin.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YMRequestLoadingPlugin.swift; sourceTree = ""; }; + E8D15A9C2B899E1500369467 /* YMNetworkHelper.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YMNetworkHelper.swift; sourceTree = ""; }; + E8D15A9E2B89AED500369467 /* AuthManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AuthManager.swift; sourceTree = ""; }; + E8D15AA02B89AF4F00369467 /* UserTokenObject.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserTokenObject.swift; sourceTree = ""; }; + E8D15AA22B89B03D00369467 /* Deserialized.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Deserialized.swift; sourceTree = ""; }; + E8D15AA52B89B0C600369467 /* List+.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "List+.swift"; sourceTree = ""; }; + E8D15AA72B89B74700369467 /* YMRequestX.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = YMRequestX.swift; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -101,9 +110,20 @@ name = Frameworks; sourceTree = ""; }; + E81A7BB02B88628B009E736E /* Hud */ = { + isa = PBXGroup; + children = ( + E81A7BB12B886299009E736E /* HUDTool.swift */, + ); + path = Hud; + sourceTree = ""; + }; E86A43A72B85DF7A0084C04D /* Base */ = { isa = PBXGroup; children = ( + E8D15A9B2B899DD400369467 /* Request */, + E81A7BB02B88628B009E736E /* Hud */, + E8EE60802B8858A500D02F6E /* Security */, E86A43BD2B8620BA0084C04D /* Utils */, E86A43A82B85DF850084C04D /* ViewController */, ); @@ -124,6 +144,8 @@ E86A43AB2B85DFC20084C04D /* Extension */ = { isa = PBXGroup; children = ( + E8D15AA42B89B0BA00369467 /* List */, + E86A43E62B884C520084C04D /* String */, E86A43C42B862CB70084C04D /* UIImage */, E86A43AC2B85DFD70084C04D /* Color */, ); @@ -149,6 +171,7 @@ E86A43B22B85E2170084C04D /* Auth */ = { isa = PBXGroup; children = ( + E86A43D82B877A6C0084C04D /* Model */, E86A43C92B874C5C0084C04D /* View */, E86A43B42B85E2340084C04D /* VM */, E86A43B32B85E22A0084C04D /* VC */, @@ -171,6 +194,9 @@ isa = PBXGroup; children = ( E86A43B52B85E2520084C04D /* AuthAPI.swift */, + E86A43D42B8774B70084C04D /* AuthViewModel.swift */, + E8D15A9E2B89AED500369467 /* AuthManager.swift */, + E8D15AA02B89AF4F00369467 /* UserTokenObject.swift */, ); path = VM; sourceTree = ""; @@ -179,6 +205,7 @@ isa = PBXGroup; children = ( E86A43BE2B8620C40084C04D /* Utils.swift */, + E86A43D22B8773C90084C04D /* APPUtils.swift */, ); path = Utils; sourceTree = ""; @@ -199,6 +226,22 @@ path = View; sourceTree = ""; }; + E86A43D82B877A6C0084C04D /* Model */ = { + isa = PBXGroup; + children = ( + E86A43D92B877A840084C04D /* AppConfigObject.swift */, + ); + path = Model; + sourceTree = ""; + }; + E86A43E62B884C520084C04D /* String */ = { + isa = PBXGroup; + children = ( + E86A43E72B884C5E0084C04D /* String+.swift */, + ); + path = String; + sourceTree = ""; + }; E884E8522B6900C500ADE6EE = { isa = PBXGroup; children = ( @@ -223,7 +266,6 @@ E86A43B12B85E1FC0084C04D /* Modules */, E86A43AB2B85DFC20084C04D /* Extension */, E86A43A72B85DF7A0084C04D /* Base */, - E897B8D62B6C8CF600F884C2 /* HttpRequest */, E884E85E2B6900C500ADE6EE /* AppDelegate.swift */, E884E8642B6900C500ADE6EE /* Main.storyboard */, E884E8672B6900C600ADE6EE /* Assets.xcassets */, @@ -233,29 +275,34 @@ path = "yinmeng-ios"; sourceTree = ""; }; - E897B8D62B6C8CF600F884C2 /* HttpRequest */ = { + E8D15A9B2B899DD400369467 /* Request */ = { isa = PBXGroup; children = ( - E897B8E92B6CA1B500F884C2 /* Plugins */, - E897B8D72B6C8D1600F884C2 /* YMNetworkAPI.swift */, - E897B8D92B6C903600F884C2 /* NetworkRequest.swift */, - E897B8DB2B6C916A00F884C2 /* HeadstreamRequest.swift */, - E897B8DD2B6C91F500F884C2 /* YMRequestX.swift */, - E897B8DF2B6C929500F884C2 /* SharedDriver.swift */, - E897B8E12B6C933E00F884C2 /* LevelStatusBarWindowController.swift */, - E897B8E32B6C93C700F884C2 /* YMRequestConfig.swift */, - E897B8E52B6C941400F884C2 /* YMPluginSubType.swift */, - E897B8E72B6C944F00F884C2 /* YMLastNeverResult.swift */, + E8D15AA72B89B74700369467 /* YMRequestX.swift */, + E8D15AA22B89B03D00369467 /* Deserialized.swift */, + E8D15A9C2B899E1500369467 /* YMNetworkHelper.swift */, ); - path = HttpRequest; + path = Request; sourceTree = ""; }; - E897B8E92B6CA1B500F884C2 /* Plugins */ = { + E8D15AA42B89B0BA00369467 /* List */ = { isa = PBXGroup; children = ( - E897B8EA2B6CA1DA00F884C2 /* YMRequestLoadingPlugin.swift */, + E8D15AA52B89B0C600369467 /* List+.swift */, ); - path = Plugins; + path = List; + sourceTree = ""; + }; + E8EE60802B8858A500D02F6E /* Security */ = { + isa = PBXGroup; + children = ( + E81A7BAC2B885B20009E736E /* Base64.h */, + E81A7BAA2B885B20009E736E /* Base64.m */, + E81A7BAD2B885B20009E736E /* MAIDESEncryptTool.h */, + E81A7BAB2B885B20009E736E /* MAIDESEncryptTool.m */, + E81A7BA92B885B1F009E736E /* yinmeng-ios-Bridging-Header.h */, + ); + path = Security; sourceTree = ""; }; /* End PBXGroup section */ @@ -292,6 +339,7 @@ TargetAttributes = { E884E85A2B6900C500ADE6EE = { CreatedOnToolsVersion = 15.0; + LastSwiftMigration = 1500; }; }; }; @@ -373,30 +421,33 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - E897B8E02B6C929500F884C2 /* SharedDriver.swift in Sources */, E86A43AE2B85DFEA0084C04D /* Color+.swift in Sources */, - E897B8E22B6C933E00F884C2 /* LevelStatusBarWindowController.swift in Sources */, + E8D15A9F2B89AED600369467 /* AuthManager.swift in Sources */, E86A43B62B85E2520084C04D /* AuthAPI.swift in Sources */, E86A43B02B85E11B0084C04D /* BaseNavigationViewController.swift in Sources */, - E897B8DE2B6C91F500F884C2 /* YMRequestX.swift in Sources */, + E86A43E82B884C5E0084C04D /* String+.swift in Sources */, + E8D15AA32B89B03D00369467 /* Deserialized.swift in Sources */, + E86A43DA2B877A840084C04D /* AppConfigObject.swift in Sources */, + E8D15AA62B89B0C600369467 /* List+.swift in Sources */, + E81A7BAE2B885B20009E736E /* Base64.m in Sources */, + E81A7BB22B886299009E736E /* HUDTool.swift in Sources */, E86A43BC2B85FA640084C04D /* AuthForgetVC.swift in Sources */, E86A43C32B8628AF0084C04D /* BaeTabBarViewController.swift in Sources */, - E897B8DC2B6C916A00F884C2 /* HeadstreamRequest.swift in Sources */, E86A43AA2B85DFA90084C04D /* BaseViewController.swift in Sources */, E884E85F2B6900C500ADE6EE /* AppDelegate.swift in Sources */, - E897B8E62B6C941400F884C2 /* YMPluginSubType.swift in Sources */, E86A43B82B85F0B80084C04D /* AuthLaunchVC.swift in Sources */, E86A43C82B8743EA0084C04D /* AuthFillDataVC.swift in Sources */, - E897B8DA2B6C903600F884C2 /* NetworkRequest.swift in Sources */, E86A43CD2B874C8E0084C04D /* BaseView.swift in Sources */, - E897B8D82B6C8D1600F884C2 /* YMNetworkAPI.swift in Sources */, + E8D15AA12B89AF4F00369467 /* UserTokenObject.swift in Sources */, E86A43C62B862CC70084C04D /* UIImage+.swift in Sources */, + E86A43D32B8773C90084C04D /* APPUtils.swift in Sources */, E86A43CB2B874C6F0084C04D /* AuthPrivacyView.swift in Sources */, - E897B8E42B6C93C700F884C2 /* YMRequestConfig.swift in Sources */, E86A43BF2B8620C40084C04D /* Utils.swift in Sources */, E86A43BA2B85F1360084C04D /* AuthLoginVC.swift in Sources */, - E897B8E82B6C944F00F884C2 /* YMLastNeverResult.swift in Sources */, - E897B8EB2B6CA1DA00F884C2 /* YMRequestLoadingPlugin.swift in Sources */, + E81A7BAF2B885B20009E736E /* MAIDESEncryptTool.m in Sources */, + E8D15AA82B89B74700369467 /* YMRequestX.swift in Sources */, + E86A43D52B8774B70084C04D /* AuthViewModel.swift in Sources */, + E8D15A9D2B899E1500369467 /* YMNetworkHelper.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -547,8 +598,10 @@ buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CLANG_ENABLE_MODULES = YES; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; DEVELOPMENT_TEAM = KQKX28SU5S; ENABLE_USER_SCRIPT_SANDBOXING = NO; GENERATE_INFOPLIST_FILE = YES; @@ -556,17 +609,18 @@ INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen; INFOPLIST_KEY_UIMainStoryboardFile = Main; - INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; - INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; + INFOPLIST_KEY_UISupportedInterfaceOrientations = UIInterfaceOrientationPortrait; IPHONEOS_DEPLOYMENT_TARGET = 13.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.0; + MARKETING_VERSION = 1.0.0; PRODUCT_BUNDLE_IDENTIFIER = "yinmeng.yinmeng-ios"; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_OBJC_BRIDGING_HEADER = "yinmeng-ios/Base/Security/yinmeng-ios-Bridging-Header.h"; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; }; @@ -578,8 +632,10 @@ buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CLANG_ENABLE_MODULES = YES; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; DEVELOPMENT_TEAM = KQKX28SU5S; ENABLE_USER_SCRIPT_SANDBOXING = NO; GENERATE_INFOPLIST_FILE = YES; @@ -587,17 +643,17 @@ INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen; INFOPLIST_KEY_UIMainStoryboardFile = Main; - INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; - INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; + INFOPLIST_KEY_UISupportedInterfaceOrientations = UIInterfaceOrientationPortrait; IPHONEOS_DEPLOYMENT_TARGET = 13.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.0; + MARKETING_VERSION = 1.0.0; PRODUCT_BUNDLE_IDENTIFIER = "yinmeng.yinmeng-ios"; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_OBJC_BRIDGING_HEADER = "yinmeng-ios/Base/Security/yinmeng-ios-Bridging-Header.h"; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; }; diff --git a/yinmeng-ios.xcodeproj/xcuserdata/fengshuo.xcuserdatad/xcschemes/xcschememanagement.plist b/yinmeng-ios.xcodeproj/xcuserdata/fengshuo.xcuserdatad/xcschemes/xcschememanagement.plist index 71b4810..70dd353 100644 --- a/yinmeng-ios.xcodeproj/xcuserdata/fengshuo.xcuserdatad/xcschemes/xcschememanagement.plist +++ b/yinmeng-ios.xcodeproj/xcuserdata/fengshuo.xcuserdatad/xcschemes/xcschememanagement.plist @@ -7,7 +7,7 @@ yinmeng-ios.xcscheme_^#shared#^_ orderHint - 12 + 14 diff --git a/yinmeng-ios.xcworkspace/xcuserdata/fengshuo.xcuserdatad/UserInterfaceState.xcuserstate b/yinmeng-ios.xcworkspace/xcuserdata/fengshuo.xcuserdatad/UserInterfaceState.xcuserstate index aeaa82d6b72ca62a63df477fc68e7102c33fb5de..fcae92900674db0cbe3630dc1fcd1f8ec43b78e8 100644 GIT binary patch literal 187340 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 z z%rC4!eXJ~tO|9KIPqx)R!f4b{jEM^HgpNBhI>$L>v5MG~!qWLA#jz4Rg{}pQD+-kJ z?T9v8IF5XeXFex3zoe)jR@PD5vQKH>Iix%aV zEmH}~iOnO9pnReN>7>rx2Xyb$Q&DY?gNBVBr^n@SgFu78fgr}u)h^NJ2~k}(dih+y=dZ#{T_Klo1VEBlUqekaUo-!kEVzjuj zsOXU1V3bYfDPwYyR}-B>0)ZK0at2hO_0O)Xh?U26ac4YjYEI>xIk6aqaEENT7_`eX zc}z~`!q~F%Y53pd2_>9yCgF~=am%DJIYY4i@PC*U=?XjSz#&OZ7gM2J{mFBDR4WYK9T-y)f7$B8ad7jaW3vagfj<}B4Rnq%CW98 zaX2|fHk#BSLx(duW@cgFpdPob+*(@Q$Ny6A0`2BFeIXMU$dz^O?%CL-Yqz)0MlZnG8mSc6L_NN-V z;q3m2esM$GN{*d9*i$udP}~@otA-4Xo8o42R1cP}l}u`HC1rIrH@x85Uvrn0#_E2- z)u6bVF=NM#pQb+1V!WeM)Q>Uc&KIH(loX?lR*jp0k7TTZ6z-8ban_ie(UleXsJ#Qq z%JP?O%$+m=pSAKCVNp9s4qQ`o=GpKSJFVQrq|I|&{xsd z(Cg_N>6__W>D%cI^iKM1`WN~r{TKZY{jZMGiMn*1UMK6!I;+mE>!ur{8>gF~o2;9y zTc}&ATcNv9w^nzf?pEC<-A>)3x&yj{x=(dq>3-1ttotKPpC+qZ>uB}A)STphlmAI; z6Ys0ZNpDYos>>FXz%xC4Jweaeo_>lDN+6`87J`rgf_{s%+t$uA&@;%^&ejgnhTs@T z5DXv~$p;({NrHrym5iYCpBoLzufUDkwOkU}D5qi>aVr0@Wo{t}FmTHne11mHXlf#f zp$=!y8ni9$n3Y>nkiRULUlHuwwNKaHs;?N2;T&a-r`2|JdnS4&V?ac{OL(S$V2)#N zBUV8@(`it*JXifYkA@BLKyEZ|2lUgU*Z>pYiwF7sUOxx#a$=PD2|ItYOf1|b4M6ofV) zv<0CZ2<Yc}h2vCnV$P=gcoz zGA4g<;XE}6AYaw~N!lCoWD|Zhv7)f3u%a-gx-50i;l<^pia^(GR=cO-*=9__X0Ji9 z*_HF=kybU!=-8r?vSmZd@=NE}eXE^A?GZ>gu2zcbHFtQncrb_JPS2g5yF7P$sy$mh z_jv9F;dBr>fN%x~9YM$hAq#{~cY3yYwtMdP?C?C`dC>C^2%SMV3xu;l7z)Bf5axnV zO0NBMr6Q3@?ts$9m&9n|@XXqa$Q(F7zZhHF@D^yb{Mz5pH4H5)sVr50K-Yp>MQV#2 zQ&NG!d-=%1icIxmz5P73TPZ(lw?1}8|^fN>UH`zUPC ztUZ77HO3_qi?Njlt6Rr!>{QE$6-*r7@F(rOUh%w2*|Gf$CvGBPc!P3tN{}&h(b~4J zdEUUfn&)*8dM7+@g3zbMy=qVi-}M~!yoXalVJi?(jd3Kz#Lyp`C@>&bnq@%f3&NRW zVZ{Ip0I{jMfQbAo4BW7Bcw9+2T0u$iOtpnYZQm>3&~?DR zog?n;f5)>`LVA@bMKlK&*%MViR%PfT{m)fDNBXZBrhM8Um^_(hjT|*`%JhOorOPf* zf2K7zX;lBNeP6A#uy{W7e1sAos*GbRD~hldMNCbNh{=T~@BT*5$DU6}Q%j25 z=gG74aw~=ooYc7o*5m4qfuMHjQTJ!PLlRe7-ZOc)yh%BET|3upr`*gO1iW}&U8I(m znw@A2eC|0yb=mCs!t-SZ$QA1pg#x$09RcR25v@Mzti)*=LgS^ikYJz3<6;= z2tx?bYGVPh@dl=*7;fh9^72Yz+udu;saYXVcOWK+mol)V6m>99Zd1Eo6NO_~SE*F6 z^W;!V+bK5NtktW>JvqXFk#*B2q6m+6yZ`pmL^l5M9P|9^r9c=4!f+5qfG~2CSLaRh zGF}#hQ6P*3VH^nK|F2}jo8iSV=?SkMgwYAF5ri=VQt(JC@k{$O3D z$EgoTHpE%nsZHDCD?e@gK`g(0Byn1tkF#nBbo{yGsV;4BSy@RL7Sb^@Pxj}bUZ~rl z`I8o56iLPWl`Gzq)v0svKex)0U3JCek~>#dLgU|*yQ-AlOeJY1Ry2ySqI3auGj$*J z3Uv^dUVoi>lX{zapZbdWnmU4&qrYjE)+^N`wQ|&!?oRin&!+p++4LZKF1?VxjJ}%Q zK_5_6xV8$@rB;=d5A@gn?ajP4uU++gNn7)}yf`~%!i$0RgoGCZ>zo#uM)&3odJcQT z|Lxv#PriG5=Do$QU3*%K?rq6-IQ zDC=0^QEC;gb1P$I%f?}&)go+!EGw@I|7XrsjAmSZ1%6+w6_@4hhKlCx8eX zDhSg+m=3}WOrZ1j@b>if!VY_3CJ3`Y$RmPgPsR(V^*M9Upa;$`DZ#F847^BGFgU+_ zS#HVjVvGYYE*MWvM(G`zuACRCE|7Lav+`FC#>d#@tab>g6{76?iaGO%qUXkzRw#St zVk2n5Yu*9gZ0|sP#)GK)y+gc1rz!>H#>y5=BW)Q4%9%`4zElne!Z~r&=Q$u09KyYZ zdq;RjdPnK5%&ow3r{E1(L?j4=*&yU2I@Els&^tEn#VBu4Y)Q`GiowMNr6q;M6}d`d zvl3c($9u6Ag4Eh-Pf|TWEUe0#L*j_0e?0E{+AC8_o#dU2rr)U42KT1QJB1YgA6scl zoq4Bw&mqrrhIgiSmNyTCc_7ROp%8=xo6tke_RjHQTLJo~g&-8+hg0sQQn3CaFB#0} zT?E3Sgtr6)B^$2U2$&dqIT}0W1N>JkTQb&UnN{oTD4NnyX%s`T^mKX#J?DQO)NYff zQ5-fen6drIPerJ9R7a{a)t%}^^`-h#1F50Z2x<(rMopxqQZuP@r~+y(wE$bD%BiK; zHg!I=n!1F#l)8#qPu+lRRJT)A)Sc8;OelGP+C@D|J&A2q`>7YGm#J4#l;5TfQy)+t zQ=egr)e-7@>SyYA>QCw)nxYw6pwnq1ZK3V76Wg%JK%sVY2Rf7POn0MuVOv&zY|R=< zkDy1>ZfSnS{HbVKv8BV1^G%e5|I(?9T+)Y~JGx|9e(u1MvY1Q} z>yWXTP2W`5A0z$vwayIV{AUiI`E2-3^(Yp~wVAR~Hp)&pC};hSqxzpGW0k2AyJ~U= zU|Pq7NdskF4dtP{lrQxo?j1i>Jz{_gZ=`~F#8CYsOdY(mBBq?BOxIvzVH>J#>Sgc$ zI(aqiDg7pFXFQ$iK%G&)^ah`YRaBHth@lK&Ld>|LO3Y5d+=fidMD9ePV`^M&YU=*& z9gm7co>CWbHC^#)y462MZgze-wvzS0_Rf?FRm{#tQG=-=so(0CcNx{PhEcAK*qD3Vh1XCcv3+;+36%G6 zTrF=bd356%UwjQU0b3h$PvmOL)DkC=5+^GqPN{#*6G<}-KJsbQbZW+ll)GFlcNQr( z56eZ9sb6jll~2vafGuSs-2V=uP9Ta=t}0^NHPk%fPOi-9-9Qn1)N9etEg4f>Geykp)fqa*f-@H`tq*l)Y2}b!d2L}aB=<8reLB+0aj@7 z$*-Z-QtMJLcK@II)nYFrPyTZ13N+9w>la=B^OT&}oJ!JlSwme-T|-@aB7j}09_Bhq zzmdA009L=?8tO*uD!KUtPW$y~YI(O3yl$hUhNay>ZJ-h-P}(s@Eo~#Y37e?R$itTU zCD#9(OESG`sJpOFr}_jA@lBO_hVutv@2Jb{AW^Q#3vNY4Es ze1IWpXZ>O)sa;q#*#ESfdL;FN_m00+E%-6wMjyw5$r(RUzvu~*M%Pe#sJ+xvsTaHd zW0P9!GsO1x;f**BxEkytdk#CvPQYJnQcHZ1+}f8^@oMPrYp4TQ!%V46wWx#SX4YVh zv>WwW{VT5jIcHd9K@If=R$1RVk(0ewJ;FQW2=C&_9w$9D)O%O~PN_t-pbv>feMAbX ze{wa{C)B4WQq1S1m@i0p(Xbd&760Z$uJ0lBw7w;e_d7JD7e!Vo2rslJT&7mRgET6>p?X zl#MpmKey@iV#XTUO55-ZQ@wYzg9<0mw`2dcoA#u#Tk@3B{!&i~gY1p8A8%NL5VM93 zVo!KD_44+PSG^b=B@dttp^k1_{~{+RgW?*xJ$)K|dg>+b|K&RMOwT}Zp*uE737tiE zO6_dbqPkGUo9V7e7to+yQiJVVJ?Ne%aC)Dk1YwLp_eO~6KB`F54I=D`N~%~5eHONx z^*e!*-!-Tu4?we{v+-@TruPZ!D|gYk{*>>iE2S( zsNzlZSVd!wD`-4DfzCOBi#^&`EpZ~bjgyj3xq)}Cp{LMO>1nB#xp(}V3hdd2p_VF4 z=s2f}o<-+1(f35>)3YP}k8hq!(8(toqrzM0xpne0Bbr)eK$(_3Gy4|`xx|cAMp(`Kg4O)E^ROk0(9b=rosyVG{0?M~a5b|CGev>(!rGCC%m zaWFxqE0fKPWOA9AOd(UkEM+cbZe}(z_b?AJdzlxQ_n0Hhugozvjm=;KY$n^2?avNo z$FnooS?oM^IlGp-;lmFeOLOP^h4<%r+<_FO9qv}Wf(KU8J#owWDLw0kufS`V#fT8B^mLI zwHa4s+?sJ$#{C)3WE{#kobf@%ml=QQCA~%O)kpMM`d<2x`f2((`XYU$9`tMV*XTFv zAJjjt->*NYe^39p{-{APm<(P+dqZc#AVZE}h9PDsHLNsTV7Sz9yWw8LPQ#Oi=M1kI z-ZT7Q_}3^HO-8q|tuf1(Z5(f$W}IUzF)lS;YP{LF(Rhz>m+@)iOU4h3-x+_$Br#T& zWQ**TL-OfzSGkAWPaY*tNjC25)c?}+)&FYma&1%cQt$bgo#b8SUG81sUFki~y9$JJ zLBK?rau6y2C+!gyZ=oYz!1j<1-V2p6c)}7K35GcsSAs5wv_tx^A(W(Cj4du&HoO?y zX|W|m=~TqeBz4z;zbl=Bxn-o`3BOZ1L9oBkF(`XzZFf0o(ZJu--gwfCsFgXPvbY$_ z%PuOJv#^}x+9Xq3CSaz9+DwV%%~?oNSCic|N*{{WT7HFhJ$AQxuk>E!z1n+?_gWB^ zg0KvP?k(od>=KcEQH zNeY&cGc6ucQZ^>GWL!QOC8bCq!C1ku_g?c3QvUcNuM(-ou zN4<}E9|z$=5H0~>EePu{W6Zn9yBDwVDeOCWW?J2`Cn{$J!bPMn<>EYfLZ{%=(PLs2 zqy=SItO$EWGt1Ow!<<-gLHi2qo9HvYq`aaJX{E(C?9D0fgU_R+03ULn`N&DEtWUX` zg4<^<4$tdzn%bN2toJ$Wh{2~?m+YX{Ka~?0mtR;`<$a#?CA7GWb{Q{Pe)B#9!WuF& zt8np@-1&siU}x>;jpQl`4dkMMo{Xwn~-vFu9hLx1ZXrQ`b%fojP^tgxy#xR&+We*s*h`^Uesa z=-RXQ8Nptix}SGmq%8je^ACaj|)r zx>eiGJUlt1&HJU2YFHaxXk{Mpen-m0n|ghM>Y$E7_7KA_C%TuEBobAq-Qwliem{GE zBYl6rcz*@qMi6eQA_JWsIeE@4r6ENBeZXG#}$*eVmW?2_T@7-3r2OAlweZ9UyD~Apt@a2q*}fK-j$1CsA3x z44>X-@ELuw&xD^WJ}U@Y2nTn9a2E(D1l6G52KwFPPyJh<|A^enpe9arS#3F({9chH zme~L4*)ilMMpPNcaFmx6E5c3&*e36lx~nSp#-tZey4W$JbXxr%gM(so^DB!g#*til z%o;B~F8>Jy*>>D{XbvV)T85)b@hK}~rjzOQ1r343fDqYD9z#)HlB73lbpF!9MVKe9 zX}L)i>{yv{q2xj1ZAhLbo?IcxX(zV;hboXGj>=zFQdx0`dd(N6jJ7j$S5j}GYL3aN zy+ewRik~%YY-y}`crhktmdn_7q6`!Cwew+rF=mvh$*{f-D9Jv|2;5pbu)>$+>w$jT z*U8t}*TvV>*Ui@*gnK}^7livj*apIO5bodN>*?#|>y7Vc(h(4Lfban5QAl@y{yu_V zgPUwpFGWosO}a0O`rR1Zj6lP#Z_ykyLo>)f@&bmEgn78VyMX>~qiwi1Vdp;3&( zu`+O2${9reS`7l0!^-#xu*6(O$>XZ7f$3jcZ2>VAfQzlA)P&oyTu) zYVa#L&UEbzCQcZIduxByNoVaibPyf`0mb7b5FQ5MLl8ay;W-dqY!FHK*7(-?)_EWF zU50ZD2v33V2nd+DiDcqLXnAs0(;i-R=9#q;SeuTfl5iFJci+{%Ykb%G)`RdU2CSUb22`PjUql0H$WT`5d0(|}D|J5zPlNDGoXV3YlBf4Sn0BCE>r+m(` zO2k*?dxV-^|BHGr}^|tIxNiI__K>RIO!Es*?XcveEWR+eb4%y^F8l-!S|x?CEv>+;QtSR@Cpd8f^ZOo8W0YF z@EQoOgYZVR?-g}+6W<|qf*s$RIJ=4PrV<5ULd)BboN7#XPmL?wb;nlEEmKX-Rq}AW zjekVJ9bH(Aey0>Ap~;`gu*ZR9+6L^E!|M}ZzX3p@qLA2A^O<`SUqW5Qvaq$Fc3PEwM#qq#{+{FFaU znbyRw!)Z-~_gmOwMtMc$?CjWl6mM)8Clf08C4V}mKVkTyo>V=bS>?|lX5Qp)jhv3( z;5YhZzsa}SZ%8}cZv){o5WWHdQjDHEjC-r1p5oJG4 z%U|UW_=6x|5dL|s6#EUTP=2NenYR`Fq)U_f zX-?X9S>^0y9g!*=hWI};ZGTt)*=XASZvO869{!&GUjE+xKK?WPef?*Fa0G;JLHG`Y z??Lzh1Z3hT5Ri#qK=`%V-%mAd|3KY2R2Cia4<)Akn`YX7BY8Y z_`QxyTGXwHNsE$7;4k%;t9D&R?D`+HYv*-jx}wH2u{JixW&Y*<75sakUc5%WE8RGpu!Ddb-VB3);Smn+sL z>grirZS_8BcJ76W+2M>EYS`kKQ?e*CpA6zvCpgJ0Rp%zjlY6S6oAR#BSdvp&O2(;Y z9_M5mY@^+?oBX$95~TlT|1JJo{kMTAfGC0}ftbF@e}{jAKjE(eF#|+Bhz1aCq_)u1 zoD^8e|Nr0gDE_VF;oSqGvEE!5{%!v4{`+w*4ABgt2}D_$3*&z|2M!s<`R@8*>#xxs z%T7P8-c)}k4F4nkM?tiJXjLj~>a$eSZq>)!a2^${oIU=%YPD7o^~Tum^Tqwo`kzDW z_xWG+zXYO(R3^mJKy)hDdq8XpV*7^JAMn3Y>xIN9h^|`f<1eVxzmDTY{crf+^uOhQ z+y4%TZVXCnRX2-3I31yo3N4~`mhxo{nT+i z>Y6kALft5!ZlvS^YCj!Oj~8lOTTmM${XeQ3L>h0PRww+wDRwEgN!sO{|6z54TxeFq zE6r;5;_K#5^Z%m+?_#?=`Tyd`nyH^)&>p}D3_W{57f1^*0XDz|_<#@)15zLz#M43S z0OA=Sb_6jK#4Hdyf!G#Cwd(yK9+M#Ec*05gkg0v1~27l$fHf9fG2FS|Y0ep%*69IgRy;Ae-f$jmaayNY> z&=X^Ju{U~Z_Br&_^b^g+?18fb0~FsL=#Rc#JhO#88i`zBs4pHE9vI* ze?{a*gNUIf`u1}`90B5}1|k<27Z_hBa>GD8`*@KH;Ka3?15*N11JeT212aJE2jTz_ z2ZA^V#38jJ7Z|F#`~F%ZNSGLUUE^y*6=NDm{9VIkS$?A*k+-=X=~gCwgv7d z^0ytt>50G&5OId{RGKUTI|I8_`Fohi-%J!Us}JRmJ<_cFJsEgPmA}12{_J^Y{3EweQ_;4WL|KZ`4?yw*oBq3Z-7fcH> zK{m(*`JfOKgHkXZ#8ME?1+fgoau6#(tORi}h)Y0R3gWWrU^0XYCPTQO62dLlG;F07 z!o^z^?Bpw0kc4nS4B=KJ6)Z?XIQlU67J0?50G&~N(-bV286*K*5CgdL5r8PNAON5}X>G7MvcO5u6#E z1>(gZt^si!i0H(x0P(6?1q%*SrG%_kE?hj5w4fi~xfPtNiriXNacVLA(yc>p{E$#2Z0GCv-E2w}5ynh__V-uT%q< z;I(SKEqDV7T(o7&MQzz~aZ{_&p8})bOpJaDh}yE{!MoAun_hWMd(zv3JBZoe4`Lz_ zd;r9%6wQ8D@DU6{f)8VxtVotFcaA1)vccxtWP^KxPb+~-@F^0wY(}$pjwWrgjTc;N zY}^=`1YZndWD-1}`;i!TwPM^DXkn%d*4y^s1Z2nckOXUj^#T*TK1`@-7?=b}U=n;M z_-^oU@Vy`gCU=9l6~uc%ybr`}b!MFmOsciO#8%two6JO0l9)A%{9HA-dsK5xreP$1 z^fwuo1REH!R?g3AIoq2v+_cAt;l__Ou-m^wJh9tqzk2mm=GJ{K*Wdp zAczlvxD&)(AU+J@ZV(><5gQX9s}2dO-G(xR3ZasYgk)m3k895QNzmPh%SVz5$J4Er zd-5$egq?MXPyoaylI}VbM#~k}373)==&mM<$SUuMrJAP{IxU0?B_%?qgSaOV!e+F+ zsabBQQ>d#_Z@38=uBd{&$O^dp4|U`o0i$g_(KDI z@zCJV5Z~(1urw1fesr(s*=s<=>>tI}n}+?Pp;4jHb)Nkoh?oe|(E3BT{Lq$A zZfIg?QfP8$N@yyG&x80Ph%bToGKdF2e5F0Jp zAb!#+2d6*|ZY6SneQ?_1=AjKJ2l|adHhBSK1KmpXy-p794BbuS;4Tn9OoXaIOmTJd z(0w6nxxfb4&~_pRAER-b?m#(UadNy_TC&+FTz{ovzDCuq5OMwV(a>%p2cNdE2gdKX zSou#NenG5UVu9uxS@{d0 z7wfG2M-VX);y5cmNUXdjbSU&%==IPWAte1P5WfKt!#TgQ8k~QvIeHTb z;Ya5eW7G-u;!ud6mLG_dhM!fC|DkB0sX{T2E<^iSwm z=-)6Ero%cAe+Kav5Pt>nHxPdZ@edG>g7_zhe}VXSb(m3YJS>RsiyzRDa0apQe>9i> zFQn0!f`>LPrM24l$+z*a8*M!70r6PU<%cl_XeoUn+$P)(Ej)}luv8-49wa(7haWy8 zoQ3up?uenfq{C2MVlh-tqnZ!Z!`;J5o&IRJCtA3~poL2;Y69+aye3SqXCjSkI^53} z4-W`u`&Nhhr5VwtC5hOyWC00H8Eskuy7%!m9Uc}QUTf2m86?ELp-qR!V%#1c7akv; z5Y7qbf+T{J4w4=uBS>3}pjlnuMe!hw~MGFBw#S zUpF6)X6a4&=%S=%1w@-ch4VQ;kq5Xy{!j<90;U(dv;br0F;T7SP;qySU zf`m8C4w3^TCrB=k+#q>C@`B{64xgX2-_`U!#eOeA`<47j`;~$?UA}6*(N^<41?GDl zG2iP!3TWnglM=C0S;9KZe$tT!7xGr?pu-z*8Wc3&1W2Jocq2&R6wUX}aJAx~!*`>D zmLkO68i|9J8yRELL5H`8A5a{0cn2}xHZAPY*kpI3$vzr>3{Cclv=A}b(-o8L0#ZB0 zWCsI1vysU@6@I$TWIKb@zLCk|Qpa1uFN9wVzZ8Bsd?5S^NT-2>xSj!0N02f>%Br*5 z-AV#D9#}~L$MGd(+=?=PqdK~$ff1h)R~-IAHRVptn({rWDbH$P%0GnvBBuOf_^0sC z;a|ePhJOqH9{wYIH2fz>T|w#wQg@JgfYcMDULf@bsSikJg4DM<{I_b#5lU?}i!j8L z&(ch}U$UuO8rW*dC*P7IX0+r8`lPdymK?DYNBkgn6?p;uFwlRh@3poZ@kIh?%Mm|F z{S%QONCQ%{pcP1XnY`9zJP=V%?KL8md_L0+1#i-@_N_9~n?*-8mo)JKnk@L(#e; z!y>~YBO)Usqave08V=G(knjT@V=PGHYppxdQ#Gv-ifN&7+2AWa8p21qkOngvoGNaui*Umdw1sbUw?`}mvaNMs#RvDuo66<|PuW7e@g zF~3#DPJxWwNMsB(VvZ(b*od%6w?tZ_TY@p|5wUqFN%~_bVoaxIMeKpdPF2JnA|h7U!X7AM$C*T95qlg(?8(R; z6tSlwPZJTt(GggySOF6D(PORR3XqmH60!Y}XX`|42}sx%*sxX+d6|gVfygV7S0e`_ zHIYLg6@yd?QW;3)AXR`=StnwTtBO&Q6frZgXmvh-Ndp^%Cy{rRHU;Tit;28N|5Cq_ zyGPUnR%vmwn)RcqSxb|eHT7g@)}(=ob{%)6_0;MQRjroi$*1yos!shC<%mxG9r-76 zEb?!ZiqcVCG%d~2Ae|2q$`*ih0Z6Msx)7v`s-wKBQ_*xa+KL*9PF<|& z)EX_?x~x^EPQFYcH*bYgT;baE8k@iic=2kAPHuqt{3NH^AMR5V*{!?;%Kvrt+yN09}f8)=kU z;W}5XaGkI~HQ9d|Rr@xio0=0S=1#Q=HKTqND!MFsAsTgbd2~f|W%Ru0s_6OAcod=+ zMA3L}1?e`BZU^ZOkT!sX73nIFup*5PY;$$=qNGu;)or!4qa)GFiBWISjQTEI!yec2 z!rNYyD? z^}W&UO861oM#7J+XrnfgG0tK5(sYMKbZ1mavOF4nm{|3_E$lIKF^)MIR9G;oB)_12 z<4%g`9yIHxqEDk)@6&xo%=!VvtRDtxyJFTa#y@Lh)z3#?sI%%_Al=`{s$Zp^-55O> zt%+jHu>+(BL3*gpjQ6O<`GD3MV#4?chr;48=?a{5fJ~pJ8EjLHlF<*;NM&bpW|$Ty zW*El-x^?}A(J!Mv6D#~G`gQc1=#l8R(eI+)M}LU^82t&P-5@;z(xV_f2GZm3|Jb_| z@EY#F|Nj%a%uG?Lt=c*J7D}mBYbUjfU5SW<5Nqs&eC%RhV<#vQs`h=~V&Ave*NC;T zms0=doO2=~xZVBf|9Aba%Y9!D-|v^4Gq2BkKA-oQGv{Q+bEELwBs@0@&n?1pYjnYf z?p63#+H`4onJxHSTZP*aSK$ufF;aMp(w5=wPs{M*FGHOt%TOl^&+YDIsQb+M;>xdN z=H#TL$6#iG_Q$J5sQW_qC5uqUDdwG#y03(1%!e&PT}~Y*Ksb@1%dIWKT`Z}z4i=%u zh<7bQola+TzO?EL+9KTZo<}r#ZHA|KWz{)!Ub;fM!nykCis*_;y!IUuo~MLotnlP2 z037`@MNfp;lKlpUuDI^|q$PMvcyh6Ti3ayy>Z-XG;L&$2K%I~4K%Hw9IIl}l z;a?u8znLlNs9e|3byR-RH}gk&a;}S#^lPZiJK3FO;I1To!R=bOPeSXO=vr_ONS$wv zY&t((Go8P#xh_B#C_K4SHm}@ggy&h|c}{qq7oHb{=f(NDmbxHas~mZB!MZlOwz_u0 z^OEq46Q0}Rt{KL~3Nkkj=)}dnl74HDUnS(a zbX=RQBi9mg-j`4N9LRY$!Nwu}!Q2wMZ3~;9^R|SUL!AF^)9&%+{;N#d4O%L21sJX> zr(Kt*v33y$?Iptb@6K$-dNo}=rb>#6Id<1NQ!;dw=PUKO6#v@5>p?G8WfT#xpL zFSQA3>)XbUn|r$Q+qq^0cLNOI_vYXAgKfE0w_osUKWI$(jDZ1ff6jOR=o`=K8b^O^ z90PO%b%S(+h39qQ8819<2+y1U?~Fsc7-AXkvRqtDn}^liyDDieB+krHI&OriUEnG4 zFUIL6aCI>q2hn#UbsR+hsZFv>&Rb1zzh>d5{!aM=t~00}0nVe0mhK++ zO;Y#h)+X4-uds7LzfRqqOOHF>x_*(J3u|aM!h7Ra*PXXubp2i8?mMD8!9BxuM|H<^ z$Av5j*+a;wX6sJsPU&KWoLb0fg`7^?rP}R)d}~zk_Nnb#zMOaM>a~1*%2z30wzhZm zYQB}rH{ge$j%yyhXY1m0*LCqiPA}vP zLiP;n?E0r$&Wq%^{`*}nPp11*$lUjxUpT7c&8FyT&RbLZa8I}ZzP=I^$TdM-Km9=a zX=ktwDJR~OTw%JWx@Szh=eifU1`0Woc5o}_5VE38JlQ5>eic0V<)rkI-s9EGld}t1 zeRJmN)AMP)K7&4^-cv8@6(N5nrH17XM z98}T^wBF`?ftJ7i_g7;2pSI;ZWv2Ji|G;s*zL37K{#$(!eNp{)`eORx`tS86g#3+= za|$_^kaG(;kC5{UIiHa83%P)h3r6dIbRF00OSw*&>C16kFYDaL^|HZz%1m}&nla@? zfj(VA$)8I=H4kugF8lxL5=wf``b6q|gsgWT)$8jzkLuM%X>+QLw3B72U%LK$bzHA+ ztoP-(Uf)E>#z=irA)7wzxL)5}-@ODitR1_z@AQ^8*7~mcZu;)}9=ZDQ-$J$CQ&`A93HfIsJDk0T|M_Ez-V>%5 zNxg?D?3JST4AOefVEqt%xPGX9n2-wz`CB0u74mmNF8-?b=)0yn#p@s2OhwD%06*7j z7hJWK=@`^pyHv2PQh;_9S$j)&bJ34;^^qdZKJw~TGwy$V`&a$-(_D`!ma_M_UP<+{ zTtD!A${%pOlImTj&Ey~4&8gYHe7m6iW~d|awaD@Q@xIon7P&fAN$%|X-*1?MF!x2K z{B5pF__|;6^-J{|v_`f}zg)jUzf!+SzgoXWzgE9azh20tgj`z4WrSQ-$mN7wUdR=M zTv5oCgzO!y-{@{+TiuOpr`E`RNo-_Q5*t~KPp2n7{^<$*F|Cntj8-|Zk)5KEr8|`| zP@^rrR7YKZCN;7P`b%0PyC~$Uk^0L*cHXG>f4&x+K2Cpwwxqw#xqrDj=l(NxD05jX z4xMPfT%LyPb%jUTH%|;2JPfIl+E-&C^Ywz{XC(|7XkUhm22X=*Pzj=4?kQ)fO zp^zITwXeTiJ)^FxXE^Vumh8-+;S1+EM7h4}9HQ%XV z_fj>qG_-auRYNOnskYaa>PBs;ro3uGilu7kkSoj(V(65spP`GPt9GQ(*|}8v2$}mX zuvEtgIrPmV4MPt@&!nZ=Q^+AHma5Q}YF|S?Lw~~n1JBw?$X$foRmk0h-2K&3HFR)( zD91LP*H>&(x<-w+Em!Av23W4ni(9>Sp}zGUj$yKEq4s#!LN&~Ay~F9{K8UFCfAU)H z9Dw7Ekt7{580NYT8G8F>{tq_ed|zXTGA!3xOtfKvVWHu7!y>~UhQ)>@hNXsOLJkwM z5OQB3_Y-n|ArBBTduNc42Mc*fv|)w2#jJ6+m!(O$RQJ-4Of6!v~YAt4; zkcTF=n1kB!K>4&e)0O8EaUNH+cQyQ(irUSQaocb~dt)<_mXUQNEhFvr6tC`yTZ%JiM-U!Q4e?r&8U3C|a5-ykGpXGZq^w`Z zjzIw(wd;1L>^uo{p8JLebe>0s$A%|Dj&OFKIYJ)i>^!T494X}4$F_4BR_~ z-_rWXUkWhhaP^?6DSMFXosKb&>j$Q%`~lZH9b-XPlbY#nQXlghMQ;o_saqK>u5LB! z<9>rF`S$+h<)n-bV+q=v(aTuKSlIZjv52v#@jGKNV{zm6LjFz2bA>!l$n%99CFE!! zFA(xVA^$GqMbSp?L7@G=@n>$$w3h!YtF^g565HGo?bkU|SL9<^dBvwb_woCjkt3%_ zV=W;scK10Wm(HEzc~EkA9!_^kr2d&Dkh+w1NtVPmXZ+RJgf?g7UBS{wBS*>0KCI0d z{f&XnHfIdb+T3!Qmgi;KT@S?Gq%;*+{*Vn!uge_#F?C;y&1dY3Nv;y zcF)z%*wffcJFs%zjX;hO@)~D*J1u11-XuSLZ0utUOKNZ1g#7y52%M*^jRUpzHpn>G zIK&uk9BLdU-sh}O{H{bcXL}0@4lc)MLLa%oz4ge; zILFo0w!X8eMY)<9H#l&fTW<6(kGzt7mE8Tc%nEM~^tHCO*wxl{`ey!bx9B_`GcGf3 z)Ed=t;|k+S<0|87;~L{y<2vJdBl~Takar82H^+O0%uD}%As-O(K_MR!^5JOXCU>LS zmfexvi$)crHL4?tjp~?4H&Ue2zCR+L`qZfYgGR;GdLxY|gnTryQE`csIWpgN)`-;F zm5sDNlKRv|<7KT+T@v!~NaGbDpZLH&b=`Q=)u(P~ed;7#Cwo2mRJwP5f5ezzeBkO+ z_q9G1`<_QMZX4v^x^_S}=Y7wbr)*TuXjIRQFKARRQ(Lr?HQXnK`4}(cv(85KxA5rj z=E)jUYEzn|Ms;1t=iWRHGx6PwrE`I*p%qpO3va>g)uUzjLFS*_`*4BQ&{hl!SRihIB@`JA`VKTX5 z#J#Iqr8)09p~E|4x|RFD*i_h5lGSbc)>On))byRHn5nqwds7M152hc5d_%}Lg?vlM zw}pI1$ajUzXOjs+z9;1S(WakVtJ_q@b@J6zL0jDq5?A-5#FMX2KdtSLzqU=aS=%Pg zAU<@jZ4;L^d;b@&O}-{SR=26CkRL~yI7Rp5!&bK`&=llc-KLh>>i&zh`qf!hclt{2 zItnqhGj(*XZc_(sbw7L0Bbo&B-Atd(&9r3@@|KU1Ox<&ZnR=SIe!r==sSj_n6t2a; zM<}w8Uuer)$t{$OZ@$ek^)!%ZWE{8A_$ zLP;%@G(t)HYGs?cI}btFrt_Cqn`j@iq+HPxTtAe`{X^Ohy!JH}*ZZTle}I(yZIye) zn_Tx5RMNd`9h>Gm*RjH{(mRhj{_R^S=Z8kg)4sY`xw~g29dnrea2|6gp8x)>)Q4=( zdBkB_YSKOsGA%PLH?1(OG_5kNHmxzOHLWwP7m6YjRVbecC6iDx3nhzCJ{L+>p=1-v z7ttp72SO(I2STQu^du#_yC*4MxqFh5^HWdy4|4Hi7ILO2@{yNfhStvO^up`Bpw39g|?c*Tj8_qE+=e28KoO$;-X49W0 z*T+F7?c*RN7ad7Cuf3DvW<+m%&HPvH{?y4B$Sp?$N~HYGxaleV=x@_=`q4k8m%J}h z3OM_bT_|~-{iw81tZ%+AGN&@9es#E^n1zz>&3Z7c*S)egI~+G3vSmj@e3%fK4Z@AJSU{+T<3)9IDf?5SpFB^sxcREZOHVl z9%MGUdJs40arPjefBDWQ>6f}mO6oplhpYS8d^7(yTXOatb78Y~EM)%HT*O?| z{GGX&xw!dza|!bg<{yQ^D~Xp-3JImKP`(vP5up?n%6CF3CY0jQX7{m>xs2<~vspV9 zQoc{@J3k2bhg-_epBm4{Z#-u0V8~oYC?(vD$E+O;d7PCT8XC?Xr^M4SW?!>*AY^VT zlpiC_&4g0&!`hBH(Cj)8GHVAy%1>GosjfAVcixfA+|KMe5Hf2ALQ1LkJfdD5Z|B@k z@dn4t5s+Cqqg;G65$LVW+?Fguscb$6w$6d#r)$zu_Uh6#W25%<{TIsV9{BLTMnBhC*o+ZFV2^n75|& zNn6{afZ2J}^J`-FX(Bx436J@lXHlAcYCr!$`_Ybj%pCVLPHaEgaZjo(++Sb|pRJ$P zeodc0B3~W%m@k;M;~q1|J-(4d@)G@$c zyEpt>j*ZM58=3z$b8KXOYJSPD@+(2kPSr&yfzD19B$Q5X{wlvEmF2Z#qmDvp@n)y8 zXvantPm63(EUJZLqn1KxC6r*Hv=vJGq)z2NHVSffD(;rhpsM?Fy;XRN$v6IL1b60( zf5}e9ShBmiTWjZI>bZU*@fUzB-?;vjzxd4M^6mTnA$oo$CiW zxSrv)ujRRK2WK(6j-vPig7YY<#lP%luVr(%2f^KJ-!uHA{$?rUILEFs$A*5LO%BE?~rrAMwXOD{`ku6~w2mN4xwYq+y{O%O`Bvw1}cg%9?Vf8b^5 zXX&5x#%_#IhNfs<;S|R*)H2L6+`>WDFro10NTDR%XTZ|K`E_MB=l;6#m)bXzLpt#b zYHi#rI9bnnOW)M{ioqa=s)jD|60q5cD0=G zzM22i4Z6C_@0QhCmsw=_!?M`2#In?~%(C3F!m`q`N+=ORnJ5&d%4DHT5z17dOcTm< zq0A7<%xKFRcbD1VdQWHBqIH?b#4a=Y)qA>mpW4iS&}R7ZP^9IMP-Z2znWLafak+HzKFG-re|C(?3GD8GGRqq$_cO53np)=nqQ<#bZoU7Swh zo^>3Sy>W8LeOP6=X}RNSG`F=zGhaKbddGe4>UInW=^WfCWxshyzj6zMZbxa*QkSt7bak1P|Nhso{-acoQIajn=C~JhW zRw(O)!n?Q)LfI&kO+wi$lr7QLZ(R+>TFhgII^3gx^#`rNY)x!1+quG8nw;9Zwq2hZ z%*SsqR&N@Nm6ILY+zrOcSET2tv((x6O{B@DU6Nht--|5VAPc~m^9zKyTMqSTb;kT_0$@uHJIHr7~prCTS7VUX8W;rwRTHtKgWc^H5!tCu4e76wVyuLFsrck70Lmj(7_K2CF$}D*0!F5 z`Ryz=$1O*--_9ynC7??{uumtyPMt%zJ6ye>w$0nU_W9YrJ@&DVaW$lOUa7$v;c7_7 zKjM3@4;spAEo!=}MR6&IkMZ8?!?x~fT9MX;TGN_koo$_C{mnYpI?p=a8fA^PE)Ytr zP)-YlSJAUV;Z^j!P%a3Ca}}3_ayi=iySr&EalQAluF#s+mBglXE%CkAjZZ!6Kj>N8 zw4TN4xtiFsVpwk(%B0Py(QYH5U29GIGpT1CupZKS){-?m zTF>Hi)2s}&wcq0q@9A0Rt(?{3E7sPFTF<&k&&p7np2cI{>{$&%TDI$2r@i*sbBY5a zYdoFlru7z`=}zjbe4$54aCWA@gmOpgOsXtAO27Gq9_u~p{iM$HL@0Mtbf&*Ji)4Lj zeP;dJ`rP_LD1Qp&o=_eL<)Kg>y*fIw#=F{v>$VMzE7d7iyIs5BWKGDH)^)o3zUy?i zPo>Vy-EYF){vrQcfBVYzxobO*-*vo{CeYcQJjyuRll!>S_Ki)?vbE*3<+A0r<+0_p z<+J6t6|fbw>4frBD9?oQw@{u7h4K9(l$S!4gz6#GRM9prqNe@7&63WMt~~$gVA-mv z-OE-@tKEXugH6V(aJ4^QEnHhA z+b=9!o3~KYMcOJ0HT{PzTw8TpEta9J1`Aisz{369&caRG?A;63R^Qghxo~X_S-7ev z3-@z73zx^dxo~|m8?~kD)7jrYASA@tHKmCb^|LqEwXGxT z+7@E#Wb16}V(Ti@OhU~f)X#;QRj5f9q_DZJ=EOF%Qz2Yh=+)`b`pFh|-efm?`xona zsB>Mb@4OsE>MgEy&DWSX<(s&!$Ju6R>w3Ixf-S-}(Kg98**3*C)i%vGU8r9P^=qN# z5b8HV%_-DeLd`AIJVMPY)O^vlneKHx$Mte-o3E|w{E6$jp!?-mHGW#v|G}zWsjcc& zLM@QEs@H0(`Z#xufJha^WYhjgTGLx>+%+-MwpFOQNZWRy>OXKz@3QUHR_JZp9!`a- z2JNLaUVCX>lwyS@&Zxt-W3DxQR9n-g_dFuSE3oY}3-zq+91Hb=?IQ0DRJ(Jb785Fm z>@3t@gj)2?_Xf5rwyQ}i^;@CxEtur*4Qw|lj_sE1w(XAXu25}4bqLidJcq)y@fIZIN&4cd+PNszBJTGB^*_RS z(6?t#I{3GHIuHKU?|d`=hnsUA?b}uRSF{)VXZB3?%=Rqy&+S?5+3a7~v)k#t#fAF4 zP)i8)2ciBb)RIEwW$I_4mJ({|X#3Z$_F~T^r%9XBqkui1)?UgawwH1u^{?7%7KaU$ zJ~fz+-(c(x8jPJaQr6vI?BBA6GS$dbGgFOp>A=L)mewb#ql&)&e^Q0qQ?yM@Dq`a-SZ>^`l9%JmqM ze-LADY;Tg(eQFD}>YLri-ki$W1MGqJ7WS4xttQkOLaiy(TCci~y>{B=TKB20omSS` z&*$a1oL|QvzhFKBZ=UQZ;eXM4?A=_w$LF2BC)Cw@>bQH)$2c+imf){7p8l@JQ}5%P z7=7EeTwQ07eT>$12HS_&!|g-u!|cQDBkUvXqwJ%F+CZoc1(!Qge-&zDp*9h!uTYx` z)laC+qU~edT_?iz$%}o8)^+?7yH0>`f16GX`qXs(gQgRuHJxaoHcxCizq52aOQwI~ zSyFz$H+cDkSNk({L{igPZs(Q|k@gir4UDvNK-A&`o6b7>Mpx6>pf#PAS__HRnhsZw ze)}gc_U-l=0MtR;()h1i%zamj>GaMP^TgF+y0}|R&5v++^G4{`+RHz#_R`Ha^MA1& zXKQhII22loBb6hyBaI`iBb_6?BZDKO!_y%PwTDo93bmI|LxtK~sC|SQCR8ERzC!I6 z?ND8<#gQfbMD4CNjxV&<(m%1a3>2wq@y%)NfF}G?Z~6GW#ZiFX;wUK80q)-7FtA$Q zdv`8}-N8MxA|1S07!>I!B-Ftl)>|A!9olU#9p7o^L56T1B>iUX1ZK^5p9gXL#gF{hcRs9F@2br-KtUBf>fyaa55qIjTCUX~#US%SgDc z5?G1L$+qj*UAz9QP)7>&_Z08Dv|D34YB_vzCBHScI$5Zrw1$-N+FNdo?P%a=nADJn zo#HkVj;8!7qr=b9%;E27?g(%M3U!Q7X}9BqI$o#~gsL@i*EiPQxHY!>Z~v3K@;O3X zU2EdIy4G87g6$aS;BvpwjzNyWjvU5#b5b8{! zMhbP7P-hEuPPAi;d*x4X-2~e)SzGzPC9eE=+Eo*rH^EjHd|LVc!OEYnt^6pV&P`nT z3t9Q^y$QBsnPY{v@|O#BexzfiP@_I@<*#*Ya2{1S)@w%<(X8YD;U?IQZH}F;mA^w< z`3v9kh$B)xslH>MV?U=SxV~_*watf^{;g*@4oHpO^^aTwQELE|`H<7s_0VM3hjAQs z97$TttA)Dw&7%tkUoD>Nh;^KHoN=6WoO7HP>Jp(Y73wmfQYQ|;R{mdE%#U1)dDZ`J zG5_Pm-LB_2UV2Gh9$u-0x>l&`gt}g+8|HYW@k*P1l2>}6ZWJnCD)bTRzOb+AR|yF0 zq*zcAYzEhkCB6`*6u*=f9K-Xx6#KYgh30`phdUoAb)#mDwwc z7iWk!33anjw+MCX91nis$s>LCre)b?jc=b^c!aD4rqM-u2V9 zgW7NfYQHw^lmEQ=T|ZyLyIgJlE!mS>-}S>)x#E9wj)jx|xba;-u2n4gkG?ZD=MY1> zhp_mP|GeW}PhF#9JMA+L?cz_#AMwuYT&g~x1uyZh|9Il=EaCMd7p3?5L8$v9y*Mj# zK$~D$%GIs?YPM>9A;ft&;Z@p0%hUt?QVu4aaS|)n}KQDi6%*})v8|l?t zsHfjI=9b!+gS=V^^^8!@Cylv{SBJNy=tzoALOrXcI7bThqN|@4C?(>PrReSz`nD(N z%@gpx;DYu97q!=wOgx3NW3&k9s4a>Dr8>2DJ`pE^TrI{|Yd*ExIXe&kk^x^MKddN( z68IT4Q5V0Wi6rIJgP+OyJxZerd{7?^!O!LNgFga6A#?V@Tr9&L?85;Z!Vw(937o=d zoW*%u#1lNl-}pz8a(N&%(jg-he1G`eFrQa8;6W^Vr;9;aijfKbzYd zl~ENuE;nP&&6sjCrreAvcPMy{+~mrA3wM!#2Y3W><{?)e^5h{$o?OTSBiK%!A5j*S zKuz=Tym{CwdAg!MMq?Z%U=pTa8ltci>#-3pBq=ZX^O8R=&!3m)&s!8ffwAN*gL0^V z>R?-WeNYGW&;V>N?>0%w$1crh1&`0i~qv05rXt^$mQ+xSWa z$W?&-Q=kUOSAcv4*hd9;Oo7&*js?1-CqlvY3#`Ky>;&5?z_tpUM64tgWX=@)2Dy@gMuBw*bB0+3Qht0r{D~bx!^3!f%e>ScqU0Y<^nf5l60Bz zIoO_#?dbGizv&9$XH)?5PRDq3&CmiNpw_zan2HskcDiFYi%Vb*>h9qI9^)^tU43e# zLk4()dBV*FBt6^K7X;havwc1LSKkW3XbWnnXCLd?u6_uHVFVbjek{nsb-*P(e=1NG(Nt&)NI8tR}P8lVx#W@rcU z7$U*=4To_HPbA66HjQl4Xamn{ERGWR5zJ*HbJ@r?jI3d!KLS8qjX~IgJvaj9gYhcj z5HCrl(x?XJnW+{QU^UiaJx<^PZsQK_B0-YOp2&)9$PQ|5{soN9To>dpHv~D%fe1kt zbVE-tXU%;;&CS%@JPKpL_RLps6KvDW_RQM$sDb$@{>BTulq3uD*g}3wbF@KwbVMf% z#{^8n3{X?cZ2X2r_ybG8I4!$z2+U=^hb~#p<09COH61cShKlT9URllX0%NwaAFWNn zT(*+M%6P3U(E*Ix+8JHZ9gN*N7~x>-R>oeGzbne$73J@W@^?k~yOQj?l8mDyH7iNY zO7@VX3a!C^ub};R=4^%Dpe7Z`Sn(U=0{fw2K9I4Z4y^BrCRkvD1LaTwl|cTARZtBz zz#OPp8+E}xtjIpBNcM`Tgyrf%MSF&fM_Z{~*ga;(H^Fh=k7AiMWwY{ho$#4en}1zZC2 z)SK+y*Kq^4Kz{E(q2+%dNxx)<13q9L{4xofz+)??0{g1+PpAmSQJH;FnSD{2IaQfC zRk<0MQRZ5`@%Ao=(fpJt}990-c6@LVv1%l8T zI@NNvg_xu38>Ewkl(*%DAdBhN}C)nyq>S z%%!UAm#T4K993`PHtr$;_wi7Ys(By{(t+_*lcB8*ay|9f3*P^gdv!S->??zu@TItYV3n*VL5_5@EQsd{!4MFaE%bGiBs@Yos|U;z82Mpdx3Yp}L!)CS|I!8mF# zjvB2HjJ9Zxj_8BF=nuwIgYncDiuqvQ)L=|C7*h?#RAU?1W{nu^#wnb^Rm6eJHU7dg zJm>J5eNZzs(jq+=L(Kx<`D*ffHK|ceYE+XN)ucu>sZmX8RFfLjq((K_=QY{qHQDDi zPk`;!WP3Hw;}Y0z&Fi=cYFCr}Uy}?qAA_3J)H1x3q*|#!hFa9A7W1IiXUKwV_!2pg z3wc4lT6&mZ1?#z1VNm;8#qk4vLTQvkMf?KlUW>Zd@g8fiy7)DBxj}aEwQ3yp)3?)z!rBD_X;EgJ%4(5PQ9n?o7G=U$Q zqXn1`K5f8U@CiW|bVn~RFMOC6J_9fq%n6?n7>#j=z+_CrOw7hyL}4NRz)~=Wd{$!} z*ylc5!2b4$0sGo#KiJPcM{xqNIExFojBAL;E!@RDJj4?`!wX5OEg?11AtPjbg&fF< z+z0~WtKAJfz!+<@z1mm6Hfl4EYTuBgI@GWZ`>+mmt5Xl`$2#+{94oa68$V>aYN z0q9@=^{UJMs!NUPj>UM1(~wY+30aU8!Jy9ddV>94k6PDb{Piw^G1p^W*Nc;+`Xx{i z-lz=bSbb_;|94Q|`b)4(k{aZK8CEby8hBwCCSeMufyXtVW)0JTIyKAy>eR3$I-@Jd z)R4L~yaa09Fah`RNRk?r2lJ^B#cos=)TI$MX~h0)v<*A3i?`C$`d15VaG)?I;x|yo zU!%bMXw3E-e}OOYHP}y$**}f@VE_gp9PFRQuD{e)zL}fA)?46Fifo=C#1~oBP2ZfnbcynX}E;Vm&tD zr6dI?_zanm746Uqy}`Hx*bf2JG2jx|2Laa*FG+zvg83N8xC5Dwfi=K50vSgj;|OFN zfsCUC&)tGrw#bD%$dAsTo-G(l3&zr72x7rlTJYR0ZsLw4wJZSt*BG00JOv@ zFwR!jq5TZ|x^+eHv#rU|n*H3m5m-yD$WGNe}|`dE=e7I&=hQ^BirfN z0-LcP2ftjgy#%l--obY zL#~7U8gdJFaSspi7-S3i8!sfO6Z5DO%K*cYA0VF}3Ic^h_M7s%b2T6d<_osZ)xwC$6-a{?ZKT6X?N zlDf#q4EA}KFF^h-xsVt6Q3&jxF4VmX^SBFHyZj1Ykhx0$T7v9d$lj#`$l8UhU4~*f z$lHayUB+V~*auyvVFn^W{x0VvsjCMHpd#8}G!}#X+VwUb;V)3@t}i61TRLPy7GwkS zwcFSD28^Lw9$4W(VH8DilmK<_#{B6P1hRJ{dpBy{tuwlz2N**)>fMdp-6AjtQCNUQ zScVl?jkVZ~6SxIx-R&NjBi)|h8OY48l)9$|*}G>%ZsY^w?yiFY%-8NVkh^;!6v1~O zd-po%go$9A-Oo!>k2GMO_n>Y)0?`lT?lBV7y~j9A!(5QR$3pyprC5%YU<^H&KRuW~ zJ@(=N4&x}8Gd;-OGZolY&-7668K`~FtYEJ6B!5pken2UdL3#XwDyWW{XbSdk&%PLd z!5E4W7!C6Fq~1LzgWNr5f;#skV^7B1b3K?dJz1|kw}IR}W5Am2xesLT$v)`i3G(!+ z0czHZ=j+AedYuFFKa{x=O72i{hf=>#>K^(ne#B2;455r6v>YnH2X)Z^tbtJ0K&T&j zgZ!bRFc!?0P_`9H_E6?{Xe5}&q06ut`1c@wq{hj0|f!MMX>aTXUq?yxI}Lp;bX(nF75z%~W@SFFToJe8!r zU!f?--M2KDCw(iRI_je#$luo&e((q5=u7?kc1AZaj=s#FzF}Z2eWOA4zSO%fYqRef zkiG9lYzDRNdjw?eOP%|Yx9<(yMFJk+ktFp?gDfC_KNF~NKL-kf%>9bv2avrV+53^b zUjs0&`!zvRGy{42QTKj9XpOdL55~}MBo=`@{T@nEf9lbn=j+eo`U}j&2JFOc?85<2 z`~DYk8P{+f)Vu#}FpmCz;~z;H-~q-lfc-EaBN)qoZ$b6}B~TJ&K=uI@;f?xegqEPk z3}^?k4(N*R=!M=Gj>-4~OR)m0L9GXD#1?Ev4EBI|K7hOf$UA_%18#sGGl0AU?t!`w zpzZ_y!ZSRVq=8?9tOKd(K(;w>7Fag}8RsAwW{`VO4fudLKZyK;{Ll))Xbb8+h%pSJ zhYb?wk3k3r;~2z#7_<<~l|f`5v>DsLwg!=X5ZMPE#CcHnL3eN;?6W~nK-NM3NYY>r zq{ipSgCZyfYCV`*4=#nWr~qm`xC*MH7FvMJgULLY%!A21I0T(R?FUo)!PI^*br>85 z=KA3EAkUCgVBZem`G)YgA&h6pBG6xk9K%VR##vDRA=G>bH6KFFhdjnpFlUCmkfd-= zsK|`0$d0eToDXNNgj4TuvWK&+@S33R;nY2xx`#7{aK;c$-f*&plQo=rhY!SH3)(_+#HW=eE5mPW7k(iCmAos8%px(o% z_b@UKJC94ag8Lx%yJ3I)C zZ+JT}r-u*15Kxri)Oq+QjKu_ydpNm=Ps0qX#~Hkoq!Ia09<4DF%$*U8XT(iB05u=M z92xPqB#lf170i#3S&<#&A4&d^xxl<1$@7i0qY#Rq7^wG1#x$}4$Uc&7jckMVV2+RM z3hF+x7sx-7eKs-zlQ0(x@H-Y`1y*4#7{|!HVBe0sg9MOyB$-E&dE|32#!;-1QOuE1 z86bl?k17Bi3}C*DvVz>Byigd-`B7va^*!o>oTJDyY8@^}(rBJ;oy3C#V`?1Rz6 zF$&au^ms5&M$bbu$UmC=qnCj(jAjg@nfs$-um}5b2+X6=e}e2|JV4FIqyxFfe1^>U z9MpMCK~U#0-=R2uKq;_R$FNVwR0P?_FlWYeLr?UE0C~p@LO94hW)#RhW&)`9m_=BO zrC1K~j-lpbHeeIBg8XB4f;m2x8jsb3dW>aWjva%QIF5&sG%gErfO#^G`j5*G3z#G0 zsPniIC<*e9BmcN^r~n@@hH(w>D}3Px#xZUv$UTm2jicVI0c4(B1!SE}*2#friB@O>#y+_NLeK@|pWFixSc%i1 z9#fc`Q+U29JZ{Pmus^1ddkS-93Ug)3F_3@C1;m5=Q|{s(9^x?=!_>6M02!Yl3$lW_ zGL`I8%Yb@MrQTD?J+&HY!UxU37^ZdrS*Mb9Dz%;(hQ1hpL6`vQJ#{tKVI#I+JE-&2 zJ=l*!I0|x4CGS-7PNm*cnb%XvJoO2lf$>lMN0O#_AT=1nwEQTI0IYrZJ(B#94$+J_ncv1ZqFhAoOy`GLM*~! zka^AutOB{`kbBNXY{oe}m!#kFq6`AT^Zmx-eme;E#atQWp36L$%RHHz6U>jfc94H= z5fnoS{0PP{mw7+88fv08>Vf$)w+qNVcQA%xILJMhy3dWkB+LhS=dJ}==ThUj+p!b7 zu@|So{GLnpxi2MY9`&7<7R>2+SHM16iXcg1H?<<|r~pkvWPv6U7*#=q*v~_o!vq1?n8NAIyWO!#IYMp!QMZjv{x| zC0vmt9xg@a0X2*c0P`}MIz%7EeMwrtzF1&KF;Kq+B|-iL)OrDPWC3$zL0wSS1&zQM z7PLYev3(34N812vjoj~q|?sPUq;*nrI- z^P-*D4YDsH`y#S0Iu7c+hdcw>b`~+lO{Es9pA?uQK$N(ACdr3~1K&_XQ2K#kMMf?J4y`%JP#@HM8TDS)49xjuEkOQd z-9hGMBSDRqO~52fM>VGsPD4VU~VtFh%1Q04crFvWf}8(*&|6>&YWJ(c$a5F z7Gyb#Q7E6KZ( zyerAOQU?RfV6CqF0hQ1gfrfS@wip1aS{*lLX!BO((2Smi_h>Sav&%2fO)dI02s&W z!YGR3U>vJ|LMbqo)vZAG)ns4Y3Ej~PeIURXRx^gxdnMNkv% zF%BznT9VfCd~12!+OlW{a<3hXp`fp$;&Q zdV@Nz>yJSQ$8eB$9eLN0cU=?~fV}G#gSxL<4(h&+g05o>>rR0>uP4v?lJEo1x1PtX z--8>Hw1Jv$$b`@F1-=Be-(Uju-oO|(Foq3<@GVM#x^AcdZ&X1wvapzjbz@K5emq@ zk?b1{FvAKvm?Im>yOBA*u^6cRMryy2+HYhG8ylk+$g^=P*teT_zD+!CQ+2e(P%y7H zMPM?fg8FY-ge4&VCh~7ui}fJjroA|T!#IYMh{a<`+D!J%8Q=*OvlmNQ_VY$f;ByeI%Y$iJ0& zvb6-rzqJ&~q5>-67chpcJm1zvXaeTs*5+t|APmGg*vE*hWHhXVOvj32KC&=Hn*pN8H{s#8w>-vx3dqnvk$hDfBRZ&!#*4U`L`d% z37o<;#N!t3;vODI(vHj^`;Pq3!2ojaAoq?!V9xI-gYqEn4zliO0J83&);s(Wh?eMz z{+NWRm;q|N<2TI50xZH3EXOL4cL(*}LEatY-Ekb`-9gQFoCE82$7NhaoFwf`4YKa6 z0Jgc4TI{3_I~nKBN0Jo7K8YcBObL_(b0&uTG1NV#Hpm}Ctz#OaDVm`jI-)bWf%?aU zf_)If9En*7a>tN6hS!7`=6lR~uzzCq;}FOiL(Uj-#$3m3{E7Q`C`r4>y^C7!qQ<+7 zu)q$o?ka*}AoDIV?;`WAvZ#+nAnPt)Q14yM(E>qejkahH^6wf6a_%|;wz>N&`~=3h zTVN(OU?+BC9}eIoE`t2K$-kRA?~cb!Ji#-(kR+Cdw1;u*NsIh&fb4s|!}nlYd&s_r z?0d?iHmLU=GVdYp9`f!X@177)>pj$ZPY(>i1S|mg_fY3O%drY;LFPT1u?=M3L-sxA zaS2y&4b*%OdH37_b>DLj)L_qJ{3S_yzW`bHQq#R`bMJI)2jkqA9(s^_UlmkGEs%d7 zwci(rmS}}wFou29d|xQS&<_K_IQ9+2e5?T3_mO?yCa|r2F(CWCy*Q1txPiM!0PArd zS@%7|3%r!1{h#3*c!9OJpIYyy*86|N&nN?Gy}uGFqZ<4{=KW;ePv-q(-ro+)k^P;} z1>M0s-_IEKPX=>(|2eSD0|np>dd-1hV80yLg~K=o=F5RtFkcSb0yRHC%@0uX1B~Io zBS|`#3e1y(86bmk9Lx+GN`UMK$$qdL*w#Vnevs@3Yrq%G^@DA}Tsg>GImlc&NY;aW z&=>tN7BfMu53a^KY{V8&?}OC);2!M9Asj_K$b68@2g!Vp%m*KWd47<(AAAmKaL5Cx zkr!k=L`@G3KokywaUT90g+T7Z%=5zy(HP`EOzjVM0QElH6+J-y!{k3K&<~@)7!EV{ z4^P5WFfR`?j>FXZFu4!2t;4M6!_@pRH9yRpIn3NYO#Z_Ocp*tgsP&OFU>+Y)K&_8t zL00641JwCQMf`%Qpw35pP!|pGE69DM8OVEtyhnPWH<;r`$a{o2eq=DhF&rZ?8jC>I zBlq~#dbWAA7^uTh#(9+eb958PeUx>2l=>f~{zu7w^f6va(lPQMW3C*_0Orau6*-U# z)c;rk=wU>8ur`m?1NA;e?qhyv4(9x^mLUHz@*f)n=I^l)Am_0On20HuhJ{#z12_!k z_OX*VjdQq&D~JQ@^w@1lI?lW}POXop19^{og1pBwgZXeg8@|NX_y)y6*5f_FHji(? zbxAtGI8T_t+&@9?6YbCu%=HuGKS9k;48c$g2em%I7*31@H9avKbHRK(!8lH^4^HgG zDUkgH*-u=Cwym2W`-!`F0cw6yK^CyTPG$#LPv$~iFlSB{!cXu)T`)&ZQtOk0DIAXsA^F6jP$R11f*cM=0 zvD7`5?6D!}ivb{WEO}$e8%y5UNKo%s>K!{DtFRrhAb;!yT*fuTgUqpaaSvpVCHraW zeL54efSRBF0^~iN138f!`M_L1%@|IXfgi|odLH(I=R3pW&J+Rri?9UC!5Gf0#dYNH33SLc{h=g#7(B%M!%w8#KYQ1|mWLH_gPKTrPi zdN5zkGluiU@dKFm=S!m;n3L!ILH6^V(G6_tJh{*JMSl#$cuWS_&y)2$^Y=WpK2NRB zufaNO#AX}>8PBsn&p!lpKK~3aBm z6hjI82=ZTO1ae-WCKuS|g{zWuks4fNKV7VfV6av%GS@GX{o+KB|047JB6Yq<{)^U@#+mW`5N=&+5wRN8u_nX#1+Kh25#f7B*n=fcU&&yMShSu z&J1cE=fF=OdmLHg$Qeh@IO-hN7){}i0FXOQfVmOJ+=!#banv}DtZ~0#KFAzL<~TCP zEeCauqt0<;jXQ)RI1XwZcN%AL0hd7j>k{&yEZFAtAz-~+XN=eHOHzCm*ij73^Z1gW z_VLs^z9z^YPyTr79Nz%UmH3uujkf3j#u48IV=)tCk0*P4G}u-=b0wba@hhWWGhcZ*G4 zdAlyy=IyE23dVRREefJEenC~#KrK-3JI&Do)c8&tkpE6c^g&+?z+eo;a72T(duKh! zeTUq4sPmm&*o*xj{~hMWox4Z?b-wc#m?w8$fI8p(4Bx;D-{L!bk00?fsPWzMsD#R> z2Ij4bFjW{#gLtV4Qyr!vc`|&%-!|lZeG- z+`=7D>p$;-G5q;Rk`hvZnkHm`491a=88$FS63CuFtrN;Rb)_Tm7@p1^)ipxy~&P9SpvnG^1V`H}D# z)IQ;FQ2PYxa4#o*0D0~S{05%y9*?`vcteSaSgg6#K?;xev*%=e$*DV|Hx0}rG|I#BNi zUxK;(;CnDn9{h|lD34003~K$LCTgP|sP_Z%J|OP{@;>Mc@;;#M52*WtKIn`77>L;* z>jP@~kZnG+q81qE!|_-Saz8wcbGQidKcw~#srN(jKV+Uiq}C6q^&`gch?+jif^1+6 zk8*&0@Q86dssM67BKITa$fG)_kB0aatt`cXKBVI)RlCVmImA5rH= zyRa7rK;B2ka1!KxMD9oAe#Cr!#N2p9-bd8?(La*(n7ohEfSNyM{Eua*$OLNfn5>Vf z=VP|{cm>XYaX!h7k|6gJ*6EW#1cCfdIw2I~f6@;FF$6;~5mWxZmhL-B$3xv4@bio^ z#*8v%l+iMXPP7m`g(x8f>Agpd7QIG^E{I-&C?UG&y+`jsh!&y-L9`jnckS={&RW;m z|Lpg9e)sRb-`QuKwO3x;{Jp76XC|B3&+o{6PwsoCIm>x2Apbr2@24R>G01se&-b&D zKrV{$4E1>x`@H`KdcOZ2AMy#G<8R^prnrmyy1w5BdGGf}-upus#t23+hH)%I*82~F z;DL8Oc$P0P=Yv_e`v-DAxW>QSM*asnPl`nTB>9u%Pl_duL<&%dqUb;ADeNFg_M{K^ zh)*Gbb@%zE5MlAe?FoOBZRk#r6{CtcG_eJK59%e^!%tb-_U{1bVJ@p@;;LHk=uAQ0i8e6 z`6Hb_nt_{m^b2Nqv;$cm>+`X9K5j@y%=vgVcJf&6lz>#opOOxDl9H3$=sQK$Qv<-c`RfxOE|#4L6|BY?@aYB zJ(P=EjASN({5*-yQ|mmn8B&*^5>$vO)YO~c~dWCIjhij>RlY;8uF*sb?Uo3;2|=ni69NKr;$C4zSFpoGzHOl znxe>?<|#^3mhwD<8PdE-JLE~Tn$tm;*7MT(T-rL=OWHmRVHiI!iXZuzUzp1R7V#_Q zNV|!xY{wjF_p%?eq)kHhNZBJ(6GaSqkIc*y%vX*%yr*M#peXS##j z48kb6qkLDRa*_x6ql!?5a+F8kQD%s$f?lKQ@d^zvN0dE8wZ*MO$sXlSq6Xq!QL;zL z9yOX7%tGcUd86cwk~eA#+t`7=qmFYCcM>IkdR?baLpq|7Iejeg$ev#I^!iTkKGHvp z&eK;!-t^Vbd-@m9LHgR%CajNCEV$c4X+G5N5g82MxL9V2UuoH267)JM-T zuk#k~(3p1UIL2+qxb2u9&~eN-CNi0ykU2)@F|x+U8nX#~$LKpo-!W#7*~32EM2!3~ zN4On?8M2_u4Eo5>70=7ya~b{)!i;V|qud$&P03i2(#W4t=NW4vf5w-1nb&B@M|{c` zm?2{`T40WhV~{(e+!?1b6T8Xi-ZSbvqx>1yvzr4PLe7jQIK^4caf_57%%tN?*>M}0 z@{ov*GZmsJC2%vDWX>dOCRsD-I+MH3ByXlhyotUuy~l@qjQp8;@FTj+bUp|(yUWZ^ zVaCj@v5(C2SjI}$unzZ;c|Wpe{+(mElgxi|nSXGHnaz;-4)=mE)*P{Vj+HyM2*oLl z+_7#Y_8DqX7w?aCC$XRKB|47PacnEv;AUbw@Et!ei#g~wb`eWhj@ypacdUDfb=$Gq z&~vPwW6$sx=8nCH+_6`=#=poO`(F@diAByV@?>excswtQ&&8!8KhIK!dgwjwHS`^) z``O2>On5yKz_0b)2r_ zWR1Ja1CoOi|sBL zkT=^Oxb19mXZwqLBw^-kkApCKfLq8eclJo4h(Y%3nJI~!+2zST0-a^|JpZSBnBxiT zBFB5^J;zt*FGq9Sd5-S%q&I!(&p>pa!!72R#1y76gH7y1*EwX*A$yKfoZ%dQqw5@I zNJx#W33^VDH9^M-S;;|8ic*1kyn>DsUgs^|Vr6&Wr&Xon7 z=E_e&iclOo$n_Gk=X#%y@b@K`+_~h=)r=N&r3donawEB9%{7_{=sK6KbN$33)**W? zJ?GMME<4S28hLa5%_Zc{C3h~lbEie$xucOccP8Y`t@GU3F@NsdfJDtZ)^2nX%8#>S#`SbKe*Lmd6GmIfpsR1ui3Z zo`2DGo;%zNLjPR&Ft7Z1vyqED$eCBqc?(mF68QU)w+%60oH}5#)&HE!$Fn`_|{EQj$>LRa>pOEK?;=GFI`Deq2Ppsf5|M4gY69ZC_ zhKyv#eJ9GFD1TxB%#c`?@>IkOiPd=yb0juJ?nJp0^_|!WT_?JgME9O3f8r$MOq`CK ziF!`dbE2LTm#~@r$erjm5_O#DHWJ-NqO6HJPE11Pd@|>gIiK%hK3(UNHQy8D<4FqP zw)5#cpWDt?iZZx~eC{}(-RJuiJ>>Je{63feIX*(}{C(-qAco+^^G`XEUQqUeL$RNN zBhh<7eHYZXe};Wna22u^T#ud$>banv3-0Cwm$1)5Ixgfs3Z=z&pim5%$U;`!O(Azv zs5G(`D$g@iqAEHs^c?0d^dj;Xs*5fP^<_4@xDkYfJ+H9O6@D8#DJ*y4NlalH@)y>7 zVOjapzmT=xEF-Q-AHj= z7tey77SDkjDV`Ty7k`q%6ysTBE-rI%nTyL@ydHWl{u&K=gSRk4@%D^jCEi&)B?wCt z#I8y-#$HNHXC4drm8JMjmiP^wm(Y0$otH2}i37Nk5@$KjMa)s+pCBw5MK)wFDSOF8 zysM<%OUhod1XZZUOT3C(Dd|>9%3AV0KICIs(iL5o9LX5QGYNf{bl)XsGMl+9U<)#r zl)0qLC1ozTpF{l4QI7K`W+<5)giqz9I^OwIAAVsk*Mk53!ev;hC}k;6MJiK+`slor z&P(aMlo?9B$!B~?6Pja=Qmq-v1Y|EIdnvb4%DYPGy_D>w7O?@DOC7|ml#;iUtfgcv zrSDSbxP={-jwd_vm(D{X1t^5frAtr>*-O_(-=$?PEpus^OE=;T-sW9Cz^#}5gzo6M z^hUh1Oe7_-t1_+lp1HV_GVZ+0YSyxieaK%%{xb5HaqDGHV1_bRxz0`g;~o!!u&kRY zD|=aYQnonWRaWk@IxqVSm2l@}>mh&H_pqA?u*p`UVlIm30#?f<17KAnoRL=i(q%=@(2o*u+9*0Y^mc*fHQ(CyPlND0F7@|CyC z@^)7KM}B4rc2nNx%iB-+t$0Rx&nWL1Z_MqYL)<%pXBmF#;JY`bWzq*{aD_O}6T? zRhO;0T-CFYfSarCoz>;6UKH=HUWziji>%d`u#C;@WDoXL-M*@OU-dsZ&0n17Dtf7r ziZs|+4ezLtA3LjIXEp4shTE&*JvGc%!+bT|O^w=^vxYfqn6rl7YS>*3d#bSwGu3zy zgf-1kQ^z&qFhfnxubGbml%^aytf|AAI;`ooYu2JJ_3-?f`m6aC@9-%tXhmDv;k`9G z)0F{?XA*W-a~d<5&0H3+7#-DgKQ-M?Ohlqw@Ht=66!X;b>{{ljWu96cF;A@_n4y-v z*7^#g<|G^QC})0%H+ zkDh8TX9qWeuucX_^D6J-vvqv7j?dQd**ZR3N5(qc=t*zBqd$}RmEBzAKkjgs`$1SY zjzkJjh@zOIt~;x%r@C&bZcEyrkC%#34mn=>jKSOt!g|?x61%Bamh!lxdiwDDIAJ}{ z^4mCJJu}qv%zAI|Ht*5{^VT~Zg!NM)M}7bP`ev+ej`}|^5wq0)i5bjd5%y8vXX~$G zE$eYF^{)is%bxYJdwALR=4JD|T!yE4hDy91gs*PnEZ4cgzuY1v2w(Gkc`Xg;h{hgX zD}v{|_6iN~j0RC;BNyJ+z;~*F85$HtmkqqTfg5OG-UfEp;A>j*4IQw%2EFM^e+Ds> zVa#Sbhq)Yt4MWnB9q;jbCSgPKG^|Wjp5+Df+)%cLAMi1D)v!6<-Ozg)dVa&1%waR` zx#9UBY-HX>>Cssu&u*lrMxNK`Me0zGS9lA%YvlQjJin3WH~NCE$n7^n!bV#-%|Gb2 zkzO0Qy+-b?QBn}To)vw)?nYjBBdJscCZ6Z_2f`+U zFlQ6bY%-d$%wailH<7!E+)eDRiJVRT3&N(U$i-8*ho<$hr>5?xsa-YIX;YmxwVS46 zn8Gydsi{7j&SgGwHudbL`e>?;rU!5z&5Gi?*Ua;py-7P{ZPu6m$lPos=5J>HW}e&3 zbDJ$=C7#=C9cQ?VeKpTReqKht=B?<&cMM=K-!lTwZm!4X8_{2L`)|I7iEzH)! zZd;h8g)A-XqQy3LptBY_YjKd@ImQW2A>Y?_^mS=oz|3Ep_iNpKt@p3Z^YtNQZ|OVI zQtp<;D8V!MuC%O0ZR%jhEgNAME#Kii8e=alJJN;jd`lntp~IGA7|$f8;09XGz)UR{ zW0sb_11+y`Hwas0BL@YMr&USJ(5gHYsZ3Seh2MY(TeV;nYuSK)T6tzG{rF9Yu$6vV z>8F)`TIr{iep>0L)mhGC{#M@I>KgxYoB!o_z(Z1kuyq9X+d3W5WF(e&^w!$GTibW* zL<&%dq7Y)C5jj_kp<6a^Au%x8oOzugEl&7^EDml zNpHSm0N&MRC=>9`Htwj+bXKC9Ho9rE8{M?gN1IDrMF(wk&_*WzRj9D7x!an%ty$aV zB_B^>zP8=5mpp$P-a*I3s z@3YA~4#IYx(JnQSq{s8xWyX!PD}p;|R{}k?(^ES=wW~lys!)w*d7my!M%H$J2VwhY zWNH5jEs&?Zzk}^ZGmZ)9uKhd~@+-^GW&71^XBT@pz+sNyjymYDgZ?_m-9hdSnb2hi zcheyo@^{cd2RrRh2|MlZJT<6A9p2(|Wb4oe`|Y5w4)S-{!f)(k4?65{2=DLk2fFN_ z%MQBikc=)n>awF->llM99cAg5odoQ)V^Qp=qb@sEK$ecObgWB#8t@^XAXmpP(P_sy ztU!*Aa&(lVqZ}RO=;+ov`p=z?f1&e^?yck1AoO2v3_HovNk^S@)F}$NI%ULuJ7pm& z@^zB0lRTZ?pcD4eX+56T+2{N=McBDEGIiEf=T@|(9o^}N-F6<#_YCI;blG_tGnvg? z=3}RwkKraepF#G{7rDYeT<1{`cCptk_S!|4U3A$+&MvvgOCoNo%WE{^P2RyBcKL`; z`GUrLi~V+yvx}TvhA<2nyG+E*cJV#yGMz;%VLATxb6pTN7iyTR_Vc9*rgtlho0yR6-H z*WLTOdw+ND@9v%5y|cS_cGq2Z-F4Sp_W_Jx5_a3&ZoAuUcf0Lwx83cw`)by)fz6yk zuI_f){U-kfVGnoNL%tqyWW!#2$l0SfPf?n3JWG9Er2((=F)e6CTXfXp1m^E?1^3hA zMiBOVgTBby^Jjix9t-)EWvpZkdhNN1t?0Fh%>(F;}mabfpKq zFhj5Y48$D0+@{}@2z%+dm!5m+xR>0$wzHEzkhho4dtKvS?%-Z~CGju_dq-0OxqFwT zJQb;eti7M7CLf^h-ky{F+mdb^L_d$Fh9r_gKf z^XRWnKq}G_g?s3eKrZr9jAy7!Ri33D`s?!^A0lI){n%R{d+X!*eLTOfd+FN;nfl7n zSB}1OS-@hJvVzsDVBaE40-!q;U8`wXTQ5VAUO#8r>7_{;U@db)87sEe-pX-zt2a=*I$wghh`n$*e?y>))ARHjefDB|NjzkJj zkRrIx0Tpor1FBIMIS0r&K+XXlV(tM)F#CYxxP^iG9{2`LX+bO6(wH_ z3G)p6iRqYWpqU2FVIJlh=ynD!VHt;T2ZOR9;~;qkdEOwO8?=@4K{zJ8~qN^?~u{Bl_4{kjhsVtI%Ey&aVtZ%u!AG~!3j?Bzs$F}%YBlAaHtuE#*-bn zhsr&)2ySMm>_cTAs?VV>A?r|Chsrus)}gWvm364BL%+e_w4u5k+Kmy6VhrP$z>m0% zp>AX7bo4yb3`6Izor^*EeKaL$faiVhbKkGR9N)|ReM%4xiy#fM57YZFxrfO;>pJ5ps@@bA+5D3Q?32 zl%g!EvQev={``6*w~1otu0 zZIA4R{ziJ&NV^^>_sA<;Lw6%}H`1<0J_y25S;$Hba*>yO=x~(oMpeRlN7?hJ7kCkS z9wo;pJ&v;HQL>D(=TSNv)rs#Iz+k>-B9obl@6f14xW!S+Sjjeau#3H%;1p*##|`u| zDkTU<+xO_y#Gu`~G%_cwMAGL3bIV~-%) z*grYVeUf<`gyTYVIxZ5K#<_`cPmrI2$TzMyPf><)=we(AWE>~sI5#k^DS8~&injDb zSL6E9pHYluJd^l^c`RTt`W&~3Etp}P+~dx0jtl5>+?^mCpPme4CXQ?*kQ=$j%ROH1 z@p6x^hOFaXK&O5KBOEX9`1-s`177D%-liQRS;2AiGvP_KNYogo}<(}w!H?a^!(f7oXxQB`IPJD&e zXoQ>--NQtkPy7h?FtIZe_z~Z;iPQNR9Z%Hp#D)CIZuTM9#NRo_2~Ki>oBW5rOB0iL z6oiukBFID*;*on&0ZLPj@>HZ6FYz++PLg+$oRgZ;f|j(Q2fgS+KYm~ex}7wWSuABI zd)Ut*-0>uLJjoqT((5F>PSWcny-t$#M_GTA^~cntC5mV=l9@QNBL9z1Bj1l57{^-N z+T=*=Ve*T7N;7mk*>`SoTe{Mh{tRRY-!mNjPuBlr{ZH2aF5JMS;S*PfD%4}qtvVg_tdy2cCvWnl({S@6#(ft(tPPxN<{+HADVya%J>UFAK zr|NZTB5q=8L5ffwH!-y`)p&`Qd6kBIh;FCqcB*ct>UL^RMlqHN=yR$*r|NU6KBww) z>O2M@R^@2PHO>RIIeDG$%1tDpMec|ZBwPyYttG`&wNf$Y;{ zpH>Cgr`1C4X>w0{gSUB)4`@mYT49E1?dga)ru~H6({w#e*V7gu_q1iKK+n_Uo#v*e zo!}I1aGKkgrt@i6co2lsbv<3K>7^)(eADHdF5mR(m}h!Tt=ID63 zJD=VMGfyAL5QgysqZ!K#W})ZldYQhJgZ$1>^f~|P#k$@$U8%yGoGV9@9;h!@d=yRk9W?{%M9(JG#oBYQ;l6Vw^vjb9*mMG+zU63N!#q6gjLpiEa7yFp)#%DL= z4cvMibBb?g}v(L4gx$bE0Z04|pwQOKB z+t|S_j&Xuhm|?D)n|mP$=b2-kndiwpPwsg+c>;Tz_aucVkG%70V_);^YhD8y@h0{) z&t1*?hEa@V0zcy3=S}Bl+|WFGnkUyhx#sO=9|!pzJDPWfYy6A5pLdrBxc_-6K{!7o zBeBGjo#IqPzw@i}Jg*?*d>QAL^l@q$lq zXAAVTz}^uQdp+a&?1NJ~0m$%&4a=y-{ampn-!%29zzm|@AYJdZh+G(+ws z`d*^%C7qFbNe|q_l3~cZMAu8EKIm%53iZ}T4VF4g-|9WU)kZ`}CO{)|GuOZB@{ z-lel~3rknBhIK)>%#N4YvEKvdLU99MWtSkKOTagrmEA4+}Vf4DvdspgqWkoz=Wp$p%vsUVMrA}Asa%E%O zz{;;_%{S#jSYA6%1?^RRyi49!A zcVyM$AY2`inn>(pwH&M6!0PNIP?-Onjl=K*LC@*fSspWwfXRK?$>olP`U(<>< zw4(!^=z`s>)5p4An19_m{tCkN_PV|Zp10oT*1OmBdRXtfx!#Sg|ARj{g*~nRm)qRs z0eV>fI0!dHlM%PE!3-Ppupt3+Y^Z_U8(zY9Z-c#UkbA>hyhCH;-C%DUy3&I_*xLqs z+c1dnOvg?(Y-bmHIly6#avV3cLADLDZIEq)9c{Fujdrv#lFZ~HFM8hiBzCpYt~T1$ z#!6I0=Nomt@l#r&n~mR~(~WxE=)N}&;|E4FjhW114$IlXZ|q<Vzy1@*mMQ?H_N|S{>|x#M$en|yjjnF$0PJR9--gy2sf9dJkMZ`&2DaU zb)Lg4n`=^=y40gF{g{J&Z@w9XTRd-z&uw{^PMB@WWPV}>KjS{OtYi)A*~C`Ny2UQG z9K|lSm|=_W&X&J0$JQ9+-YWOjY}mtAd)S&te##*4R`;^?Me5*Qw)(Db)zjA3(b3jE z$h~zS_OR6+w%Ws1S+|a3BEDB!SFoCOY{WjcZet(v`JIk%t9)C}ae>QR#owQ;$vg_e zZ2@v`OCUE-AnUdw=z3d4^tDayZ93iNd$jE}8u2mmZuCYhSVf!!0zTI7HcNg1rzFqF^a&OAd#hy2Ck9$7gBR=JG z+G1aOW-}Mr_Q?{lYz{{krm(Jy#*

@)=*!m}cm7Zx_1JlOYUa1f!VBd=~L5%h-e-_a5YT^ti7a-nZ`s z>~vpkrf~@K?7PE#l6f42`^~c7Ec?x}-z@vhvfnKGp@u$>f~T8>Qaw)`HKDwLcW8;8Ht<+7s{?mtpfgqP6GAD;Jz&;4P>Kkf$M@i=5ZF8lHP$bQ`4 zn&WaGm-~2Cp5+B<(ty`_3o{)5fR8Z8aa|vm`}i<^K+nhJKCb8ElbMga$2YKvt?2vs zZuW5ieILIOgeUC(gls3Wk${XRWIQ3`iGrBv#Pi5>qBiC`@iMQW=M(SYR!=mcIW1{J zJ37#Zehg#?6Pe9i^n60kC-iw@FLIqYjLuG+=OUN+hX*|5aS;9)l7XD$ArX21?2euO z={utleoj9mB?!-$|4bSpi6=WcKa-oHRG<=7 zd6pNE^^9K6==F@7I@1{4ooPWUy3vzf^kq0dGL`Abf5!XIMiEU0?A&jOglF5*pFs@8 zXU~pg48AvKeQ(a{;jA9cdd}I^tYZV4*urnv)!E(bMJHzu@jJJI@UK|PqwBxAAlF}8 zamVLUk%-yPmB60Pm7y{T8^Rk{l zz$wmhjtktzot?i=auELQw*Gcoe`hBrZtL&%^hQU2_hTUX|J$4w(h@}snK1VSb6+s` z1#@38_XTrbF!u$wdBJU7sLpe|fE`_^Lp|*0!fWW@f(|a2`NA-kaD=2FylCGSYw{Ux z_Tpsh=HeXYWA=+HabFj=@EbdDUl(<7@dP@!sDq1UxOkDvL3qg=m*SB7lDRMCAwP0o zDojx-BJZV_u&+z@bxF=kZ}JZB(Ub|SVLftO+KN3~vWH7DT(XBthq=bT*uf<`xb%RB zJPyLkk?8WWE-%Y;S(le}d0Cg23s9PJlt-@1Z}B-_(S+uF!?*O|I|eX{pP0eVxS7k# z*vvNMye#MCqv+@IMXvBq5MD9o6}?~i0`IwE)+^??qRT7tUy=Wc{8#*~x*9ss(Ty-N?U*IFUBlp!UTnfT}JntW$`=WK@#@|8sZxqGx z-TJp3_WAD$?B-v)`S(!}-V8`Z8Zu%hH*?}Ud(+>Cn*}IHS;|w9Dpbc!-TVOa-fT%5 z+n~T}Vb}r-l;rBzro42^beUf<`gty$&E%|QA zcT2uo^4)Snw~AucTTfFB*>2Uqj&9YZ9&hs=AMy$9>CJZxU@$tmCF`vpk@wbo7U7<5 zEn^e=ILPnl@^&ezQXTKT?Y+0{=k_etvVqNPV+Xz~w>{&wXWaIT+s8P;zud;mx9{-Ul9qI&3*Gsa zK77XyxUoBWxTA+VlhMPSb?n0T=guMIzH^+DoaQX@-+2^-cOytmBr&+FyRpQPANPOP zz29wyd%x@6@4B129q3FqdLqMJ8Sct(*NxwG<9Bs>_ZNO;4ePO!yIa}LPVD5aY|>}carZ#(olx;1EZLZyh*+fNh?^*2J9ip9+G~;9VY21If68#BbtoFVjs!&kt}C& zIVw`t_v31~smJ<$Ec0VG@wh&(;I1Dx#ovp^t@#FBKi2hQ zT|e&0_pIUsI()3d$LG1o6|QjueWpa?-6^r?GR6K=>^~(p1u0EA+(Jqvs^S(>bebYh zN&_14CU&1<_bKwE$de*Z${>a^99^bNWjgksG8_9(S;=bFu@haV9Oopb`6sY(QWHsf zGLV@#vXMY;p5SSop%PW7#&f(tO=?k>db~_i1~89(+zui_&kKDne4j3iWh&G8nb|C6 zHS5^GX14MhhdIh|PI897NC_e$Vu(fd2-zcYk%vU`Q-^nXT+;CCBI;MW!?lf{3&cq#+&Y zF?ZVBxT~~wleQp5D25wLTN!tf_Bm=`Uui!@?zHAj+n!FyoVF*u>B~smQ`(u#Vh#&& zQ+|siBJFavVJDF?MamQ@Q)Dz|h;%=Z@nk0_<*<)P`-rT{v%Ek}+)m`1yubSD9qa)R5PClP_q4on`7oSH8v0GJQvX z#xRB1xT#DFSi~xR=NK|(dWhX*wwug$lUc6Ja%Gk)vs{_w%4{#0OCww63RI#hc9gj` za%Fytclm&i`HU}VOgnU%xeNX_WgdjyG7o1YQ<=_8wd7)_ue_#cjm8 zjaYsAZIg&toyY1tb~H=*1N+SK1TWGA{b%`^E$l(=EOKYjdzMpN2R&3ouHUZ?S2BUij!@p8rY z<~#HhKZvnRU=mZ9$3o2%qmOPW8CC%5RuJuvt=PGo}VojdC7;qvgs>Z zMeHt{?@PAoxVvon%2pG%mrZBcUZNwj_&tcoE`Rn?*lBh<%f5j@SD?<#0ne*O21~PWDCEs6IpZY!;W&;Q4W3iU6TmEYZ8&;K@gGPz7jH!nK-hMheYH|D2VP7 zWK7UqLTzMBXu#{dg}o)n?DtI~627D{_LR^&_`m;?I^zHRYw5oK?_dA_|Bgr)`+or3 C*|(Pf literal 105506 zcmeFa2YeL8`}n^zv%7b<<$AvWfzTn9j?{zzp+gcngpeE%Npc~V(4_2$T~WaXs7OK) zf(;9(SWqn31q8+3d+(j!Gq<-P5WwhH|F6&g^+Mds-R{mavor5~=9y=9=b2eiS`w{F zOM8h!9Oekea{?!FCQh2zdVaVvS`sOr)Vi>;Xif?I%4=N}shHS0GV|!*&A8GdT>3tUR-bP zEUpjNm+Qw3<#M=T+;DCzH;x<6P32~Av$)yZTrR?$!!6;Ka?7~o+_~KO+(q1_+)D07 zZasGsw}GqSYPpTvN8A_Om)tkp58RL3uiS6kQN$r03CMyZWJNaQLT=n}oZbi4DJJEgUezY4sgdRqZ zqbJbw=mqp5I*49EhtOg4CVC6Kjov}OpkL8%=y&u7`V$?+97Y&pf=$?pZPf`{T9JPZ%VBk&kJ0Z+t}Z~>ly=im~2HZH^EID!}8h4@Om z3a`dj;j8gA_*#4&UW3=-b$C7AjJM#M@vZnayc6%j_u@VH5qt!{ieJO8<2Ue|_$~Z4 zeh0sc-@_l_FY#CSYy2br2_GdKLBv8N(uyRJ)}#$-OWKk4qyy>1{6YRCM|qA%Jmv|{^8zpO zCSK;9yo(R;LB18A#JA=<^T~WRKbRlF59M?CVf=7@1V54=#gFE5`N{kgzL1~EpUuzZ zOZhUsoS)Ax;IH7Xl`K$P=`D^%V`Rn*K{967-eiL8EZ|Cpg@8<8}ALJk65A!ec zukc6sSNYfY*ZDX2H~F{txB2(^&-l;zFZeI{@A)72KlnfSqk>5=3yDHYp_Py%v=-V3 zZH0D1d!d8SQAiQG3EhPrLQkQe&|erL3>9*OVZv}BSI84eg)*UBhzJ$JJfTvE3ROb2 zFke_KP~lwRBH?0Tm9Sd4O1NIQLAYDEN7yOs67Ci56Ydvw3l9hn3J(d73Qq}73oi=$ zg(JeN!fV3o!W+T|!iU12!cmbEk%&bi@}eM$qDeH1is%yEqDKsg31Vxpjo4O95mUt> z;!rV193~DIM~EZEQQ~NEj5t=z7pICd#UgR8SSpr@)#7~da`6iBN^zCATD(fUTD(TQ zR=iGJBik`m4>jkQhna_) zN0>*N$C@XaCz%V(Gt6_$CFZlubInn6mH9IBO7rFBE6i7#SD9CvuQFe4zQ%m5d7Zh& ze6xA0`400A^PT4V&AZJ9%`ce`nGc&^Hosy%Vt&>9n)!9}8|HV+ADh24e`Ws3{ImHN z3$kEK&=RsFSejXyTUuBWEiEmrEJ>EumiCrZOE*h*OFv70%K*zzOOB<`GSgCIDYk?y zvn;bMb1Ws6vn_Ki5zBnb0?Sg%GRp;)3oRE}uC%POY_rr^wp(to+-kYaa=YaY%MQz( zmb)ywEDu>8wmfcm!t%W31AX(n^Y%lmu``6mF|&tN)JeT zq(`J@q-Uk)r01oB(qZX{^oI1N^se-t^qKUP^tJT8^n;9KEEAcR1zD6$vMjq~x11n1 zlbg#eCuanovYvpxvt-Mj*F5fQSA>S?EBkz_UkoU;@8}h>1}j69p-PT2Tp6K^QN}A1l!;2Y5>YCYc}k@cRjQO~WxldNS*R>h z7Axl{OO%V0iC%4^Dd%1_GA$}h^V%5Tc=${)&~%2Ab5y{b?3s{u8rhSUVLnc7@!p{A=D zY8SPu+D+}Q_E3AOgVbzwusTE?s*X@cs<~>OI#HdZPFD-mGPPWds1@owwNj0$RjQ^^ z^;~s@dY*cTdZ~Jux>8-GUZ<{6Z%}VkH>+FJo7KD2yVZNto$4<2UiCipe)UoHN%d*< zdG!VLp!$;fw)&3xuKJ$(zWRasnfkfb3f;erv!Qw6?G& zT3cG%SktW;)?U{B)&bT*)}huM>qzTZ>o{w!b%J%Gb&_?mb%wRjT5Jtl=UPjxRn}_j zeCw6gRo2zktE^XBud!Zhz0SJEy4JeRdcE~#>sISFYn^qwb(i&C>wVVyt-Gy{SRb`M zY29x^zZ)<3OBZJZ6+1e?d^wfSs* zTfi2yg=`77*0wgbwzfgGJlho8R9lg4wr!5B)K+GjXREZ$w=J-pV_R-pVLQ)uk?msJ zCAM1IM%yOaX4@9q&9<$!ZMHhwcH1qsJ8Zjb5858GJz;y&_JZw2+kV?2+ncrzY@gb` zw0&j!&i1|SXWK7!huvv++1+-J-D~&R{q}%8Xb;(2*xTAW+mr3x?A`7C?EURS?W64z z>{IMh?KA9!_ON}H{cL-=Jz|gAFSTE0UunPGeue!?`zrft`&IU?c32#eLv|<*)nRow z9RWuRN1~&>qk|*ek>Tj#=;O$840nunjB(^SCOW1%W;hBRVaHO(GRJa<=Ae#q9V;B? zInH-n;JDCnsbjTcjbp8&#!>62b8L6q;<(50fa7t;Q;w${&pTdl9CW$73 zbDa~MQ=A3P8O~zo66aFqGUsxq=A_PZohzK@InQ@q;Jn1S%6Xl0jdO#u#<|T|=iKhR z+qv8Mm~)@=Dd%&}{mw(qBhELRZ#v&~{_6bA`MdKE=bz4_F3yEq*hO5t%j~kbJT9-R zxvPb%ovXd8gDb<;%hlhNKfr1=^E=Qah>g&>ne4XxyoG;SA}bytI`#9EpRP! zo##5=wbFID>sr@!t~IV2*H+hUt~*_KxpujByB=`uaXsQXp8Gw! zJ$pTmc^>yX?>Xdo)AO$9J|Y`PuV}=MS&wRlOc>z#H^7_qOu3^>*}j z@}_!+c!zp(yu-Z1y(7FMy`#LNy<@y%z4_j$-kIJa?_6)Gx5``Xo$p=ly}*09ceVE_ z?{(fa-W$9(dTYF!y<5C>-bcNAy^nbx_del$(!0<5l=o@xGu~&tFM410zTth-`=R$E z?^oWhz2A6$^&y|dr~0fur_bf{`9i)HzC>SZUmsszUq4@e-vHl0U#2h1H^`Um8|)kA z8|$0ko9LV2EA*B4&i2jqRr${Gt?*swyU2H$Z>4XQ?;77)-#XuV-%j5y-@U&3eE0iy z`yTK;=zGZbuy2p=G2b)3{k{XfSADPf-t)ch`@;9V?>FC3Kj-KDg5Tno{8qos@AA9- zet*Cp^k?|H_`CYM`Mdjj_*g{<-gj0i~m;tZT{Q+cldYs@ATj0zuSM0f2aR`|0Dh<{rmhc z`uF>f_+RzE=6~P+ng3h=kN%(hzxj^_NPrKR1D1dqum;)&+6CGNIs`ffIt4lhk^?D$ z)IeIGYv8QFz(8hTSYUWyL?ADa9~d7f2+RtU1?B}R1M>rm1Iq%-11kd82W|-57+4>; zDX<|>6Q~Vr3~UN)4r~kD5!e~n6?izXC$KN@RN(2r!N9A5cLE;-J`8*s_%iTq;Jd(2 zL0ixsbOfD2SI`~w1ie9D&>sv0n+013I|e%iy9B!i`vm(2`vr#tM+NhPlY*0j(}OdE zvx2jObAu~_=LOFXUJ$%6cv0};;3dIJgO>$Y23G~w1lI>|3f>&t8oVR8BY0 zLTy8-q3)r+p@E^y(BROp(5TSpP;O{$s5Dd-Di1|M6`^^d%1|^^6{-#`3TdGWLKlXv z2wfRk6IvTu7g`^x4Q&tI8QL9sIJ7tPWaydD3!#IdmqM?Ez7Bm8`Zn}k==;zQp&vs( zg?HCv-~an$R<$Pr`tNK?y?>MkI_(7@II5 zVPe9xgxLvm5=s)H2~`Qz35)VumsgjT9^_Qc%Go$O=ibPs#gQ+XA~gXHfQpNafsUMPX5RP^753EL>hyU~iq4-7P(P zQ1?N}>FHg&CU+g2H843dBRwN|aF3pYx(@D^F{sf>~T9sW~ zQWdF;xmTitBbE8%MntC$EUE(cOm5Mfa9J3xRsRVx28E+lCFO-x;KYI5nU&$fxfPKT z5EnZG95lrR_Oua&(WbYoR4-EjMxVxdq%pZjshXOVV0vZP+c;J`Mis znVz1O41Wivcg@I3&(2QonwFkjUx0$b%ChcV|BqKuVDH^6ZE$+`UIR0d(=)RMC3o!( zADNk5Gn0E|X7uQiot4=&E3I2R(`ZRqb!j2ozee62np(`T4vNO*10Z`h9FhwbGC&wS zEA)L^B5Qg~H1=Jf?{inJT>GQ3@8a0Lox?fX^HU7C3b@N^84^YfU(Q{_Wo+TD;I8CW zajUtjxU04HS_iG8)=BHEC2!%b<*wt_aBI1B-1S-tC0!}Wq+})~ODS2+sy%sPQKUGW z0yoI;lB$&BZ{L(L;n{`J>S%7Hy0R#o1?Lsm+nx4&=9$)I6xe&{XU0CejH!$;7j$lQ z1=C0;=5yRR&_JinLod^)NcrHB(s1q~(0yf1F5rmBY(qBzai_~>U=&nfR$*0PX=Juh z*PFP|i0hG`?TQQ8=7 zoR+7J*CuL{wW->4ZH6{eE7oRdbF{OyQmvd7;R)_ZZXfp)_cZqm_bm4u_dNFk_ae8S zJHQ>}Ug8dMhq;%zSGXhGtK4hc>)adMo7`L6+uS?cyWD%+``iawg?72NNqbN`sC}aS zNs*hPP81EGXaYrZ!BI}p^%UJf(UTOtLD4r9n<;KaaR$XhD4s@f6~&iOyq@AaDSm?D z*C_s)5|NT-n*Sj8F);oK_bK-o_c>FNGoeeG0)H#Ra3?{xr*T@kmR4Y&I13uEcWP=X zXz$8s>MT&O(K*$TROkff!n8$d1EqW1_n}o)730G5s-dq;oisB34SL^MC9_ka3rc2H z>5A$r?(6(fxzGjGa$m9g%;=X` zM%@bRd4D6LF_GeE>d45V!c-mW_z$)R?xOi6pr;$>^k*!m9tHONzmZeJ3T{}bxpN9D z!^MLt*$h&ntPqK1)vLfh`(MavOlkG(lJe-Wb{r8YEQZcX-`_ZMb1d_-{+;WbG;&n9 zY5^FT1IOev&Pt7C)%WjFa*D>wDl9JwmzJ{5y>Uj)SVsK|?8E+Hh310A86E@{*=(>c z8q4>^%hnWqms5o`)wT($1^7roHhLI#Y%yQH)f ztmVR!6})#W!_oha0vZvXA1-Bsv+8JOVWmEtVI#T9NNMTGv|s;N=3@)&bN=DgvH@D^ z_>%B~W4WYe7KZZ*XF~qR?{C~@gJQYo{#*Ce0;c>7UZpyz6 zOO(-48q4z-M2&Nw7R!Cw-|N5{-k1$5x8Bg2*f^t^v5X1|>}CJ36;D;GqYCGjK%WMN z)?eKivtvalEU-`ihebGEcS38%wC5PGfeMQjoxF8RV|f-8*oXhaJpbyV=EX9ALD#?8 zA&e-jE-#vMGQB!Kmfh?Ed(l6MjBUtQ-pv5ZUp9W5|vBy$Lj0<~T_E*u5_TVr0e zSblT=tr3WBtL9eE%v)4(67%c)SZ?4n`KRNZ za86QVDMid`h);A4K?8CtroHzh* z-UJxo1b}mc*7gJ-9sI3HI)a>mAZ~@*#1O=-0l|%@PHU8~6YdV|;m$Z2r{GkahSPBd z?t;7GZrWyTi*~cNRokZ3Y1_41v|F{?>TnO8J$x4KgZrX&xIeIWdz`(ywEMLC;rs40 z?EMGqjb!YN((W+W8_U=mhjZDc?a=OwZOiTR?N+00C*!G%zA4(>HF%nKPZQ}Y#Kk}m zo{9EpJGJv_aTw3ic4_xErZ34F(};L(Od}=@aL3hQg^_;+j_NE{0*epS;#oKha&|S6 zWSqYUpT}5SjL*SK@KU@CFUK0D_*}d~dq{g&+oL_AJ*w^19@8Gzp3t7G!{^6YyjbtO z@k(HEU!28f8<@-L;7gHG)>Qu0R)~y z0X;`D0l8m+ACe8o{ni*czQ2*tFfvj{ZUi9r$ElMT=jW2?47og#PsWo8WFnbFCX*>- zDw(DorHG>lUPZzb5sG+<1d2q8Oca^xNI{&vB38STtShwhMZ54t%(?3OfCba z$R%hWMRu_L$VxnmBFD*$KfKJy>?(4t4&pW1r4+fq%p)tcds(s*$16sP8_3NJ#T&_b zaueA=YDg{FNH&qpWD7+eio6v0DDqPjpeRUDh@u3Fno-oej%@x{q^xNCm+ZyftEP0;c_#8!T zYRC%|wQVAf2gzZE<4X+3b_~at(K8ga2hDgQSq?MI{>6MS0hT-@T`Ivk{J|&-#&&e0$OY#-@nxf7WB~z3_Q7T1g6s1#?K~Wcqx>D4w zj(i)(@y9rhzcL)V8#wkdaO`&m$A2G39(*q~yoI73aU6LCaO73|3EL>@sl6Th02n>- zmge2O7eM4e$Mmk@LC2icG!Xd^-<&bEk8h@(M^PV8aeN|EaeW&x2i)1b20upCRyF!>)axsEXj)?tysK#v@o@;TnD`MYEd7<1PH{I*+$89%n;$%kN;_?VQFu;sPVHo&0?| zg!eKC&pu5eBgMn~(+t8r{3HCM{9gVs{&D^Z{z-lx{}e@~6qQj_PEmxS3X0}YR7p{k zqAH52>-cBl5WWzH@F0V5z5(Gm287xf2>$~J-(e8GOVI)Y!VegPpYR{?AM>BE4tgO) zizr$Qni1P&J29I3EB+fsBN$*yYWQy{TG~V!f8>7wu=t;t#kdSCM*df3F)lxe#b{p= z&r9G05`$5|3`WXe{FM>Byb-}h3X9+d7zIg?1w~K=t6&rCfAJ60@0V%2_79rAs_^W5LzcRV=%5XU|dbnbrh{({q)*1IR5)M3Y`E)0ZjVK z<2VYbfTNJcr3x7W81+}Me)>v^RsoLp+aI;_MuYbfm{UjSP0>{~LLZ8*ZW@ll06}-_ z2;kPC=o&yv0KX1J*ET}S5ey^^FvmOV9Y($*gwZ;hqZpd&PLtk9kuS_(XpR>q2or@# z!en8JFjbf)Oc$V2zJa0}DOyj_O%!dQsD`3iiZ)WTiK5MQLSY=uu&yVC5{Bj$1I=xQ zp1kc0nEwHo3mBN73vV{SJcog~MCigcil9GUrGEmMHlwXq2~EP<)o6hiioA zDcaLS6b}f8fGXi2>#rYy{#rQ9`s+te(qB8ApCt|O#}(uPgRwV-cXTS>W>h}Gs65P2 zezXzFMv9MwZyA*z3!ey|3ZDs|3ttFd3SS9d3*S&y2rws~rmPHbDd4YyOL>8!7b)6b zCwv#D@~60h{Ebn0z@YN5p&(y7!{oouq-X&qMTw$=aVA9-m=vv|jcpXYMA0Gr6R1qH zEAiGAy`mqu6v5T=a*YV?UU<4ua*qUddk-k}IA==Ugk zpP~;a`jDcJ>cl=ejN$+tMsW~>@nZwVPYoEqIs@Z>0OL3YV=hIX7%+|p7_mj@!ZtP| zvr7Lk)T1~}EMORdZ{)KYaR!Cw`kM5VqF5}>W<>21XR)683r184BkIdWL^)7r1H*E0 zo{nJ!!|?0VBr;Mg5YJ^8E)*Aui^X%qCE`+XnYdikL`o41zP_XAdy0Ob=tqivqUdLe zexc}BihipTSHv;AP`pUI7_Ad8Wf=Z$V0e^bp2FjD8pYxn5dQ-Z*D?^-QS^ra;*Crz z!lTS=qv%i8Q^N=7M3>Rln?>g55w}px)reauMomQV7E$-}h|JG}G58I|9pHDwq%n%_ z%%lOW;yv{QBj0<)-8z-`1C`ixn)F7BN5p3tm5+*h#mB_Q#V5ok#eL#a;?v?Y6k8~k zD3&Q!C{`)9Qf#BxPO*bxXPx+5oXY)i<#-6FgvT#q|55CXD@PnU!{mR!|ZNBo*%Uyb-J#r`HT`J>3ZJ)jPd0u8dGnIlbeR3sh??J3`Nrb zhGGh+H&YfM z&_ooUH|^I^e379zkx_M!p*X2AisXf){_(e|j9ibHUe}p?jWId(G^vdg@0!?aRHpY# z@0&g_eQ5f~^s(s^)2F7-OrKLco#FzDXHZ;7@l1+~C@!WrOz|v=XV;nHFI1VnHGOCL z9+-p|swkdgFgcgv3X113CM(Y{`R_AnW^YxQ1&T}JOq$tiRb~tS5!)y}n@tnOK7qm~B@J-K2Qt%) ze3Q&=V_cfsFfOCeX`4f=r;jwE+DOsa+yl5YC!15uspd3ux;ew##oX20%?urNHO2EO zUO+KiA=n~|DL#kdB@{2Ecv+pfr>-l_eZ-5*{m?q|0LJBVgG=ZYc#1D%TwZjB%m0AO zQH)FIxHN-HaQti{OU-#~gNJS@1_ufI1TMWsYfm<_m#)lUkgcdO!=hB@HId6gGkfg{ z?K2lKZFxTEJM%22EiY)ql|%i&E*ROBnj<=nAwdPF>MKHycN9P`1+H0zwLJ!RNZCXsdIP_l@)~q)IoH9uy4-24Q^H&MKS;u?x;DTd;2q8N(5h2onj-dbng7w7QV zIEODX4!0Q`ZZ|l*;|z!Y0f%og4&S1<&fxG};E+qz|AFDC|Ep*46Z2<`!A~i^rN#_~ z7)&xZ{StLAZlK_&tO0_ESM< zAr>n@XyGk_MYNbKW{brlS!9c10k7g+6yHtpJrwVxco)Uc$KOZs{S@z}_<=f$O^49p z(jm0?7=#ZR5I$@`_}Cc;|9uE8Z2&?`TZ$iwLul#nSIW?mX2}2$E$I~Rsj+~sBaixM}a9zAI8+)MoigXh;wKeXc-ja(2~VCeEc+Nj1j>i_0zN0#_D|DaDsTDOy%ArTEIplp^V1WOlKIz0`$Xv0Tbve3ikt zf&mP3;U}yoVWe1XxskzmmE~&7HI{2F*ICwB)>_tCuD9Gk@#_@7LGhauLl^Ki#qUu3 zF2(Or{657W)LGWYVXTcS#VriR4-FVUF_hw$XHfhPP`sO=2;J3328#Crilm$6ezs{p zQv9+0vD{u_wDcYeTRg||2*sb)SU^#H)K8+Go~wVu1ku)m3sVzcUd3p!oMV zh!O`NN=U*I5@B^_IPxd^gsJJ}5DiF-x3*-FWPnkUDB)@(g_0&tO-pvk1zbrE(24|u zR+QYJ6$v?+R+Nl~b)=xwEC!>L05B2(V3gcIFeE#LR+N&Y6o64`Ewz!_O6{cfQU|G{ z)Jf_rB~xOe#7v2W5-7Y(2^3zX#7c>c5__G*Ru+SQQWxPisT=(50WcCr97f_{T{HN!fs-G?)^nfnyHCahNomZIrkuaqFM3tQXSkJq;emNqLONTuR_G zpAuiwl%q6B0uK;ajM5ZPj>ON2_w4x-5lGc>8p`Y z%cSLiBxOh%Gt&gVr%{s5kjyxvA^-iZTDpQEc_k&r+_ZERL-J~Ko^&G2NscETJ+N|TaiQ$;Su)3Myc#^4UM^e&&l(@tDEF<6B zq#e4Zyn|ucuNJ_dF*a!Z@H9c8Gn3Pz= zVI#{&r6;(IjnZD}G3jwidQ#GhlHMEfENP$g6nN*!S(FT9t2nY~E(K#osNq!*+E zwbF~yeoFdK(vOk>`tFycLmMdR8(Y&*dRcm9dVPGA*wTg@rI*>_hWfd$N{4Es*C^=^ z3BYHPp94#RmzEU8mY$8Ru0FD`ykr&x9MGk`CA|$HS&RrM;i`?&Thcq+6bLtv%hr7K zopVlF=fvcUo=ZC?o|E1s1Ag@En!a?YQG@SGA8{GA(g)Iqlw?toT`PSoeL~3)N+urP zd|&F#H>kkg?{73;Z0UCPk+P626j=eGHyW(hEq$j89b8}^@Hd1uSQogV*w{h<(vQ+_ z5avbtN%~p(Mf#PJp_JrMGK`Ypo21{RKcqjUqm+!GWF#e{D4B39?uZc=MDL5nR6=N) zNOd$GEJWX##ezf?*gGE=Bjot=^9tD-=YM&+5wpmM05T$?H!w(VdlKmd`o4z3p=pmh zk=-16wgq-) z6efhOpkyp1V<;I!$#@n<#*>x5`rSB2vPbpWX)-9V$&}2Xq>zEr#HP~gz8kCi z?vzYvSogi;-qLrnlagtaOr>OSece93=SrhE{pHLP>NZP;Mwm`X0V~8w8oObPsFR*x zh#n>nKmO83$zwo=%cChNs*$0+!^bHBdAxqV78f{7hZZI;WVdv3SuCai#7@a&@lH}8 z3JD9x1?%Ic#B^K#*_Dy%3Ko5;@3BLvu|sW3A>davEQ8xO*2pQx7O@=>KadiW*)|qQ zC3#jQ2w|(lCs!0!&58CsF;>fnl9`ndrwU@Wz%u%gig0CWOf39n(L;*a68;Tiwo1a zJxGN3Wc2~6+GM2tuM{P9U}<4lWL8OK_ty+pH_5Y8X|E*3YUbblQ+`dK(#Pl91Y4P1vF{`t0EGA)cA&eKoEIed-7dW9R z5-Ba3QwV{r`W8jXQep>FimOuU_ou{q$#{TJ!!Vd67lVsIo-9w1r^?gh>2iTQLoSqO z%0-mSqGUEDb0{gHMU*UN zE{1c?xETI@7lRCMkk`mdD47@cddbVd#UN{BsjSH>D5+#mF2N^>g4e5Ax_y+<;1|i4 zfSWtmh<`9|hxSaKQ>Mv6@`tRz?~ZYAB3IIBzdt+;tr+hCnu6I$g zqDH=tlJl7P9ysMtP#-ot$Qtw^O3v4oAA-S}DnBAyS0=qrDumUWs zJP4l)@f=DjswTyZ)-hltQ*x=sfr}a%%*LkVB1$efAin^meNo=eqAnK0?o4=1fn2PQ><-E=O{@1=urwRxgYqG6 ziXN7>P(SHq`4x!NSTDL(KEh3DxI;hdHTm@dyBC}@4Z>*}gXxX(8}gfMba;y6rymx+ zEx&uLwcew!x}{%lkq=pmd_)N>C(^h@zL38(D*Xydu5484P2#1#(!Y_PqhwWmb$&1J z&$NJ7>0*PZpX6Uy8Gokasu~%b9oHO>|52UVs|)Od|CxIwH5Pi5Id8!65w0=4tcp#sD-Ok}fa`rd zB^xQ(N(tPyb(CzUXJUCB;>9rbUaue+K4$GK7*WgtWS(WELPczRL!V zovOhQ_JakihLfhT_$>1w@>1-0tl5?3(t%A%3nfu$seohsCQ87gS3^lHIQhU6kdj)+ zV(PJv0#Gp}S(U3HtbWg0GiQgzncLg5C zZs6lldMkb4&QZWYd`peemy%l$)(EXY_T7dl=AoM!jbDBv&K zskNO3>TDGFI`sI}4V^iLlu1ev=iR1ER;DOZm1)X!r9hdX6e=?*0jD?gEca8go0118 zd5{w5J07NF&o-`;0=AhFR^})r%GnCoW-NgGBg_1*O_>cTRKyI2|Bf5xY0_1G$5Sk1wn&DJ%ys^l>5# z^$eaV{mg-tMRQ83z-d%n8J<+1xWMjdm;*$f3d8-*;y#~{GcgR;|oix!$|{l z!;%}DXcT_4vh5^=H`OWIm0Q>gXXG%2MS}fBTw)u{CB`fkA8rM-kO z;RVqoO>7NHhBe8g){G7ojySJ1M24Q&Ix>?*6OTGMbisz0H8ecDi1i}+N&C%~yvj(V zN<+8X1G3_BCp7EOF|GGmeUkbP%o#R(#K_zU6Q>sBw=SzMf%sRSuQ3*nB2 z&J)gKswindTfKT67uhwFSrauM@SMV?rs8qW^K)1pnGo>mptV!y zc;b-;7wC0r=saFCvnxyQ7TTE6rK@JqBu(Dfy+=D6hD0Iv9hYonH{RY(Z*Q}bG<(-)ws?8dt*))6Y z;31krbFy4RAl;D6+}x4MV}0(~nKyi*{xuw{`I4B! z9B$a!G2@^~M#qqX6nXh4&J^a2A7=za1K9LyWtASg6i6{?GAQ5^YqxgFxRdOKv!_ju zvr#*39Q>RC){(OTZN)l=wKF04N%nJQ&cOw_)?5cJgX_WNa3i>}TrL;ks<|cH`P^mP zTJC!8M(!qV8^oi(7oyES4uRsIf*|qFL0I^AAPD+5+@HvT>?nW|P;=A*wM0p%56VK* z&|hwyDvGbQF!KevNYIk}`?4;bPMXZbYi!<|J#xHi}0cb#* z@+6nfrua7h*m5`A>C^Kf#f6I!3#$^-d-U#-uJ;?yz$l1wYNY)(rsNY!KBeR{N8eFMhM$6P1f z%=v=ZI$ttd=VNd?X{;4IPI;mDHN&?SY7 zV|`6@aAl-yR4&By1O>pn(6Km+P}^|-^kV{Gk}6tJSj1xE9y3Y{1`q1mb70Rw>B;Gt z1JjecW@Zdd&P?x~p4`1lTIRqWnc3ZYbnBw`qvF@V$j=_AznDDm0?sU~%rQjiHb=v38XRiYrCWMpue8MUu4!qBJ$iOaOoM;v zUAv|w_UzHk=v`H$!WeLyidCZWs-TLhNj0k$6-I$yQSvn<-%#=`CEro8ItCM=N3~`q*jpDPw)xR2B?2HkUU$45D2l!)1}mMMEHB z<(y-CjWX2dz^rq9Lc4)ouO_PPxs03DmTD_CNo}pRQQNBRDEWnwUn%*GlHV!$gOWcf zIeN3&LG7q^Qah{3YKodld5-c5yel%JDQe-SBJ zb6}p7#Rzp6PNe!{&^ZiY6R-LK-C#_r7da|Y1-5(?eBLSg*9PfA^=HKn>tT=KS<%7Z zRe}!o6i4e3gczZxI3-r6aobGorS=2!S?#T!rS?(#QXWwrQ=U+s-=y|e2dD$p{*)Ie zFH+tFUs#Q}2bYvqg)3wCTIM1)9so-Vu6+cHv1=5Q?FP#vzZ@JMCpp=#%Lo_e=NvD` zC|8a;jPt_y3|?1aruT7jb0feQbkfGTqtr1lbW=xD-dv-OrM%^|sSa>9HD4XCLWJ=k zOq?^dF^0JyU?c#KJ%D{4d%}nEGUcVw_B&6sK&_Kth*TCUG~mtr6$8Np1g}gn)AG~7 zbc2caF_9?T1(EV;4V@^_4P6F4zH`{E18#b<)-2arq$Hz@OWM;~|5~f4NdxBT-;)Mh zG&J^YgV_;E={tNx{=_N8WfhCg)ej@1qqOP2>pxe-#=q)h6&!ADvlmvB>Z);cbrp-P z%5F8?CT15NulfWvC7N^a>{2Pv(+GU_+K(^05C(H#bs<(3)Puwky@;VDQ~5`jq-NNJ1Fnm ztj-37&{1ut&ZRs!y?$YLIyp*tH^aHr$#0X`U7L~006cu33yKtyUK^y)a*0pe|Gw zQQk`-Vh8W1d|;D$j=Dr$sxG5^kn+ta-<_x*stBZE>hsub5!K9g4hEmRCLZvsfnbAy<_3)% zNNCo)#mNRY##p7cdE&8gjbCk*v_TUfQJc0Wj&IsDPXzhxlWIC>CQZ8BV6P2-BVau^Gp%dO*X<6hwQ!&?Z4xR<#j+?(7d+^5{(xQg7~$ar|rMW2gK?kX~4zpV_*Jm|7BFmdbI{- z7uB284U}(9`8Ks`t-6u&Z7JWCshhyO>Tup+BUUL-LBq3`F50VPx%g%@3=|5O}$;cL)}67PL%IV`DDtcuq?cBivSdQZV}wk zS#u(hC^JzLSihfL7+sVX$tj1P9{3*1N|Ocqqf=r9VhWQiy;Zi%N zk9sl-tBU3@#hn*kSQSg32Y%1um(<SOBT>J#WtUKPll2z5}#v=HUfDW3-PaC5j4^(if(C{HQ0 zO`oru3(u&}o=_;gK#;greU8}%Y@AkK;`)Op?61EPUFwVKe*Ky5;}afN8@1{ICZ0X{ zeVVhz7|nP{eU&xiVfAJ874-<^yHmag<$F@T*CyzcURU2xm&UrJ-jqKJzWnDMQxk6Z z57m#^{rwT;`_!nPP#)q|ohB8#zrTR{`>Vgczx$1Ln14FHf4l4M-T&M`z1`kfv^xC> ziAn7`WpwY=cVKqT$T4{nrc9qX>+G_5)r*#BD=xg`^3~U_TVJzz>n*n*FqtiC9(z7V zpXnZ2QVx&3%SywUl7`>&G7F<&J30W)RrO@HbC}Ja*LN6TEbraYVL|^rkd4c?5&G7K zvX1*cw5qCNTo`VMXqBBi5D13;hWLFTzL{@hbGb!Bk(06)R)u3_Inc6IQ^bLk*6OA< zveLGpnCZ;iKBkxswC~Un{I!io4JWzsAzR-b0YW>cZ%&p|QqvkrodAQYYMA568wj(U zPS_znd3@NMb|f*Z;`0PgT6O4-s=JojUe($BZ4zpM;sC?%hb z(4z-3vj#O)R);0&mw~LozD+|s-k}X;O&C*J4Rg5B1K^?m8*Tb2NE_v=8QoCSfwALq zn_8eDTi%u5rptJ92gsP}+c-^5IZjByjKZc0fm%)jAw|AT#d3>q zLn-<25I0y|v*(mFyb!5UTGb;^s<#rF3W-eZ9vEszD-xkEmk$GnF;whIqZ3Z16N&rO_QZ9Np1nsuJdhP z16Q`Tp}0JzOAcIr!;MXq)l=Md7-Zd)zH!3|msh)SQ&WWu+4|NB5VA$xeDjGde_&hP z_9lwi`EvQAZ-JOweVcAOK}8<8W5=CMZLkgt2J~ay!miW@Mt7>c=ib_#yH4Umx$pj@ z0hKY!ldHEuYaW2yAM|Z`h}G)D4XYIl7^X&HVsw6C(IQsIDN*(UMQkt;;!?Q2+;DC& zx12kVyPR9it>@~v+qoUwPMAP>1tw2EgaO2l2qP;D9z3W$>H$NBY?OoYQ2{DO3(y7V zQkXco0c}TjpuOk-dJVmeK1AQ5Ut!7wV;&|=5^yJ&Ea`>&;bC|*OqR^Ui}7-pEV&Y2 zi?7GG;Ro>(_!;~nemyo_@;i|sPI-WYNITM*^e3ap1PCHsK<1JPvVyE8*F!|#P2>)8 z57|dvCU27uAf)P##D+;0;0ywl1+d^1{9^x=@k~mYGEtbLR_RGXo;s$Y>c$;{a_%N(0{<8R? z_?7sx_?!5r$pni!yG#kDHl}u_&ZaJ={(1w}5485^zl~3mv9h`PtqPA`ZBf5dzgK@y ze^h@`!HYeB@&hTKN%<_w52Aeb7XBmkH&`O6llmuu_1YIwelRSQw371E^(hGEVT2)O z(OfohA0M>FN9aB{6!X8t9_uTC!Fp^g3a%aBpv)olZb{b1!!h0K850NY^3mm`i^f%# zm&5QOvoumPH_9e8;&TY&z$4C{p3xoa?93dH0C}@%(zvv^$!j%RVU?uKR*O}#%2ve+ zF6tqaA4>Tg$`7Ob@Xb~m*NN+7by{7N9|6-UaADvJoyJUGX0*qO52JB-Hc@|~hWVw8 z{R2zEcVE1SdH2f)M=D2!7mO)nPhZ8ZvcR4W=M62KAJ#`XrKO7uIay=!V{)N)o}D!Z z-pZ+rkJ5EZK6dPQXE^vY;vSA95SmpDPl%OQjVP=xFPf99`w7Oe=f=Y2Ma-WZo7}R7 z;5ANbf)$)hBPkEB3BnUz_6BbqCbnslnBMSa)>E~Di7qR+@W;SR*I{d0YddRu&Svdk z?Z|yihu~JbUmNEL1^7$|;);*CK z;c;#utK$vSl#1%;oa1-3FX#>Lxt6gxx85CMqdMzAYbFeVp%ITclJyDdSZ-qqODb!v zS!_&q+H;IDXLG66ew3d8OW*SO6Z7UU9uw1zqs{cAqhd#moul-flVdx^OR786y{&BT`>{^bW2&lD=XP46C^CxxfQrx{uM)z(& zm{))4H$9EL^qbK&1K#;f>$Y@h(twHqF-2zF;8U#AV8+%8fE3nPr&E3=yLDT_ZCE+R zc$N|#u?x?JS+V+YNlyH+IO|M(7Pr37Glb5v&S64lQ$Ae7bf4Y9V? zJ(9*VrPeZQ1-M;qyY|4X&zLfH1lrN_|6rh6g^C(|Q z`6%V9wp-7GhQGjiq4gr`#nwx#ms&5guC!iA`DzBj)szR{*|n6vj+$j^_E2+kYHk5L zS!KGQx#O=^#8i_$71=Q}46KBi)`utLqLK2L{?3Pbk5`XAzo=_<+p(J_HbXzT;lafC zkLuE@680z#JhoH?CIx%;YsCL!?>@k*sKQ0>Pr{y=fRNpL=)HwdLWv-~69}EqTOjmM zLPxSxdPk+VP!&OXl}@MuL*J!v@Pp@4(vzrC-^=W__Kb!Qup+OkTb=;**0#FzO2@5{2<_O zQH*v))L?D@lYS}Y`8&t_d z%h+bUddBM?4s32+=q7D*>qFlU-4MD_7)A-hXkp+)&Z{ef7D%OndoX~L*k$kZ4`cm; zMy5@EMvoh&54>hwhUt53+U!aHSFVQa#^j}+G$SGD{-`g`^?zxXMzOpj-ADAbYv<1b zvF-`or`6S7VMt02-7gG68((Hldp~NkzMJz+*@v^8UmltgdPMNLW&_vb2QKIfJsx^W za;ykF5qdH-RTy3uhBt&^+=@`%of7(?FpSrJdY`}*sH`?^HgB)}|I)4;F!BG@8W7#3 zC+8p&yT?81gZ$OTE=xDTd>VTBX^gV^HQO)!=SyX_YVLW~er49K z0ZhL{rm;WTV?5T>woMY^`q%HzWh;ZVlh79b+@#fRivfC7>ciF;%n_6^i!g8pL14rh z6=Mz#w2i7U#F*8XjmH&a7l!%5ut4ydYr`U8SS$=nRvSZ&Mx%-Ua#4veEER@jLcOW| zA0gT3dRMwR)9jm*d{@`_yV>gdw|Y!x?CkhQj+#68{!N=XN|!C(POC0%8t$%NbdZzs zOzhiTE7BOQ9rB+9WJ1?3w0-nOV`ENZ9(HQRTt;>X$-=OFxiN1r2T&_`3pYd2q9vsI zVEC%^)!aBa#kT15prE2_Y(4CA+HtkF(Ka( ziX@cWLa8d0PD1G`lqo`4CzMk{`A(=tp+*R`nNSmiI$fyignBY*>_ua3V;y5%V?D`e ztZ!^!Y-ns`j5anlHZjH+n@Veq%{esf&J7h>KGGfUXd{V(41Ow!(=M3OX1MUd`sJ?a zcOqQCLU|2|tM%yGNUpx@uV3cjKW=^U^X7Da)wc8a<11J?5Kr2%%%j^&gyCIb*d`1+ zgn=ClGvmo5PULS-cNA}IX>4U|9U5+o<&_Br_7-b|VY7aCy*g=9CzJ1K1K|`>y7u}G zq{AN_kvuA3U$=JP*xK09*vZ)0*hTOLcEeg>SSJkcKRUKHHp((mJ5GI9yM9nRl(xi1 zH;x-JjNkjK$JFgu8hiPUPv6szPuo3qb~^BZ{=N^a_kG~8W7WV12Kzp+A>#-1 zM}_1F3Nen5ZYS{z$EGAnKdd#5Hja7vja18xuWCoIPkZzRzcm<>jKcU@TkR}9DdF3k zFl-fuEuBpHpM01CJIOv=Y5n-K8+=nXEaM-Uf}(qA-;@$4tEc{1yKADRc1IH@1vzAX z>SyZn)o-wNzXt~*8P~!sPQ_fd1lOT(3N57VO+o0h&B7}-Z8G{I#uKQ!f@DsL#%NV z6&JKk`=2b4Nw4bv^Wf37rpBGd-TY=|q&JTw8|lrX+HYo_T5)~Z8SA&}`gUE9QsF;3 zGwwI?NKKypX5@Xg!f=fDLu9GVVdKN3Or9%fJZ?v3FfRm z!L;W00BuJQn01!HWj5* zO+|#^>ts_gVfg0xO4Sr@Doy2?N(CJkhU+{yRGtysLjiBZ>Ex^HlpMo~4|jyiC=M(WV-vn#LGYZRvnkUU&2Zjr+oIODiuqB&o-fyjigZ>q~rT*i(|4%Q~ z(znNRskC!yfzS8x1@UvH#}q^L+U5X&V~Rk^hnU7v#->EmP}4BeaMK9WNYg0OXww+e ztHSU=7=9Io--O|JVfaHB9ty*s!tj?c{4EUstTiS1%lHl7lhI8RDPvjkm$4lD=*j5v zi|jxYYj{jF(^R>*UO926+z1r)OORCG=HC!+`YI@z>BE9B)u&XR0eDP+TQ7V;|f94cg^kWE51rR50q>A z@_uGzf1_8nY{|5;yXuwQDP3jXHT|Yl_V=cHrXNf{ntn3-&sW*zyygO0ogO#m=V)3kK%MedEb4T8 zW|eI&W-h5$wz-5>*@d351YaqhRU#S6+g#2VZ7y%FV2m+WlD28(T|zJKvO+GZmv^0{ zm?z8IT*drKT6vcdGKVLRP8H|}$mUv7^Y;f1hbpuQ0FnRrM;Zs%t-E3HH~SR7S>v zUQa=9FmI%w*Gn69xqgO%=0Q!X&HK#z%?Hc} z&4aRq$tNr#YH`L3kgLbat$#Z$;RNqIU^^b6|TVT<% zzJG6`|GR!AX5cU9eSc}H|0Qs(rvHymJu)|6^(~>j{ngO&@#`4^-?|IwRbDq;mESP` zq*eJ%^DXmj^LOSu=DX(a&G*bdn12*FHUI3d z@?ZT`{!pv(E`ciV=Kq2%_k2<1|9+KQvQp)iY(nnpuX0Nct;%m1ZWwMFZY6!8?O(K) zqmN{e`W}O9u~{6HxrJl0?#UL8$>N@G=WX#?a#6IFFzv9s2Z!Z`KeX@HV>3T2w-m4x z*2~;dNGtPr%G~gWHZhFNFfn8(W=lz9w560K!Wd&IBkk9Uxu0IlLxtR1FXl-}-JdLG zOL&aa-S!Q*;0jKw!C7gYN=+aZmD6ZDdfIF?k{BaWCMjfNXR@t&tF=WlD;bH zr&kf@rnGYQU0>9yX1cG}mWIA#^#Q(Pb*`Wely17B4*X-fdVW?NTiW{~7?Non57g^8 z?(sUd#96rBVy&fzrKcs{(#z7@(#O)*($CW0GC;_~ggjixBZNFs$fE?`+vG7qepSe0 zg`Bk3GSFAYmPB72TSjPgECO}>dZ3Ocyr|>=g*@M~NZ(&u7Ha$J@suU+z~d-9<2&#IQ^s^>yl#l6 z#$|j>QD94Xtoil5vo)Vq)bBiF39d)tx;EZ_QDaDd-+hQhie{*7YcXTAwS={#F~(X- z+Mv}ozs^zHTZH_cUfV~LYCT!o*0R=eX|=ss$m^c0ZEIA}rWMwgt(C1+guGtJ8-%>^ zQ88PK$z`?U?f3aEqkoGw^WZ9e)8nV!AzXd%*ctGr9w%Gt`-*W>rp1_7FUH!B7o)YA zm5VFaTAN#2SX)|KSzBA%SYxeit?jHF6>k+XE#5BV9YWqI9m+ClPR?I3xRc90yO`9ZREhE;#k@q6@y zN_5Ffze#-2PZjc6A%7%felz3$<~d7mCY4Ngb&Penbwyf{WIWLBUr{i7AA$ilU{ z>@K-9soUd^Lg(J;xFOsk-Gv9Y1}42j)>JM$v>vvmSdUnbT8~+eTTfUC`ePw~BII*I zJ}=}8LjF|97lr)UJJwUy)7CTDjn=c)kE|bC`N$<9UlZ~-BFno%zAof%g?vlMx3#Oj z{=fQ!TkBOG3~Rk+{lfaC^(!G?7V;G#e=g*!Lc9MVvj^AuE>3yu!L^xv@QG*9a%ua2 z^@LmNEv+H9t>0PiSUK|fLdahVnHGKh|D%Td@1AfQ7^nBG57IqP*801Z_g^Jj{}A$x zWb2txdIs_%_7P$X)n`>wn6z|Cz+T&dso|w`I5Gu!Y); z#u!`nY&#{6vwsls10nw^WPYw@BH=k&mrEl zIb?Xhz9ka|X^&nRGD3f>w7++3}N<%dH4 zQ|lk?Aq3BSKi&WK^>a^K#}lux%j{Kf`tK38THNwvt8J?zgUWnwuCvvD>{)%b zMqHk2ixx6(P!S%wniu}|6!tSt$sRHxfOg%(N3oZ+kO8D94Oj0*|up6m17>DJ&6m(RP>vMI{#p zipoRnw2ddjfnvroJxQ6KvYn<(Ka@6UWy@MOFGA3XKbsoWvT zx61z)Cths7`HHw`rbS#_FJgZGNh@M|kUcv^Y!9|)u^a5NU9qe75PMd8HaoLc389n} zO1Mx;2_-@(rG-*PC}o9GPAHLU?Kyl!Y&Xju*&DRLZr6&qe4vOc>JN~e$6Yx}~1lDY=YXRs_vp6a>xGegO^Cu|3=#K^@!a%u302Iy36| z>ewD>uSiwe%WHM~GIcE1*1qt~$-Iv3uh^^Wb!@Mu)o~T-Smu&qZJ8&pI@C|525KZj zQQPYoqwNjs4UIAOXlaX9)HU^@ZYY#$dQo>wYV>4L+nd^(r4@App;UjesO@biYJ04` zt-YPSy}g6IqflxHrIt`?3#E=w>I$XaqoTIgGu+~sjO_-E)W6)>w3De^x8GO01tddR z`!0FlR}$@#hkxgMs(q-htm|i5){%NyN2e?6vG&PYStr?r{WbgR_BZU~?Bned>=W&i zgwjYT(L!k~lqN!n5lT~`G!qKBZ6TDFYwc6~Wj#ZFU*14jzp0gVt3X+|(axs^rD$c{ z{zX~;2W6eCmGyF=v<{T@Dy^(jC~JtIy;@oGpR}r8XMbO->h(g2O}1|kO55kG>Mi!| zT2*h=s+#w{FPAT9Rek6gRlUc)-&fW9w5sl)RrLj}syT7=#I?j7`uFPAM|-fDc7sdz zjAeb)7%knlpP;OdN_(}k?nYU2!@ts5uj+0|{O|O;YWs)wvuRb`M=0EKl>V|L`vtA4 zKeb=9e`ddAzihuEl&(VQE|eZZ=_!8)v@9m*ljAU<@Y_nNP$nm} zc`}U-)e(}G#-T##|702+p?ooM7#${u*5g)%@W1BEh3D1(JEBrSt~`{u<2-@Mo{ zaCvsRFDFl2l>I;dUg9Y1%aDGz`cp6SXs%}{_VKyT5#e~5xzADBQN~f$QO*(RDDSA? zsOYHVh!Vs}OvZJNdTFG(~IA2oc35B10DcSdu%48_nB!@^V*||cQmZ4<% zVSSZjqGOU{vSW&4s!;g;JyR&Nh4PkA-hNcFj$yuH(vA!bE!*o)Lo1%HUL9}gzZ@&G ze7_v~9+>8@TE~3f-`@27E$wN4{=Yx|$>^PJUt&GD75dcV}FSNlyjIE;gqWtkT5O~-e>;=QdE@7l~4;OTREQDoTDI)0*T ze{tNWY=4zfw6f(EY6jy@p{&=-HZ_U;X!-*d$3w@TX=S@ZDEw5M{(!|9OxZfKI1NtO zsW?@kaPYQCC|iWWIhJi{W&4w_hBoRo)Y1Qhy!3_ZH2OZXS^rGnDSA(@+-KFRGt9T1 z?U~hU&}6+{2RvS{&VtSe>eX4uS=d>`S=3p~S=?E|S<)HqEG3j(LfI{p4}`KuD0_vn zPbm9^azH2tg>q=Ev$U^XosrpI%{De@fwPiUuZIKmdPHQ25LrrV-!)FWsMvqMVx4uV zSZ6(-=PO!g ztg}5e=xnQf**MOZjcjZ9vXP}!=3h3PU7c}y)jGRtReO@E&9;V}G|N2sWuucRyyu`U z-L(hJ6^V}jrKp2qtO6b)xW3jfv)Lx)Xqu1Wj^-RyZ@1|{>o1OEQP>7 zrh9&Z{~w)me5<*TX}M?7%e_*%a$o9PtCjmQXR>p-bA@xIbCq+obB*&I=et5-Hoqhk zW^=xMeJ+%%Lb)cCFNE@?P`+C0e9vF*8+?b?&MjKGe;p|I>w&}TTQ7?JKPdKtTCpDz z$~S>xKcelPZw24hBz=+er7p00cAj#c(JKA4P`*ueGIDP`XQhAQyrA!%o#(aP^G$7U z`xj;YZHBV-A6q-GIIsB%{i;^zw=-WL!*1DmowB{*yh+*Kc7Er)BNXl;rfeSy<&IXi zYN$|t6Urayexr4M@4S~*w-1DJH$&atCo#?k&R?CsIe!<*_d@wWC_f41m$Z_-?mHH~ z7r4UG=6|e-zi`vlsw>D>WIy_fEaRh1T#D}lPr1w3cj1WZCEo|`XI7>zlUAle;nrgP z8j;r8lL>fL_;WmtzSJY4l$yzwg8RbQxClU)skn(g`KC|46#GkuP7HD!)cUt-EJaQT`D zYL?j~wLj&U#MRXp?dtA|Gsd`jy5gDKRI4_*sbNAj>62S2p?aR2++2NJeIHG3 zs!OQmCnq=8Aad#&>>A=qbPW}%MW{BR+J)+PG`YEamkqEv|Ie7tdOTi~=Ul~g>G!{% z-~2}w>F2b-KaSVuG1ZyrJT^t2$5gj}9&7tA%ww4a|JYPETc65QZzt1#y1^V0FO77) z?OLYIPIFvyUGrS?T?gshuU~ZJ`aqkTZgTg^O_g6; zx&7?C_TS)QX|vNI7Z)=myABJrShDMgP>Vn3>~zA#b1peO=}OgRrxMIHYEA9*WX5kk zfqC#_*LmOUbWWR{!k@83E9M>^xSHWm%5{a==Bn!&v(1;Tue8~woIcxB5o&3DwrMKV zmov;Z*InPH%{G;U%DKz*r#M`9wAtpa>wDKd*AIe3sgXi0FI0ZB4$KKx^xqNKod5S# z)1$9HZJu!$6<9jmp_Bg~-I8ybshHU`yxOcZAj2_J+q7E9FweMK8>8K^ z?zYAlcYEm_&a|kl^m(SePgxXT5t%ce~sA-RRcef6Cg&%y`TJQw@G7d}g_%4HZ0V(gWc;ZP?&wu*F?YnAH z^*vPmDL0`@f9t1DD(Le}AdzplwW}uG2@eWLbzQKkPum1 z`wUwP_T4^Hpi$h=xW3wRHuWc0`QG%M$z$LC2gQ2NcT_Muv!jBbD7{#lq$}3nJXy42 z{oVbC`=R?!_h0V6-T!zbPmqVx2BU;JTBu`$`l?XJ3YGn%5bA3}eO;(;to0atJ5^7J z?_8%RyH>2@0>wHZP^?p46zjiVtR4@=>hTJ7yuVmIxfq2?sAANJpmX}sy7u2kyHrm> z4-axk_7oE8#AHtqp-y_fg7uW}l%ilgCAD4ZWOk`aUhOifOHbLQ`YYBG>CrBy47%v4 zpjGTtDptv>oqf2Jp~l+|=J9qd6ST)AW!RH?sv4s`)jc(gF`in|Dy>{+>*YF6s9aN! zD%AIqNbqVHSH<_PgO;`Ad;;G z+x0!E{n7588tu`mXS$>I=dVvsH(z~beyPA6y*?uzuTM{3&oJuK)6di2Gr*JJ8R!}0 z8SEM2N%Szq%opkcp)M5aBB3r8>Jp(Y73wmfCJS}>TF-EQeUA3mXOdQ*D+2YoDo~#< zE*1C>?o{nYy`{ZS zSGzY=f2T&Kds)vG%66M)J7v35I;55DM!jse3st|AKs}Mf!(Y-L0DJa$_NJBXHlb#? zl)!UXE87&$5zkT2F`;e{>L#Ib?6Kw1Ue>ckzqgF7>Gzg#$zyD^?`K0^tKfT*{bTo% z{}0OcQ(xI`&2+b#q?awvsY$!(!1IOYJFRTL^nB&{+VhR)y60QZ4bM%_EzfPC?hq>H zS#}9^w@^P2>K>u)73w~r?icETwVpfvvi-qdw!dg)doWP8hXZAM?8R>N-`}lzxnL#P zn?R=qZ_ zQ!ibwLo3~*RAM$8JIO3rGOJy0PH!H)cD=c^+CBb^CAbZ=o4%_`7w1G z^OU1vZ((D!x2U(6F~(a$I;hnvzw=Xq=Y*Q7?`Cf##XniE-Ux5$w0iwSsHdLX&3Y@4 zIB!L7C2y4XWucxH>W4x-E7Y{7je83R>$}-A+>52%Q|^q7Zo~_;8*^wpsF{8a@BeT= z>uu;OSl^`sPx;asG)gbnUXK^7w}rP81?z3;ZRKt4ZR3sgw)M92w)b}Mb`n{rSKPcFtTEPwz z>KB269m%-M5}9?kCh36)zUli*p-jiQXv`pLddW6#NZG z!C6mfCzkGJeiZDT<>kpv90hyd)XMc+$~7zdW^I{_*Y_0Q4H3RUpZV`;yl9V~SG)_k z&)3T#!Y%Ie{n)#de_7^D)(YPD^27`;91!Yl5t22-(Y2jB6uhgvt10_;((X_Y>V2Vp zrh#I`twxYE!?8u-Rj-u-R|At-RWf~cUP$23-z8*IX(WP zP}3fOp8ggE|EcZtw<7re(foh+ye6-2arG&eANXHj@c3N_{v##tXWnnL3E`6WviFMj zbMIB}HSZVRFTG!RzZU8Pq5dk=--PL!tgD)W3xKw^09C>%H!u5N`P=gu6@# zA(DSW2nqI22q7;XasD41czYje6T+V&B=CrH?>|fk&wK=1m=YGkln|zhkSxhzSw)E9 z`KE-h9APGX4<2S@4;~^@;32%IKm;$$P~iSC73K(Y>r+CQizy*Qd&GHWOLXkZrEwg% zYTt|p7xBGgGb~S7UJh%Ye5(lOk-GI+9+ppgt;o~=$TKDaFUacT%XzvBhQbPl6?#~9f$uvE9)@dlb=GY znI4!wrL4o6g|*-j9AV8x2wmP%ggCWFJY@2wzOY!{)ECw^tepsPi4ZRnZlEJOhIM_) zyYs@jNyWqBM2MTW?S^=Gciy9}%3p1wOaHYYu!7!U{hzji0jyx42no|xkW(9mMphAc z%cJ%ly!_QV=SjDsp<$dKShg(5^~p;o!$wNREMtStzjT@x**0$e=zWg*7dDY)G7E-) zpAV&cD1p+5g7#|Vrf7xs=qO31<#-3%uouViANQ}W)yoPa@2-;wthMAa+)i{i^xPiYV$wHefHPIO? z%L5iA%LeQLpS2vpF`NL)Sw04Bvd|_AZL<6>NmkZjB`#}E^hRF{z(5eEmAI_LV_-YtgY{bP;Acs)ky=|0n85E(Hanc4PizGdj*6g9Y$HJYHsZIjejDqz zZNhHQ7TZ1?z#*i9ZSiCP$@URG!Ffqy^^(0RM&li@yq)FkEN>?d_A?*{_RsJY=tKKm zJiu=f_ufH)6?u>k1yBe@Pz;PCMu3*##F}doaA)?U)P0<{!5R3NcgszA~Jo=zN24V;pzpjyB{JN6x zI>uuXreX$W<890Xed}6+Wmu1GI0(k7i#~E4qh#};I7*{D7~gJUb`!IknB7aU4)0?l zHcOHxD;%Ja9uLAmd>#Q}@{Gd-{0MU4B^O?D;WdDEdV7JkdHZ1ih{a1^cqDZ>IAh$$yA1o0(p7q8Lgb94wcQ zF_4dV^AT@8;>|Z-lJe6>`N>Cq@{ylD%15K6wcr*J_ci^&;?us{ac9sEkv6N(Z7ZMlBB}4 zyKps7SB1$_;dNly!nCzWD2jtIR-^)$Yl<+}6sZMrP^1Z(qB&ZkHK^4h?a&>4F%XP} zBDAN-Yj^__FbPxe4v4+TZtTH69L5nG!wH6so7$ZgL zo1%=7qBAiYZ($DT3l18kq7Njg7-OqgWsuuqEL&_9Qt%~igZ307&&7VkACgo&3uLIs z3ffgX2aKSfiqn?jc~Jm`Pz1Hn478~@Z7NQiiZdRIv(4h&(F2JX4gq2={wChWTr9#8 zEW>gzo{G~4#XkXgFa9Y$!)1JqYassOU*kG%fPN@WKa`LV3}Q!hQUT-z6!6c0|yQ2-*?BSc)*i3Ok%|qY#Rs zIA~8q1j?WZ+JiPl(54956u~wl`l3G)Fcz<228ca^*dvHNf_{itie#+7X6(l~T);)p zo`@@;FCyrR2>K#|zKHl1H}Mz#;cz(!Ss;V@D4i9wsWfdWO`A&7rqZ;jG;xL1_xXyjB==thKL63 zDccmy(Gsl@3u?V=2Modx48?Ga#Av(<+EkV{m8DH(X;WF+RF=5Q5_4JdTP_>u?{Y1` zvgPJtJ3ayZQjT_%qaEdFN4Yy-T$Q6809KaruJA0p|8NZJ!gdm=rk zfLfqUk+dn2HbpiA+l*|5HlRNu>5s@^AofUNk0kcUahQNfn1Tf$=aGA`4+lY8B9GxD zPU9?yKk@=T!}s_RKZE!qi9hlW{E5FMsk{WnM|l}43ZN!>g6)=H57t+njKztPoq73Sy0myg77&J#KFm@`oM<;Ye z9Ei6f@m3rQf!9I26&WuTCxaTOI0Lgl8!B$ZhajFxc2olEtHg4Zmg69<;s$QxF7Dws zzV-&e0OF4#{-_+F4NM12RwPZZ-P>K93RIV-Xw6ed_e zye~W9h8MYz2ejeks^|#fd3hy{gY{Krxyq#xgMJu_5g3hEF#$6{t}DNdc~}6(Ol8_p z`8~XkO`si>cVHK2OXaUY?3KxTW%6G6ClGsO#&6}{C8%AgOb z)<7+E0kKydj6@6vaaSD+`l#v~Am>%*U@3^ZDtWHD1>3L_d$Avfkb+O}1@1$O^&$S2 zq-w-mjhL$ub2Y|!HQHE>F;mToA}EfMpxxCN3)RYjxT{q}6smyOt5ruw5N9>wsdgAQ zB&j;)SrUtRsAod#Tu@RfG7283)H9o*zkoy|sz6QCkK^tm(ElD+lK|D3yoEU+@3od-8J2^**COw=4&VrmfiYi;eAoI2=Wqen@slLgR>4@QO}=Y0R%$a= zYCGUY7;=NyYZnALuU!SiT$`9{6Lal4An&ysp)s1GIa*>6h_yCjp!TO=oYu(;+F7SN z=$AUgUFTh_!v+w4o!vMLa$V;*QgH@n@iAya9okUmYkZ4axPyE6QIhJ0!izj0_PWGg zw-`#G6iTBSYJ#}y5_jEp=!~w2LvQrO01QMDreQf&;TuYLoN@A~c03B+HY`0K}mHq@sL^+#Yd7(ex2!#GU9N)UVf?bwMAK-~2Y;RqNz z^~rPn&p@8*e}}vH0r&AM{=lD-)PUFK{YC{U{n$Z>_g)Q~aL@Ix?88j}Bp zpW+KJMjDdmhUB^7kN6q1p&@N(WPplnpbi?DU_mJmd!y>8g*qVaM)Xgk7&Jo{bVolB zcO&xLNZ@sh#}rJ%Ow2|y-p64OYoil51!8VQ%#Db-5o4wiZEQrpH~JC}@H-xYb~pM* zlA?n_+|dd`@DhkU+K3V$&S>I^o`r2-ebFq}I2Wp*Ey#W29w6_H`+$5m9)lzhe`Dfr zJPEX+F>Po(1B|Xpc_l3dT&6co27!{vh5a#M@*dCSxjyw+ZcU@+RH}+8cc_00TkJo6?4+jFYCs+H@|6wJEu7%9v@o601R9Ha!H! zb<<1u9E|U#z9cmx-e!!AX2jc!c$<;)X2jdfjWE#uW_dyU%?g5C zH0y$KSc6pjC`rxjC+dYG{!<;GRSrFIUv`~7h*AJLvz~D{C#Y~R_wrT?7?Rs z_U7N=F35Rv;%-iDHva?kQHz%l3MYuW1$k~!93>HfNK`-+Dx)FVpdW~}#b68tF}EP* z7R21*HPFTujF}cwuna4(3beb$yI2R}Zm|)Yu?@uDVizueI9n1=OU7%{#(^XJ%2I zHSxA4-qsN)1LAE>-dk4!IcWU~s)07NCLgU|1@W{_!A(hO!}{8=T$`pyz%kI~eb=#2xE^8(tJcNia@g ztD-t;p+3lUY-7ZL*kk*GJjasf*a={K#}aSsOuPx=jwS9`;*MPk@*T_Ah$Y_G53m=+ z8+!<}KlUh2AQiMB_O>Lo%?jda+XREb`r5Kw+beh|N$p(7ivnQGw4)E&k-v5?;}wwW zb~V9xX;&Atqg^Y+qCIFwyRPUC+R|=1h`rt0phnwKpY4df9evbpCAMHY7$@x*!|hIj zSlfLJ#!S0U@fqmLcK7)SIU91o1S`mOdpE+68~IQWMNkFA+r9>Bp$>?*eIwBR_Kb=4 zEkOM3sonO8cndpm34cpc2lCLN9(rOtsMikbzR1Zoykm7VKx>fWjvdhjJrIvR z=!emmge6D@`R%v{Yq1_1LB2bZ?~c2$2OohLJ6^y=(C&_(;|qL^>$nNx?s!L%I%Neh zb|QzJ`eQc8SEnmr{B-t!`s_^JJJ$p`?_3Y$x^r7}KxcFV@pmTv&b=`VBQXX^cpc-w zIO$BTJCo_u(K8;|Peq^QR!@&R>DtcK!tq@H_sNB+?~y$pRTRdL~#GQIS69WHp06H%xO`lTCjcO&j@ ztkc#!I&&I1a{jw=?(%=Rm%@UBc%e?rvX$ zc)JmAx4-a@By|sh0kpq+2(lpuXhU~1!VwMP=}u0%)4$zWUmVNDc7Jh`k4W+M_whb&psOZ;wvs3gYfT+&zf9M-pBK@%ESi>a@pH zOvg-+_a1L!F6Lu9&VzV*(#Ji?MNih(ljVBSo}R}*>^<+|2mFltV64Qe$O_sJPaERN zcRcxy&xO1wfWlx*#+N{S5Pv-5B)%g$gKfnVdpxxn&$x*n1;$ML6cBGb@x~KxJo%1a zgr!KvM(hQ-jwk;3i@1!dAm8!C9Df71LG1Cw-b+RZ7$3c|BNW8j%L+TleJ^s~i`@63 z4ZU7QTM$n#`ngvMSYL0J>s=C!&Bs228+YkpBTQK>h|KV+F|d0CGLxJ*)@q7_bNXaR{_yz;T=eZ5i+jh<(6A z{4GfdSwQRwA;<NH_G zh&O?F6NooqE!Kf}6UckQ7LbF4o!AZ9kU%~Xev_nu#53>}bOq}h$Z`Wyaa)oGsW8C` z2V5ZcgNmUfh<_0A4=NAZFo-q`s*L(*geGW)mS_#e=OBUcm;_=UG!t*)Z7?Seq78%I z#ddsvy*L1JJ?I!t;uJ39CjOG7!4k;zUVo(OH$*%p;60qikCHURiI>q9^vRGpSc>IXg*DiST_Ddx_TvzUe+cmpA^su6 zKZN`bxq@r>3fFN%k`k%WL^H^DB5@}YcVZsoLqQY<`A#JEL}E`Q)g^o(trDIAeWyDU?Pz497T3#SF~G+aRaImw@?W_)0LAhabaDNgDAIY;YqC zxj~*hAg3e7U_5C1hy|eiBX)!Jk2r-7@iFL|5tr~e z7+WLm;CuXlpCxG|@sF$yazC;*>R}4zfw)H!_sBIMrz6*cT#np@J=l*!NC9~pl^@N( z_!>p~N3qPPEnt~ZEHml@5ZkB=ApfI?Wz;?Vg!}kSl12w16jnGuenyk`(Ron-g+TsC z6ZdGw`e^bpntY5-!UPcO=)E|JRIt6#XK)!`fj%Ei{zrcYwmX{bj@GvO5PwP17}h_A z+>a@PNK^nh8PgE-!<8c%!1 z)1L9PXM9COp$e*kz8~Ka#66z=9)B1&Bxynplm_$21ll-ZD&EFCEW~20#s+N0Hqg!q z^znqfIDkX=5Fg__E`olT@HzgFq=_oBgSaOW_eA=8q6=Q+LXMB_s$LpAbWnkTtSob7yGwEHd!8`fM`on0y!a@EacDZ%LXW!47geh3!ru zzf*D{FWAnMZlFz5Xw#HINW^fky(tsH3Z_iQEW8QYIb}IkVhxx}ru-#IQ$t|}ZJbIQ zr?Rc7Igtmnbt-wCNZ1{8`_!hO-BX8QGHCDAEjWsc_!hKrDs7xf z8>iC7X+bc6F*Pj$jE!lGfoU7C69pS^I1B1&dOk#hHcy|2WV{cSoxTx_@9F!& zc%FU)$B_!wG5s2Df_SF?g!>?_>BKdioXjAm89Cqpd7n`XLSJ9`DzVm&ru3wDF;%_cXq$<1tXGn;nJJ}*ggzQGOrB1v-@M|0`3xs0Q^*^mP! zSdj<$L9XT&1#O#K3T03Zv3M2q#oUiU&gQc2xwK_2<67euG zk*9g9um)dF(0fLtx8fm*1G28c!sXwQOHXoGg>fCRjbxggF3`;ZFaS-^G| z27~dpFcj;^A#GmxgCs4Y z&lifaE!vM5O^KrZ5egF>=?enJ^Y0G_ze&7mn0<<+lt9x?5)_0E!c|fIEfm8Sp zAK?yI&q~_2(hk$r`(px;)q?Ny-&136e#29c0hIt$3%>a3uTR+IbHjKkH8!_~!57HoTU zWiSR;GiFwI#YoJ?LhQjo(3aI-gEp-G9e?5&O8MJ8)V`PmDPIy2Y*RYK>v}X-{ zwq_LOUVIMO}SA5jH6BDa#J~! zM5j7#$zC6;%)HZt@P#A6dc6~5c^if z>Q?%9>o>T8U+^pF=dHA18|&T1`nE-&9Xf-yZ)2U?7>C<-fOT#=hLbprvtZrZ9)NK| z%BAgDkR9~hcKU8ReYZUyh|`A5{0?^|X&15YDuRaSj)7oXyV%w)wzZ3G?IPw~Z(~?N&f7>}IU(E{GDK7Iv2bdD>kWRZ$)Ellwon2H%#26DWcICrncJ0RBG)WL4@w0k2qgZzJBLKXDI zToC^UjM+WpWDhmAhnV&>Ky%PHdx&EXV`@(?48;hH207Y8f9x5DiC|psnTLf~0`j(p zc=iy_9^%=v1#D~2=b$h4{3=O%op7TNiX$AQQ681>GKh6=GsK}k=!dK7PX=lC;l@ z3ZRbn^}`e_#d|n`Q}_@c<2>m9eV4&D_OXq9zvEB*BT4&%AtMCYP#Lw+7){XvtRBzI=qh^IDkV)!BH?4 z4xPlOxCHv<5Pfrq{y%hGk`4!h_z&CQfE#S4p##)A13C*4M3g_({G2V zm%}a59YaBV9G-)PApXOjfc`j4e;mGoYxoM#@PVoITp zQivm^Ac~+EDj*8vG^HwtDWwHkgYlEn0bM~JQwCxPh%JTjn=%j7Pzp7aLJg&C$1d!_ zejLIPkhhdnkgF7Ol|sBJ#G7&pckn%az)!f3U-7#n9dRHMu^5G=V0}ke?q~=KqZXn; ze;*}(N6FvOj_8Trpw^BiU@#K#8pdHFXv0y)#?hIe9Y-1WM~V9=aUZ46kDkCOoWWUK z1MwbZ%pUz25AYCwNzyS1!7!r?i2GPYybQ+bvFae!V|7p;T@iIhXWwj z$I0vQza{BJK9Hjm@tBUy_y|8p(#afPJe+hR47pGk5h#oDs07CGN!oCdHk@pXreHju zWIUf_9Gx5r;yyVM^#93eAm)>AV=m_79c%;R;Ur`EBxB+v zK2ynOsu#qR$~=`?0K}GB6eUm_^*~Ii#FR=*sl=4p3gkAmH~Jv~^nWTbrjEcU5N9fJ zrjn1;S=f%lAeK~ONj-(na0TQs^()-NPtf9{mQERz`u_m zih&4%f}((cK&x7o?TcnPR<_q<`(}GCm9|^9&e&p$nc1RkQ(0!&KGn4EvMDIYo-DB{ zpdcXcr}O*GIiGpYdCxr0bKTc{-OSAU&l|yD_Q9R!>N8iLxd$)-S#l?1kGV5Ag;|`* zIh>DQd+GMV~&;6Z^ zUvxS1&~MSRtl$M+Vl}Vv25<2#KOkq3ofK^(A32MhwWt9d7qzmJPP(v{qP`#~9)irp zwo)8N7Kd;cM{qR9q2J=uIg@jcvG^+Ha2+}>zJt5Cm!&+xGM?cT-enyhpyT3iD8iPD zWi76t8od_lwOFskdM(~TM-Xg@B#NO7L*6Y3*vpnAMl+UF#-Zme7jr*4+oGc_zHh6~ zZJmhoY`u}&xEv4vypYR#Zv9$)dxBf*lJCS?qZn}e@ zWH9oU*hfh+DcDDeEtc3w$$sd(>~D6xwYxk~J!#2HK8 z#4bv7T=F&FVjm^WUh*3o$;UoQDv`OQ7CR}ihf;eejYhwv!_j4__g9)pHj|lxoTau= z`VUTJ7H4t^mvbeyQM!P|xP#IM(QWB7$XL1-dnlE)^dmmy3%cP#f4mj?#pyvru#D8mpMb3 zGn6giAs)rP%O2+)pAY$%Un!;p z{g&&uya^f0Wh|G`|0<}kg$mg!;?QeF8i#T?M{z8=tT>UA(P_nL=(OT&uH^=9VlMN! z75OXNO~swugELgvNX5&1MRgEVhGTP;zOT~fDwp95m4D#9Rc=N0N(ENB+sZa}B75a7 zy4Vv0Rf8CUvs4XZI0;Nb{wkeU>AY$Neyd9MDxFuI!gn|R?AW? zOSSv2mZ$nLp5!UqfAwnKV?7)Am;zjCwQSY0Rm)Z_TeWP}{XtMOfPoAqiDXh3M&%&pYt>M*jSA>P*X__wKN35pK&9p_-PHN5I=@xtx9WO=px$rQ>!IFv*XyBP5A`QgPEL<%uN?_8Mm>7hj^5w=&5NH zFClM}j7@gY^dTSf9Xf9Mncvt#DP=fAliW?+^sqMwnswY9%{Vg2WmnZJ89w4uyfLq1#hp_CR%sV9|Ubt#1KaUiHv3}sT_dJ zZ8qF?D5s*^wu{hF+ZE`sO}@5Uk+1DR9>L$PHvP7(Lg2W;RI?4nKoZ3S$m zm_M?~m$&e87v+vRSTyL}i5=(>Fr z$?S)`?RMOLEH=?DXZs9J;WTvKemzTh0{PmX;W>2NuH$wcx9hmwCfaSHU9NVUXt#-W z+im}y%~WF>?Y7b0NDDjYz&1L)p??0@-)#d-ogYdiMux;1fRM3x4J|oMX3h?A}BX z?LpueL6^?EWbcx_D~4F&89^qKIE=$N3OT!`G98_Fori67J;)>co5xwkGdzc$yH@cL zpCVV+SA4_w{75d|S63N&?y8{{+vsXU*e;!S^#wt<+}(QV_SU+`kV-l^=(bzdZdtqa z+C77F`6si{argDygl%*$;9m6FEqAxv-B0rh@^;JHEpNBH-ST$J+x-*2@&|boQjeV7 z&9t(E4t61X_a6Sv-X8>eLX72TE@KIA;`{daT#xpY;k-107J$r+oSJ%DXX0MI+ z4resF?bU7X37m)>^v>io?6mhRZa~i7`N-J2h&#C(IeV8OTd#feuH;2@-n)i%*mCa% zKH*1X>@8vorPxPr8|}#3D{o%}k?g}zWbM;)pMCV%N8drn-ggYgGZlIJuHqW(qR%e+ zblZ0edhNRdnfn&AgcZDiynQdTn%8iDeQ&cC`TKO<_aS+-2EpFpOy-~1+um3CmMZkz z?+x~QgZH^Zu(@fUf)RMDG6k@izM(#y0xp?|&Ux z`(^EywO`NuAM+Vs@GCt*C`cxSab%LsejLaI4(1eQaVF<*KC`)qtC`0wEaVREW-<5k z1W)k{&+#$e@gqO;8--L-!*=TFq>DZD1)?Y6~@&Wn{D`G41hgDFGuETU4CUbZ=gV1xhp2KAgA5H?g4$op=^c_9{8N(-Y0w;1Z zGm$r3zv1$Q-@-zc@Fa4E%NZ_b_-m|Z12z%<89z|KX0}igga#hM@l3_<4D>q#*Wh0_ z&^ZQnpzDFU9@rOz{CNmPgb_g`QP@mG9L^Bo3=#XI>j>wFaE^#WIh-RohU0Lqh)cK! zzZda6x*9Z;Nu0r49%DJSGRRg2*~*|dd7lsYh)?;P|MCmJlZ!J9a@Ik`ILF`+at|KN zJ`6+d!3m6HJn{~n!Vw&eoP(!v5;HiTC-D1&{r+Ix4%Y2pzdiVCzD3W2f2N8*spBu2 zX=5k;HbjOq2%CtsiAZ@O<%vvT9GPSzL*y*Z(`u`*Hvi zIG96`FIv86`J&~Ep3TKLYqa}`o{wzNi@1|}Sj=NQ$&vbRLDs z8C`>%(e>E%&=BDaB9cqEft#4i0)C+ge~X5;u!FxpyPG{YtAEQ3#dzB>-bjq^iE;KA zXOBt87Gs=0#`$BMKgRiECNY`AIGl5F&Y0(sKc*rG4I4-fCo_i!aPDEwJJ=WV!ij+uaPfSzSy6TD|Rb(A6tPv#crn# zUB~J=R_0h;$HgIE+&D7G;t+Hhr^`5517Uw=|+D2#xekMoz-_jr6&Z zFYq}!9a%{YvX87sr~d!0ghuuSA^)*Dlo&J=uJ5laL9VcGM zC0xc8%tzkD2Y84_d7LMC8vQ1|hWk(Sz7h+u)5NW8qXKuHsOLoQEJ?N`*^*>SiX@5{ zVi|>8N#n_3e-2_I$8bE;I0+e(Zs2C-VFyV%O_DQ7&LlaLmh(J%OL~d7`Gn8-FJJK+ zx=gB}mIid6)XGje>7s|dL1@%)Mxf78@{UR-1)YwPeN-md*z+j)N6p|Gmg0?%D!})R z_PNnVasdlj%o1cD{Rqog$tq+Y{R(T)_2~6%z*$Cr&X;`6Hsl}e-H&dgoxgu;5535r z9L*?XPL?@2gBoi%eWEqlWNR}b_e|*P} z{7gP2l%eBf9VhEJxgNbH%a*LyWVy!Zbd3JSj3*m;#!Nv+V~*xHY<0}(*y|X39dj8s zF_#70inl-JIacx_dK>d9Z}1jtS;q%_#IO88F7l2kq=+rZK1QcwDyTyKu>rapJC&<= z6yG=2=f>JgN-PI*7)Ky`%CVfx8Jx{|T);(K!VTQae4HU=5qIDmDegN(?v!`1pOg=g zJLOY8=NIHnDWwcOr)$!<} z+`>Zin5oB1*)wf6^I2A~l2yFKYTS3`>wHU95E?%acQ<|}zHhwGjo*OtjJJXDHZZ;y z*|S3EJ!?32l$As>DWu^pvL + + + + + + + + + + diff --git a/yinmeng-ios/AppDelegate.swift b/yinmeng-ios/AppDelegate.swift index c64f957..49cc404 100644 --- a/yinmeng-ios/AppDelegate.swift +++ b/yinmeng-ios/AppDelegate.swift @@ -6,7 +6,7 @@ // import UIKit - +import DeviceKit @main class AppDelegate: UIResponder, UIApplicationDelegate { var window: UIWindow? @@ -17,7 +17,11 @@ var window: UIWindow? self.window = UIWindow.init(frame: UIScreen.main.bounds) self.window?.backgroundColor = UIColor.white self.window?.rootViewController = BaseNavigationViewController(rootViewController:AuthLoginVC()) + return true } + } + + diff --git a/yinmeng-ios/Base/Hud/HUDTool.swift b/yinmeng-ios/Base/Hud/HUDTool.swift new file mode 100644 index 0000000..eb98b68 --- /dev/null +++ b/yinmeng-ios/Base/Hud/HUDTool.swift @@ -0,0 +1,145 @@ +// +// HUDTool.swift +// yinmeng-ios +// +// Created by MaiMang on 2024/2/23. +// + +import Foundation +import MBProgressHUD + +class HUDTool: NSObject { + + static var currentHud : MBProgressHUD? + + private static let kDelayTime: TimeInterval = 2 + + /** 隐藏HUD*/ + class func hidden(_ time:TimeInterval = 0){ + guard let HUD = currentHud else { + return + } + HUD.hide(animated: false) + currentHud = nil + } + + /** + 显示成功message + + - Parameter message: 文字 + - Parameter view: 显示在哪个view上 + - Parameter afterDelay: 延迟消失时间 + - Parameter enabled: 是否可以拦截事件 no:不拦截 yes:拦截 + */ + class func showSuccess(with message: String, in view: UIView? = YMRequestX.topViewController()?.view, delay afterDelay: TimeInterval = kDelayTime, enabled: Bool = true, icon:String = "") { + if message.isEmpty { return } + + DispatchQueue.main.async { + hidden(0) + var view = view + if view == nil { + view = YMRequestX.topViewController()?.view ?? YMRequestX.keyWindow() + } + if let view = view { + let hud = normalProgressHUD(in: view) + currentHud = hud + hud.isUserInteractionEnabled = enabled + hud.mode = .customView + hud.bezelView.style = .solidColor + hud.margin = 8 + hud.backgroundColor = .clear + hud.removeFromSuperViewOnHide = true + + let messageView = HudMessageView() + messageView.titleLb.text = message + + let maxWidth = 242.0 + let size = message.boundingRect(with: CGSize(width: maxWidth, height: CGFLOAT_MAX), font: UIFont.systemFont(ofSize: 14, weight: .medium), lineSpacing: 6) + var width = size.width + 5 + var height = size.height + if icon.count > 0 { + messageView.logoImgView.image = UIImage(named: icon) + messageView.logoImgView.isHidden = false + width += 22.0 + } else { + messageView.logoImgView.isHidden = true + } + + hud.bezelView.backgroundColor = ThemeColor(hexStr: "#000000", alpha: 0.7) + hud.bezelView.layer.cornerRadius = 8 + hud.bezelView.layer.masksToBounds = true + hud.bezelView.addSubview(messageView) + + messageView.snp.makeConstraints { make in + make.height.equalTo(height) + make.width.equalTo(width) + make.center.equalTo(hud.bezelView) + } + hud.minSize = CGSize(width: width + 40, height: height + 24) + hud.show(animated: true) + hud.hide(animated: false, afterDelay: kDelayTime) + } + } + } + + + private class func normalProgressHUD(in view: UIView) -> MBProgressHUD { + let hud = MBProgressHUD.showAdded(to: view, animated: true) + hud.mode = .indeterminate + hud.bezelView.style = .solidColor + hud.margin = 8 + // 方框背景颜色 + hud.bezelView.color = UIColor.black.withAlphaComponent(0.8) + return hud + } +} + + +class HudMessageView: UIView { + override init(frame: CGRect) { + super.init(frame: frame) + self.addSubview(stackView) + stackView.addArrangedSubview(logoImgView) + stackView.addArrangedSubview(titleLb) + + stackView.snp.makeConstraints { make in + make.edges.equalTo(self) + } + + logoImgView.snp.makeConstraints { make in + make.size.equalTo(CGSize(width: 20, height: 20)) + } + } + + required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + private lazy var stackView: UIStackView = { + let stackView = UIStackView() + stackView.distribution = .fill + stackView.axis = .horizontal + stackView.alignment = .top + stackView.spacing = 2 + return stackView + }() + + lazy var logoImgView: UIImageView = { + let imageView = UIImageView() + imageView.isUserInteractionEnabled = true + imageView.layer.masksToBounds = true + imageView.contentMode = .scaleAspectFill + return imageView + }() + + lazy var titleLb: UILabel = { + let label = UILabel() + label.textColor = UIColor.white + label.font = UIFont.systemFont(ofSize: 14, weight: .medium) + label.textAlignment = .center + label.numberOfLines = 0 + return label + }() + + +} diff --git a/yinmeng-ios/Base/Request/Deserialized.swift b/yinmeng-ios/Base/Request/Deserialized.swift new file mode 100644 index 0000000..04855f0 --- /dev/null +++ b/yinmeng-ios/Base/Request/Deserialized.swift @@ -0,0 +1,37 @@ +// +// Deserialized.swift +// yinmeng-ios +// +// Created by MaiMang on 2024/2/22. +// + +import Foundation +@_exported import HandyJSON + +/// Deserialized json converts to Model or Array. +public struct Deserialized where H: HandyJSON { + + public static func toModel(with element: Any?) -> H? { + if let string = element as? String, let model = H.deserialize(from: string) { + return model + } + if let dictionary = element as? Dictionary, let model = H.deserialize(from: dictionary) { + return model + } + if let dictionary = element as? [String : Any], let model = H.deserialize(from: dictionary) { + return model + } + return nil + } + + + public static func toArray(with element: Any?) -> [H]? { + if let string = element as? String, let array = [H].deserialize(from: string) as? [H] { + return array + } + if let array = [H].deserialize(from: element as? [Any]) as? [H] { + return array + } + return nil + } +} diff --git a/yinmeng-ios/Base/Request/YMNetworkHelper.swift b/yinmeng-ios/Base/Request/YMNetworkHelper.swift new file mode 100644 index 0000000..37d4700 --- /dev/null +++ b/yinmeng-ios/Base/Request/YMNetworkHelper.swift @@ -0,0 +1,134 @@ +// +// YMNetworkAPI.swift +// yinmeng-ios +// +// Created by MaiMang on 2024/2/24. +// + +import Foundation +import Alamofire +import HandyJSON +import DeviceKit +typealias SessionCallSucceed = (Any) -> Void +typealias SessionCallFail = (Int,String) -> Void + +class YMNetworkHelper: NSObject { + + var baseParameters: [String: Any] { + var parameters: [String: Any] = Dictionary() + parameters["os"] = "iOS" + parameters["osVersion"] = Device.current.systemVersion + parameters["model"] = "iPhone14,7" + parameters["ispType"] = "1" + parameters["channel"] = APPUtils.currentChannle + parameters["netType"] = "2" + parameters["app"] = "yinmeng" + parameters["appVersion"] = APPUtils.appVersion + parameters["deviceId"] = APPUtils.currentDeveiceId + return parameters + } + + var sessionNetMana :Session! + public static let share = YMNetworkHelper.init() + var headersSet: HTTPHeaders = [ + "Content-Type": "application/json", + "Authorization": "" + ] + + func requestSend(type:HTTPMethod,path:String,params:Dictionary, succeed:SessionCallSucceed?,fail:SessionCallFail?) -> Void { + getHttpRequestHeaders() + requestSend(type: type,host: "http://beta.api.ymlive.fun/", path: path, params: params, encoding: URLEncoding.queryString, header: headersSet, succeed: succeed, fail: fail) + } + + func requestSend(type:HTTPMethod, + host:String, + path:String, + params:[String: Any], + encoding:ParameterEncoding, + header:HTTPHeaders, + succeed:SessionCallSucceed?, + fail:SessionCallFail?) -> Void { + let encrypteChonParma = baseParameters.merging(params) {$1} + sessionNetMana.request(host+path, method: type, parameters: encrypteChonParma,encoding: encoding,headers: header) + .validate(contentType: ["application/json"]) + .responseJSON { [weak self] (response) in + self?.analyzeThe(response1: response, succeed2: succeed, fail3: fail,uuid4:"") + } + } + + override init() { + super.init() + let configCo = AF.sessionConfiguration + configCo.httpShouldSetCookies = false + configCo.timeoutIntervalForRequest = 30 + sessionNetMana = Session(configuration: configCo) + } + + private func getHttpRequestHeaders() { + headersSet["pub_uid"] = "\(AuthManager.userUid)" + headersSet["pub_ticket"] = AuthManager.ticket + + } + + + func analyzeThe(response1:AFDataResponse, + succeed2:SessionCallSucceed?, + fail3: SessionCallFail?,uuid4:String) -> Void { + let maiUrlSss = response1.request?.url?.absoluteString ?? "unkown" + switch response1.result { + case .success: + let maiResponNk :Dictionary = response1.value as? Dictionary ?? Dictionary.init() + let maiResultMo = maiResponNk + if maiResultMo.keys.contains("code") { + let maicodeNum :Int = maiResultMo["code"] as? Int ?? 0 + if maicodeNum == 200 { + if maiResultMo.keys.contains("data") { + let maiDDD = maiResultMo["data"] as Any + succeed2?(maiDDD) + }else{ + succeed2?(Dictionary.init()) + } + }else{ + if maicodeNum == 401 && maiUrlSss.contains("auth-center/sso/logout") == false { + NotificationCenter.default.post(name: NSNotification.Name(rawValue: "MAISessionTickValid"), object: nil) + sessionNetMana.cancelAllRequests() + } + var messageIn = response1.error.debugDescription + if maiResultMo.keys.contains("message") { messageIn = maiResultMo["message"] as? String ?? "" } + fail3?(maicodeNum,messageIn) + } + } else if maiResultMo.keys.contains("errno") { + let maiCodeNum :Int = maiResultMo["errno"] as? Int ?? 0 + if maiCodeNum == 0 { + if maiResultMo.keys.contains("data") { + let dataSc = maiResultMo["data"] as Any + succeed2?(dataSc) + }else{ + succeed2?(Dictionary.init()) + } + }else{ + var majmessageStr = response1.error.debugDescription + if maiResultMo.keys.contains("errmsg") { majmessageStr = maiResultMo["errmsg"] as? String ?? ""} + fail3?(maiCodeNum,majmessageStr) + } + } else { + fail3?(10000,"请求失败") + } + case let .failure(error): + var maiErrorMssg = response1.error?.errorDescription ?? "" + var maicodeNum = response1.error?.responseCode ?? 0 + fail3?(maicodeNum,maiErrorMssg) + } + } + + +} + + +struct ResponseModel: HandyJSON { + var code:Int? = 0 + var message:String? = "" + var data:Any? +} + + diff --git a/yinmeng-ios/Base/Request/YMRequestX.swift b/yinmeng-ios/Base/Request/YMRequestX.swift new file mode 100644 index 0000000..c59af61 --- /dev/null +++ b/yinmeng-ios/Base/Request/YMRequestX.swift @@ -0,0 +1,99 @@ +// +// YMRequestX.swift +// yinmeng-ios +// +// Created by MaiMang on 2024/2/2. +// + +import Foundation + +public struct YMRequestX { + /// Maps data received from the signal into a JSON object. + public static func mapJSON(_ type: T.Type, named: String, forResource: String = "RxNetworks") -> T? { + guard let data = jsonData(named, forResource: forResource) else { + return nil + } + let json = try? JSONSerialization.jsonObject(with: data, options: .allowFragments) + return json as? T + } + + /// Read json data + public static func jsonData(_ named: String, forResource: String = "RxNetworks") -> Data? { + let bundle: Bundle? + if let bundlePath = Bundle.main.path(forResource: forResource, ofType: "bundle") { + bundle = Bundle.init(path: bundlePath) + } else { + bundle = Bundle.main + } + guard let path = ["json", "JSON", "Json"].compactMap({ + bundle?.path(forResource: named, ofType: $0) + }).first else { + return nil + } + let contentURL = URL(fileURLWithPath: path) + return try? Data(contentsOf: contentURL) + } + + public static func toJSON(form value: Any, prettyPrint: Bool = false) -> String? { + guard JSONSerialization.isValidJSONObject(value) else { + return nil + } + var jsonData: Data? = nil + if prettyPrint { + jsonData = try? JSONSerialization.data(withJSONObject: value, options: [.prettyPrinted]) + } else { + jsonData = try? JSONSerialization.data(withJSONObject: value, options: []) + } + guard let data = jsonData else { return nil } + return String(data: data ,encoding: .utf8) + } + + public static func toDictionary(form json: String) -> [String : Any]? { + guard let jsonData = json.data(using: .utf8), + let object = try? JSONSerialization.jsonObject(with: jsonData, options: []), + let result = object as? [String : Any] else { + return nil + } + return result + } + + public static func keyWindow() -> UIWindow? { + if #available(iOS 13.0, *) { + return UIApplication.shared.connectedScenes + .filter { $0.activationState == .foregroundActive } + .first(where: { $0 is UIWindowScene }) + .flatMap({ $0 as? UIWindowScene })?.windows + .first(where: \.isKeyWindow) + } else { + return UIApplication.shared.keyWindow + } + } + + public static func topViewController() -> UIViewController? { + let window = UIApplication.shared.delegate?.window + guard window != nil, let rootViewController = window?!.rootViewController else { + return nil + } + return self.getTopViewController(controller: rootViewController) + } + + public static func getTopViewController(controller: UIViewController) -> UIViewController { + if let presentedViewController = controller.presentedViewController { + return self.getTopViewController(controller: presentedViewController) + } else if let navigationController = controller as? UINavigationController { + if let topViewController = navigationController.topViewController { + return self.getTopViewController(controller: topViewController) + } + return navigationController + } else if let tabbarController = controller as? UITabBarController { + if let selectedViewController = tabbarController.selectedViewController { + return self.getTopViewController(controller: selectedViewController) + } + return tabbarController + } else { + return controller + } + } +} + + diff --git a/yinmeng-ios/Base/Security/Base64.h b/yinmeng-ios/Base/Security/Base64.h new file mode 100755 index 0000000..652303d --- /dev/null +++ b/yinmeng-ios/Base/Security/Base64.h @@ -0,0 +1,16 @@ +// +// Base64.h +// BellFramework +// +// Created by 罗兴志 on 2017/5/4. +// Copyright © 2017年 罗兴志. All rights reserved. +// + +#import + +@interface Base64 : NSObject + ++(NSString *)encode:(NSData *)data; ++(NSData *)decode:(NSString *)dataString; + +@end diff --git a/yinmeng-ios/Base/Security/Base64.m b/yinmeng-ios/Base/Security/Base64.m new file mode 100755 index 0000000..ea2fc0c --- /dev/null +++ b/yinmeng-ios/Base/Security/Base64.m @@ -0,0 +1,133 @@ +// +// Base64.m +// BellFramework +// +// Created by 罗兴志 on 2017/5/4. +// Copyright © 2017年 罗兴志. All rights reserved. +// + +#import "Base64.h" + +@interface Base64() ++(int)char2Int:(char)c; +@end + +@implementation Base64 + +static const char encodingTable[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; + ++(NSString *)encode:(NSData *)data +{ + if (data.length == 0) + return nil; + + char *characters = malloc(data.length * 3 / 2); + + if (characters == NULL) + return nil; + + int end = data.length - 3; + int index = 0; + int charCount = 0; + int n = 0; + + while (index <= end) { + int d = (((int)(((char *)[data bytes])[index]) & 0x0ff) << 16) + | (((int)(((char *)[data bytes])[index + 1]) & 0x0ff) << 8) + | ((int)(((char *)[data bytes])[index + 2]) & 0x0ff); + + characters[charCount++] = encodingTable[(d >> 18) & 63]; + characters[charCount++] = encodingTable[(d >> 12) & 63]; + characters[charCount++] = encodingTable[(d >> 6) & 63]; + characters[charCount++] = encodingTable[d & 63]; + + index += 3; + + if(n++ >= 14) + { + n = 0; + characters[charCount++] = ' '; + } + } + + if(index == data.length - 2) + { + int d = (((int)(((char *)[data bytes])[index]) & 0x0ff) << 16) + | (((int)(((char *)[data bytes])[index + 1]) & 255) << 8); + characters[charCount++] = encodingTable[(d >> 18) & 63]; + characters[charCount++] = encodingTable[(d >> 12) & 63]; + characters[charCount++] = encodingTable[(d >> 6) & 63]; + characters[charCount++] = '='; + } + else if(index == data.length - 1) + { + int d = ((int)(((char *)[data bytes])[index]) & 0x0ff) << 16; + characters[charCount++] = encodingTable[(d >> 18) & 63]; + characters[charCount++] = encodingTable[(d >> 12) & 63]; + characters[charCount++] = '='; + characters[charCount++] = '='; + } + NSString * rtnStr = [[NSString alloc] initWithBytesNoCopy:characters length:charCount encoding:NSUTF8StringEncoding freeWhenDone:YES]; + return rtnStr; + +} + ++(NSData *)decode:(NSString *)data +{ + if(data == nil || data.length <= 0) { + return nil; + } + NSMutableData *rtnData = [[NSMutableData alloc]init]; + int slen = data.length; + int index = 0; + while (true) { + while (index < slen && [data characterAtIndex:index] <= ' ') { + index++; + } + if (index >= slen || index + 3 >= slen) { + break; + } + + int byte = ([self char2Int:[data characterAtIndex:index]] << 18) + ([self char2Int:[data characterAtIndex:index + 1]] << 12) + ([self char2Int:[data characterAtIndex:index + 2]] << 6) + [self char2Int:[data characterAtIndex:index + 3]]; + Byte temp1 = (byte >> 16) & 255; + [rtnData appendBytes:&temp1 length:1]; + if([data characterAtIndex:index + 2] == '=') { + break; + } + Byte temp2 = (byte >> 8) & 255; + [rtnData appendBytes:&temp2 length:1]; + if([data characterAtIndex:index + 3] == '=') { + break; + } + Byte temp3 = byte & 255; + [rtnData appendBytes:&temp3 length:1]; + index += 4; + + } + return rtnData; +} + ++(int)char2Int:(char)c +{ + if (c >= 'A' && c <= 'Z') { + return c - 65; + } else if (c >= 'a' && c <= 'z') { + return c - 97 + 26; + } else if (c >= '0' && c <= '9') { + return c - 48 + 26 + 26; + } else { + switch(c) { + case '+': + return 62; + case '/': + return 63; + case '=': + return 0; + default: + return -1; + } + } +} + + +@end diff --git a/yinmeng-ios/Base/Security/MAIDESEncryptTool.h b/yinmeng-ios/Base/Security/MAIDESEncryptTool.h new file mode 100755 index 0000000..3d1cb59 --- /dev/null +++ b/yinmeng-ios/Base/Security/MAIDESEncryptTool.h @@ -0,0 +1,16 @@ +// +// MAIDESEncryptTool.h +// BellFramework +// +// Created by 罗兴志 on 2017/5/4. +// Copyright © 2017年 罗兴志. All rights reserved. +// + +#import + +@interface MAIDESEncryptTool : NSObject +//加密方法 ++(NSString *)encryptUseDES:(NSString *)plainText key:(NSString *)key; +//解密方法 ++(NSString *)decryptUseDES:(NSString *)cipherText key:(NSString *)key; +@end diff --git a/yinmeng-ios/Base/Security/MAIDESEncryptTool.m b/yinmeng-ios/Base/Security/MAIDESEncryptTool.m new file mode 100755 index 0000000..90c1926 --- /dev/null +++ b/yinmeng-ios/Base/Security/MAIDESEncryptTool.m @@ -0,0 +1,63 @@ +// +// MAIDESEncryptTool.m +// BellFramework +// +// Created by 罗兴志 on 2017/5/4. +// Copyright © 2017年 罗兴志. All rights reserved. +// + +#import "MAIDESEncryptTool.h" +#import +#import "Base64.h" + +@implementation MAIDESEncryptTool : NSObject + +const Byte iv[] = {1,2,3,4,5,6,7,8}; + +#pragma mark- 加密算法 ++(NSString *) encryptUseDES:(NSString *)plainText key:(NSString *)key +{ + NSString *ciphertext = nil; + NSData *textData = [plainText dataUsingEncoding:NSUTF8StringEncoding]; + NSUInteger dataLength = [textData length]; + unsigned char buffer[20000]; + memset(buffer, 0, sizeof(char)); + size_t numBytesEncrypted = 0; + CCCryptorStatus cryptStatus = CCCrypt(kCCEncrypt, kCCAlgorithmDES, + kCCOptionPKCS7Padding|kCCOptionECBMode, + [key UTF8String], kCCKeySizeDES, + iv, + [textData bytes], dataLength, + buffer, 20000, + &numBytesEncrypted); + if (cryptStatus == kCCSuccess) { + NSData *data = [NSData dataWithBytes:buffer length:(NSUInteger)numBytesEncrypted]; + ciphertext = [Base64 encode:data]; + } + return ciphertext; +} + +#pragma mark- 解密算法 ++(NSString *)decryptUseDES:(NSString *)cipherText key:(NSString *)key +{ + NSString *plaintext = nil; + NSData *cipherdata = [Base64 decode:cipherText]; + unsigned char buffer[20000]; + memset(buffer, 0, sizeof(char)); + size_t numBytesDecrypted = 0; + // kCCOptionPKCS7Padding|kCCOptionECBMode 最主要在这步 + CCCryptorStatus cryptStatus = CCCrypt(kCCDecrypt, kCCAlgorithmDES, + kCCOptionPKCS7Padding|kCCOptionECBMode, + [key UTF8String], kCCKeySizeDES, + iv, + [cipherdata bytes], [cipherdata length], + buffer, 20000, + &numBytesDecrypted); + if(cryptStatus == kCCSuccess) { + NSData *plaindata = [NSData dataWithBytes:buffer length:(NSUInteger)numBytesDecrypted]; + plaintext = [[NSString alloc]initWithData:plaindata encoding:NSUTF8StringEncoding]; + } + return plaintext; +} +@end + diff --git a/yinmeng-ios/Base/Security/yinmeng-ios-Bridging-Header.h b/yinmeng-ios/Base/Security/yinmeng-ios-Bridging-Header.h new file mode 100644 index 0000000..b0ffd6e --- /dev/null +++ b/yinmeng-ios/Base/Security/yinmeng-ios-Bridging-Header.h @@ -0,0 +1,5 @@ +// +// Use this file to import your target's public headers that you would like to expose to Swift. +// + +#import "MAIDESEncryptTool.h" diff --git a/yinmeng-ios/Base/Utils/APPUtils.swift b/yinmeng-ios/Base/Utils/APPUtils.swift new file mode 100644 index 0000000..ea249f2 --- /dev/null +++ b/yinmeng-ios/Base/Utils/APPUtils.swift @@ -0,0 +1,47 @@ +// +// APPUtils.swift +// yinmeng-ios +// +// Created by MaiMang on 2024/2/22. +// + +import Foundation +import CoreTelephony +import DeviceKit +enum TelephonyType: String{ + case Unknow = "0" + case Mobile = "1" + case Unicom = "2" + case Telecom = "3" +} + + +public struct APPUtils { + static var currentCarrierName: String { + getCurrentCarrierName() + } + + static var currentChannle: String { + getCurrentChannle() + } + + static var appVersion: String { + return Bundle.main.object(forInfoDictionaryKey: "CFBundleShortVersionString") as! String + } + + static var currentDeveiceId: String { + var udid = UIDevice.current.identifierForVendor?.uuidString + udid = udid?.replacingOccurrences(of: "-", with: "") + udid = udid?.lowercased() + return udid ?? "" + } +} + + +private extension APPUtils { + static func getCurrentCarrierName() -> String { + return TelephonyType.Unicom.rawValue + } + + static func getCurrentChannle() -> String { return "yinmeng_appstore"} +} diff --git a/yinmeng-ios/Base/Utils/Utils.swift b/yinmeng-ios/Base/Utils/Utils.swift index 9295489..4f499cf 100644 --- a/yinmeng-ios/Base/Utils/Utils.swift +++ b/yinmeng-ios/Base/Utils/Utils.swift @@ -27,3 +27,6 @@ let SafeAraeBottomHeight = isSafeScreen ? 34.0 : 0.0 let SafeAraeTopmHeight = isSafeScreen ? 24.0 : 0.0 let NavHeight = (StatusBarHeight + 44) let TabHeight = (49) + + +let DesKey = "1ea53d260ecf11e7b56e00163e046a26" diff --git a/yinmeng-ios/Base/ViewController/BaseViewController.swift b/yinmeng-ios/Base/ViewController/BaseViewController.swift index bd6ac39..9c591a0 100644 --- a/yinmeng-ios/Base/ViewController/BaseViewController.swift +++ b/yinmeng-ios/Base/ViewController/BaseViewController.swift @@ -6,7 +6,6 @@ // import UIKit - /// 遵循这个协议,可以隐藏导航栏 protocol HiddenNavigationBarProtocol where Self: UIViewController {} diff --git a/yinmeng-ios/Extension/List/List+.swift b/yinmeng-ios/Extension/List/List+.swift new file mode 100644 index 0000000..8fe14eb --- /dev/null +++ b/yinmeng-ios/Extension/List/List+.swift @@ -0,0 +1,49 @@ +// +// List+.swift +// yinmeng-ios +// +// Created by MaiMang on 2024/2/24. +// + +import Foundation +extension Array where Element: Equatable { + + mutating func remove(_ element: Element) { + + if let index = firstIndex(of: element) { + remove(at: index) + } + } + + mutating func addObjects(_ elements: [Element]) { + for value in elements { + self.append(value) + } + } + + mutating func replaceObject(_ element: Element, index: Int) { + if self.count == index { + self.append(element) + } + else if self.count > index { + self.insert(element, at: index) + self.remove(at: index + 1) + } + } + +} + +public extension Collection { + subscript(safe index: Index) -> Element? { + return indices.contains(index) ? self[index] : nil + } +} + +extension Encodable { + var dictionary: [String: Any]? { + guard let data = try? JSONEncoder().encode(self) else { return nil } + return (try? JSONSerialization.jsonObject(with: data, options: .allowFragments)).flatMap { $0 as? [String: Any] } + } +} + + diff --git a/yinmeng-ios/Extension/String/String+.swift b/yinmeng-ios/Extension/String/String+.swift new file mode 100644 index 0000000..0d26f50 --- /dev/null +++ b/yinmeng-ios/Extension/String/String+.swift @@ -0,0 +1,68 @@ +// +// String+.swift +// yinmeng-ios +// +// Created by MaiMang on 2024/2/23. +// + +import Foundation +import CommonCrypto +extension String { + + func encrypt() -> String? { + let str = MAIDESEncryptTool.encryptUseDES(self, key: DesKey) + return str + } + + func decrypt() -> String? { + let str = MAIDESEncryptTool.decryptUseDES(self, key: DesKey) + return str + } + + func decrypt(key:String) -> String? { + let str = MAIDESEncryptTool.decryptUseDES(self, key: key) + return str + } + +} + + +extension String { + /// 截取字符串 + /// - Parameters: + /// - begin: 开始截取的索引 + /// - count: 需要截取的个数 + /// - Returns: 字符串 + func substring(start: Int, _ count: Int) -> String { + let begin = index(startIndex, offsetBy: max(0, start)) + let end = index(startIndex, offsetBy: min(count, start + count)) + return String(self[begin.. CGSize { + let attritube = NSMutableAttributedString(string: self) + let range = NSRange(location: 0, length: attritube.length) + attritube.addAttributes([NSAttributedString.Key.font: font], range: range) + if lineSpacing != nil { + let paragraphStyle = NSMutableParagraphStyle() + paragraphStyle.lineSpacing = lineSpacing ?? 0 + attritube.addAttribute(NSAttributedString.Key.paragraphStyle, value: paragraphStyle, range: range) + } + let rect = attritube.boundingRect(with: constrainedSize, options: [.usesLineFragmentOrigin, .usesFontLeading], context: nil) + var size = rect.size + if let currentLineSpacing = lineSpacing { + let spacing = size.height - font.lineHeight + if spacing <= currentLineSpacing && spacing > 0 { + size = CGSize(width: size.width, height: font.lineHeight) + } + } + return size + } +} diff --git a/yinmeng-ios/HttpRequest/HeadstreamRequest.swift b/yinmeng-ios/HttpRequest/HeadstreamRequest.swift deleted file mode 100644 index 86fd58f..0000000 --- a/yinmeng-ios/HttpRequest/HeadstreamRequest.swift +++ /dev/null @@ -1,38 +0,0 @@ -// -// HeadstreamRequest.swift -// yinmeng-ios -// -// Created by MaiMang on 2024/2/2. -// - -import Foundation - -public final class HeadstreamRequest { - /// Empty data, convenient for subsequent plugin operations. - public var result: Result? - - public var session: Moya.Session? - - /// 是否结束后序网络请求 - public var endRequest: Bool = false - - public init() { } -} - -extension HeadstreamRequest { - func toJSON() throws -> Any { - guard let result = result else { - let userInfo = [ - NSLocalizedDescriptionKey: "The result is empty." - ] - let error = NSError(domain: "com.condy.rx.network", code: 2004, userInfo: userInfo) - throw error - } - switch result { - case .success(let response): - return try YMRequestX.toJSON(with: response) - case .failure(let error): - throw error - } - } -} diff --git a/yinmeng-ios/HttpRequest/LevelStatusBarWindowController.swift b/yinmeng-ios/HttpRequest/LevelStatusBarWindowController.swift deleted file mode 100644 index dce806d..0000000 --- a/yinmeng-ios/HttpRequest/LevelStatusBarWindowController.swift +++ /dev/null @@ -1,190 +0,0 @@ -// -// LevelStatusBarWindowController.swift -// yinmeng-ios -// -// Created by MaiMang on 2024/2/2. -// - -import Foundation -public protocol LevelStatusBarWindowShowUpable { - /// 打开状态 - /// - Parameter superview: 父视图 - func makeOpenedStatusConstraint(superview: UIView) - - /// 根据添加设置内容,刷新界面 - func refreshBeforeShow() - - /// 显示 - /// - Parameters: - /// - animated: 是否动画效果 - /// - animation: 动画内容 - /// - completion: 完成回调 - func show(animated: Bool, animation: (() -> Void)?, completion: ((Bool) -> Void)?) - - /// 关闭 - /// - Parameters: - /// - animated: 是否动画效果 - /// - animation: 动画内容 - /// - completion: 完成回调 - func close(animated: Bool, animation: (() -> Void)?, completion: ((Bool) -> Void)?) -} - -/// 状态窗口显示器 -open class LevelStatusBarWindowController: UIViewController { - private var isCalledClose = false - private var canNotBeCanceled = false - private var loadingCount: Int = 0 - private lazy var lock = NSLock() - - private lazy var overlay: UIView = { - let view = UIView(frame: self.view.bounds) - view.backgroundColor = overlayBackgroundColor - view.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(overlayTap))) - view.isUserInteractionEnabled = true - return view - }() - - public var key: String? - - public var showUpView: LevelStatusBarWindowShowUpable? - - /// 点击外面区域是否可关闭 - public var canCloseWhenTapOutSize: Bool = true - - /// 外界已经将`showUpView`添加到控制器 - public var addedShowUpView: Bool = false - - public var overlayBackgroundColor: UIColor = UIColor.black.withAlphaComponent(0.2) { - didSet { - self.overlay.backgroundColor = overlayBackgroundColor - } - } - - public func addedLoadingCount() { - self.lock.lock() - self.loadingCount += 1 - self.lock.unlock() - } - - public func subtractLoadingCount() -> Int { - self.lock.lock() - defer { self.lock.unlock() } - self.loadingCount -= 1 - return self.loadingCount - } - - open override var prefersStatusBarHidden: Bool { - if let controller = YMRequestX.topViewController() { - return controller.prefersStatusBarHidden - } - return true - } - - open override var preferredStatusBarStyle: UIStatusBarStyle { - if let controller = YMRequestX.topViewController() { - return controller.preferredStatusBarStyle - } - return .default - } - - open override func viewDidLoad() { - super.viewDidLoad() - self.view.backgroundColor = UIColor.clear - self.view.addSubview(self.overlay) - if self.addedShowUpView { - if let alertView = self.showUpView as? UIView { - self.view.bringSubviewToFront(alertView) - } - } else if let alertView = self.showUpView as? UIView { - self.view.addSubview(alertView) - } - self.showUpView?.makeOpenedStatusConstraint(superview: self.view) - } - - private var overlayTapCloseBlock: ((LevelStatusBarWindowController) -> Void)? - public func setOverlayTapCloseBlock(block: @escaping (LevelStatusBarWindowController) -> Void) { - self.overlayTapCloseBlock = block - } - - public func show(completion: ((Bool) -> Void)? = nil) { - Self.controllers.removeAll { $0 == self } - if let rootViewController = Self.window.rootViewController as? Self, !rootViewController.isCalledClose { - Self.controllers.append(rootViewController) - Self.window.rootViewController = nil - } - self.showUpView?.refreshBeforeShow() - if Self.lastKeyWindow != Self.window { - Self.lastKeyWindow = YMRequestX.keyWindow() - } - Self.window.isHidden = false - Self.window.windowLevel = UIWindow.Level.statusBar - Self.window.rootViewController = self - Self.window.makeKeyAndVisible() - - self.overlay.alpha = 0 - self.showUpView?.show(animated: true, animation: { [weak self] in - self?.overlay.alpha = 1.0 - self?.overlay.backgroundColor = self?.overlayBackgroundColor - }, completion: completion) - } - - public func close(animated: Bool = true) { - self.isCalledClose = true - self.showUpView?.close(animated: animated, animation: { [weak self] in - self?.overlay.alpha = 0 - }, completion: self.closeCompleted) - } - - private func closeCompleted(_: Bool) { - guard Self.window.rootViewController == self else { - return - } - if let lastKeyWindow = Self.lastKeyWindow { - if lastKeyWindow.rootViewController != nil { - lastKeyWindow.makeKeyAndVisible() - } - Self.lastKeyWindow = nil - } else if let window = UIApplication.shared.delegate?.window, window != nil { - window?.makeKeyAndVisible() - } - Self.window.rootViewController = nil - Self.window.isHidden = true - if Self.controllers.count < 10 { - while let rootViewController = Self.controllers.last { - if rootViewController.isCalledClose { - Self.controllers.removeLast() - continue - } - rootViewController.show() - break - } - } else { - Self.controllers.removeAll() - } - } - - @objc private func overlayTap() { - if canCloseWhenTapOutSize { - close() - overlayTapCloseBlock?(self) - } - } -} - -extension LevelStatusBarWindowController { - private static let window = UIWindow(frame: UIScreen.main.bounds) - private static var lastKeyWindow: UIWindow? - private static var controllers = [LevelStatusBarWindowController]() - - public static func cancelAllBackgroundControllersShow() { - Self.controllers = Self.controllers.filter({ $0.canNotBeCanceled }) - } - - public static func forcecancelAllControllers() { - if let controller = Self.window.rootViewController as? LevelStatusBarWindowController, !controller.canNotBeCanceled { - Self.window.rootViewController = nil - Self.window.isHidden = true - } - cancelAllBackgroundControllersShow() - } -} diff --git a/yinmeng-ios/HttpRequest/NetworkRequest.swift b/yinmeng-ios/HttpRequest/NetworkRequest.swift deleted file mode 100644 index b134de8..0000000 --- a/yinmeng-ios/HttpRequest/NetworkRequest.swift +++ /dev/null @@ -1,139 +0,0 @@ -// -// NewworkRequest.swift -// yinmeng-ios -// -// Created by MaiMang on 2024/2/2. -// - -import Foundation -import Alamofire -import Moya - -public extension YMNetworkAPI { - @discardableResult func HTTPRequest( - success: @escaping APISuccess, - failure: @escaping APIFailure, - progress: ProgressBlock? = nil, - queue: DispatchQueue? = nil, - plugins: APIPlugins = [] - ) -> Cancellable? { - let key = self.keyPrefix - let plugins__ = YMRequestX.setupPluginsAndKey(key, plugins: self.plugins + plugins) - - SharedDriver.shared.addedRequestingAPI(self, key: key, plugins: plugins__) - - let request = self.setupConfiguration(plugins: plugins__) - if request.endRequest, let result = request.result { - let lastResult = LastNeverResult(result: result, plugins: plugins__) - lastResult.mapResult(success: { json in - SharedDriver.shared.removeRequestingAPI(key) - DispatchQueue.main.async { success(json) } - }, failure: { error in - SharedDriver.shared.removeRequestingAPI(key) - DispatchQueue.main.async { failure(error) } - }, progress: progress) - return nil - } - - let session = request.session ?? { - let configuration = URLSessionConfiguration.af.default - configuration.timeoutIntervalForRequest = YMRequestConfig.timeoutIntervalForRequest - return Moya.Session( - configuration: configuration, - startRequestsImmediately: false, - interceptor: YMRequestConfig.interceptor - ) - }() - - let queue = queue ?? { - DispatchQueue(label: "condy.request.network.queue", attributes: [.concurrent]) - }() - - let target = MultiTarget.target(self) - let endpointTask = self.task - var endpointHeaders = YMRequestX.hasNetworkHttpHeaderPlugin(key) ?? YMRequestConfig.baseHeaders - if let dict = self.headers { - // Merge the dictionaries and take the second value. - endpointHeaders = endpointHeaders.merging(dict) { $1 } - } - let provider = MoyaProvider.init(endpointClosure: { _ in - Endpoint(url: URL(target: target).absoluteString, - sampleResponseClosure: { .networkResponse(200, self.sampleData) }, - method: self.method, - task: endpointTask, - httpHeaderFields: endpointHeaders) - }, stubClosure: { _ in - stubBehavior - }, callbackQueue: queue, session: session, plugins: plugins__) - - // 先抛出本地数据 - if let json = try? request.toJSON() { - DispatchQueue.main.async { success(json) } - } - - // 再处理网络数据 - return self.request(plugins__, provider: provider, success: { json in - SharedDriver.shared.removeRequestingAPI(key) - DispatchQueue.main.async { success(json) } - }, failure: { error in - SharedDriver.shared.removeRequestingAPI(key) - DispatchQueue.main.async { failure(error) } - }, progress: progress) - } - - @discardableResult - func request(plugins: APIPlugins = [], complete: @escaping APIComplete) -> Cancellable? { - HTTPRequest(success: { json in - complete(.success(json)) - }, failure: { error in - complete(.failure(error)) - }, plugins: plugins) - } -} - - -extension YMNetworkAPI { - /// 最开始配置插件信息 - private func setupConfiguration(plugins: APIPlugins) -> HeadstreamRequest { - var request = HeadstreamRequest() - plugins.forEach { - request = $0.configuration(request, target: self) - } - return request - } - - /// 最后的输出结果,插件配置处理 - private func setupOutputResult(plugins: APIPlugins, result: APIResponseResult, onNext: @escaping LastNeverCallback) { - var lastResult = LastNeverResult(result: result, plugins: plugins) - var iterator = plugins.makeIterator() - func handleLastNever(_ plugin: PluginSubType?) { - guard let plugin = plugin else { - onNext(lastResult) - return - } - plugin.lastNever(lastResult, target: self) { - lastResult = $0 - handleLastNever(iterator.next()) - } - } - handleLastNever(iterator.next()) - } - - private func request(_ plugins: APIPlugins, - provider: MoyaProvider, - success: @escaping APISuccess, - failure: @escaping APIFailure, - progress: ProgressBlock? = nil) -> Cancellable { - let target = MultiTarget.target(self) - return provider.request(target, progress: progress, completion: { result in - setupOutputResult(plugins: plugins, result: result) { lastResult in - if lastResult.againRequest { - _ = request(plugins, provider: provider, success: success, failure: failure, progress: progress) - return - } - lastResult.mapResult(success: success, failure: failure) - } - }) - } - -} diff --git a/yinmeng-ios/HttpRequest/Plugins/YMRequestLoadingPlugin.swift b/yinmeng-ios/HttpRequest/Plugins/YMRequestLoadingPlugin.swift deleted file mode 100644 index fb431df..0000000 --- a/yinmeng-ios/HttpRequest/Plugins/YMRequestLoadingPlugin.swift +++ /dev/null @@ -1,167 +0,0 @@ -// -// YMRequestLoadingPlugin.swift -// yinmeng-ios -// -// Created by MaiMang on 2024/2/2. -// - -import Foundation -import Moya -import MBProgressHUD - -/// 加载插件,基于MBProgressHUD封装 -/// Loading plugin, based on MBProgressHUD package -public struct YMRequestLoadingPlugin: PluginPropertiesable { - - public var plugins: APIPlugins = [] - - public var key: String? - - public var delay: Double { - options.delayHideHUD - } - - public var options: Options - - public init(options: Options = .init()) { - self.options = options - } - - /// Hide the loading hud. - public func hideMBProgressHUD() { - let vc = YMRequestX.removeHUD(key: key) - vc?.close() - } -} - -extension YMRequestLoadingPlugin { - public struct Options { - /// Loading will not be automatically hidden and display window. - public static let dontAutoHide: Options = .init(autoHide: false) - - /// Do you need to display an error message, the default is empty - let displayLoadText: String - /// Delay hidden, the default is zero seconds - let delayHideHUD: Double - /// Do you need to automatically hide the loading hud. - let autoHideLoading: Bool - - public init(text: String = "", delay: Double = 0.0, autoHide: Bool = true) { - self.displayLoadText = text - self.delayHideHUD = delay - self.autoHideLoading = autoHide - } - - var hudCallback: ((_ hud: MBProgressHUD) -> Void)? - - /// Change hud related configuration closures. - public mutating func setChangeHudParameters(block: @escaping (_ hud: MBProgressHUD) -> Void) { - self.hudCallback = block - } - } -} - -extension YMRequestLoadingPlugin: PluginSubType { - - public var pluginName: String { - return "Loading" - } - - public func willSend(_ request: RequestType, target: TargetType) { - DispatchQueue.main.async { - self.showText(options.displayLoadText) - } - } - - public func didReceive(_ result: Result, target: TargetType) { - if options.autoHideLoading == false, case .success = result { - return - } - DispatchQueue.main.asyncAfter(deadline: .now() + options.delayHideHUD) { - self.hideMBProgressHUD() - } - } -} - -extension YMRequestLoadingPlugin { - - /// Display the prompt text - private func showText(_ text: String) { - guard let key = self.key else { - return - } - if let vc = YMRequestX.readHUD(key: key) { - if let _ = MBProgressHUD.forView(vc.view) { - return - } - vc.show() - } else { - let vc = LevelStatusBarWindowController() - - // Set Activity Indicator View to white for hud loading. - let indicatorView = UIActivityIndicatorView.appearance(whenContainedInInstancesOf: [MBProgressHUD.self]) - indicatorView.color = UIColor.white - - let hud = MBProgressHUD.showAdded(to: vc.view, animated: true) - hud.mode = MBProgressHUDMode.indeterminate - hud.animationType = MBProgressHUDAnimation.zoom - hud.removeFromSuperViewOnHide = true - hud.bezelView.style = MBProgressHUDBackgroundStyle.solidColor - hud.bezelView.color = UIColor.black.withAlphaComponent(0.7) - hud.bezelView.layer.cornerRadius = 14 - hud.detailsLabel.text = text - hud.detailsLabel.font = UIFont.systemFont(ofSize: 16) - hud.detailsLabel.numberOfLines = 0 - hud.detailsLabel.textColor = UIColor.white - - // User defined the hud configuration. - self.options.hudCallback?(hud) - - vc.key = key - vc.showUpView = hud - vc.addedShowUpView = true - vc.show() - YMRequestX.saveHUD(key: key, window: vc) - } - } -} - - -extension MBProgressHUD: LevelStatusBarWindowShowUpable { - - public func makeOpenedStatusConstraint(superview: UIView) { - - } - - public func refreshBeforeShow() { - - } - - public func show(animated: Bool, animation: (() -> Void)?, completion: ((Bool) -> Void)?) { - DispatchQueue.main.async { - self.show(animated: animated) - if animated { - UIView.animate(withDuration: 0.2, animations: { - animation?() - }, completion: completion) - } else { - animation?() - completion?(true) - } - } - } - - public func close(animated: Bool, animation: (() -> Void)?, completion: ((Bool) -> Void)?) { - DispatchQueue.main.async { - self.hide(animated: animated) - if animated { - UIView.animate(withDuration: 0.2, animations: { - animation?() - }, completion: completion) - } else { - animation?() - completion?(true) - } - } - } -} diff --git a/yinmeng-ios/HttpRequest/SharedDriver.swift b/yinmeng-ios/HttpRequest/SharedDriver.swift deleted file mode 100644 index f17d334..0000000 --- a/yinmeng-ios/HttpRequest/SharedDriver.swift +++ /dev/null @@ -1,169 +0,0 @@ -// -// SharedDriver.swift -// yinmeng-ios -// -// Created by MaiMang on 2024/2/2. -// - -import Foundation -import Moya - -/// 共享网络中转数据 -struct SharedDriver { - typealias Key = String - - static var shared = SharedDriver() - - private let lock = NSLock() - private let tasklock = NSLock() - private let HUDsLock = NSLock() - - private var requestingAPIs = [Key: (api: YMNetworkAPI, plugins: APIPlugins)]() - private var tasks = [Key: Moya.Cancellable]() - - private var cacheBlocks = [(key: Key, success: APISuccess, failure: APIFailure)]() - - private var cacheHUDs = [Key: LevelStatusBarWindowController]() -} - -// MARK: - api -extension SharedDriver { - - func readRequestAPI(_ key: Key) -> YMNetworkAPI? { - self.lock.lock() - defer { lock.unlock() } - return self.requestingAPIs[key]?.api - } - - func readRequestPlugins(_ key: Key) -> APIPlugins { - self.lock.lock() - defer { lock.unlock() } - return self.requestingAPIs[key]?.plugins ?? [] - } - - mutating func removeRequestingAPI(_ key: Key) { - self.lock.lock() - let plugins = self.requestingAPIs[key]?.plugins - self.requestingAPIs.removeValue(forKey: key) - // 没有正在请求的网络,则移除全部加载Loading - if YMRequestConfig.lastCompleteAndCloseLoadingHUDs, self.requestingAPIs.isEmpty, let p = plugins { - let maxTime = YMRequestX.maxDelayTime(with: p) - DispatchQueue.main.asyncAfter(deadline: .now() + maxTime) { - SharedDriver.shared.removeLoadingHUDs() - } - } - self.lock.unlock() - } - - mutating func addedRequestingAPI(_ api: YMNetworkAPI, key: Key, plugins: APIPlugins) { - self.lock.lock() - self.requestingAPIs[key] = (api, plugins) - self.lock.unlock() - } -} - -// MARK: - task and blocks -extension SharedDriver { - - func readTask(key: Key) -> Cancellable? { - self.tasklock.lock() - defer { tasklock.unlock() } - return self.tasks[key] - } - - mutating func cacheBlocks(key: Key, success: @escaping APISuccess, failure: @escaping APIFailure) { - self.tasklock.lock() - defer { tasklock.unlock() } - self.cacheBlocks.append((key, success, failure)) - } - - mutating func cacheTask(key: Key, task: Cancellable) { - self.tasklock.lock() - defer { tasklock.unlock() } - self.tasks[key] = task - } - - mutating func result(_ type: Result, key: Key) { - self.tasklock.lock() - defer { tasklock.unlock() } - switch type { - case .success(let json): - self.cacheBlocks.forEach { - $0.key == key ? $0.success(json) : nil - } - case .failure(let error): - self.cacheBlocks.forEach { - $0.key == key ? $0.failure(error) : nil - } - } - self.tasks.removeValue(forKey: key) - self.cacheBlocks.removeAll { $0.key == key } - } -} - -// MARK: - hud -extension SharedDriver { - - func readHUD(key: String) -> LevelStatusBarWindowController? { - self.HUDsLock.lock() - defer { HUDsLock.unlock() } - return self.cacheHUDs[key] - } - - func readHUD(prefix: String) -> [LevelStatusBarWindowController] { - self.HUDsLock.lock() - defer { HUDsLock.unlock() } - return self.cacheHUDs.compactMap { - if let prefix_ = $0.key.components(separatedBy: "_").first, prefix_ == prefix { - return $0.value - } - return nil - } - } - - func readHUD(suffix: String) -> [LevelStatusBarWindowController] { - self.HUDsLock.lock() - defer { HUDsLock.unlock() } - return self.cacheHUDs.compactMap { - if let suffix_ = $0.key.components(separatedBy: "_").last, suffix_ == suffix { - return $0.value - } - return nil - } - } - - mutating func saveHUD(key: Key, window: LevelStatusBarWindowController) { - self.HUDsLock.lock() - self.cacheHUDs[key] = window - self.HUDsLock.unlock() - } - - @discardableResult mutating func removeHUD(key: Key?) -> LevelStatusBarWindowController? { - guard let key = key else { - return nil - } - self.HUDsLock.lock() - let window = self.cacheHUDs[key] - self.cacheHUDs.removeValue(forKey: key) - self.HUDsLock.unlock() - return window - } - - mutating func removeAllAtLevelStatusBarWindow() { - self.HUDsLock.lock() - self.cacheHUDs.forEach { - $0.value.close() - } - self.cacheHUDs.removeAll() - self.HUDsLock.unlock() - } - - mutating func removeLoadingHUDs() { - self.HUDsLock.lock() - for (key, hud) in self.cacheHUDs where YMRequestX.loadingSuffix(key: key) { - self.cacheHUDs.removeValue(forKey: key) - hud.close() - } - self.HUDsLock.unlock() - } -} diff --git a/yinmeng-ios/HttpRequest/YMLastNeverResult.swift b/yinmeng-ios/HttpRequest/YMLastNeverResult.swift deleted file mode 100644 index 8a94770..0000000 --- a/yinmeng-ios/HttpRequest/YMLastNeverResult.swift +++ /dev/null @@ -1,69 +0,0 @@ -// -// YMLastNeverResult.swift -// yinmeng-ios -// -// Created by MaiMang on 2024/2/2. -// - -import Foundation -public typealias LastNeverCallback = ((_ lastResult: LastNeverResult) -> Void) - -/// Containing the data source and whether auto last network request. -public final class LastNeverResult { - - public var result: Result - - /// 解决重复解析问题,如果某款插件已经对数据进行解析成Any之后 - /// Solve the problem of repeated parsing, if a plugin has parsed the data into `Any` - public var mapResult: Result? - - /// 是否自动上次网络请求 - public var againRequest: Bool = false - - private let plugins: APIPlugins - - public init(result: Result, plugins: APIPlugins) { - self.result = result - self.plugins = plugins - } -} - -extension LastNeverResult { - - func mapResult(success: APISuccess? = nil, failure: APIFailure? = nil, progress: ProgressBlock? = nil) { - if let mapResult = mapResult { - switch mapResult { - case let .success(json): - success?(json) - case let .failure(error): - failure?(error) - } - return - } - switch result { - case let .success(response): - do { - let json = try YMRequestX.toJSON(with: response) - self.mapResult = .success(json) - success?(json) - progress?(ProgressResponse(response: response)) - } catch MoyaError.statusCode(let response) { - let error = MoyaError.statusCode(response) - self.mapResult = .failure(error) - failure?(error) - } catch MoyaError.jsonMapping(let response) { - let error = MoyaError.jsonMapping(response) - self.mapResult = .failure(error) - failure?(error) - } catch { - if let error = error as? MoyaError { - self.mapResult = .failure(error) - } - failure?(error) - } - case let .failure(error): - self.mapResult = .failure(error) - failure?(error) - } - } -} diff --git a/yinmeng-ios/HttpRequest/YMNetworkAPI.swift b/yinmeng-ios/HttpRequest/YMNetworkAPI.swift deleted file mode 100644 index 18fef2c..0000000 --- a/yinmeng-ios/HttpRequest/YMNetworkAPI.swift +++ /dev/null @@ -1,34 +0,0 @@ -// -// YMNetworkAPI.swift -// yinmeng-ios -// -// Created by MaiMang on 2024/2/2. -// - -@_exported import Alamofire -@_exported import Moya -public typealias APIHost = String -public typealias APIPath = String -public typealias APINumber = Int -public typealias APIMethod = Moya.Method -public typealias APIParameters = Alamofire.Parameters -public typealias APIPlugins = [PluginSubType] -public typealias APIStubBehavior = Moya.StubBehavior -public typealias APISuccessJSON = Any -public typealias APIFailureError = Swift.Error -public typealias APIResponseResult = Result - -public typealias APISuccess = (_ json: APISuccessJSON) -> Void -public typealias APIFailure = (_ error: APIFailureError) -> Void -public typealias APIComplete = (_ result: Result) -> Void - -public protocol YMNetworkAPI: Moya.TargetType { - var hostUrl:APIHost {get} - var pararms:APIParameters? {get} - var plugins:APIPlugins {get} - var stubBehavior: APIStubBehavior {get} - var retry:APINumber {get} - var keyPrefix: String { get } - func removeHUD() - func removeLoading() -} diff --git a/yinmeng-ios/HttpRequest/YMPluginSubType.swift b/yinmeng-ios/HttpRequest/YMPluginSubType.swift deleted file mode 100644 index ff54520..0000000 --- a/yinmeng-ios/HttpRequest/YMPluginSubType.swift +++ /dev/null @@ -1,73 +0,0 @@ -// -// YMPluginSubType.swift -// yinmeng-ios -// -// Created by MaiMang on 2024/2/2. -// - -import Foundation -import Moya - -public protocol PluginPropertiesable: PluginSubType { - var plugins: APIPlugins { get set } - - var key: String? { get set } - - /// Loading HUD delay hide time. - var delay: Double { get } -} - -extension PluginPropertiesable { - public var delay: Double { - return 0 - } -} - -/// 继承Moya插件协议,方便后序扩展,所有插件方法都必须实现该协议 -/// Inherit the Moya plug-in protocol, which is convenient for subsequent expansion. All plug-in methods must implement this protocol -public protocol PluginSubType: Moya.PluginType { - - /// 插件名 - var pluginName: String { get } - - /// 设置网络配置信息之后,开始准备请求之前, - /// 该方法可以用于本地缓存存在时直接抛出数据而不用再执行后序网络请求等场景 - /// - Parameters: - /// - request: 配置信息,其中包含数据源和是否结束后序网络请求 - /// - target: 参数协议 - /// - Returns: 包涵数据源和是否结束后序网络请求 - /// - /// After setting the network configuration information, before starting to prepare the request, - /// This method can be used in scenarios such as throwing data directly when the local cache exists without executing subsequent network requests. - /// - Parameters: - /// - request: Configuration information, which contains the data source and whether to end the subsequent network request. - /// - target: The protocol used to define the specifications necessary for a `MoyaProvider`. - /// - Returns: Containing the data source and whether to end the subsequent network request. - func configuration(_ request: HeadstreamRequest, target: TargetType) -> HeadstreamRequest - - /// 最后的最后网络响应返回时刻, - /// 该方法可以用于密钥失效重新去获取密钥然后自动再次网络请求等场景 - /// - Parameters: - /// - result: 包含数据源和是否自动上次网络请求 - /// - target: 参数协议 - /// - onNext: 给插件异步处理任务,回调包含数据源和是否再次开启上次网络请求的元组 - /// - /// The last time the last network response is returned, - /// This method can be used in scenarios such as key invalidation to obtain the key again and then automatically request the network again. - /// - Parameters: - /// - result: Containing the data source and whether auto-last network request. - /// - target: The protocol used to define the specifications necessary for a `MoyaProvider`. - /// - onNext: Provide callbacks for the plug-in to process tasks asynchronously. - func lastNever(_ result: LastNeverResult, target: TargetType, onNext: @escaping LastNeverCallback) -} - -extension PluginSubType { - - public func configuration(_ request: HeadstreamRequest, target: TargetType) -> HeadstreamRequest { - return request - } - - public func lastNever(_ result: LastNeverResult, target: TargetType, onNext: @escaping LastNeverCallback) { - onNext(result) - } -} diff --git a/yinmeng-ios/HttpRequest/YMRequestConfig.swift b/yinmeng-ios/HttpRequest/YMRequestConfig.swift deleted file mode 100644 index 54315d8..0000000 --- a/yinmeng-ios/HttpRequest/YMRequestConfig.swift +++ /dev/null @@ -1,56 +0,0 @@ -// -// YMRequestConfig.swift -// yinmeng-ios -// -// Created by MaiMang on 2024/2/2. -// - -import Foundation -import Moya - -/// 网络配置信息,只需要在程序开启的时刻配置一次 -/// Network configuration information, only need to be configured once when the program is started -public struct YMRequestConfig { - - /// Whether to add the Debugging plugin by default - public static var addDebugging: Bool = false - /// Whether to add the Indicator plugin by default - public static var addIndicator: Bool = false - /// Set the request timeout, the default is 30 seconds - public static var timeoutIntervalForRequest: Double = 30 - - public static var interceptor: RequestInterceptor? = nil - /// Root path address - public static var baseURL: APIHost = "" - /// Default request type, default `post` - public static var baseMethod: APIMethod = APIMethod.post - /// Default basic parameters, similar to: userID, token, etc. - public static var baseParameters: APIParameters = [:] - /// Default Header argument, 相同数据时该数据会被`NetworkHttpHeaderPlugin`插件覆盖. - public static var baseHeaders: [String: String] = [:] - /// Plugins that require default injection, generally not recommended - /// However, you can inject this kind of global unified general plugin, such as secret key plugin, certificate plugin, etc. - public static var basePlugins: [PluginSubType]? - - /// Loading animation JSON, for `AnimatedLoadingPlugin` used. - public static var animatedJSON: String? - /// Loading the plugin name, to remove the loading plugin from level status bar window. - public static var loadingPluginNames: [String] = ["Loading", "AnimatedLoading"] - /// Auto close all loading after the end of the last network requesting. - public static var lastCompleteAndCloseLoadingHUDs: Bool = true - - /// Update the default basic parameter data, which is generally used for what operation the user has switched. - /// - Parameters: - /// - value: Update value - /// - key: Update key - public static func updateBaseParametersWithValue(_ value: AnyObject?, key: String) { - var dict = YMRequestConfig.baseParameters - if let value = value { - dict.updateValue(value, forKey: key) - } else { - dict.removeValue(forKey: key) - } - YMRequestConfig.baseParameters = dict - } -} - diff --git a/yinmeng-ios/HttpRequest/YMRequestX.swift b/yinmeng-ios/HttpRequest/YMRequestX.swift deleted file mode 100644 index 53c1e35..0000000 --- a/yinmeng-ios/HttpRequest/YMRequestX.swift +++ /dev/null @@ -1,228 +0,0 @@ -// -// YMRequestX.swift -// yinmeng-ios -// -// Created by MaiMang on 2024/2/2. -// - -import Foundation - -public struct YMRequestX { - /// Maps data received from the signal into a JSON object. - public static func mapJSON(_ type: T.Type, named: String, forResource: String = "RxNetworks") -> T? { - guard let data = jsonData(named, forResource: forResource) else { - return nil - } - let json = try? JSONSerialization.jsonObject(with: data, options: .allowFragments) - return json as? T - } - - /// Read json data - public static func jsonData(_ named: String, forResource: String = "RxNetworks") -> Data? { - let bundle: Bundle? - if let bundlePath = Bundle.main.path(forResource: forResource, ofType: "bundle") { - bundle = Bundle.init(path: bundlePath) - } else { - bundle = Bundle.main - } - guard let path = ["json", "JSON", "Json"].compactMap({ - bundle?.path(forResource: named, ofType: $0) - }).first else { - return nil - } - let contentURL = URL(fileURLWithPath: path) - return try? Data(contentsOf: contentURL) - } - - public static func toJSON(form value: Any, prettyPrint: Bool = false) -> String? { - guard JSONSerialization.isValidJSONObject(value) else { - return nil - } - var jsonData: Data? = nil - if prettyPrint { - jsonData = try? JSONSerialization.data(withJSONObject: value, options: [.prettyPrinted]) - } else { - jsonData = try? JSONSerialization.data(withJSONObject: value, options: []) - } - guard let data = jsonData else { return nil } - return String(data: data ,encoding: .utf8) - } - - public static func toDictionary(form json: String) -> [String : Any]? { - guard let jsonData = json.data(using: .utf8), - let object = try? JSONSerialization.jsonObject(with: jsonData, options: []), - let result = object as? [String : Any] else { - return nil - } - return result - } - - public static func keyWindow() -> UIWindow? { - if #available(iOS 13.0, *) { - return UIApplication.shared.connectedScenes - .filter { $0.activationState == .foregroundActive } - .first(where: { $0 is UIWindowScene }) - .flatMap({ $0 as? UIWindowScene })?.windows - .first(where: \.isKeyWindow) - } else { - return UIApplication.shared.keyWindow - } - } - - public static func topViewController() -> UIViewController? { - let window = UIApplication.shared.delegate?.window - guard window != nil, let rootViewController = window?!.rootViewController else { - return nil - } - return self.getTopViewController(controller: rootViewController) - } - - public static func getTopViewController(controller: UIViewController) -> UIViewController { - if let presentedViewController = controller.presentedViewController { - return self.getTopViewController(controller: presentedViewController) - } else if let navigationController = controller as? UINavigationController { - if let topViewController = navigationController.topViewController { - return self.getTopViewController(controller: topViewController) - } - return navigationController - } else if let tabbarController = controller as? UITabBarController { - if let selectedViewController = tabbarController.selectedViewController { - return self.getTopViewController(controller: selectedViewController) - } - return tabbarController - } else { - return controller - } - } -} - - -// MARK: - HUD -extension YMRequestX { - /// 移除窗口所有HUD - public static func removeAllAtLevelStatusBarWindow() { - SharedDriver.shared.removeAllAtLevelStatusBarWindow() - } - - /// 移除所有加载HUD - public static func removeLoadingHUDs() { - SharedDriver.shared.removeLoadingHUDs() - } - - public static func readHUD(key: String) -> LevelStatusBarWindowController? { - SharedDriver.shared.readHUD(key: key) - } - - public static func saveHUD(key: String, window vc: LevelStatusBarWindowController) { - SharedDriver.shared.saveHUD(key: key, window: vc) - } - - @discardableResult - public static func removeHUD(key: String?) -> LevelStatusBarWindowController? { - SharedDriver.shared.removeHUD(key: key) - } -} - - -// MARK: - 网络相关 -extension YMRequestX { - - static func maxDelayTime(with plugins: APIPlugins) -> Double { - let times: [Double] = plugins.compactMap { - if let p = $0 as? PluginPropertiesable { - return p.delay - } - return 0.0 - } - let maxTime = times.max() ?? 0.0 - return maxTime - } - - static func sortParametersToString(_ parameters: APIParameters?) -> String { - guard let params = parameters, !params.isEmpty else { - return "" - } - var paramString = "?" - let sorteds = params.sorted(by: { $0.key > $1.key }) - for index in sorteds.indices { - paramString.append("\(sorteds[index].key)=\(sorteds[index].value)") - if index != sorteds.count - 1 { paramString.append("&") } - } - return paramString - } - - static func requestLink(with target: TargetType, parameters: APIParameters? = nil) -> String { - let parameters: APIParameters? = parameters ?? { - if case .requestParameters(let parame, _) = target.task { - return parame - } - return nil - }() - let paramString = sortParametersToString(parameters) - return target.baseURL.absoluteString + target.path + paramString - } - - static func toJSON(with response: Moya.Response) throws -> APISuccessJSON { - let response = try response.filterSuccessfulStatusCodes() - return try response.mapJSON() - } - - static func loadingSuffix(key: SharedDriver.Key?) -> Bool { - guard let key = key else { return false } - if let suffix = key.components(separatedBy: "_").last, YMRequestConfig.loadingPluginNames.contains(suffix) { - return true - } - return false - } - - static func setupPluginsAndKey(_ key: String, plugins: APIPlugins) -> APIPlugins { - var plugins = plugins - YMRequestX.setupBasePlugins(&plugins) - return plugins.map({ - if var plugin = $0 as? PluginPropertiesable { - plugin.plugins = plugins - plugin.key = key + "_" + plugin.pluginName - return plugin - } - return $0 - }) - } -} - -// MARK: - 模块宏定义 -extension YMRequestX { - - /// 注入默认插件 - static func setupBasePlugins(_ plugins: inout APIPlugins) { - var plugins_ = plugins - if let others = YMRequestConfig.basePlugins { - plugins_ += others - } - #if RXNETWORKS_PLUGINGS_INDICATOR - if NetworkConfig.addIndicator, !plugins_.contains(where: { $0 is NetworkIndicatorPlugin}) { - let Indicator = NetworkIndicatorPlugin.shared - plugins_.insert(Indicator, at: 0) - } - #endif - #if DEBUG && RXNETWORKS_PLUGINGS_DEBUGGING - if NetworkConfig.addDebugging, !plugins_.contains(where: { $0 is NetworkDebuggingPlugin}) { - let Debugging = NetworkDebuggingPlugin.init() - plugins_.append(Debugging) - } - #endif - plugins = plugins_ - } - - /// 是否存在请求头插件 - static func hasNetworkHttpHeaderPlugin(_ key: String) -> [String: String]? { - #if RXNETWORKS_PLUGINGS_HTTPHEADER - let plugins = SharedDriver.shared.readRequestPlugins(key) - if let p = plugins.first(where: { $0 is NetworkHttpHeaderPlugin }) { - return (p as? NetworkHttpHeaderPlugin)?.dictionary - } - #endif - return nil - } - -} - diff --git a/yinmeng-ios/Info.plist b/yinmeng-ios/Info.plist index 97ff79d..f3ae914 100644 --- a/yinmeng-ios/Info.plist +++ b/yinmeng-ios/Info.plist @@ -2,6 +2,11 @@ + NSAppTransportSecurity + + NSAllowsArbitraryLoads + + UIApplicationSceneManifest UIApplicationSupportsMultipleScenes diff --git a/yinmeng-ios/Modules/Auth/Model/AppConfigObject.swift b/yinmeng-ios/Modules/Auth/Model/AppConfigObject.swift new file mode 100644 index 0000000..d7af7ba --- /dev/null +++ b/yinmeng-ios/Modules/Auth/Model/AppConfigObject.swift @@ -0,0 +1,15 @@ +// +// AppConfigObject.swift +// yinmeng-ios +// +// Created by MaiMang on 2024/2/22. +// + +import Foundation + +struct AppConfigObject : HandyJSON { + var certificationType:Bool? = false + var reportSwitch:Bool? = false + var teenagerMode:Bool? = false + var homeTabList:[String]? = [] +} diff --git a/yinmeng-ios/Modules/Auth/VC/AuthLoginVC.swift b/yinmeng-ios/Modules/Auth/VC/AuthLoginVC.swift index 80bda25..638f671 100644 --- a/yinmeng-ios/Modules/Auth/VC/AuthLoginVC.swift +++ b/yinmeng-ios/Modules/Auth/VC/AuthLoginVC.swift @@ -7,12 +7,23 @@ import UIKit import SnapKit - +import NSObject_Rx class AuthLoginVC: BaseViewController, HiddenNavigationBarProtocol { + var countdownSeconds = 60 + var timer: Timer? + var viewModel:AuthViewModel = AuthViewModel() + var phone:String = "" + var code:String = "" + override func viewDidLoad() { super.viewDidLoad() loadSubViews() + viewModel.data.subscribe(onNext: { [weak self] success in + if success { + self?.startCountdown() + } + }).disposed(by: rx.disposeBag) } func loadSubViews() { @@ -180,6 +191,7 @@ class AuthLoginVC: BaseViewController, HiddenNavigationBarProtocol { button.setTitleColor(UIColor.white, for: .normal) button.titleLabel?.font = UIFont.systemFont(ofSize: 18, weight: .semibold) button.addTarget(self, action: #selector(phoneLoginBtnAction), for: .touchUpInside) + button.isSelected = true return button }() @@ -374,11 +386,19 @@ extension AuthLoginVC { } @objc func getCodeBtnAction() { - + if phone.count > 0 { + viewModel.getSmsCode(phone: phone, type: 1) + } else { + HUDTool.showSuccess(with: "请输入正确的手机号码") + } } @objc func confirmBtnAction() { - + if self.phoneLoginBtn.isSelected == true { + viewModel.authPhoneCode(phone: phone, code: code) + } else { + //TODO: id登录 + } } @objc func forgetBtnAction() { @@ -386,11 +406,21 @@ extension AuthLoginVC { } @objc func phoneTextFiledDidChange(_ textField: UITextField) { - + if let text = textField.text { + if text.count > 11 { + textField.text = text.substring(start: 0, 11) + } + } + phone = textField.text ?? "" } @objc func codeTextFiledDidChange(_ textField: UITextField) { - + if let text = textField.text { + if text.count > 11 { + textField.text = text.substring(start: 0, 11) + } + } + code = textField.text ?? "" } @objc func idTextFiledDidChange(_ textField: UITextField) { @@ -401,3 +431,38 @@ extension AuthLoginVC { } } + + +extension AuthLoginVC { + + func startCountdown() { + if timer != nil { + timer?.invalidate() + timer = nil + } + countdownSeconds = 60 + timer = Timer.scheduledTimer(timeInterval: 1.0, target: self, selector: #selector(updateCountdown), userInfo: nil, repeats: true) + timer!.fire() + } + + @objc func updateCountdown() { + countdownSeconds -= 1 + + if countdownSeconds <= 0 { + getCodeBtn.setTitle("重新获取验证码", for: .normal) + getCodeBtn.isEnabled = true + stopCountdown() + return + } + getCodeBtn.isHidden = false + let seconds = countdownSeconds % 60 + getCodeBtn.setTitle("重新获取验证码(\(seconds)s)", for: .disabled) + getCodeBtn.isEnabled = false + } + + func stopCountdown() { + timer?.invalidate() + timer = nil + } +} + diff --git a/yinmeng-ios/Modules/Auth/VM/AuthAPI.swift b/yinmeng-ios/Modules/Auth/VM/AuthAPI.swift index 38cc823..a1655ee 100644 --- a/yinmeng-ios/Modules/Auth/VM/AuthAPI.swift +++ b/yinmeng-ios/Modules/Auth/VM/AuthAPI.swift @@ -5,8 +5,50 @@ // Created by MaiMang on 2024/2/21. // -import Foundation - +//import Foundation +//import Moya //enum AuthAPI { -// +// case appConfig +// case getCode(String, String) +// case authToken(String, String) +//} +// +//extension AuthAPI: YMNetworkAPI { +// var hostUrl: APIHost { +// return YMRequestConfig.baseURL +// } +// +// var pararms: APIParameters? { +// switch self { +// case .getCode(let phone, let type): +// return ["mobile":phone, "type":type] +// case .authToken(let phone, let code): +// return ["phone":phone, "code":code, "client_secret":"uyzjdhds", "version":"1", "client_id":"erban-client", "grant_type":"password"] +// default: +// return [:] +// } +// } +// +// var path: String { +// switch self { +// case .appConfig: +// return "/client/init" +// case .getCode: +// return "/sms/getCode" +// case .authToken: +// return "/oauth/token" +// } +// +// } +// +// var method: Moya.Method { +// switch self { +// case .appConfig: +// return .get +// case .getCode: +// return .post +// case .authToken: +// return .post +// } +// } //} diff --git a/yinmeng-ios/Modules/Auth/VM/AuthManager.swift b/yinmeng-ios/Modules/Auth/VM/AuthManager.swift new file mode 100644 index 0000000..c7e7cc8 --- /dev/null +++ b/yinmeng-ios/Modules/Auth/VM/AuthManager.swift @@ -0,0 +1,67 @@ +// +// AuthManager.swift +// yinmeng-ios +// +// Created by MaiMang on 2024/2/24. +// + +import Foundation + +private let UserTokenKey = "UserTokenKey" +private let UserTicketKey = "UserTicketKey" + +class AuthManager: NSObject { + var tokenInfo:UserTokenObject? + + static var userUid:Int { + return LoginTokenConfig.config.getAccountInfo()?.uid ?? 0 + } + + static var ticket:String{ + return LoginTokenConfig.config.getTicket() + } +} + +class LoginTokenConfig: NSObject { + public static let config = LoginTokenConfig.init() + var tokenInfo: UserTokenObject? + var ticket:String? + func saveTokenToLocaltion(token: UserTokenObject) { + self.tokenInfo = token + if let dic = token.dictionary { + UserDefaults.standard.setValue(dic, forKey: UserTokenKey) + UserDefaults.standard.synchronize() + } + } + + func saveTicketToLoaction(ticket:String) { + self.ticket = ticket + UserDefaults.standard.setValue(ticket, forKey: UserTicketKey) + UserDefaults.standard.synchronize() + } + + func getTicket() -> String { + if let ticket = self.ticket { + return ticket + } + + if let ticket = UserDefaults.standard.value(forKey: UserTicketKey) as? String{ + self.ticket = ticket + } + + return self.ticket ?? "" + } + + func getAccountInfo() -> UserTokenObject? { + if let accountModel = self.tokenInfo { + return accountModel + } + + if let dic = UserDefaults.standard.value(forKey: UserTokenKey), let model = Deserialized.toModel(with: dic){ + self.tokenInfo = model + } + + return self.tokenInfo + } + +} diff --git a/yinmeng-ios/Modules/Auth/VM/AuthViewModel.swift b/yinmeng-ios/Modules/Auth/VM/AuthViewModel.swift new file mode 100644 index 0000000..8f7d6e6 --- /dev/null +++ b/yinmeng-ios/Modules/Auth/VM/AuthViewModel.swift @@ -0,0 +1,28 @@ +// +// AuthViewModel.swift +// yinmeng-ios +// +// Created by MaiMang on 2024/2/22. +// + +import Foundation +import RxSwift +class AuthViewModel: NSObject { + + let data = PublishSubject() + + func getSmsCode(phone:String, type:Int) { + if let phoneDes = phone.encrypt() { + let params:[String: Any] = ["mobile":phoneDes, "type":type] + YMNetworkHelper.share.requestSend(type: .post, path: "sms/getCode", params: params, succeed: { data in + self.data.onNext(true) + }, fail: { code, msg in + self.data.onNext(false) + }) + } + } + + func authPhoneCode(phone:String, code:String) { + + } +} diff --git a/yinmeng-ios/Modules/Auth/VM/UserTokenObject.swift b/yinmeng-ios/Modules/Auth/VM/UserTokenObject.swift new file mode 100644 index 0000000..fc97279 --- /dev/null +++ b/yinmeng-ios/Modules/Auth/VM/UserTokenObject.swift @@ -0,0 +1,15 @@ +// +// UserTokenObject.swift +// yinmeng-ios +// +// Created by MaiMang on 2024/2/24. +// + +import Foundation +import HandyJSON + +struct UserTokenObject: HandyJSON, Codable { + var uid:Int? = 0 + var netEaseToken:String? = "" + var access_token:String? = "" +}