From: liangzhenying <867174124@qq.com> Date: Wed, 26 Nov 2025 09:12:41 +0000 (+0800) Subject: 通话录音增加上到分离 X-Git-Tag: 1.0.2~53 X-Git-Url: http://git.snicker.com.cn/css/static/gitweb.css?a=commitdiff_plain;h=b1c632c3405213f669fd53e0e17f267576f3e04c;p=mirrors%2FShenYin.git 通话录音增加上到分离 --- diff --git a/ShenYin/ShenYin/Launch/BleManager.swift b/ShenYin/ShenYin/Launch/BleManager.swift index fcdc992..98ef1e0 100644 --- a/ShenYin/ShenYin/Launch/BleManager.swift +++ b/ShenYin/ShenYin/Launch/BleManager.swift @@ -271,19 +271,20 @@ extension BleManager : JoyGemAIManagerDelegate { switch action { case .cancel: Logger.debug("请求关闭录音功能/通知关闭了对话") -// YLprogressHUD.showAutoHiden("请求关闭录音功能/通知关闭了对话") if let topVC = App.shared.topVC(), let vc = topVC as? FieldRecordingVC { vc.stopRecord() } if let topVC = App.shared.topVC(), let vc = topVC as? CallingRecordVC { vc.stopRecord() } + if let topVC = App.shared.topVC(), let vc = topVC as? StereoCallVC { + vc.stopRecord() + } case .recordLive: Logger.debug("请求开启现场录音") if App.shared.isInBackground { return } -// YLprogressHUD.showAutoHiden("请求开启现场录音") if let vc = App.shared.topVC() as? FieldRecordingVC { vc.startRecord() } @@ -295,12 +296,21 @@ extension BleManager : JoyGemAIManagerDelegate { if App.shared.isInBackground { return } -// YLprogressHUD.showAutoHiden("请求开启通话录音") - if let vc = App.shared.topVC() as? CallingRecordVC { - vc.startRecord() - }else{ - App.shared.goToPage(CallingRecordVC(autoStart: true)) + if JoySdkManager.shared.supportStereo{ + if let vc = App.shared.topVC() as? StereoCallVC { + vc.startRecord() + }else{ + App.shared.goToPage(CallingRecordVC(autoStart: true)) + } } + else{ + if let vc = App.shared.topVC() as? CallingRecordVC { + vc.startRecord() + }else{ + App.shared.goToPage(CallingRecordVC(autoStart: true)) + } + } + case .si: Logger.debug( "请求开启同传听译") case .chat: diff --git a/ShenYin/ShenYin/Launch/JoySdkManager.swift b/ShenYin/ShenYin/Launch/JoySdkManager.swift index a5f8b12..6ac5fde 100644 --- a/ShenYin/ShenYin/Launch/JoySdkManager.swift +++ b/ShenYin/ShenYin/Launch/JoySdkManager.swift @@ -16,6 +16,10 @@ class JoySdkManager:NSObject{ var dataList:[ChatCellModel] = [] var chatStateChange:((JoyGemStateCode)->Void)? var chatNeedReloadData:(()->Void)? + + var supportStereo:Bool{ + return JoyGemCallManager.shared().supportStereo == true + } } extension JoySdkManager { func setupSdk(){ diff --git a/ShenYin/ShenYin/Tools/Extensions/UITextView+Scroll.swift b/ShenYin/ShenYin/Tools/Extensions/UITextView+Scroll.swift new file mode 100644 index 0000000..002321d --- /dev/null +++ b/ShenYin/ShenYin/Tools/Extensions/UITextView+Scroll.swift @@ -0,0 +1,13 @@ +// +// UITextView+Scroll.swift +// ShenYin +// +// Created by liangshi on 2025/11/26. +// + +public extension UITextView{ + func scrollToBottom(){ + let range = NSMakeRange(self.text.count - 1, 1) + self.scrollRangeToVisible(range) + } +} diff --git a/ShenYin/ShenYin/UI/Home/CallingRecordVC.swift b/ShenYin/ShenYin/UI/Home/CallingRecordVC.swift index 9eb8d88..9df93dd 100644 --- a/ShenYin/ShenYin/UI/Home/CallingRecordVC.swift +++ b/ShenYin/ShenYin/UI/Home/CallingRecordVC.swift @@ -53,6 +53,7 @@ class CallingRecordVC:BaseVC{ rhythView.snp.makeConstraints { make in make.width.centerX.equalToSuperview() make.top.equalToSuperview().inset(kNavBtm) + make.height.equalTo(110) } toolBar.snp.makeConstraints { make in make.width.centerX.equalToSuperview() @@ -133,35 +134,14 @@ extension CallingRecordVC:FieldRecordBarDelegate{ JoyGemCallManager.shared().start() } else if state == .stop{ - rhythView.stopTimer() - JoyGemCallManager.shared().stop() - bar.startAnimating {[weak self] in - guard let self = self else{return} - //toolBar.recordBtn.stopCli() - guard let path = recordFilePath,let wavPath = DCFolder.recordFileResave(srcPath: path) else{return} - let v = PopTextField() - v.show() - v.cancelTap = { - App.shared.popPage() - } - v.okTap = { [weak self] text in - guard let self = self else{return} - - let model = RecordDetailModel() - model.type = .phone - model.from = bar.leftItem.language - model.to = .english - model.name = text - model.path = wavPath - model.duration = YLToos.getDuration(model.path) - model.origin = textView.text - model.translate = "" - App.shared.popPage(animated: false) - App.shared.goToPage(RecordDetailVC(record: model)) - } - } + stopAction() } } + func stopAction(){ + rhythView.stopTimer() + JoyGemCallManager.shared().stop() + toolBar.startAnimating() + } } extension CallingRecordVC : JoyGemCallManagerDelegate { @@ -170,18 +150,41 @@ extension CallingRecordVC : JoyGemCallManagerDelegate { Logger.debug( "用户主动结束") } else { Logger.debug( "自动结束") - rhythView.stopTimer() - toolBar.recordBtn.isSelected = false + stopAction() } } func callManagerNotonCall(_ manager: JoyGemCallManager) { - Logger.debug("未处于通话状态") + YLprogressHUD.showAutoHiden("未处于通话状态".l10n) + rhythView.reset() + toolBar.recordBtn.isSelected = false + toolBar.leftItem.alpha = 1 } func callManager(_ manager: JoyGemCallManager, saveFile path: String) { Logger.debug("path: \(path)") recordFilePath = path + guard let path = recordFilePath,let wavPath = DCFolder.recordFileResave(srcPath: path) else{return} + let v = PopTextField() + v.show() + v.cancelTap = { + App.shared.popPage() + } + v.okTap = { [weak self] text in + guard let self = self else{return} + + let model = RecordDetailModel() + model.type = .phone + model.from = toolBar.leftItem.language + model.to = .english + model.name = text + model.path = wavPath + model.duration = YLToos.getDuration(model.path) + model.origin = textView.text + model.translate = "" + App.shared.popPage(animated: false) + App.shared.goToPage(RecordDetailVC(record: model)) + } } func callManager(_ manager: JoyGemCallManager, stateChange code: JoyGemStateCode) { diff --git a/ShenYin/ShenYin/UI/Home/Chinese2English/Chinese2EnglishCell.swift b/ShenYin/ShenYin/UI/Home/Chinese2English/Chinese2EnglishCell.swift index 483e123..3d8863f 100644 --- a/ShenYin/ShenYin/UI/Home/Chinese2English/Chinese2EnglishCell.swift +++ b/ShenYin/ShenYin/UI/Home/Chinese2English/Chinese2EnglishCell.swift @@ -90,7 +90,7 @@ class Chinese2EnglishCell:BaseTableViewCell{ make.top.equalTo(line.snp.bottom).offset(15) make.left.equalToSuperview().inset(12) make.width.lessThanOrEqualTo(kScreenWid - 82) - make.bottom.equalToSuperview().inset(47) + make.bottom.equalToSuperview().inset(14) } playIcon.snp.makeConstraints { make in make.right.equalToSuperview().inset(12) diff --git a/ShenYin/ShenYin/UI/Home/Chinese2English/Chinese2EnglishVC.swift b/ShenYin/ShenYin/UI/Home/Chinese2English/Chinese2EnglishVC.swift index a286ac6..aed5fae 100644 --- a/ShenYin/ShenYin/UI/Home/Chinese2English/Chinese2EnglishVC.swift +++ b/ShenYin/ShenYin/UI/Home/Chinese2English/Chinese2EnglishVC.swift @@ -13,7 +13,6 @@ class Chinese2EnglishVC:BaseVC{ let tableView = UITableView(frame: CGRectZero, style: .plain) let bg = UIImageView() var dataList:[(Chinese2EnglishCellModel,Int)] = [] - var pcmData = Data() var recordFilePath : String? var startIndex = 0//记录开始录音的次数,用于区分返回的数据 @@ -121,7 +120,6 @@ extension Chinese2EnglishVC:RecordBarDelegate{ func recordBar(_ bar: RecordBar, stateChange state: RecordBarSate) { if state == .start { - pcmData = Data() startIndex += 100000 JoyGemSIDeviceManager.shared().originalLanguage = bar.leftItem.language.value JoyGemSIDeviceManager.shared().targetLanguage = bar.rightItem.language.value @@ -196,7 +194,6 @@ extension Chinese2EnglishVC:JoyGemSIDeviceManagerDelegate{ refreshData() } func siDeviceManager(_ manager: JoyGemSIDeviceManager, didUpdateAudioData data: Data, sampleRate: UInt) { - pcmData.append(data) PcmSound.sharedInstance().feed(data) } // func siDeviceManager(_ manager: JoyGemSIDeviceManager, didUpdateAudioData data: Data) { diff --git a/ShenYin/ShenYin/UI/Home/FieldRecording/FieldRecordBar.swift b/ShenYin/ShenYin/UI/Home/FieldRecording/FieldRecordBar.swift index ea41f6b..1538fcd 100644 --- a/ShenYin/ShenYin/UI/Home/FieldRecording/FieldRecordBar.swift +++ b/ShenYin/ShenYin/UI/Home/FieldRecording/FieldRecordBar.swift @@ -62,14 +62,12 @@ class FieldRecordBar: BaseView { } } - func startAnimating(finished:(()->Void)? = nil){ + func startAnimating(){ leftItem.alpha = 0.3 - recordBtn.startAnimating {[weak self] in - guard let self = self else{return} - leftItem.alpha = 1 - finished?() - - } + recordBtn.startAnimating() + } + func stopAnimation(){ + leftItem.alpha = 1 } @objc func leftAction(){ if recordBtn.isSelected || recordBtn.activeView.animating { diff --git a/ShenYin/ShenYin/UI/Home/FieldRecording/FieldRecordingVC.swift b/ShenYin/ShenYin/UI/Home/FieldRecording/FieldRecordingVC.swift index 5f6a2cc..8d8835d 100644 --- a/ShenYin/ShenYin/UI/Home/FieldRecording/FieldRecordingVC.swift +++ b/ShenYin/ShenYin/UI/Home/FieldRecording/FieldRecordingVC.swift @@ -43,6 +43,7 @@ class FieldRecordingVC:BaseVC{ rhythView.snp.makeConstraints { make in make.width.centerX.equalToSuperview() make.top.equalToSuperview().inset(kNavBtm) + make.height.equalTo(110) } toolBar.snp.makeConstraints { make in make.width.centerX.equalToSuperview() @@ -125,31 +126,7 @@ extension FieldRecordingVC:FieldRecordBarDelegate{ else if state == .stop{ rhythView.stopTimer() JoyGemRecordManager.shared().stop() - bar.startAnimating {[weak self] in - guard let self = self else{return} -// toolBar.recordBtn.stopCli() - guard let path = recordFilePath,let wavPath = DCFolder.recordFileResave(srcPath: path) else{return} - let v = PopTextField() - v.show() - v.cancelTap = { - App.shared.popPage() - } - v.okTap = { [weak self] text in - guard let self = self else{return} - - let model = RecordDetailModel() - model.type = .present - model.from = bar.leftItem.language - model.to = .english - model.name = text - model.path = wavPath - model.duration = YLToos.getDuration(model.path) - model.origin = textView.text - model.translate = "" - App.shared.popPage(animated: false) - App.shared.goToPage(RecordDetailVC(record: model)) - } - } + bar.startAnimating() } } } @@ -191,6 +168,27 @@ extension FieldRecordingVC : JoyGemRecordManagerDelegate { func recordManager(_ manager: JoyGemRecordManager, saveFile path: String) { Logger.debug("path: \(path)") recordFilePath = path + guard let path = recordFilePath,let wavPath = DCFolder.recordFileResave(srcPath: path) else{return} + let v = PopTextField() + v.show() + v.cancelTap = { + App.shared.popPage() + } + v.okTap = { [weak self] text in + guard let self = self else{return} + + let model = RecordDetailModel() + model.type = .present + model.from = toolBar.leftItem.language + model.to = .english + model.name = text + model.path = wavPath + model.duration = YLToos.getDuration(model.path) + model.origin = textView.text + model.translate = "" + App.shared.popPage(animated: false) + App.shared.goToPage(RecordDetailVC(record: model)) + } } func recordManager(_ manager: JoyGemRecordManager, stateChange code: JoyGemStateCode) { diff --git a/ShenYin/ShenYin/UI/Home/FieldRecording/RecordBar.swift b/ShenYin/ShenYin/UI/Home/FieldRecording/RecordBar.swift index 249a23c..5fbe576 100644 --- a/ShenYin/ShenYin/UI/Home/FieldRecording/RecordBar.swift +++ b/ShenYin/ShenYin/UI/Home/FieldRecording/RecordBar.swift @@ -69,17 +69,16 @@ class RecordBar: BaseView { make.left.equalToSuperview().offset(kScreenWid/2 + 60) } } - func startAnimating(finished:(()->Void)? = nil){ + func startAnimating(){ leftItem.alpha = 0.3 rightItem.alpha = 0.3 - recordBtn.startAnimating {[weak self] in - guard let self = self else{return} - leftItem.alpha = 1 - rightItem.alpha = 1 - finished?() - } + recordBtn.startAnimating() recordBtn.activeView.backgroundColor = .hexString("#F7F7F7") } + func stopAnimation(){ + leftItem.alpha = 1 + rightItem.alpha = 1 + } @objc func recordBtnAction(){ if recordBtn.activeView.animating { return diff --git a/ShenYin/ShenYin/UI/Home/FieldRecording/RhythView.swift b/ShenYin/ShenYin/UI/Home/FieldRecording/RhythView.swift index 77f2e1b..09ebd77 100644 --- a/ShenYin/ShenYin/UI/Home/FieldRecording/RhythView.swift +++ b/ShenYin/ShenYin/UI/Home/FieldRecording/RhythView.swift @@ -33,7 +33,6 @@ class RhythView: BaseView { make.top.equalToSuperview().inset(40) make.left.right.equalToSuperview() make.height.equalTo(58) - make.bottom.equalToSuperview() } startWave.snp.makeConstraints { make in make.edges.equalTo(stopWave) @@ -56,4 +55,9 @@ class RhythView: BaseView { stopWave.isHidden = false timer?.invalidate() } + func reset(){ + num = 0 + stopTimer() + lable.text = YLToos.formatSeconds(num) + } } diff --git a/ShenYin/ShenYin/UI/Home/RecordTranslateVC.swift b/ShenYin/ShenYin/UI/Home/RecordTranslateVC.swift index 52f37e3..8e028ae 100644 --- a/ShenYin/ShenYin/UI/Home/RecordTranslateVC.swift +++ b/ShenYin/ShenYin/UI/Home/RecordTranslateVC.swift @@ -148,30 +148,7 @@ extension RecordTranslateVC:RecordBarDelegate{ } else if state == .stop{ JoyGemSIManager.shared().stop() - bar.startAnimating {[weak self] in - guard let self = self else{return} - guard let path = recordFilePath,let wavPath = DCFolder.recordFileResave(srcPath: path) else{return} - let v = PopTextField() - v.show() - v.cancelTap = { - App.shared.popPage() - } - v.okTap = { [weak self] text in - guard let self = self else{return} - - let model = RecordDetailModel() - model.type = .translate - model.from = bar.leftItem.language - model.to = bar.rightItem.language - model.name = text - model.path = wavPath - model.duration = YLToos.getDuration(model.path) - model.origin = textView.text ?? "" - model.translate = translateTextView.text ?? "" - App.shared.popPage(animated: false) - App.shared.goToPage(RecordDetailVC(record: model)) - } - } + bar.startAnimating() } } } @@ -198,7 +175,7 @@ extension RecordTranslateVC : JoyGemSIManagerDelegate { textView.text = messageList.compactMap({ (str,idx) in return str }).joined(separator: "\n") - textView.scrollToBottom() + textView.textView.scrollToBottom() } func siManager(_ manager: JoyGemSIManager, didUpdateTranslate model: JoyGemAsrModel) { @@ -215,13 +192,34 @@ extension RecordTranslateVC : JoyGemSIManagerDelegate { translateTextView.text = translateList.compactMap({ (str,idx) in return str }).joined(separator: "\n") - translateTextView.scrollToBottom() + translateTextView.textView.scrollToBottom() } func siManager(_ manager: JoyGemSIManager, saveFile path: String) { Logger.debug("path: \(path)") recordFilePath = path + guard let path = recordFilePath,let wavPath = DCFolder.recordFileResave(srcPath: path) else{return} + let v = PopTextField() + v.show() + v.cancelTap = { + App.shared.popPage() + } + v.okTap = { [weak self] text in + guard let self = self else{return} + + let model = RecordDetailModel() + model.type = .translate + model.from = toolBar.leftItem.language + model.to = toolBar.rightItem.language + model.name = text + model.path = wavPath + model.duration = YLToos.getDuration(model.path) + model.origin = textView.text ?? "" + model.translate = translateTextView.text ?? "" + App.shared.popPage(animated: false) + App.shared.goToPage(RecordDetailVC(record: model)) + } } func siManager(_ manager: JoyGemSIManager, stateChange code: JoyGemStateCode) { diff --git a/ShenYin/ShenYin/UI/Home/Root/HomeFunctionView.swift b/ShenYin/ShenYin/UI/Home/Root/HomeFunctionView.swift index 19b62ff..5e0b350 100644 --- a/ShenYin/ShenYin/UI/Home/Root/HomeFunctionView.swift +++ b/ShenYin/ShenYin/UI/Home/Root/HomeFunctionView.swift @@ -187,7 +187,12 @@ class HomeCell: BaseView { case .fileRecord: App.shared.goToPage(FieldRecordingVC()) case .callRecord: - App.shared.goToPage(CallingRecordVC()) + if JoySdkManager.shared.supportStereo{ + App.shared.goToPage(StereoCallVC()) + } + else{ + App.shared.goToPage(CallingRecordVC()) + } case .chinese2English: App.shared.goToPage(Chinese2EnglishVC()) case .recordTranslate: diff --git a/ShenYin/ShenYin/UI/Home/StereoCallVC.swift b/ShenYin/ShenYin/UI/Home/StereoCallVC.swift new file mode 100644 index 0000000..9628e2e --- /dev/null +++ b/ShenYin/ShenYin/UI/Home/StereoCallVC.swift @@ -0,0 +1,311 @@ +// +// StereoCallVC.swift +// ShenYin +// +// Created by liangshi on 2025/11/26. +// + +import UIKit +import JoyGemAI +import AVFAudio +class StereoCallVC:BaseVC{ + let toolBar = FieldRecordBar() + let line = UIView() + let selfTextView = UITextView() + let otherTextView = UITextView() + private let selfLabel = DotLabel() + private let otherLabel = DotLabel() + let rhythView = RhythView() + var selfMessageList : [(String,UInt)] = [] + var otherMessageList : [(String,UInt)] = [] + var recordFilePath : String? + + var autoStart = false + + init(autoStart :Bool = false) { + self.autoStart = autoStart + super.init() + } + override func viewDidLoad() { + super.viewDidLoad() + } + override func setupViews() { + navBar.title = "通话录音".l10n + navBar.backgroundColor = .white + + + toolBar.do { v in + v.delegate = self + v.hasRightItem = false + v.leftItem.language = AiLanguageCache.get(type: .thly) ?? .chinse +// v.backgroundColor = .red + } + + + view.backgroundColor = .white +// rhythView.backgroundColor = .blue + selfTextView.do { v in + v.backgroundColor = .white + v.isEditable = false + v.font = .regular(14) + v.text = "" + v.textColor = .hexString("#121212") + v.contentInset = UIEdgeInsets(top: 0, left: 13, bottom: 0, right: 13) +// v.backgroundColor = .green + } + otherTextView.do { v in + v.backgroundColor = .white + v.isEditable = false + v.font = .regular(14) + v.text = "" + v.textColor = .hexString("#121212") + v.contentInset = UIEdgeInsets(top: 0, left: 13, bottom: 0, right: 13) +// v.backgroundColor = .yellow + } + line.do { v in + v.backgroundColor = .hexString("#E9E9E9") + } + selfLabel.do { v in + v.label.text = "你:" + v.label.textColor = .hexString("#B9B9B9") + v.dot.backgroundColor = v.label.textColor +// v.backgroundColor = .red + } + otherLabel.do { v in + v.label.text = "对方:" + v.label.textColor = .hexString("#0092E1") + v.dot.backgroundColor = v.label.textColor +// v.backgroundColor = .red + } + view.addSubviews([rhythView,selfTextView,otherTextView,toolBar,line,selfLabel,otherLabel]) + + } + override func setupLayout() { + rhythView.snp.makeConstraints { make in + make.width.centerX.equalToSuperview() + make.top.equalToSuperview().inset(kNavBtm) + make.height.equalTo(110) + } + toolBar.snp.makeConstraints { make in + make.width.centerX.equalToSuperview() + make.height.equalTo(120) + make.bottom.equalToSuperview().inset(20) + } + selfLabel.snp.makeConstraints { make in + make.height.equalTo(16) + make.left.right.equalToSuperview() + make.top.equalToSuperview().inset(kNavBtm + 120) + } + selfTextView.snp.makeConstraints { make in + make.top.equalTo(selfLabel.snp.bottom) + make.left.right.equalToSuperview() + make.height.equalTo((kScreenHei - kNavBtm - 120 - 140 - 25 - 32)/2) + } + line.snp.makeConstraints { make in + make.left.right.equalToSuperview().inset(36) + make.height.equalTo(1) + make.top.equalTo(selfTextView.snp.bottom).offset(12) + } + otherLabel.snp.makeConstraints { make in + make.height.equalTo(16) + make.left.right.equalToSuperview() + make.top.equalTo(line.snp.bottom).offset(12) + } + otherTextView.snp.makeConstraints { make in + make.height.equalTo(selfTextView) + make.left.right.equalToSuperview() + make.top.equalTo(otherLabel.snp.bottom) + } + + } + override func setupData() { + JoyGemCallManager.shared().delegate = self + JoyGemCallManager.shared().stereoDelegate = self + if autoStart{ + startRecord() + } + } + + override func viewDidAppear(_ animated: Bool) { + super.viewDidAppear(animated) + navigationController?.fd_fullscreenPopGestureRecognizer?.isEnabled = false + } + override func viewDidDisappear(_ animated: Bool) { + super.viewDidDisappear(animated) + navigationController?.fd_fullscreenPopGestureRecognizer?.isEnabled = true + } + override func navleftViewTapped() { + if toolBar.recordBtn.isSelected { + CustomAlert.showWith(title: "提示".l10n, messgage: "当前正在录音,确定放弃当前录音吗?".l10n, cancelCallback: {}) {[unowned self] in + self.rhythView.stopTimer() + JoyGemCallManager.shared().stop() + PcmSound.sharedInstance().stopAudioUnit() + PcmSound.sharedInstance().cleanup() + self.navigationController?.popViewController(animated: true) + } + } + else{ + super.navleftViewTapped() + } + } + func startRecord(){ + toolBar.recordBtnAction() + } + func stopRecord(){ + toolBar.recordBtnAction() + } +} + +extension StereoCallVC:FieldRecordBarDelegate{ + func fieldRecordBar(_ bar: FieldRecordBar, languageChange language: AiSupportLanguage) { + JoyGemCallManager.shared().originalLanguage = language.value + AiLanguageCache.save(type: .thly, lan: language) + } + + func fieldRecordBar(_ bar: FieldRecordBar, stateChange state: RecordSate) { + if state == .start { + selfMessageList.removeAll() + otherMessageList.removeAll() + selfTextView.text = nil + otherTextView.text = nil + JoyGemCallManager.shared().start() + rhythView.startTimer() + } + else if state == .stop{ + stopAction() + } + } + func stopAction(){ + rhythView.stopTimer() + JoyGemCallManager.shared().stop() + toolBar.startAnimating() + } + func gotoDetail( fileName:String,wavPath:String,language:AiSupportLanguage){ + let model = RecordDetailModel() + model.type = .phone + model.from = language + model.to = .english + model.name = fileName + model.path = wavPath + model.duration = YLToos.getDuration(model.path) + model.origin = "你:".l10n + "\n" + selfTextView.text + "\n\n" + "对方:".l10n + "\n" + otherTextView.text + model.translate = "" + App.shared.popPage(animated: false) + App.shared.goToPage(RecordDetailVC(record: model)) + } +} +extension StereoCallVC : JoyGemCallManagerDelegate { + + func callManagerStopped(_ manager: JoyGemCallManager, reason code: JoyGemRecordStopCode) { + if (code == .actively) { + Logger.debug( "用户主动结束") + } else { + Logger.debug( "自动结束") + stopAction() + } + } + + func callManagerNotonCall(_ manager: JoyGemCallManager) { + YLprogressHUD.showAutoHiden("未处于通话状态".l10n) + rhythView.reset() + toolBar.recordBtn.isSelected = false + toolBar.leftItem.alpha = 1 + } + + func callManager(_ manager: JoyGemCallManager, saveFile path: String) { + Logger.debug("path: \(path)") + recordFilePath = path + guard let path = recordFilePath,let wavPath = DCFolder.recordFileResave(srcPath: path) else{return} + let v = PopTextField() + v.show() + v.cancelTap = { + App.shared.popPage() + } + v.okTap = { [weak self] text in + guard let self = self else{return} + gotoDetail(fileName: text, wavPath: wavPath, language: toolBar.leftItem.language) + } + } + + func callManager(_ manager: JoyGemCallManager, stateChange code: JoyGemStateCode) { + Logger.debug("code: \(code)") + } + + func callManager(_ manager: JoyGemCallManager, onError code: JoyGemErrorCode) { + + } +} + +extension StereoCallVC:JoyGemCallStereoDelegate{ + func callManager(_ manager: JoyGemCallManager, didUpdateStereoAsr model: JoyGemAsrModel, channel index: UInt) { + debugPrint("text: \(model.text),index: \(model.index)") + if (index == 1) { + let msg = self.selfMessageList.firstIndex (where: { (str,idx) in + return idx == model.index; + }) + if (msg == nil) { + selfMessageList.append((model.text,model.index)) + } else { + selfMessageList[msg!] = (model.text,model.index) + } + + selfTextView.text = selfMessageList.compactMap({ (str,idx) in + return str + }).joined(separator: "\n") + selfTextView.scrollToBottom() + } else if (index == 2) { + let msg = otherMessageList.firstIndex (where: { (str,idx) in + return idx == model.index; + }) + if (msg == nil) { + otherMessageList.append((model.text,model.index)) + } else { + otherMessageList[msg!] = (model.text,model.index) + } + + otherTextView.text = otherMessageList.compactMap({ (str,idx) in + return str + }).joined(separator: "\n") + otherTextView.scrollToBottom() + } + } + + func callManager(_ manager: JoyGemCallManager, stereoIntensity lists: [[NSNumber]], timestamp: TimeInterval) { +// selfIntensitiesView.intensities = lists[0].map{ num in +// num.doubleValue +// } +// otherIntensitiesView.intensities = lists[1].map{ num in +// num.doubleValue +// } + } + +} + +fileprivate class DotLabel:BaseView{ + let dot = UIView() + let label = UILabel() + + override func setupViews() { + addSubviews([dot,label]) + dot.do { v in + v.yc.setCornerRadius(3) + v.backgroundColor = .hexString("#B9B9B9") + } + label.do { v in + v.font = .regular(12) + } + } + override func setupLayout() { + dot.snp.makeConstraints { make in + make.size.equalTo(6) + make.left.equalToSuperview().inset(18) + make.centerY.equalToSuperview() + } + label.snp.makeConstraints { make in + make.left.equalToSuperview().inset(28) + make.centerY.equalToSuperview() + make.right.equalToSuperview().inset(36) + } + } + +} diff --git a/ShenYin/ShenYin/UI/common/LoadingButton.swift b/ShenYin/ShenYin/UI/common/LoadingButton.swift index 1c9f657..93ab386 100644 --- a/ShenYin/ShenYin/UI/common/LoadingButton.swift +++ b/ShenYin/ShenYin/UI/common/LoadingButton.swift @@ -22,14 +22,19 @@ class LoadingButton:UIButton{ required init?(coder: NSCoder) { fatalError("init(coder:) has not been implemented") } - func startAnimating(finished:(()->Void)? = nil){ +// func startAnimating(finished:(()->Void)? = nil){ +// loading = true +// activeView.backgroundColor = .white +// activeView.startAnimating() +// DispatchQueue.main.asyncAfter(deadline:.now() + 3) { +// self.stopAnimating() +// finished?() +// } +// } + func startAnimating(){ loading = true activeView.backgroundColor = .white activeView.startAnimating() - DispatchQueue.main.asyncAfter(deadline:.now() + 2) { - self.stopAnimating() - finished?() - } } func stopAnimating(){ loading = false diff --git a/ShenYin/ShenYin/UI/common/PlaceHolderTextView.swift b/ShenYin/ShenYin/UI/common/PlaceHolderTextView.swift index 7b4c6d0..cca0fea 100644 --- a/ShenYin/ShenYin/UI/common/PlaceHolderTextView.swift +++ b/ShenYin/ShenYin/UI/common/PlaceHolderTextView.swift @@ -66,11 +66,6 @@ class PlaceHolderTextView: BaseView { make.edges.equalToSuperview() } } - - func scrollToBottom(){ - let range = NSMakeRange(textView.text.count - 1, 1) - textView.scrollRangeToVisible(range) - } } class PlaceHolderTextView2: BaseView,UITextViewDelegate { let bgView = UIView() diff --git a/ShenYin/ShenYin/lan/Arabic.swift b/ShenYin/ShenYin/lan/Arabic.swift index f180f87..4a069ee 100644 --- a/ShenYin/ShenYin/lan/Arabic.swift +++ b/ShenYin/ShenYin/lan/Arabic.swift @@ -245,4 +245,7 @@ let arabicMap:[String:String] = "请确保智能设备已连接电源,且位于手机附近":"يرجى التأكد من توصيل الجهاز الذكي بالطاقة وموضعه بالقرب من الهاتف المحمول", "重新扫描":"مسح مرة أخرى", "未发现设备":"لم يتم العثور على الجهاز", + "未处于通话状态":"ليست في حالة المكالمة", + "ä½ ":"أنت", + "对方":"الطرف الآخر", ] diff --git a/ShenYin/ShenYin/lan/Filipino.swift b/ShenYin/ShenYin/lan/Filipino.swift index 6f887f0..d98e230 100644 --- a/ShenYin/ShenYin/lan/Filipino.swift +++ b/ShenYin/ShenYin/lan/Filipino.swift @@ -245,4 +245,7 @@ let filipinoMap:[String:String] = "请确保智能设备已连接电源,且位于手机附近":"Siguraduhin na ang intelihenteng device ay nakakonekta sa kuryente, at nasa malapit sa cellphone", "重新扫描":"I-scan Muli", "未发现设备":"Walang Nahanap na Device", + "未处于通话状态":"Hindi nasa estado ng tawag", + "ä½ ":"Ikaw", + "对方":"Kontrahan", ] diff --git a/ShenYin/ShenYin/lan/German.swift b/ShenYin/ShenYin/lan/German.swift index cc72936..6e508f1 100644 --- a/ShenYin/ShenYin/lan/German.swift +++ b/ShenYin/ShenYin/lan/German.swift @@ -245,4 +245,7 @@ let germanMap:[String:String] = "请确保智能设备已连接电源,且位于手机附近":"Stellen Sie sicher, dass das intelligente Gerät angeschlossen ist und sich in der Nähe des Handys befindet", "重新扫描":"Erneut scannen", "未发现设备":"Kein Gerät gefunden", + "未处于通话状态":"Nicht in einem Anruf", + "ä½ ":"Du", // 日常交互场景用 "Du",正式场景可替换为 "Sie" + "对方":"Die andere Partei", ] diff --git a/ShenYin/ShenYin/lan/TraditionalChinese.swift b/ShenYin/ShenYin/lan/TraditionalChinese.swift index e25306e..d7479f7 100644 --- a/ShenYin/ShenYin/lan/TraditionalChinese.swift +++ b/ShenYin/ShenYin/lan/TraditionalChinese.swift @@ -246,4 +246,7 @@ let chineseTraditionalMap:[String:String] = "请确保智能设备已连接电源,且位于手机附近":"請確保智能設備已連接電源,且位於手機附近", "重新扫描":"重新掃描", "未发现设备":"未發現設備", + "未处于通话状态":"未處於通話狀態", + "ä½ ":"ä½ ", // 繁体中文通用表述,若需更口语化可使用"ä½ "(与简体一致,繁体书写无差异) + "对方":"對方", ] diff --git a/ShenYin/ShenYin/lan/Vietnam.swift b/ShenYin/ShenYin/lan/Vietnam.swift index dcf3c0c..f6abf18 100644 --- a/ShenYin/ShenYin/lan/Vietnam.swift +++ b/ShenYin/ShenYin/lan/Vietnam.swift @@ -245,4 +245,7 @@ let vietnameseMap:[String:String] = "请确保智能设备已连接电源,且位于手机附近":"Vui lòng đảm bảo thiết bị thông minh đã kết nối nguồn điện và nằm gần điện thoại", "重新扫描":"Quét lại", "未发现设备":"Không tìm thấy thiết bị", + "未处于通话状态":"Không trong trạng thái cuộc gọi", + "ä½ ":"Bạn", + "对方":"Đối phương", ] diff --git a/ShenYin/ShenYin/lan/chinese.swift b/ShenYin/ShenYin/lan/chinese.swift index 226e270..69217e9 100644 --- a/ShenYin/ShenYin/lan/chinese.swift +++ b/ShenYin/ShenYin/lan/chinese.swift @@ -247,5 +247,8 @@ let chineseMap:[String:String] = "请确保智能设备已连接电源,且位于手机附近":"", "重新扫描":"", "未发现设备":"", + "未处于通话状态":"", + "ä½ ":"", + "对方":"", ] diff --git a/ShenYin/ShenYin/lan/english.swift b/ShenYin/ShenYin/lan/english.swift index 0cf11c0..3a6818d 100644 --- a/ShenYin/ShenYin/lan/english.swift +++ b/ShenYin/ShenYin/lan/english.swift @@ -246,4 +246,7 @@ let englishMap:[String:String] = "请确保智能设备已连接电源,且位于手机附近":"Please ensure the smart device is powered on and near the phone", "重新扫描":"Rescan", "未发现设备":"No device found", + "未处于通话状态":"Not in a call", + "ä½ ":"You", + "对方":"The other party", ] diff --git a/ShenYin/ShenYin/lan/french.swift b/ShenYin/ShenYin/lan/french.swift index 896f7a4..0b84b20 100644 --- a/ShenYin/ShenYin/lan/french.swift +++ b/ShenYin/ShenYin/lan/french.swift @@ -246,4 +246,7 @@ let frenchMap:[String:String] = "请确保智能设备已连接电源,且位于手机附近":"Veuillez vous assurer que l'appareil intelligent est branché et à proximité du téléphone", "重新扫描":"Rescanner", "未发现设备":"Aucun appareil trouvé", + "未处于通话状态":"Pas en appel", + "ä½ ":"Tu", // 日常交互场景用 "Tu",正式场景可替换为 "Vous" + "对方":"L'autre partie", ] diff --git a/ShenYin/ShenYin/lan/indonesian.swift b/ShenYin/ShenYin/lan/indonesian.swift index 70bb0a2..1489054 100644 --- a/ShenYin/ShenYin/lan/indonesian.swift +++ b/ShenYin/ShenYin/lan/indonesian.swift @@ -246,4 +246,7 @@ let indonesianMap:[String:String] = "请确保智能设备已连接电源,且位于手机附近":"Silakan pastikan perangkat cerdas terhubung ke daya dan berada di dekat ponsel", "重新扫描":"Scan Ulang", "未发现设备":"Perangkat Tidak Ditemukan", + "未处于通话状态":"Tidak dalam panggilan", + "ä½ ":"Kamu", // 日常交互场景,正式场景可替换为 "Anda" + "对方":"Pihak lain", ] diff --git a/ShenYin/ShenYin/lan/japanese.swift b/ShenYin/ShenYin/lan/japanese.swift index b7b4f5f..7c74acb 100644 --- a/ShenYin/ShenYin/lan/japanese.swift +++ b/ShenYin/ShenYin/lan/japanese.swift @@ -246,4 +246,7 @@ let japaneseMap:[String:String] = "请确保智能设备已连接电源,且位于手机附近":"スマートデバイスが電源に接続され、携帯電話の近くにあることを確認してください", "重新扫描":"再スキャン", "未发现设备":"デバイスが見つかりません", + "未处于通话状态":"通話中ではない", + "ä½ ":"あなた", + "对方":"相手", ] diff --git a/ShenYin/ShenYin/lan/korean.swift b/ShenYin/ShenYin/lan/korean.swift index 849e175..e77f58a 100644 --- a/ShenYin/ShenYin/lan/korean.swift +++ b/ShenYin/ShenYin/lan/korean.swift @@ -246,4 +246,7 @@ let koreanMap:[String:String] = "请确保智能设备已连接电源,且位于手机附近":"지능형 장치가 전원에 연결되어 있고 휴대폰 근처에 있는지 확인하세요", "重新扫描":"다시 스캔", "未发现设备":"장치를 찾을 수 없음", + "未处于通话状态":"통화 중이 아님", + "ä½ ":"당신", + "对方":"상대방", ] diff --git a/ShenYin/ShenYin/lan/malay.swift b/ShenYin/ShenYin/lan/malay.swift index bebfc1e..983f80b 100644 --- a/ShenYin/ShenYin/lan/malay.swift +++ b/ShenYin/ShenYin/lan/malay.swift @@ -245,4 +245,7 @@ let malayMap:[String:String] = "请确保智能设备已连接电源,且位于手机附近":"Sila pastikan peranti pintar disambungkan kepada kuasa dan berada berhampiran telefon", "重新扫描":"Scan Semula", "未发现设备":"Peranti Tidak Ditemui", + "未处于通话状态":"Tidak dalam panggilan", + "ä½ ":"Awak", // 日常交互场景,正式场景可替换为 "Anda" + "对方":"Pihak satu lagi", ] diff --git a/ShenYin/ShenYin/lan/russian.swift b/ShenYin/ShenYin/lan/russian.swift index cf4aef1..b994b77 100644 --- a/ShenYin/ShenYin/lan/russian.swift +++ b/ShenYin/ShenYin/lan/russian.swift @@ -246,4 +246,7 @@ let russianMap:[String:String] = "请确保智能设备已连接电源,且位于手机附近":"Пожалуйста, убедитесь, что интеллектуальное устройство подключено к электропитанию и находится поблизости от телефона", "重新扫描":"Повторное сканирование", "未发现设备":"Устройство не найдено", + "未处于通话状态":"Не в звонке", + "ä½ ":"Ты", // 日常交互场景,正式场景可替换为 "Вы" + "对方":"Другая сторона", ] diff --git a/ShenYin/ShenYin/lan/spanish.swift b/ShenYin/ShenYin/lan/spanish.swift index 0c25836..d70555b 100644 --- a/ShenYin/ShenYin/lan/spanish.swift +++ b/ShenYin/ShenYin/lan/spanish.swift @@ -245,4 +245,7 @@ let spanishMap:[String:String] = "请确保智能设备已连接电源,且位于手机附近":"Por favor, asegúrate de que el dispositivo inteligente esté conectado a la fuente de energía y cerca del teléfono", "重新扫描":"Escanear nuevamente", "未发现设备":"No se encontró el dispositivo", + "未处于通话状态":"No en llamada", + "ä½ ":"Tú", // 日常交互场景用 "Tú",正式场景可替换为 "Usted" + "对方":"La otra parte", ] diff --git a/ShenYin/ShenYin/lan/thai.swift b/ShenYin/ShenYin/lan/thai.swift index 042221b..4fd0998 100644 --- a/ShenYin/ShenYin/lan/thai.swift +++ b/ShenYin/ShenYin/lan/thai.swift @@ -245,4 +245,7 @@ let thaiMap:[String:String] = "请确保智能设备已连接电源,且位于手机附近":"โปรดตรวจสอบให้แน่ใจว่าอุปกรณ์ชาญฉลาดเชื่อมต่อแหล่งจ่ายไฟ และอยู่ใกล้โทรศัพท์มือถือ", "重新扫描":"สแกนอีกครั้ง", "未发现设备":"ไม่พบอุปกรณ์", + "未处于通话状态":"ไม่อยู่ในสถานะการโทรศัพท์", + "ä½ ":"คุณ", + "对方":"ฝ่ายตรงข้าม", ] diff --git a/document/DeepChordsSdk_iOS/DeepChordsSdk/DeepChordsSdk/DeepChordsSdk.xcodeproj/project.pbxproj b/document/DeepChordsSdk_iOS/DeepChordsSdk/DeepChordsSdk/DeepChordsSdk.xcodeproj/project.pbxproj index f9b7bb9..2251754 100644 --- a/document/DeepChordsSdk_iOS/DeepChordsSdk/DeepChordsSdk/DeepChordsSdk.xcodeproj/project.pbxproj +++ b/document/DeepChordsSdk_iOS/DeepChordsSdk/DeepChordsSdk/DeepChordsSdk.xcodeproj/project.pbxproj @@ -6,13 +6,24 @@ objectVersion = 77; objects = { +/* Begin PBXBuildFile section */ + 3F3F136C2ED5A22E0038A1C8 /* StarburstSdk.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3F3F136B2ED5A22E0038A1C8 /* StarburstSdk.framework */; }; + D73D7454A559775C8509DED8 /* Pods_DeepChordsSdk.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7D18BA322C9EA11864268108 /* Pods_DeepChordsSdk.framework */; }; +/* End PBXBuildFile section */ + /* Begin PBXFileReference section */ + 17B96CE5C2D98C0ADD6178A2 /* Pods-DeepChordsSdk.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-DeepChordsSdk.debug.xcconfig"; path = "Target Support Files/Pods-DeepChordsSdk/Pods-DeepChordsSdk.debug.xcconfig"; sourceTree = ""; }; 3F3F01C92ED44F730038A1C8 /* DeepChordsSdk.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = DeepChordsSdk.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 3F3F136B2ED5A22E0038A1C8 /* StarburstSdk.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = StarburstSdk.framework; sourceTree = ""; }; + 6EE04442B3D4D41107912962 /* Pods-DeepChordsSdk.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-DeepChordsSdk.release.xcconfig"; path = "Target Support Files/Pods-DeepChordsSdk/Pods-DeepChordsSdk.release.xcconfig"; sourceTree = ""; }; + 7D18BA322C9EA11864268108 /* Pods_DeepChordsSdk.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_DeepChordsSdk.framework; sourceTree = BUILT_PRODUCTS_DIR; }; /* End PBXFileReference section */ /* Begin PBXFileSystemSynchronizedRootGroup section */ 3F3F01CB2ED44F730038A1C8 /* DeepChordsSdk */ = { isa = PBXFileSystemSynchronizedRootGroup; + exceptions = ( + ); path = DeepChordsSdk; sourceTree = ""; }; @@ -23,17 +34,32 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 3F3F136C2ED5A22E0038A1C8 /* StarburstSdk.framework in Frameworks */, + D73D7454A559775C8509DED8 /* Pods_DeepChordsSdk.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ + 307CE89A03DD9FBA70338107 /* Pods */ = { + isa = PBXGroup; + children = ( + 17B96CE5C2D98C0ADD6178A2 /* Pods-DeepChordsSdk.debug.xcconfig */, + 6EE04442B3D4D41107912962 /* Pods-DeepChordsSdk.release.xcconfig */, + ); + name = Pods; + path = ../Pods; + sourceTree = ""; + }; 3F3F01BF2ED44F730038A1C8 = { isa = PBXGroup; children = ( + 3F3F136B2ED5A22E0038A1C8 /* StarburstSdk.framework */, 3F3F01CB2ED44F730038A1C8 /* DeepChordsSdk */, 3F3F01CA2ED44F730038A1C8 /* Products */, + 307CE89A03DD9FBA70338107 /* Pods */, + 4BB8E763A1CE0D92C14AFAA9 /* Frameworks */, ); sourceTree = ""; }; @@ -45,6 +71,14 @@ name = Products; sourceTree = ""; }; + 4BB8E763A1CE0D92C14AFAA9 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 7D18BA322C9EA11864268108 /* Pods_DeepChordsSdk.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; /* End PBXGroup section */ /* Begin PBXHeadersBuildPhase section */ @@ -62,6 +96,7 @@ isa = PBXNativeTarget; buildConfigurationList = 3F3F01D02ED44F730038A1C8 /* Build configuration list for PBXNativeTarget "DeepChordsSdk" */; buildPhases = ( + 462F2EA8BC431272853A0953 /* [CP] Check Pods Manifest.lock */, 3F3F01C42ED44F730038A1C8 /* Headers */, 3F3F01C52ED44F730038A1C8 /* Sources */, 3F3F01C62ED44F730038A1C8 /* Frameworks */, @@ -75,8 +110,6 @@ 3F3F01CB2ED44F730038A1C8 /* DeepChordsSdk */, ); name = DeepChordsSdk; - packageProductDependencies = ( - ); productName = DeepChordsSdk; productReference = 3F3F01C92ED44F730038A1C8 /* DeepChordsSdk.framework */; productType = "com.apple.product-type.framework"; @@ -125,6 +158,31 @@ }; /* End PBXResourcesBuildPhase section */ +/* Begin PBXShellScriptBuildPhase section */ + 462F2EA8BC431272853A0953 /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-DeepChordsSdk-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; +/* End PBXShellScriptBuildPhase section */ + /* Begin PBXSourcesBuildPhase section */ 3F3F01C52ED44F730038A1C8 /* Sources */ = { isa = PBXSourcesBuildPhase; @@ -263,6 +321,7 @@ }; 3F3F01D12ED44F730038A1C8 /* Debug */ = { isa = XCBuildConfiguration; + baseConfigurationReference = 17B96CE5C2D98C0ADD6178A2 /* Pods-DeepChordsSdk.debug.xcconfig */; buildSettings = { BUILD_LIBRARY_FOR_DISTRIBUTION = YES; CODE_SIGN_STYLE = Automatic; @@ -271,6 +330,11 @@ DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; ENABLE_MODULE_VERIFIER = YES; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)/DeepChordsSdk", + "$(PROJECT_DIR)", + ); GENERATE_INFOPLIST_FILE = YES; INFOPLIST_KEY_NSHumanReadableCopyright = ""; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; @@ -298,6 +362,7 @@ }; 3F3F01D22ED44F730038A1C8 /* Release */ = { isa = XCBuildConfiguration; + baseConfigurationReference = 6EE04442B3D4D41107912962 /* Pods-DeepChordsSdk.release.xcconfig */; buildSettings = { BUILD_LIBRARY_FOR_DISTRIBUTION = YES; CODE_SIGN_STYLE = Automatic; @@ -306,6 +371,11 @@ DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; ENABLE_MODULE_VERIFIER = YES; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)/DeepChordsSdk", + "$(PROJECT_DIR)", + ); GENERATE_INFOPLIST_FILE = YES; INFOPLIST_KEY_NSHumanReadableCopyright = ""; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; diff --git a/document/DeepChordsSdk_iOS/DeepChordsSdk/DeepChordsSdk/DeepChordsSdk/DCBleManager.swift b/document/DeepChordsSdk_iOS/DeepChordsSdk/DeepChordsSdk/DeepChordsSdk/DCBleManager.swift index b2cf2d2..c999b27 100644 --- a/document/DeepChordsSdk_iOS/DeepChordsSdk/DeepChordsSdk/DeepChordsSdk/DCBleManager.swift +++ b/document/DeepChordsSdk_iOS/DeepChordsSdk/DeepChordsSdk/DeepChordsSdk/DCBleManager.swift @@ -20,6 +20,12 @@ public class DCBleManager{ connectPeripheral.writeValue(sender.data, for: writeCha, type:.withoutResponse) } } + func sendToStarburst(_ data:Data){ + if let connectPeripheral = connectPeripheral, let writeCha = writeCha { + Logger.debug("发送数据 = ",writeCha.uuid.uuidString,data.joined()) + connectPeripheral.writeValue(data, for: writeCha, type:.withoutResponse) + } + } } public extension DCBleManager{ diff --git a/document/DeepChordsSdk_iOS/DeepChordsSdk/DeepChordsSdk/DeepChordsSdk/DeepChordsAiSdk.swift b/document/DeepChordsSdk_iOS/DeepChordsSdk/DeepChordsSdk/DeepChordsSdk/DeepChordsAiSdk.swift new file mode 100644 index 0000000..0586f1c --- /dev/null +++ b/document/DeepChordsSdk_iOS/DeepChordsSdk/DeepChordsSdk/DeepChordsSdk/DeepChordsAiSdk.swift @@ -0,0 +1,68 @@ +// +// DeepChords.swift +// DeepChordsSdk +// +// Created by liangshi on 2025/11/25. +// +import Foundation +import StarburstSdk +public class DeepChordsAiSdk{ + public static let shared = DeepChordsAiSdk() + + + + public func initSDK(){ +// StarburstConfig.shared().switch(to: .ble) +// StarburstConfig.shared().appId = "app_ro4n4nwljr20kwqo" +// //MARK: 配置缓存路径 +// StarburstConfig.shared().sdkFolder = NSTemporaryDirectory() +// StarburstConfig.shared().isDebug = true +// StarburstConfig.shared().enableTextSyncToDevice = true +// StarburstConfig.shared().enableEmotionSyncToDevice = true +// StarburstConfig.shared().enableEarbudsSwitchSync = true + + //切换sdk + StarburstConfig.shared().switch(to: .ble) + //设置appid + StarburstConfig.shared().appId = "app_ro4n4nwljr20kwqo" + //debug模式会打印日志 + StarburstConfig.shared().isDebug = true + // sdk缓存路径 + StarburstConfig.shared().sdkFolder = NSHomeDirectory() + "/Documents/AiSdk" + // 日志路径 + StarburstConfig.shared().logPath = logPath() + // //是否下发文字到耳机仓 + // StarburstConfig.shared().enableTextSyncToDevice = true; + // //主从耳机切换是否同步sdk信息到耳机 + // StarburstConfig.shared().enableEarbudsSwitchSync = true; + // //耳机仓表情下发开关 + // StarburstConfig.shared().enableEmotionSyncToDevice = true; + //添加调试信息 + StarburstConfig.shared().debugInfo = [ + "x-use-ppe":"1", + "x-tt-env": "ppe_tischarge_test", + ] + // voicechat配置 + StarburstConfig.shared().user_custom_prompt_init = "1.用户位置在上海市杨浦区。2.用户名称叫小明。" + + StarburstSdk.shared().authCallback = {[weak self] (code,msg) in + + } + //sdk发给蓝牙设备 + StarburstSdk.shared().sendToBleCallback = {data in + guard let data = data else {return} + DCBleManager.shared.sendToStarburst(data) + } + StarburstSdk.shared().bleRecordStateCallback = {[weak self] state in + + } + } + + func logPath()->String{ + let format = DateFormatter() + format.dateFormat = "yyyyMMddHHmmss" + let text = format.string(from: Date()) + return NSHomeDirectory() + "/Documents/\(text).log" + } + +} diff --git a/document/DeepChordsSdk_iOS/DeepChordsSdk/Example/DeepChordsSdk/Any.swift b/document/DeepChordsSdk_iOS/DeepChordsSdk/Example/DeepChordsSdk/Any.swift new file mode 100644 index 0000000..9ecfd13 --- /dev/null +++ b/document/DeepChordsSdk_iOS/DeepChordsSdk/Example/DeepChordsSdk/Any.swift @@ -0,0 +1,194 @@ +// +// Untitled.swift +// DeepChordsSdk +// +// Created by liangshi on 2025/11/25. +// + +import Foundation + +/// 判断可选类型是否为 nil +func isNil(_ any: Any?) -> Bool { + switch any { + case .none: return true + case .some: return false + } +} + +/// 判断可选类型是否有值 +func isValue(_ any: Any?) -> Bool { + return isNil(any) == false +} + +/// for Array +func isEmpty(_ value: [Any]?) -> Bool { + return isNil(value) || value!.count == 0 +} + +/// for Array +func isNotEmpty(_ value: [Any]?) -> Bool { + return isEmpty(value) == false +} + +/// for Dictionary +func isEmpty(_ value: [AnyHashable: Any]?) -> Bool { + return isNil(value) || value!.count == 0 +} + +/// for Dictionary +func isNotEmpty(_ value: [AnyHashable: Any]?) -> Bool { + return isEmpty(value) == false +} + +/// for String +func isEmpty(_ value: String?) -> Bool { + return isNil(value) || value!.count == 0 +} + +/// for String +func isNotEmpty(_ value: String?) -> Bool { + return isEmpty(value) == false +} + +public extension String { + + /// 补足8位(长度为8的整数倍) + var binary: String { + let bytes = (Double(count) / 8.0).upInt + let offset = bytes * 8 - count + let prefix = Array(repeating: "0", count: offset).joined() + return prefix + self + } +} + +public extension Double { + var upInt: Int { Int(ceil(self)) } +} + +public extension Int { + private static let binaryPack = 0b11111111 + + /// convert to data with byte (max is 4294967295) + /// + /// 低位 --> 高位 + var bytes: [UInt8] { + var mutatingSelf = self + var bytes = [UInt8(mutatingSelf & Self.binaryPack)] + + var count = 1 + mutatingSelf = mutatingSelf >> (count * 8) + while mutatingSelf > 0 { + bytes.append(UInt8(mutatingSelf & Self.binaryPack)) + mutatingSelf = mutatingSelf >> (count * 8) + count = count + 1 + } + return bytes + } + + /// convert to data with 1 byte + var byte: UInt8 { + UInt8(self & Self.binaryPack) + } + + /// convert to data with 2 byte + /// + /// 低位 --> 高位 + var byte2: [UInt8] { + [ + UInt8(self & Self.binaryPack), + UInt8(self >> 8 & Self.binaryPack) + ] + } + + /// convert to data with 3 byte + /// + /// 低位 --> 高位 + var byte3: [UInt8] { + [ + UInt8(self & Self.binaryPack), + UInt8(self >> 8 & Self.binaryPack), + UInt8(self >> 16 & Self.binaryPack) + ] + } + + /// convert to data with 4 byte + /// + /// 低位 --> 高位 + var byte4: [UInt8] { + [ + UInt8(self & Self.binaryPack), + UInt8(self >> 8 & Self.binaryPack), + UInt8(self >> 16 & Self.binaryPack), + UInt8(self >> 24 & Self.binaryPack) + ] + } +} + +public extension BinaryInteger { + + /// e.g. 0000100110010101 + var binaryString: String { + .init(self, radix: 2).binary + } +} + +public extension Array where Element == UInt8 { + + var int: Int { + self + .map { Int($0) } + .enumerated() + .map { $1 << ($0 * 8) } + .reduce(0, { partialResult, value in + partialResult | value + }) + } + + var data: Data { Data(self) } +} + +public extension Data { + + func joined(format: String = "%02x", _ separator: String = "") -> String { + self + .map { String(format: format, $0) } + .joined(separator: separator) + } + + func reversedJoined(format: String = "%02x", _ separator: String = "") -> String { + self + .map { String(format: format, $0) } + .reversed() + .joined(separator: separator) + } + + var int: Int { + self + .map { Int($0) } + .enumerated() + .map { $1 << ($0 * 8) } + .reduce(0, { partialResult, value in + partialResult | value + }) + } + +} + +public extension UInt8 { + var int: Int { Int(self) } +} + + +extension Data{ + var float: Float { + var floatValue: Float = 0.0 + let size = MemoryLayout.size + guard self.count >= size else { return 0 } + + self.withUnsafeBytes { (buffer: UnsafeRawBufferPointer) -> Void in + _ = memcpy(&floatValue, buffer.baseAddress!, size) + } + + return floatValue + } +} diff --git a/document/DeepChordsSdk_iOS/DeepChordsSdk/Example/DeepChordsSdk/BleSender.swift b/document/DeepChordsSdk_iOS/DeepChordsSdk/Example/DeepChordsSdk/BleSender.swift new file mode 100644 index 0000000..d39a40d --- /dev/null +++ b/document/DeepChordsSdk_iOS/DeepChordsSdk/Example/DeepChordsSdk/BleSender.swift @@ -0,0 +1,125 @@ +// +// BleSender.swift +// DeepChordsSdk +// +// Created by liangshi on 2025/11/25. +// + +import Foundation + +class BleSender{ + var completion: DCCompletionHandler! + var data = Data() + + static var all: [BleSender] = [] + + init() { + Self.all.append(self) + startTimer() + } + var timer: Timer? + func startTimer() { + deinitTimer() + + self.timer = Timer.scheduledTimer(withTimeInterval: 3, repeats: false, block: { [unowned self] _ in + deinitTimer() + self.completion?(.response.code(.timeout)) + self.remove() + }) + } + + @discardableResult + func deinitTimer() ->Self{ + guard let _ = self.timer else { return self} + self.timer?.invalidate() + self.timer = nil + // Logger.log("销毁定时器") + return self + } + + /// 从缓存实例集合中移除该实例 + func remove() { + Self.all.removeAll { $0 === self } + } + + func isAnswer(_ receiveData:Data)->Bool{ + if data.count < 3{ + return false + } + if receiveData[1] == data[1] { + return true + } + return false + } + + static func answer(_ data: Data) -> BleSender? { + if data.count < 3{ + return nil + } + for item in Self.all { + if item.isAnswer(data) { + return item + } + } + return nil + } +} + +public typealias DCCompletionHandler = (_ result: DCResponse) -> Void + +/// 状态码 +public enum DCCode: Int,CustomStringConvertible { + + public var description: String{ + return "MSCode(rawValue:\(rawValue), message:\(message))" + } + + /// 操作成功 + case success = 1000 + /// 操作失败 + case failure = 1001 + /// 请求超时 + case timeout = 1004 + /// 未知错误 + case unknow = 1005 + + var message:String{ + switch self { + case .failure: + return "失败" + case .success: + return "成功" + case .timeout: + return "超时" + default: + return "未知错误" + } + } +} + +public class DCResponse { + public private(set) var code: DCCode = .success + public private(set) var data: Data = Data() + static var response: DCResponse { DCResponse() } + + + var isSuccess:Bool{ + return code == .success + } + + public var description: String{ + return code.description + "data = " + data.joined() + } + + @discardableResult + func code(_ value: DCCode) -> Self { + code = value + return self + } + + @discardableResult + func value(_ value: Data) -> Self { + self.data = value + return self + } +} diff --git a/document/DeepChordsSdk_iOS/DeepChordsSdk/Example/DeepChordsSdk/DCBleManager.swift b/document/DeepChordsSdk_iOS/DeepChordsSdk/Example/DeepChordsSdk/DCBleManager.swift new file mode 100644 index 0000000..d771e89 --- /dev/null +++ b/document/DeepChordsSdk_iOS/DeepChordsSdk/Example/DeepChordsSdk/DCBleManager.swift @@ -0,0 +1,85 @@ +// +// Untitled.swift +// DeepChordsSdk +// +// Created by liangshi on 2025/11/25. +// + +import Foundation +import CoreBluetooth +import StarburstSdk + +public class DCBleManager{ + + public static let shared = DCBleManager() + private var connectPeripheral: CBPeripheral? + private var writeCha: CBCharacteristic? + + func send(_ sender:BleSender){ + if let connectPeripheral = connectPeripheral, let writeCha = writeCha { + Logger.debug("发送数据 = ",writeCha.uuid.uuidString,sender.data.joined()) + connectPeripheral.writeValue(sender.data, for: writeCha, type:.withoutResponse) + } + } + func sendToStarburst(_ data:Data){ + var full = Data.dataWithHexString("BA0D") + full.append(data) + if let connectPeripheral = connectPeripheral, let writeCha = writeCha { + Logger.debug("发送数据 = ",writeCha.uuid.uuidString,full.joined()) + connectPeripheral.writeValue(full, for: writeCha, type:.withoutResponse) + } + } +} + +public extension DCBleManager{ + func centralManager(_ central: CBCentralManager, didConnect peripheral: CBPeripheral) { + Logger.debug("蓝牙已连接 \(peripheral)") + connectPeripheral = peripheral + } + func centralManager(_ central: CBCentralManager, didFailToConnect peripheral: CBPeripheral, error: Error?) { + Logger.debug("peripheral: %@ failed to connect", peripheral) + } + func centralManager(_ central: CBCentralManager, didDisconnectPeripheral peripheral: CBPeripheral, error: Error?) { + Logger.debug("蓝牙已断开 \(peripheral)") + StarburstSdk.shared().bleDisConnected() + } + + func peripheral(_ peripheral: CBPeripheral, didDiscoverServices error: Error?) { + Logger.debug("发现服务成功") + for service in peripheral.services! { + Logger.debug("peripheral service: %@", service) + peripheral.discoverCharacteristics(nil, for: service) + } + + } + func peripheral(_ peripheral: CBPeripheral, didDiscoverCharacteristicsFor service: CBService, error: Error?) { + if let list = service.characteristics{ + Logger.debug("发现特征",list) + for char in list{ + Logger.debug(char) + peripheral.setNotifyValue(true, for: char) + if char.uuid.uuidString == "AE03" { + writeCha = char + StarburstSdk.shared().bleConnected() + } + } + } + } + + func peripheral(_ peripheral: CBPeripheral, didUpdateValueFor characteristic: CBCharacteristic, error: Error?) { + Logger.debug("收到数据 ===UUID",characteristic.uuid,characteristic.value?.joined() ?? "") + guard let data = characteristic.value else { return } + + if let sender = BleSender.answer(data) { + sender.completion?(.response.code(.success).value(data)) + sender.deinitTimer() + sender.remove() + return + } + else if data[1] == 0x0D{ + let subData = data.subdata(in: 2..Void){ + var data = Data.dataWithHexString("BA090000") + data.addCrc() + + let sender = BleSender() + sender.data = data + sender.completion = { result in + Logger.debug("\(result.description)") + if result.isSuccess{ + let leftValue = result.data[3].int + let rightValue = result.data[5].int + Logger.debug(leftValue,rightValue) + finished((leftValue,rightValue)) + } + else{ + finished(nil) + } + } + DCBleManager.shared.send(sender) + } + public func getSoftVersion(finished:@escaping (String?)->Void){ + var data = Data.dataWithHexString("BA0A0001") + data.addCrc() + + let sender = BleSender() + sender.data = data + sender.completion = { result in + Logger.debug("\(result.description)") + if result.isSuccess{ + let data = result.data[2...6] + let text = String(data: data, encoding:.utf8) + Logger.debug(text) + finished((text)) + } + else{ + finished(nil) + } + } + DCBleManager.shared.send(sender) + } + public func getHardVersion(finished:@escaping (String?)->Void){ + var data = Data.dataWithHexString("BA0A0101") + data.addCrc() + + let sender = BleSender() + sender.data = data + sender.completion = { result in + Logger.debug("\(result.description)") + if result.isSuccess{ + let data = result.data[2...6] + let text = String(data: data, encoding:.utf8) + Logger.debug(text) + finished((text)) + } + else{ + finished(nil) + } + } + DCBleManager.shared.send(sender) + } +} diff --git a/document/DeepChordsSdk_iOS/DeepChordsSdk/Example/Example/tools/Data.swift b/document/DeepChordsSdk_iOS/DeepChordsSdk/Example/DeepChordsSdk/Data.swift similarity index 80% rename from document/DeepChordsSdk_iOS/DeepChordsSdk/Example/Example/tools/Data.swift rename to document/DeepChordsSdk_iOS/DeepChordsSdk/Example/DeepChordsSdk/Data.swift index c88f8a0..4ae786e 100644 --- a/document/DeepChordsSdk_iOS/DeepChordsSdk/Example/Example/tools/Data.swift +++ b/document/DeepChordsSdk_iOS/DeepChordsSdk/Example/DeepChordsSdk/Data.swift @@ -7,21 +7,7 @@ import Foundation extension Data { - var bytes: UnsafePointer { - return self.withUnsafeBytes { $0.bindMemory(to: UInt8.self).baseAddress! } - } - func joined(format: String = "%02x", _ separator: String = "") -> String { - self - .map { String(format: format, $0) } - .joined(separator: separator) - } - - func reversedJoined(format: String = "%02x", _ separator: String = "") -> String { - self - .map { String(format: format, $0) } - .reversed() - .joined(separator: separator) - } + static func dataWithHexString(_ hexStr: String) -> Data { let hexStrWithoutSpaces = hexStr.replacingOccurrences(of: " ", with: "") diff --git a/document/DeepChordsSdk_iOS/DeepChordsSdk/Example/Example/tools/Date.swift b/document/DeepChordsSdk_iOS/DeepChordsSdk/Example/DeepChordsSdk/Date.swift similarity index 100% rename from document/DeepChordsSdk_iOS/DeepChordsSdk/Example/Example/tools/Date.swift rename to document/DeepChordsSdk_iOS/DeepChordsSdk/Example/DeepChordsSdk/Date.swift diff --git a/document/DeepChordsSdk_iOS/DeepChordsSdk/Example/DeepChordsSdk/DeepChordsAiSdk.swift b/document/DeepChordsSdk_iOS/DeepChordsSdk/Example/DeepChordsSdk/DeepChordsAiSdk.swift new file mode 100644 index 0000000..59382e1 --- /dev/null +++ b/document/DeepChordsSdk_iOS/DeepChordsSdk/Example/DeepChordsSdk/DeepChordsAiSdk.swift @@ -0,0 +1,67 @@ +// +// DeepChords.swift +// DeepChordsSdk +// +// Created by liangshi on 2025/11/25. +// +import Foundation +import StarburstSdk +public class DeepChordsAiSdk{ + public static let shared = DeepChordsAiSdk() + + + + public func initSDK(){ + StarburstConfig.shared().switch(to: .ble) + StarburstConfig.shared().appId = "app_ro4n4nwljr20kwqo" + //MARK: 配置缓存路径 + StarburstConfig.shared().sdkFolder = NSTemporaryDirectory() + StarburstConfig.shared().isDebug = true + StarburstConfig.shared().enableTextSyncToDevice = true + StarburstConfig.shared().enableEmotionSyncToDevice = true + StarburstConfig.shared().enableEarbudsSwitchSync = true + + StarburstConfig.shared().switch(to: .ble) + //设置appid + StarburstConfig.shared().appId = "app_ro4n4nwljr20kwqo" + //debug模式会打印日志 + StarburstConfig.shared().isDebug = true + // sdk缓存路径 + StarburstConfig.shared().sdkFolder = NSHomeDirectory() + "/Documents/AiSdk" + // 日志路径 + StarburstConfig.shared().logPath = logPath() + // //是否下发文字到耳机仓 + // StarburstConfig.shared().enableTextSyncToDevice = true; + // //主从耳机切换是否同步sdk信息到耳机 + // StarburstConfig.shared().enableEarbudsSwitchSync = true; + // //耳机仓表情下发开关 + // StarburstConfig.shared().enableEmotionSyncToDevice = true; + //添加调试信息 + StarburstConfig.shared().debugInfo = [ + "x-use-ppe":"1", + "x-tt-env": "ppe_tischarge_test", + ] + // voicechat配置 + StarburstConfig.shared().user_custom_prompt_init = "1.用户位置在上海市杨浦区。2.用户名称叫小明。" + + StarburstSdk.shared().authCallback = {[weak self] (code,msg) in + + } + //sdk发给蓝牙设备 + StarburstSdk.shared().sendToBleCallback = {data in + guard let data = data else {return} + DCBleManager.shared.sendToStarburst(data) + } + StarburstSdk.shared().bleRecordStateCallback = {[weak self] state in + + } + } + + func logPath()->String{ + let format = DateFormatter() + format.dateFormat = "yyyyMMddHHmmss" + let text = format.string(from: Date()) + return NSHomeDirectory() + "/Documents/\(text).log" + } + +} diff --git a/document/DeepChordsSdk_iOS/DeepChordsSdk/Example/DeepChordsSdk/DeepChordsSdk.swift b/document/DeepChordsSdk_iOS/DeepChordsSdk/Example/DeepChordsSdk/DeepChordsSdk.swift new file mode 100644 index 0000000..7c4aefc --- /dev/null +++ b/document/DeepChordsSdk_iOS/DeepChordsSdk/Example/DeepChordsSdk/DeepChordsSdk.swift @@ -0,0 +1,9 @@ +// +// DeepChordsSdk.swift +// DeepChordsSdk +// +// Created by liangshi on 2025/11/24. +// + +import Foundation + diff --git a/document/DeepChordsSdk_iOS/DeepChordsSdk/Example/DeepChordsSdk/Demo.swift b/document/DeepChordsSdk_iOS/DeepChordsSdk/Example/DeepChordsSdk/Demo.swift new file mode 100644 index 0000000..68abb80 --- /dev/null +++ b/document/DeepChordsSdk_iOS/DeepChordsSdk/Example/DeepChordsSdk/Demo.swift @@ -0,0 +1,14 @@ +// +// Demo.swift +// DeepChordsSdk +// +// Created by liangshi on 2025/11/24. +// + +import UIKit + +public class DeepChordsSdkDemo{ + static public func log(){ + print("1111") + } +} diff --git a/document/DeepChordsSdk_iOS/DeepChordsSdk/Example/DeepChordsSdk/LogManager.swift b/document/DeepChordsSdk_iOS/DeepChordsSdk/Example/DeepChordsSdk/LogManager.swift new file mode 100644 index 0000000..2a6c991 --- /dev/null +++ b/document/DeepChordsSdk_iOS/DeepChordsSdk/Example/DeepChordsSdk/LogManager.swift @@ -0,0 +1,64 @@ +// +// LogManager.swift +// Example +// +// Created by liangshi on 2025/11/24. +// + +import Foundation + +/// 日记管理 +public class Logger { + static var isDebug: Bool = true + + fileprivate static let shared = Logger() + private var fileHandle:FileHandle? + private init() { + let path = getPath() + fileHandle = FileHandle(forWritingAtPath: path)! + //fileHandle?.seekToEndOfFile() + } + + fileprivate var dateString: String { Date().format(.full) } + + public static var logs: [String] = [] + + + private func getPath()->String{ + let foldPath = NSHomeDirectory() + "/Documents/" + let fileManager = FileManager.default + if !fileManager.fileExists(atPath: foldPath) { + do { + try FileManager.default.createDirectory(atPath: foldPath, withIntermediateDirectories: true, attributes: nil) + } catch { + return "" + } + } + let path = foldPath + "Example_\(Date().format(.middle)).log" + if !FileManager.default.fileExists(atPath: path) { + FileManager.default.createFile(atPath: path, contents: nil, attributes: nil) + + } + return path + } +} + +extension Logger { + public static func debug(_ logs: Any..., line: Int = #line, separator: String = " ", terminator: String = "\n") { + objc_sync_enter(Logger.shared) + if Logger.isDebug { + print(Logger.shared.dateString, terminator: " [DeepChordsSdk-\(String(format: "%03d", line))]: ") + print(logs, separator: separator, terminator: terminator) + let logString = Logger.shared.dateString + " [DeepChordsSdk-\(String(format: "%03d", line))]: " + logs.map({ "\($0)" }).joined(separator: separator) + terminator + Self.logs.append(logString) + Logger.shared.saveLog(log: logString) + } + objc_sync_exit(Logger.shared) + + + } + + private func saveLog(log:String){ + fileHandle?.write(log.data(using: .utf8)!) + } +} diff --git a/document/DeepChordsSdk_iOS/DeepChordsSdk/Example/DeepChordsSdk/ReceiveManager.swift b/document/DeepChordsSdk_iOS/DeepChordsSdk/Example/DeepChordsSdk/ReceiveManager.swift new file mode 100644 index 0000000..e482cd6 --- /dev/null +++ b/document/DeepChordsSdk_iOS/DeepChordsSdk/Example/DeepChordsSdk/ReceiveManager.swift @@ -0,0 +1,15 @@ +// +// ReceiveManager.swift +// DeepChordsSdk +// +// Created by liangshi on 2025/11/25. +// +import Foundation + +class ReceiveManager{ + + + static func receiveData(_ data:Data){ + + } +} diff --git a/document/DeepChordsSdk_iOS/DeepChordsSdk/Example/DeepChordsSdk/StarburstSdk.framework/Headers/StarbaustVoiceChatModel.h b/document/DeepChordsSdk_iOS/DeepChordsSdk/Example/DeepChordsSdk/StarburstSdk.framework/Headers/StarbaustVoiceChatModel.h new file mode 100644 index 0000000..1b1e33e --- /dev/null +++ b/document/DeepChordsSdk_iOS/DeepChordsSdk/Example/DeepChordsSdk/StarburstSdk.framework/Headers/StarbaustVoiceChatModel.h @@ -0,0 +1,28 @@ +// +// StarbaustVoiceChatModel.h +// StarburstSdk +// +// Created by incar on 2024/11/22. +// + +#import +#import + +@interface StarbaustVoiceChatModel : NSObject +@property (nonatomic, assign) NSInteger code;/// 状态码,200成功 +@property (nonatomic, strong) NSString *msg;/// 提示语 +@property (nonatomic, strong) NSString *requestId;/// 请求id +@property (nonatomic, assign) NSInteger dialogId;/// 对话id +@property (nonatomic, strong) NSString *textResult;/// 语⾳识别结果⽚段内容 +@property (nonatomic, strong) NSString *responseText;/// 响应结果⽚段内容 +@property (nonatomic, strong) NSString *intent;/// 意图 +@property (nonatomic, assign) NSInteger sequence;/// 响应的编号 +@property (nonatomic, assign) BOOL definite;/// 语⾳识别结果⽚段是否已确定,后序不会有变化 +@property (nonatomic, assign) NSInteger definiteIndex;/// 已确定的识别结果序列号 +//@property (nonatomic, assign) NSInteger conversationIndex;/// 已确定的响应结果序列号 +@property (nonatomic, assign) BOOL conversationFinish;/// 对话是否结束 +@property (nonatomic, strong) StarburstTranslateResult *translateResult;///翻译结果 +@property (nonatomic, strong) StarburstAsrTtsResult *ttsResult;///tts音频流 + +@end + diff --git a/document/DeepChordsSdk_iOS/DeepChordsSdk/Example/DeepChordsSdk/StarburstSdk.framework/Headers/StarburstAsrConfig.h b/document/DeepChordsSdk_iOS/DeepChordsSdk/Example/DeepChordsSdk/StarburstSdk.framework/Headers/StarburstAsrConfig.h new file mode 100644 index 0000000..70275c1 --- /dev/null +++ b/document/DeepChordsSdk_iOS/DeepChordsSdk/Example/DeepChordsSdk/StarburstSdk.framework/Headers/StarburstAsrConfig.h @@ -0,0 +1,66 @@ +// +// StarburstAsrConfig.h +// StarburstSdk +// +// Created by incar on 2024/9/14. +// + +#import + +//语言 +//简体中文 zh-CN +//四川话 sc +//粤语 cant +//上海话 zh_shanghai +//英文 en-US +//日语 ja-JP +//韩语 ko-KR +//法语 fr-FR +//西班牙语 es-MX +//葡萄牙语 pt-BR +//印尼语 id-ID +//俄语 ru-RU +//马来语 ms-MY + +/// voice chat配置 +@interface StarburstVoiceChatConfig : NSObject +@property (nonatomic, strong) NSString *role;/// 对话⻆⾊设定;默认为⽆特⾊的智能助⼿ +//@property (nonatomic, assign) int channel;/// 默认为1,只⽀持1:单声道、2:双声道 +@property (nonatomic, strong) NSString *language;/// 语⾔编码,默认为普通话(zh-CN) +@property (nonatomic, assign) BOOL tts;/// 是否进⾏Tts,默认false +@property (nonatomic, strong) NSString *ttsAudioFormat;/// 默认pcm。⽀持pcm / ogg_opus / mp3 +@property (nonatomic, strong) NSString *ttsSpeakerType;/// tts声⾊类型,仅当传"clone"时,ttsSpeaker为单⾊克隆⽣成的speakerId +@property (nonatomic, strong) NSString *ttsSpeakerId;/// tts声⾊设置,默认使⽤“⾃然⼥声” +@end + +/// 手机录音asr配置 +@interface StarburstAsrConfig : NSObject +@property (nonatomic, assign) BOOL isTranslate;/// 是否翻译,默认false。如果为true翻译源语言和目标语言不能是同一种语言 +@property (nonatomic, strong) NSString *fromLanguage;/// 语⾔编码,默认为普通话(zh-CN),auto_lang自动识别 +@property (nonatomic, strong) NSString *toLanguage;/// ⽬标语⾔编码,默认为英语(en-US),auto_lang自动识别 +@property (nonatomic, assign) BOOL isTTs;/// 是否进⾏Tts,默认false +@property (nonatomic, strong) NSString *ttsFormat;/// 默认pcm ⽀持pcm / ogg_opus / mp3 +@property (nonatomic, strong) NSString *ttsType;/// 默认只⽀持"stream", +@property (nonatomic, strong) NSString *ttsSpeaker;/// tts声⾊设置 +@end + +/// 蓝牙耳机录音asr配置 +@interface StarburstBleAsrConfig : NSObject +@property (nonatomic, assign) NSInteger type;/// 0x00实时录音,0x0c通话录音,其他待定 +@end + +/// 文件/文本asr配置 +@interface StarburstAsrFileConfig : NSObject +@property (nonatomic, assign) BOOL isTranslate;/// 是否翻译,默认false +@property (nonatomic, strong) NSString *fromLanguage;/// 语⾔编码 +@property (nonatomic, strong) NSString *toLanguage;/// ⽬标语⾔编码 +@property (nonatomic, assign) BOOL summary;/// 是否进行总结,默认false +@property (nonatomic, assign) BOOL speakerSplit;/// 是否区分说话人,默认false +@end + + +/// 翻译配置 +@interface StarburstTslConfig : NSObject +@property (nonatomic, strong) NSString *fromLanguage;/// 语⾔编码 +@property (nonatomic, strong) NSString *toLanguage;/// ⽬标语⾔编码 +@end diff --git a/document/DeepChordsSdk_iOS/DeepChordsSdk/Example/DeepChordsSdk/StarburstSdk.framework/Headers/StarburstAsrModel.h b/document/DeepChordsSdk_iOS/DeepChordsSdk/Example/DeepChordsSdk/StarburstSdk.framework/Headers/StarburstAsrModel.h new file mode 100644 index 0000000..e09478f --- /dev/null +++ b/document/DeepChordsSdk_iOS/DeepChordsSdk/Example/DeepChordsSdk/StarburstSdk.framework/Headers/StarburstAsrModel.h @@ -0,0 +1,40 @@ +// +// StarburstAsrModel.h +// StarburstSdk +// +// Created by incar on 2024/9/13. +// + +#import + +/// 翻译结果 +@interface StarburstTranslateResult : NSObject +@property (nonatomic, strong) NSString *text;/// 语⾳识别后翻译的结果⽚段 +@property (nonatomic, assign) BOOL definite;/// 当前翻译⽚段是否确定 +@property (nonatomic, assign) int definiteIndex;/// 已翻译⽚段序号 +@end + +/// tts音频流 +@interface StarburstAsrTtsResult : NSObject +@property (nonatomic, assign) NSInteger index;/// 音频数据⽚段的序号 +@property (nonatomic, assign) NSInteger translateIndex;/// 翻译的序号 +@property (nonatomic, strong) NSString *streamPiece;/// 音频流 +@end + + +/// 识别结果 +@interface StarburstAsrModel : NSObject +@property (nonatomic, assign) NSInteger channel;/// 0非立体声,1左声道,2右声道 +@property (nonatomic, assign) NSInteger code;/// 状态码 +@property (nonatomic, strong) NSString *msg;/// 提示语 +@property (nonatomic, strong) NSString *requestId;/// 请求id +@property (nonatomic, strong) NSString *textResult;/// 语⾳识别结果⽚段内容 +@property (nonatomic, assign) NSInteger sequence;/// 响应的编号 +@property (nonatomic, assign) BOOL definite;/// 语⾳识别结果⽚段是否已确定,后序不会有变化 +@property (nonatomic, assign) NSInteger definiteIndex;/// 已确定的识别结果序列号 +@property (nonatomic, strong) StarburstTranslateResult *translateResult;///翻译结果 +@property (nonatomic, strong) StarburstAsrTtsResult *ttsResult;///tts音频流 + ++ (StarburstAsrModel *)modelWith:(NSDictionary *)dict; +@end + diff --git a/document/DeepChordsSdk_iOS/DeepChordsSdk/Example/DeepChordsSdk/StarburstSdk.framework/Headers/StarburstConfig.h b/document/DeepChordsSdk_iOS/DeepChordsSdk/Example/DeepChordsSdk/StarburstSdk.framework/Headers/StarburstConfig.h new file mode 100644 index 0000000..9b4dd0a --- /dev/null +++ b/document/DeepChordsSdk_iOS/DeepChordsSdk/Example/DeepChordsSdk/StarburstSdk.framework/Headers/StarburstConfig.h @@ -0,0 +1,42 @@ +// +// StarburstConfig.h +// StarburstSdk +// +// Created by liangshi on 2025/6/18. +// + +#import + +typedef NS_OPTIONS(NSInteger,StarburstSdkType) { + StarburstSdkType_Ble = 1,/// 设备鉴权+设备拾音 + StarburstSdkType_Phone = 2,/// 账号鉴权+手机拾音 + StarburstSdkType_Mix = 3,/// 设备鉴权+手机拾音 + StarburstSdkType_Glasses_Ble = 4,/// 眼镜板+设备鉴权 + StarburstSdkType_Glasses_Account = 5,/// 眼镜板+账号鉴权 +}; + + +@interface StarburstConfig : NSObject +@property (nonatomic, readonly)NSString *logs;/// 获取日志 +@property (nonatomic, strong)void (^logCallback)(NSString *log);/// 日志输出回调 +@property (nonatomic, assign)BOOL isDebug;/// 是否打印日志,默认false +@property (nonatomic, strong)NSString *logPath;/// 日志路径,不设置不保存日志 +@property (nonatomic, strong)NSString *sdkFolder;/// sdk路径,可以自定义 +@property (nonatomic, strong)NSDictionary *debugInfo;/// 调试信息 +@property (nonatomic, strong)NSString *user_custom_prompt_init;/// voicechat配置 + +@property (nonatomic, assign)BOOL enableEarbudsSwitchSync;/// 主从耳机切换是否同步sdk信息到耳机,默认false +@property (nonatomic, assign)BOOL enableTextSyncToDevice;/// 是否下发文字到耳机仓,默认false +@property (nonatomic, assign)BOOL enableEmotionSyncToDevice;/// 耳机仓表情下发开关,默认false +@property (nonatomic, assign)NSInteger callRecordChannel;/// 通话录音声道数。1:单声道 ;2:⽴体声;默认单声道 +//enableExternalOpusDecoder +@property (nonatomic, strong)NSString *appId;/// 分配的id +@property (nonatomic, readonly)StarburstSdkType sdkType;/// sdk类型 + +/// 单利 ++ (instancetype)shared; + +/// 切换sdk +- (void)switchTo:(StarburstSdkType)type; +@end + diff --git a/document/DeepChordsSdk_iOS/DeepChordsSdk/Example/DeepChordsSdk/StarburstSdk.framework/Headers/StarburstFileAsrModel.h b/document/DeepChordsSdk_iOS/DeepChordsSdk/Example/DeepChordsSdk/StarburstSdk.framework/Headers/StarburstFileAsrModel.h new file mode 100644 index 0000000..b409f7b --- /dev/null +++ b/document/DeepChordsSdk_iOS/DeepChordsSdk/Example/DeepChordsSdk/StarburstSdk.framework/Headers/StarburstFileAsrModel.h @@ -0,0 +1,36 @@ +// +// StarburstFileAsrModel.h +// StarburstSdk +// +// Created by incar on 2024/9/27. +// + +#import + +/// 该段说话人 +@interface StarburstFileAsrAdditions : NSObject +@property (nonatomic, strong) NSString *speaker;/// 该段说话人编号 +@end + +/// 识别片段 +@interface StarburstFileAsrPieces : NSObject +@property (nonatomic, strong) NSString *text;/// 片段识别的内筒 +@property (nonatomic, assign) NSInteger start_time;///片段对应文件进度,单位毫秒 +@property (nonatomic, assign) NSInteger end_time;/// 片段对应文件进度,单位毫秒 +@property (nonatomic, strong) StarburstFileAsrAdditions *additions;///该段说话人 +@end + +/// 文件识别结果模型 +@interface StarburstFileAsrModel : NSObject +@property (nonatomic, assign) NSInteger code;/// 状态码 +@property (nonatomic, strong) NSString *msg;/// 提示语 +@property (nonatomic, strong) NSString *requestId;/// 请求id +@property (nonatomic, strong) NSString *taskId;/// 任务id +@property (nonatomic, strong) NSString *text;/// 语⾳识别内容 +@property (nonatomic, strong) NSString *summary;/// 识别摘要内容 +@property (nonatomic, strong) NSString *transText;///识别后翻译结果 +@property (nonatomic, strong) NSArray *pieces;///识别片段 + ++ (StarburstFileAsrModel *)modelWith:(NSDictionary *)dict; +@end + diff --git a/document/DeepChordsSdk_iOS/DeepChordsSdk/Example/DeepChordsSdk/StarburstSdk.framework/Headers/StarburstOffLineFile.h b/document/DeepChordsSdk_iOS/DeepChordsSdk/Example/DeepChordsSdk/StarburstSdk.framework/Headers/StarburstOffLineFile.h new file mode 100644 index 0000000..9e7a192 --- /dev/null +++ b/document/DeepChordsSdk_iOS/DeepChordsSdk/Example/DeepChordsSdk/StarburstSdk.framework/Headers/StarburstOffLineFile.h @@ -0,0 +1,20 @@ +// +// StarburstOffLineFile.h +// StarburstSdk +// +// Created by incar on 2024/10/8. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +/// 离线文件 +@interface StarburstOffLineFile : NSObject + +@property (nonatomic, assign) uint8_t fileType;/// 0x00所有文件、0x01左耳列表、0x02右耳列表 +@property (nonatomic, assign) NSInteger fileId;/// 文件id +@property (nonatomic, assign) NSInteger fileSize;/// 文件大小 +@end + +NS_ASSUME_NONNULL_END diff --git a/document/DeepChordsSdk_iOS/DeepChordsSdk/Example/DeepChordsSdk/StarburstSdk.framework/Headers/StarburstPhoneSdk.h b/document/DeepChordsSdk_iOS/DeepChordsSdk/Example/DeepChordsSdk/StarburstSdk.framework/Headers/StarburstPhoneSdk.h new file mode 100644 index 0000000..903da21 --- /dev/null +++ b/document/DeepChordsSdk_iOS/DeepChordsSdk/Example/DeepChordsSdk/StarburstSdk.framework/Headers/StarburstPhoneSdk.h @@ -0,0 +1,121 @@ +// +// StarburstPhoneSdk.h +// StarburstSdk +// +// Created by liangshi on 2025/3/11. +// + +#import +#import +#import +#import +#import +#import +#import +#import +#import + + +@interface StarburstPhoneSdk : NSObject +@property (nonatomic, readonly)BOOL didAuth;/// 是否已经鉴权 +@property (nonatomic, strong)void (^websocketStateCallback)(BOOL connected);/// websocket状态回调,true为已连接,false未链接 + + +/// 单利 ++ (instancetype)shared; + +/// 注册 +/// - Parameters: +/// - productKey: 产品key +/// - productSecret: 产品秘钥,经过aes/cbc/7Padding加密后的data +/// - deviceName: 设备名称 +/// - random: 加密随机数 +/// - finished: 结果回调 +- (void)registerWithProductKey:(NSString *)productKey productSecret:(NSData *)productSecret deviceName:(NSString *)deviceName random:(NSString *)random finished:(void (^)(NSString *deviceSecret,NSError *error))finished; + +/// 登录 +/// - Parameters: +/// - productKey: 产品key +/// - deviceName: 设备名称 +/// - deviceSecret: 设备密码 +/// - finished: 结果回调 +- (void)connectWithProductKey:(NSString *)productKey deviceName:(NSString *)deviceName deviceSecret:(NSString *)deviceSecret finished:(void (^)(BOOL isSuccess,NSError *error))finished; + +///// 【文件摘要】 +///// - Parameters: +///// - path: 文件路径 +///// - recognize: 识别结果回调 +///// - error: 错误回调 +//- (void)asrByFile:(NSURL *)filePath config:(StarburstAsrFileConfig*)config recognizeText:(void (^)(StarburstFileAsrModel*))recognize error:(void (^)(NSError *err))error; + +/// 【文本摘要】 +/// - Parameters: +/// - text: 识别的文本 +/// - recognize: 识别结果回调 +/// - error: 错误回调 +- (void)summaryByText:(NSString *)text config:(StarburstAsrFileConfig*)config recognizeText:(void (^)(StarburstFileAsrModel*))recognize error:(void (^)(NSError *err))error; + +/// 【文本摘要】--流式 +/// - Parameters: +/// - text: 摘要的文字 +/// - recognize: 结果回调 +/// - error: 错误回调 +- (void)summaryByTextWithSplit:(NSString *)text recognizeText:(void (^)(StarburstStreamModel*))recognize error:(void (^)(NSError *err))error; + +/// 取消 【文本摘要】--流式 +-(void)cancelSummaryByTextWithSplit; + +/// 【文本翻译】 +/// - Parameters: +/// - text: 翻译的文字 +/// - config: 翻译配置 +/// - recognize: 识别结果回调 +/// - error: 错误回调 +- (void)translateByText:(NSString *)text config:(StarburstAsrFileConfig*)config recognizeText:(void (^)(StarburstFileAsrModel*))recognize error:(void (^)(NSError *err))error; + +/// 【文本翻译】--流式 +/// - Parameters: +/// - text: 翻译的文字 +/// - config: 翻译配置 +/// - recognize: 结果回调 +/// - error: 错误回调 +- (void)translateByTextWithSplit:(NSString *)text config:(StarburstTslConfig*)config recognizeText:(void (^)(StarburstStreamModel*))recognize error:(void (^)(NSError *err))error; + +/// 取消 【文本翻译】--流式 +-(void)cancelTranslateByTextWithSplit; + +/// 【同声传译】开始手机拾音 +/// - Parameters: +/// - config: 识别配置 +/// - voiceRecordData: 录音音频流回调 +/// - recognizeText: 识别回调 +/// - stateChange: 状态回调 +- (void)startRecordAsr:(StarburstAsrConfig*)config voiceRecord:(void (^)(NSData*))voiceData recognizeText:(void (^)(StarburstAsrModel*))recognize stateChange:(void(^)(StarburstCode code))stateChange interruption:(void(^)(void))interrupt; + +/// 【同声传译】结束手机拾音 +/// - Parameter fileCallback: 录音文件回调 +- (void)stopRecordAsr:(void(^)(NSString *filePath))fileCallback; + +/// 手机拾音对话设置 +/// - Parameters: +/// - config: 对话配置 +/// - startCallBack: 开始回调 +/// - textCallBack: 文本识别回调 +/// - voiceCallBack: AI语音回复回调 +/// - stateChange: 状态回调 +/// - finished:录音地址回调 +- (void)setupPhoneChatWith:(StarburstVoiceChatConfig*)config start:(void (^)(NSInteger dialogId))startCallback textCallback:(void (^)(StarbaustVoiceChatModel*))textCallBack responseVoice:(void (^)(NSInteger dialogId,NSData*data,BOOL finish))voiceCallBack stateChange:(void(^)(StarburstCode code))stateChange finished:(void(^)(NSString *filePath))path; + +/// 手机拾音,开始对话 +/// - Parameter vadType: 0 vad检测,1不启用vad(手动控制开始/结束讲话) +- (void)startPhoneChat:(int)vadType; + +/// 结束手机拾音对话 +- (void)stopPhoneChat; + +/// 获取音色列表 +/// - Parameter callBack: 结果回调 +- (void)getVcSpeekerList:(void (^)(NSArray *list,BOOL success))callBack; + +@end + diff --git a/document/DeepChordsSdk_iOS/DeepChordsSdk/Example/DeepChordsSdk/StarburstSdk.framework/Headers/StarburstSdk.h b/document/DeepChordsSdk_iOS/DeepChordsSdk/Example/DeepChordsSdk/StarburstSdk.framework/Headers/StarburstSdk.h new file mode 100644 index 0000000..422071c --- /dev/null +++ b/document/DeepChordsSdk_iOS/DeepChordsSdk/Example/DeepChordsSdk/StarburstSdk.framework/Headers/StarburstSdk.h @@ -0,0 +1,32 @@ +// +// Starburst.h +// Starburst +// +// Created by cookies on 2023/6/12. +// + +#import + +//! Project version number for Starburst. +//FOUNDATION_EXPORT double StarburstSdkVersionNumber; + +//! Project version string for Starburst. +//FOUNDATION_EXPORT const unsigned char StarburstSdkVersionString[]; + +// In this header, you should import all the public headers of your framework using statements like #import + +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import + diff --git a/document/DeepChordsSdk_iOS/DeepChordsSdk/Example/DeepChordsSdk/StarburstSdk.framework/Headers/StarburstSdkManager.h b/document/DeepChordsSdk_iOS/DeepChordsSdk/Example/DeepChordsSdk/StarburstSdk.framework/Headers/StarburstSdkManager.h new file mode 100644 index 0000000..94af429 --- /dev/null +++ b/document/DeepChordsSdk_iOS/DeepChordsSdk/Example/DeepChordsSdk/StarburstSdk.framework/Headers/StarburstSdkManager.h @@ -0,0 +1,169 @@ +// +// StarburstSdk.h +// VoiceDemo +// +// Created by incar on 2024/9/12. +// + +#import +#import +#import +#import +#import +#import +#import +#import +#import + +typedef NS_OPTIONS(NSInteger,StarburstCode) { + StarburstCode_Start_Record = 20001,///开始录音 + StarburstCode_Stop_Record = 20002,///停止录音 + StarburstCode_Record_Error = 20003,///录音出错 + StarburstCode_Ble_Disconected = 20004,///蓝牙断开 + StarburstCode_Websocket_Connected = 30001,///socket连上 + StarburstCode_Websocket_Disconnected = 30002,///socket断开连接 + StarburstCode_Websocket_Connecting = 30003,///socket连接中... + StarburstCode_Websocket_pingTimeOut = 30004,///ping超时 + StarburstCode_Net_Error = 50000,///网络错误 + StarburstCode_UnAuth = 60000,///未鉴权 +}; + + +@interface StarburstSdk : NSObject +//@property (nonatomic, strong)void (^authSuccessCallback)(void);/// 鉴权成功回调 +@property (nonatomic, strong)void (^authCallback)(int code,NSString *msg);/// 鉴权结果回调,code200代表成功,其他为失败 +@property (nonatomic, readonly)BOOL didAuth;// 是否已经鉴权 +@property (nonatomic, strong)void (^websocketStateCallback)(BOOL connected);/// websocket状态回调,true为已连接,false未链接 +@property (nonatomic, strong)void (^bleRecordStateCallback)(int state);/// 耳机录音状态回调,1录音,2结束录音 +@property (nonatomic, strong)void (^sendToBleCallback)(NSData *data);/// 发送给蓝牙设备 + +/// 单利 ++ (instancetype)shared; + +/// 收到蓝牙设备传过来的数据,交给sdk处理 +/// - Parameter data:数据 +- (void)receiveBleData:(NSData *)data; + +/// 蓝牙设备已经连上(蓝牙连接和断开都需要通知sdk) +- (void)bleConnected; + +/// 蓝牙断开连接(在监听到蓝牙断开的时候,调用该方法通知sdk结束当前任务) +- (void)bleDisConnected; + +///// 【文本摘要】 +///// - Parameters: +///// - text: 识别的文本 +///// - recognize: 识别结果回调 +///// - error: 错误回调 +- (void)summaryByText:(NSString *)text config:(StarburstAsrFileConfig*)config recognizeText:(void (^)(StarburstFileAsrModel*))recognize error:(void (^)(NSError *err))error; + +/// 【文本摘要】--流式 +/// - Parameters: +/// - text: 摘要的文字 +/// - recognize: 结果回调 +/// - error: 错误回调 +- (void)summaryByTextWithSplit:(NSString *)text recognizeText:(void (^)(StarburstStreamModel*))recognize error:(void (^)(NSError *err))error; + +/// 取消 【文本摘要】--流式 +-(void)cancelSummaryByTextWithSplit; + +/// 【文本翻译】 +/// - Parameters: +/// - text: 翻译的文字 +/// - config: 翻译配置 +/// - recognize: 识别结果回调 +/// - error: 错误回调 +- (void)translateByText:(NSString *)text config:(StarburstAsrFileConfig*)config recognizeText:(void (^)(StarburstFileAsrModel*))recognize error:(void (^)(NSError *err))error; + +/// 【文本翻译】--流式 +/// - Parameters: +/// - text: 翻译的文字 +/// - config: 翻译配置 +/// - recognize: 结果回调 +/// - error: 错误回调 +- (void)translateByTextWithSplit:(NSString *)text config:(StarburstTslConfig*)config recognizeText:(void (^)(StarburstStreamModel*))recognize error:(void (^)(NSError *err))error; + + +/// 取消 【文本翻译】--流式 +-(void)cancelTranslateByTextWithSplit; + +/// 【同声传译】开始手机拾音 +/// - Parameters: +/// - config: 识别配置 +/// - voiceRecordData: 录音音频流回调 +/// - recognizeText: 识别回调 +/// - stateChange: 状态回调 +/// - interrupt:打断回调(接听电话等打断) +- (void)startRecordAsr:(StarburstAsrConfig*)config voiceRecord:(void (^)(NSData*))voiceData recognizeText:(void (^)(StarburstAsrModel*))recognize stateChange:(void(^)(StarburstCode code))stateChange interruption:(void(^)(void))interrupt; + +/// 【同声传译】结束手机拾音 +/// - Parameter fileCallback: 录音文件回调 +- (void)stopRecordAsr:(void(^)(NSString *filePath))callback; + +/// 开始耳机拾音 +/// - Parameters: +/// - config: 识别配置 +- (void)startDeviceRecord:(StarburstBleAsrConfig*)config; + +/// 结束耳机拾音 +- (void)stopDeviceRecord; + +/// 设置耳机拾音回调 +/// - Parameters: +/// - recordPath: 录音文件保存的路径。如果文件已经存在,则音频数据会追加到尾部;如果不存在,则创建新文件;传nil则会按之前时间格式创建新文件 +/// - asrConfig: 识别配置 +/// - bleConfig: 耳机录音类型回调 +/// - recognize: 识别回调 +/// - stateChange: 状态回调 +/// - path: 录音结束,录音文件地址回调 +- (void)setupDeviceRecordWith:(NSString *)recordPath asrConfig:(StarburstAsrConfig*)asrConfig bleConfig:(void (^)(StarburstBleAsrConfig*))bleConfig recognizeText:(void (^)(StarburstAsrModel*))recognize stateChange:(void(^)(StarburstCode code))stateChange finished:(void(^)(NSString *filePath))path; + + +/// opus输出给app,app解码后将数据通过inputPcmData传回给sdk +- (void)outputOpusData:(void (^)(StartburstDecoderConfig *copusConfig,NSData*opusData))recordCallBack; + +/// opus解码后传给sdk +- (void)inputPcmData:(NSData *)pcmData; + + + + + +/// 获取音色列表 +/// - Parameter callBack: 结果回调 +- (void)getVcSpeekerList:(void (^)(NSArray *list,BOOL success))callBack; + +/// 设置voice chat回调,目前只支持蓝牙设备发起对话 +/// - Parameters: +/// - config: 对话配置 +/// - startCallBack: 开始回调 +/// - textCallBack: 文本识别回调 +/// - voiceCallBack: AI语音回复回调 +/// - stateChange: 状态回调 +/// - finished:录音地址回调 +- (void)setupVoiceChatWith:(StarburstVoiceChatConfig*)config start:(void (^)(NSInteger dialogId))startCallback textCallback:(void (^)(StarbaustVoiceChatModel*))textCallBack responseVoice:(void (^)(NSInteger dialogId,NSData*data,BOOL finish))voiceCallBack stateChange:(void(^)(StarburstCode code))stateChange finished:(void(^)(NSString *filePath))path; + +/// 终止voice chat对话 +- (void)stopVoiceChat:(NSInteger)dialogId; + +/// 开始播放tts +- (void)startPlayTtsAudio:(NSInteger)dialogId; + +/// 结束播放tts +- (void)stopPlayTtsAudio:(NSInteger)dialogId; + + + + +//不可用 +- (void)setupPhoneChatWith:(StarburstVoiceChatConfig*)config start:(void (^)(NSInteger dialogId))startCallback textCallback:(void (^)(StarbaustVoiceChatModel*))textCallBack responseVoice:(void (^)(NSInteger dialogId,NSData*data,BOOL finish))voiceCallBack stateChange:(void(^)(StarburstCode code))stateChange finished:(void(^)(NSString *filePath))path; +//不可用 +- (void)startPhoneChat:(int)vadType; +//不可用 +- (void)stopPhoneChat; +//不可用 +- (void)registerWithProductKey:(NSString *)productKey productSecret:(NSString *)productSecret deviceName:(NSString *)deviceName random:(NSString *)random finished:(void (^)(NSString *deviceSecret,NSError *error))finished; +//不可用 +- (void)connectWithProductKey:(NSString *)productKey deviceName:(NSString *)deviceName deviceSecret:(NSString *)deviceSecret finished:(void (^)(BOOL isSuccess,NSError *error))finished; +@end + diff --git a/document/DeepChordsSdk_iOS/DeepChordsSdk/Example/DeepChordsSdk/StarburstSdk.framework/Headers/StarburstStreamModel.h b/document/DeepChordsSdk_iOS/DeepChordsSdk/Example/DeepChordsSdk/StarburstSdk.framework/Headers/StarburstStreamModel.h new file mode 100644 index 0000000..fa0ad1f --- /dev/null +++ b/document/DeepChordsSdk_iOS/DeepChordsSdk/Example/DeepChordsSdk/StarburstSdk.framework/Headers/StarburstStreamModel.h @@ -0,0 +1,20 @@ +// +// StarburstStreamModel.h +// StarburstSdk +// +// Created by liangshi on 2024/12/20. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface StarburstStreamModel : NSObject +@property (nonatomic, assign) NSInteger code;//1: processing, 10: complete -1:fail +@property (nonatomic, strong) NSString *msg;//提示文字 +@property (nonatomic, strong) NSString *failReason;//失败原因 +@property (nonatomic, strong) NSString *llmResponse;// 增量返回的⽂本内容 +@property (nonatomic, assign) BOOL complete;// ⽂本内容是否完成 +@end + +NS_ASSUME_NONNULL_END diff --git a/document/DeepChordsSdk_iOS/DeepChordsSdk/Example/DeepChordsSdk/StarburstSdk.framework/Headers/StarbusrtSpeaker.h b/document/DeepChordsSdk_iOS/DeepChordsSdk/Example/DeepChordsSdk/StarburstSdk.framework/Headers/StarbusrtSpeaker.h new file mode 100644 index 0000000..2b2dae4 --- /dev/null +++ b/document/DeepChordsSdk_iOS/DeepChordsSdk/Example/DeepChordsSdk/StarburstSdk.framework/Headers/StarbusrtSpeaker.h @@ -0,0 +1,19 @@ +// +// StarbusrtSpeaker.h +// StarburstSdk +// +// Created by liangshi on 2025/2/18. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface StarbusrtSpeaker : NSObject +@property (nonatomic, strong) NSString *sid;/// 音色id +@property (nonatomic, strong) NSString *name;/// 名称 +@property (nonatomic, strong) NSString *type;/// 类型 +@property (nonatomic, strong) NSString *role;/// 角色 +@end + +NS_ASSUME_NONNULL_END diff --git a/document/DeepChordsSdk_iOS/DeepChordsSdk/Example/DeepChordsSdk/StarburstSdk.framework/Headers/StartburstDecoderConfig.h b/document/DeepChordsSdk_iOS/DeepChordsSdk/Example/DeepChordsSdk/StarburstSdk.framework/Headers/StartburstDecoderConfig.h new file mode 100644 index 0000000..7e47aa2 --- /dev/null +++ b/document/DeepChordsSdk_iOS/DeepChordsSdk/Example/DeepChordsSdk/StarburstSdk.framework/Headers/StartburstDecoderConfig.h @@ -0,0 +1,18 @@ +//// +//// Startburst.h +//// StarburstSdk +//// +//// Created by liangshi on 2025/6/11. +//// +// +#import + +@interface StartburstDecoderConfig : NSObject +@property (nonatomic, assign)NSInteger sampleRate;/// 采样率 +@property (nonatomic, assign)NSInteger numChannels;/// 声道数 +@property (nonatomic, assign)NSInteger encodedFrameLength;/// 编码后每帧字节数 +@property (nonatomic, assign)NSInteger originalSamplesPerFrame;/// 编码前每帧采样点数 +@property (nonatomic, assign)NSInteger bitDepth;/// 采样位深(16/24/32) +@end + + diff --git a/document/DeepChordsSdk_iOS/DeepChordsSdk/Example/DeepChordsSdk/StarburstSdk.framework/Headers/StartburstGlassChat.h b/document/DeepChordsSdk_iOS/DeepChordsSdk/Example/DeepChordsSdk/StarburstSdk.framework/Headers/StartburstGlassChat.h new file mode 100644 index 0000000..3df995d --- /dev/null +++ b/document/DeepChordsSdk_iOS/DeepChordsSdk/Example/DeepChordsSdk/StarburstSdk.framework/Headers/StartburstGlassChat.h @@ -0,0 +1,49 @@ +// +// StartburstGlassChat.h +// StarburstSdk +// +// Created by liangshi on 2025/5/6. +// + +#import +#import +#import +#import + + +@interface StartburstGlassChat : NSObject +/// +/// 对话设置 +/// - Parameters: +/// - config: 对话配置 +/// - textCallBack: 文本识别回调 +/// - voiceCallBack: AI语音回复回调 +/// - stateChange: 状态回调 +/// - finished:录音地址回调 +- (void)setupPhoneChatWith:(StarburstVoiceChatConfig*)config textCallback:(void (^)(StarbaustVoiceChatModel*))textCallBack responseVoice:(void (^)(NSInteger dialogId,NSData*data,BOOL finish))voiceCallBack stateChange:(void(^)(StarburstCode code))stateChange finished:(void(^)(NSString *filePath))path; + +/// 开始对话 +- (void)start; + +/// 结束对话 +- (void)stop; + +/// 分发数据 +/// - Parameter data:音频流 +- (void)fireAudioData:(NSData *)data; + +/// 通知vad状态变化 +/// - Parameter isVadStarted: ture表⽰vad检测到说话开始,false表⽰vad检测到说话结束 +- (void)vadStateChange:(BOOL)isVadStarted; + +/// 分发数据 +/// - Parameter data:图片流 +- (void)fireImageData:(NSData *)data; + +/// 分发数据 +/// - Parameter text:文本 +- (void)fireText:(NSString *)text; + +@end + + diff --git a/document/DeepChordsSdk_iOS/DeepChordsSdk/Example/DeepChordsSdk/StarburstSdk.framework/Headers/StartburstGlassesSdk.h b/document/DeepChordsSdk_iOS/DeepChordsSdk/Example/DeepChordsSdk/StarburstSdk.framework/Headers/StartburstGlassesSdk.h new file mode 100644 index 0000000..862a1a2 --- /dev/null +++ b/document/DeepChordsSdk_iOS/DeepChordsSdk/Example/DeepChordsSdk/StarburstSdk.framework/Headers/StartburstGlassesSdk.h @@ -0,0 +1,110 @@ +// +// StartburstGlassesSdk.h +// StarburstSdk +// +// Created by liangshi on 2025/4/29. +// + + +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import + +@interface StartburstGlassesSdk : NSObject +@property (nonatomic, strong)void (^sendToBleCallback)(NSData *data);/// 发送给蓝牙设备 +@property (nonatomic, strong)void (^authCallback)(int code,NSString *msg);/// 鉴权结果回调,code200代表成功,其他为失败 +@property (nonatomic, readonly)BOOL didAuth;/// 是否已经鉴权 +@property (nonatomic, strong)StartburstGlassChat *chat;/// 对话对象 + +/// 单利 ++ (instancetype)shared; + +/// 收到蓝牙设备传过来的数据,交给sdk处理 +/// - Parameter data:数据 +- (void)receiveBleData:(NSData *)data; + +/// 蓝牙设备已经连上 +- (void)bleConnected; + +/// 蓝牙断开连接(在监听到蓝牙断开的时候,调用该方法通知sdk结束当前任务) +- (void)bleDisConnected; + +/// 注册 +/// - Parameters: +/// - productKey: 产品key +/// - productSecret: 产品秘钥,经过aes/cbc/7Padding加密后的data +/// - deviceName: 设备名称 +/// - random: 加密随机数 +/// - finished: 结果回调 +- (void)registerWithProductKey:(NSString *)productKey productSecret:(NSData *)productSecret deviceName:(NSString *)deviceName random:(NSString *)random finished:(void (^)(NSString *deviceSecret,NSError *error))finished; + +/// 登录 +/// - Parameters: +/// - productKey: 产品key +/// - deviceName: 设备名称 +/// - deviceSecret: 设备密码 +/// - finished: 结果回调 +- (void)connectWithProductKey:(NSString *)productKey deviceName:(NSString *)deviceName deviceSecret:(NSString *)deviceSecret finished:(void (^)(BOOL isSuccess,NSError *error))finished; + +/// 【文本摘要】 +/// - Parameters: +/// - text: 识别的文本 +/// - recognize: 识别结果回调 +/// - error: 错误回调 +- (void)summaryByText:(NSString *)text config:(StarburstAsrFileConfig*)config recognizeText:(void (^)(StarburstFileAsrModel*))recognize error:(void (^)(NSError *err))error; + +/// 【文本摘要】--流式 +/// - Parameters: +/// - text: 摘要的文字 +/// - recognize: 结果回调 +/// - error: 错误回调 +- (void)summaryByTextWithSplit:(NSString *)text recognizeText:(void (^)(StarburstStreamModel*))recognize error:(void (^)(NSError *err))error; + +/// 取消 【文本摘要】--流式 +-(void)cancelSummaryByTextWithSplit; + +/// 【文本翻译】 +/// - Parameters: +/// - text: 翻译的文字 +/// - config: 翻译配置 +/// - recognize: 识别结果回调 +/// - error: 错误回调 +- (void)translateByText:(NSString *)text config:(StarburstAsrFileConfig*)config recognizeText:(void (^)(StarburstFileAsrModel*))recognize error:(void (^)(NSError *err))error; + +/// 【文本翻译】--流式 +/// - Parameters: +/// - text: 翻译的文字 +/// - config: 翻译配置 +/// - recognize: 结果回调 +/// - error: 错误回调 +- (void)translateByTextWithSplit:(NSString *)text config:(StarburstTslConfig*)config recognizeText:(void (^)(StarburstStreamModel*))recognize error:(void (^)(NSError *err))error; + +/// 取消 【文本翻译】--流式 +-(void)cancelTranslateByTextWithSplit; + +/// 【同声传译】开始手机拾音 +/// - Parameters: +/// - config: 识别配置 +/// - voiceRecordData: 录音音频流回调 +/// - recognizeText: 识别回调 +/// - stateChange: 状态回调 +- (void)startRecordAsr:(StarburstAsrConfig*)config voiceRecord:(void (^)(NSData*))voiceData recognizeText:(void (^)(StarburstAsrModel*))recognize stateChange:(void(^)(StarburstCode code))stateChange interruption:(void(^)(void))interrupt; + +/// 【同声传译】结束手机拾音 +/// - Parameter fileCallback: 录音文件回调 +- (void)stopRecordAsr:(void(^)(NSString *filePath))fileCallback; + +/// 获取音色列表 +/// - Parameter callBack: 结果回调 +- (void)getVcSpeekerList:(void (^)(NSArray *list,BOOL success))callBack; + +@end + + diff --git a/document/DeepChordsSdk_iOS/DeepChordsSdk/Example/DeepChordsSdk/StarburstSdk.framework/Headers/StartburstMixSdk.h b/document/DeepChordsSdk_iOS/DeepChordsSdk/Example/DeepChordsSdk/StarburstSdk.framework/Headers/StartburstMixSdk.h new file mode 100644 index 0000000..aa4ba37 --- /dev/null +++ b/document/DeepChordsSdk_iOS/DeepChordsSdk/Example/DeepChordsSdk/StarburstSdk.framework/Headers/StartburstMixSdk.h @@ -0,0 +1,111 @@ +// +// StartburstMixSdk.h +// StarburstSdk +// +// Created by liangshi on 2025/4/22. +// + +#import +#import +#import +#import +#import +#import +#import +#import +#import + +@interface StartburstMixSdk : NSObject + +@property (nonatomic, strong)void (^authCallback)(int code,NSString *msg);/// 鉴权结果回调,code200代表成功,其他为失败 +@property (nonatomic, readonly)BOOL didAuth;/// 是否已经鉴权 +@property (nonatomic, strong)void (^websocketStateCallback)(BOOL connected);/// websocket状态回调,true为已连接,false未链接 +@property (nonatomic, strong)void (^sendToBleCallback)(NSData *data);/// 发送给蓝牙设备 + +/// 单利 ++ (instancetype)shared; + +/// 收到蓝牙设备传过来的数据,交给sdk处理 +/// - Parameter data:数据 +- (void)receiveBleData:(NSData *)data; + +/// 蓝牙设备已经连上 +- (void)bleConnected; + +/// 蓝牙断开连接(在监听到蓝牙断开的时候,调用该方法通知sdk结束当前任务) +- (void)bleDisConnected; + + +/// 【文本摘要】 +/// - Parameters: +/// - text: 识别的文本 +/// - recognize: 识别结果回调 +/// - error: 错误回调 +- (void)summaryByText:(NSString *)text config:(StarburstAsrFileConfig*)config recognizeText:(void (^)(StarburstFileAsrModel*))recognize error:(void (^)(NSError *err))error; + +/// 【文本摘要】--流式 +/// - Parameters: +/// - text: 摘要的文字 +/// - recognize: 结果回调 +/// - error: 错误回调 +- (void)summaryByTextWithSplit:(NSString *)text recognizeText:(void (^)(StarburstStreamModel*))recognize error:(void (^)(NSError *err))error; + +/// 取消 【文本摘要】--流式 +-(void)cancelSummaryByTextWithSplit; + +/// 【文本翻译】 +/// - Parameters: +/// - text: 翻译的文字 +/// - config: 翻译配置 +/// - recognize: 识别结果回调 +/// - error: 错误回调 +- (void)translateByText:(NSString *)text config:(StarburstAsrFileConfig*)config recognizeText:(void (^)(StarburstFileAsrModel*))recognize error:(void (^)(NSError *err))error; + +/// 【文本翻译】--流式 +/// - Parameters: +/// - text: 翻译的文字 +/// - config: 翻译配置 +/// - recognize: 结果回调 +/// - error: 错误回调 +- (void)translateByTextWithSplit:(NSString *)text config:(StarburstTslConfig*)config recognizeText:(void (^)(StarburstStreamModel*))recognize error:(void (^)(NSError *err))error; + +/// 取消 【文本翻译】--流式 +-(void)cancelTranslateByTextWithSplit; + +/// 【同声传译】开始手机拾音 +/// - Parameters: +/// - config: 识别配置 +/// - voiceRecordData: 录音音频流回调 +/// - recognizeText: 识别回调 +/// - stateChange: 状态回调 +- (void)startRecordAsr:(StarburstAsrConfig*)config voiceRecord:(void (^)(NSData*))voiceData recognizeText:(void (^)(StarburstAsrModel*))recognize stateChange:(void(^)(StarburstCode code))stateChange interruption:(void(^)(void))interrupt; + +/// 【同声传译】结束手机拾音 +/// - Parameter fileCallback: 录音文件回调 +- (void)stopRecordAsr:(void(^)(NSString *filePath))fileCallback; + +/// 手机拾音对话设置 +/// - Parameters: +/// - config: 对话配置 +/// - startCallBack: 开始回调 +/// - textCallBack: 文本识别回调 +/// - voiceCallBack: AI语音回复回调 +/// - stateChange: 状态回调 +/// - finished:录音地址回调 +- (void)setupPhoneChatWith:(StarburstVoiceChatConfig*)config start:(void (^)(NSInteger dialogId))startCallback textCallback:(void (^)(StarbaustVoiceChatModel*))textCallBack responseVoice:(void (^)(NSInteger dialogId,NSData*data,BOOL finish))voiceCallBack stateChange:(void(^)(StarburstCode code))stateChange finished:(void(^)(NSString *filePath))path; + + +/// 手机拾音,开始对话 +/// - Parameter vadType: 0 vad检测,1不启用vad +- (void)startPhoneChat:(int)vadType; + +/// 结束手机拾音对话 +- (void)stopPhoneChat; + +/// 获取音色列表 +/// - Parameter callBack: 结果回调 +- (void)getVcSpeekerList:(void (^)(NSArray *list,BOOL success))callBack; + +@end + + diff --git a/document/DeepChordsSdk_iOS/DeepChordsSdk/Example/DeepChordsSdk/StarburstSdk.framework/Info.plist b/document/DeepChordsSdk_iOS/DeepChordsSdk/Example/DeepChordsSdk/StarburstSdk.framework/Info.plist new file mode 100644 index 0000000..5d0891e Binary files /dev/null and b/document/DeepChordsSdk_iOS/DeepChordsSdk/Example/DeepChordsSdk/StarburstSdk.framework/Info.plist differ diff --git a/document/DeepChordsSdk_iOS/DeepChordsSdk/Example/DeepChordsSdk/StarburstSdk.framework/Modules/module.modulemap b/document/DeepChordsSdk_iOS/DeepChordsSdk/Example/DeepChordsSdk/StarburstSdk.framework/Modules/module.modulemap new file mode 100644 index 0000000..7426ade --- /dev/null +++ b/document/DeepChordsSdk_iOS/DeepChordsSdk/Example/DeepChordsSdk/StarburstSdk.framework/Modules/module.modulemap @@ -0,0 +1,6 @@ +framework module StarburstSdk { + umbrella header "StarburstSdk.h" + export * + + module * { export * } +} diff --git a/document/DeepChordsSdk_iOS/DeepChordsSdk/Example/DeepChordsSdk/StarburstSdk.framework/PrivacyInfo.xcprivacy b/document/DeepChordsSdk_iOS/DeepChordsSdk/Example/DeepChordsSdk/StarburstSdk.framework/PrivacyInfo.xcprivacy new file mode 100644 index 0000000..c8b6829 --- /dev/null +++ b/document/DeepChordsSdk_iOS/DeepChordsSdk/Example/DeepChordsSdk/StarburstSdk.framework/PrivacyInfo.xcprivacy @@ -0,0 +1,27 @@ + + + + + NSPrivacyTracking + + NSPrivacyCollectedDataTypes + + + NSPrivacyCollectedDataType + NSPrivacyCollectedDataTypeAudioData + NSPrivacyCollectedDataTypeLinked + + NSPrivacyCollectedDataTypeTracking + + NSPrivacyCollectedDataTypePurposes + + NSPrivacyCollectedDataTypePurposeAppFunctionality + + + + NSPrivacyTrackingDomains + + NSPrivacyAccessedAPITypes + + + diff --git a/document/DeepChordsSdk_iOS/DeepChordsSdk/Example/DeepChordsSdk/StarburstSdk.framework/StarburstSdk b/document/DeepChordsSdk_iOS/DeepChordsSdk/Example/DeepChordsSdk/StarburstSdk.framework/StarburstSdk new file mode 100644 index 0000000..0444933 Binary files /dev/null and b/document/DeepChordsSdk_iOS/DeepChordsSdk/Example/DeepChordsSdk/StarburstSdk.framework/StarburstSdk differ diff --git a/document/DeepChordsSdk_iOS/DeepChordsSdk/Example/DeepChordsSdk/StarburstSdk.framework/_CodeSignature/CodeDirectory b/document/DeepChordsSdk_iOS/DeepChordsSdk/Example/DeepChordsSdk/StarburstSdk.framework/_CodeSignature/CodeDirectory new file mode 100644 index 0000000..ccd2d67 Binary files /dev/null and b/document/DeepChordsSdk_iOS/DeepChordsSdk/Example/DeepChordsSdk/StarburstSdk.framework/_CodeSignature/CodeDirectory differ diff --git a/document/DeepChordsSdk_iOS/DeepChordsSdk/Example/DeepChordsSdk/StarburstSdk.framework/_CodeSignature/CodeRequirements b/document/DeepChordsSdk_iOS/DeepChordsSdk/Example/DeepChordsSdk/StarburstSdk.framework/_CodeSignature/CodeRequirements new file mode 100644 index 0000000..c528e57 Binary files /dev/null and b/document/DeepChordsSdk_iOS/DeepChordsSdk/Example/DeepChordsSdk/StarburstSdk.framework/_CodeSignature/CodeRequirements differ diff --git a/document/DeepChordsSdk_iOS/DeepChordsSdk/Example/DeepChordsSdk/StarburstSdk.framework/_CodeSignature/CodeRequirements-1 b/document/DeepChordsSdk_iOS/DeepChordsSdk/Example/DeepChordsSdk/StarburstSdk.framework/_CodeSignature/CodeRequirements-1 new file mode 100644 index 0000000..07e5514 Binary files /dev/null and b/document/DeepChordsSdk_iOS/DeepChordsSdk/Example/DeepChordsSdk/StarburstSdk.framework/_CodeSignature/CodeRequirements-1 differ diff --git a/document/DeepChordsSdk_iOS/DeepChordsSdk/Example/DeepChordsSdk/StarburstSdk.framework/_CodeSignature/CodeResources b/document/DeepChordsSdk_iOS/DeepChordsSdk/Example/DeepChordsSdk/StarburstSdk.framework/_CodeSignature/CodeResources new file mode 100644 index 0000000..040d597 --- /dev/null +++ b/document/DeepChordsSdk_iOS/DeepChordsSdk/Example/DeepChordsSdk/StarburstSdk.framework/_CodeSignature/CodeResources @@ -0,0 +1,357 @@ + + + + + files + + Headers/StarbaustVoiceChatModel.h + + I6GwpMWb210AbU3/v9YLrfddoEA= + + Headers/StarburstAsrConfig.h + + O5iJsUMPvwiRYlgGCgXp4TmAllQ= + + Headers/StarburstAsrModel.h + + iiw2ZgUm4OBP2p0P0RSXd6gOwBY= + + Headers/StarburstConfig.h + + /Bp9QOl1Vlv/1q1uwSh5zjn5IPA= + + Headers/StarburstFileAsrModel.h + + KCay85nepjWFLxW32vUBaknoYTk= + + Headers/StarburstOffLineFile.h + + 28IGQ1ND/MHAAnUNKNBxuvS5ROc= + + Headers/StarburstPhoneSdk.h + + Qyvk+mUwCA6e59P6MqEGlKXAoV4= + + Headers/StarburstSdk.h + + UXMAS15KF45xW0cc4/2dI4vQTCQ= + + Headers/StarburstSdkManager.h + + SO4o81CoyyO4XOPAsZo1GUvl1p4= + + Headers/StarburstStreamModel.h + + cdW3VKYRIjOHM5xn0Zzt3fioFro= + + Headers/StarbusrtSpeaker.h + + SBlLEersGuEueZNxVNc2uyepfts= + + Headers/StartburstDecoderConfig.h + + CEyiYJhRwvumcRqNLLoJARHeU24= + + Headers/StartburstGlassChat.h + + utqD1cN73IP2Kj6ThbunMmpf3S8= + + Headers/StartburstGlassesSdk.h + + PWqGuJ/I4XGFgkETcPBwQWnDEzg= + + Headers/StartburstMixSdk.h + + bemNunuDBWDRu5cPpr/qtzb51HE= + + Info.plist + + TbwY6qSKiZSNAQ4zKoI1WNFwZSA= + + Modules/module.modulemap + + 0SW07sgC8aptSEw6560m065YdrY= + + PrivacyInfo.xcprivacy + + SRctDO3cqibONLEG7CPcNZVBnXw= + + + files2 + + Headers/StarbaustVoiceChatModel.h + + hash + + I6GwpMWb210AbU3/v9YLrfddoEA= + + hash2 + + 1h090jtb3WRV25cr3cYc+NPRWUvlbO3j4QqjmThCV9c= + + + Headers/StarburstAsrConfig.h + + hash + + O5iJsUMPvwiRYlgGCgXp4TmAllQ= + + hash2 + + 9ieYYQ/XtFmG0peIjWVyt2juVka68xC3vcJqEwQ8qHM= + + + Headers/StarburstAsrModel.h + + hash + + iiw2ZgUm4OBP2p0P0RSXd6gOwBY= + + hash2 + + 4P7mnRJalvX4ISPvk5QKj1CSZ762p7L8HNbs3dIVa9A= + + + Headers/StarburstConfig.h + + hash + + /Bp9QOl1Vlv/1q1uwSh5zjn5IPA= + + hash2 + + JMBJ67zUYPjxdjB6vpgfPtv5P5iPeEVIzIvo6tnFAmo= + + + Headers/StarburstFileAsrModel.h + + hash + + KCay85nepjWFLxW32vUBaknoYTk= + + hash2 + + Y1+wOB3+K0CSFktnWVRMaxl9SsvQMDAZcFup9gudCFg= + + + Headers/StarburstOffLineFile.h + + hash + + 28IGQ1ND/MHAAnUNKNBxuvS5ROc= + + hash2 + + JqjH7qjguq8OEs3MklD/pyfD9ULJzpCwIyS37AvPIe8= + + + Headers/StarburstPhoneSdk.h + + hash + + Qyvk+mUwCA6e59P6MqEGlKXAoV4= + + hash2 + + U7UlFVbYvM2vSO810pr82LySA9HeLA4uMBh6PnCY5aE= + + + Headers/StarburstSdk.h + + hash + + UXMAS15KF45xW0cc4/2dI4vQTCQ= + + hash2 + + OT9NyhWFaPzjchBx437Llm8zPGQdOJ1e/F2dRGEQEN8= + + + Headers/StarburstSdkManager.h + + hash + + SO4o81CoyyO4XOPAsZo1GUvl1p4= + + hash2 + + zYNzKgVctWkBxMvEJoFC+QgA9HMqVHL4rZ0ID3ef1/0= + + + Headers/StarburstStreamModel.h + + hash + + cdW3VKYRIjOHM5xn0Zzt3fioFro= + + hash2 + + XC3yJkUL3sL1YkFBUADx+q+Q47YB040DrB7QEhOJa7w= + + + Headers/StarbusrtSpeaker.h + + hash + + SBlLEersGuEueZNxVNc2uyepfts= + + hash2 + + yCNcI1umW3Pgn7rtgMv5kZTDZXr/QxvPNRoNjcIrTJU= + + + Headers/StartburstDecoderConfig.h + + hash + + CEyiYJhRwvumcRqNLLoJARHeU24= + + hash2 + + PlYBO1RRT96qRTFSidHUui8kpiVj0/pQW85jqIjCtzY= + + + Headers/StartburstGlassChat.h + + hash + + utqD1cN73IP2Kj6ThbunMmpf3S8= + + hash2 + + VaH6J5gUMxZ8Whr9yIF3iefTz8SKIWwpyY9dq3mMWYk= + + + Headers/StartburstGlassesSdk.h + + hash + + PWqGuJ/I4XGFgkETcPBwQWnDEzg= + + hash2 + + Kql2VWlouLzv+FTfPR9+WlIFxgJUw4NpHhMzCTfAz8o= + + + Headers/StartburstMixSdk.h + + hash + + bemNunuDBWDRu5cPpr/qtzb51HE= + + hash2 + + S6yNxpkYJSgoOVUAyuIhC8ourDLd4Pu6tKFnRkM+Me0= + + + Modules/module.modulemap + + hash + + 0SW07sgC8aptSEw6560m065YdrY= + + hash2 + + js/u3ymUzjIe0pCJDIjb2G3IBfLvIq7aILJo9tH8J8k= + + + PrivacyInfo.xcprivacy + + hash + + SRctDO3cqibONLEG7CPcNZVBnXw= + + hash2 + + cuaVRkQIQRl8fLAPRH2XlUdsPxO0W90uL0WcSHvmSnY= + + + + rules + + ^.* + + ^.*\.lproj/ + + optional + + weight + 1000 + + ^.*\.lproj/locversion.plist$ + + omit + + weight + 1100 + + ^Base\.lproj/ + + weight + 1010 + + ^version.plist$ + + + rules2 + + .*\.dSYM($|/) + + weight + 11 + + ^(.*/)?\.DS_Store$ + + omit + + weight + 2000 + + ^.* + + ^.*\.lproj/ + + optional + + weight + 1000 + + ^.*\.lproj/locversion.plist$ + + omit + + weight + 1100 + + ^Base\.lproj/ + + weight + 1010 + + ^Info\.plist$ + + omit + + weight + 20 + + ^PkgInfo$ + + omit + + weight + 20 + + ^embedded\.provisionprofile$ + + weight + 20 + + ^version\.plist$ + + weight + 20 + + + + diff --git a/document/DeepChordsSdk_iOS/DeepChordsSdk/Example/DeepChordsSdk/StarburstSdk.framework/_CodeSignature/CodeSignature b/document/DeepChordsSdk_iOS/DeepChordsSdk/Example/DeepChordsSdk/StarburstSdk.framework/_CodeSignature/CodeSignature new file mode 100644 index 0000000..b0642f2 Binary files /dev/null and b/document/DeepChordsSdk_iOS/DeepChordsSdk/Example/DeepChordsSdk/StarburstSdk.framework/_CodeSignature/CodeSignature differ diff --git a/document/DeepChordsSdk_iOS/DeepChordsSdk/Example/Example.xcodeproj/project.pbxproj b/document/DeepChordsSdk_iOS/DeepChordsSdk/Example/Example.xcodeproj/project.pbxproj index 86335e0..2cfb8a5 100644 --- a/document/DeepChordsSdk_iOS/DeepChordsSdk/Example/Example.xcodeproj/project.pbxproj +++ b/document/DeepChordsSdk_iOS/DeepChordsSdk/Example/Example.xcodeproj/project.pbxproj @@ -7,26 +7,43 @@ objects = { /* Begin PBXBuildFile section */ - 3F3F021A2ED454680038A1C8 /* DeepChordsSdk.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3F3F02162ED452DC0038A1C8 /* DeepChordsSdk.framework */; }; + 111E0F1C572CCDE29D292F2C /* Pods_DeepChordsSdk.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A3D9D4F11FC88844BFEAE4C3 /* Pods_DeepChordsSdk.framework */; }; + 3F3F14032ED5A9A50038A1C8 /* DeepChordsSdk.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3F3F13E32ED5A8C10038A1C8 /* DeepChordsSdk.framework */; }; 6A05823333B2C2EB854DC2D7 /* Pods_Example.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7BA0D452D1F1A03B9DE590FF /* Pods_Example.framework */; }; /* End PBXBuildFile section */ -/* Begin PBXContainerItemProxy section */ - 3F3F02152ED452DC0038A1C8 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 3F3F020B2ED452DC0038A1C8 /* DeepChordsSdk.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 3F3F01C92ED44F730038A1C8; - remoteInfo = DeepChordsSdk; - }; -/* End PBXContainerItemProxy section */ +/* Begin PBXCopyFilesBuildPhase section */ + 3F3F14432ED5AC240038A1C8 /* Embed Frameworks */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + ); + name = "Embed Frameworks"; + runOnlyForDeploymentPostprocessing = 0; + }; + 3F3F14492ED5AC570038A1C8 /* Embed Frameworks */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + ); + name = "Embed Frameworks"; + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ + 23C20F392C077DCC8875F909 /* Pods-DeepChordsSdk.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-DeepChordsSdk.release.xcconfig"; path = "Target Support Files/Pods-DeepChordsSdk/Pods-DeepChordsSdk.release.xcconfig"; sourceTree = ""; }; 3F3F01E32ED451920038A1C8 /* Example.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Example.app; sourceTree = BUILT_PRODUCTS_DIR; }; - 3F3F020B2ED452DC0038A1C8 /* DeepChordsSdk.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DeepChordsSdk.xcodeproj; path = ../DeepChordsSdk/DeepChordsSdk.xcodeproj; sourceTree = SOURCE_ROOT; }; + 3F3F13E32ED5A8C10038A1C8 /* DeepChordsSdk.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = DeepChordsSdk.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 55108288A4959871FAF7AC5F /* Pods-Example.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Example.debug.xcconfig"; path = "Target Support Files/Pods-Example/Pods-Example.debug.xcconfig"; sourceTree = ""; }; 6A0C11EDFE570E63DB17064A /* Pods-Example.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Example.release.xcconfig"; path = "Target Support Files/Pods-Example/Pods-Example.release.xcconfig"; sourceTree = ""; }; 7BA0D452D1F1A03B9DE590FF /* Pods_Example.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Example.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + A3D9D4F11FC88844BFEAE4C3 /* Pods_DeepChordsSdk.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_DeepChordsSdk.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + C91EC257243FCFD24EEE8863 /* Pods-DeepChordsSdk.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-DeepChordsSdk.debug.xcconfig"; path = "Target Support Files/Pods-DeepChordsSdk/Pods-DeepChordsSdk.debug.xcconfig"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFileSystemSynchronizedBuildFileExceptionSet section */ @@ -37,8 +54,38 @@ ); target = 3F3F01E22ED451920038A1C8 /* Example */; }; + 3F3F14462ED5AC420038A1C8 /* Exceptions for "DeepChordsSdk" folder in "Example" target */ = { + isa = PBXFileSystemSynchronizedBuildFileExceptionSet; + membershipExceptions = ( + StarburstSdk.framework, + ); + target = 3F3F01E22ED451920038A1C8 /* Example */; + }; /* End PBXFileSystemSynchronizedBuildFileExceptionSet section */ +/* Begin PBXFileSystemSynchronizedGroupBuildPhaseMembershipExceptionSet section */ + 3F3F14442ED5AC240038A1C8 /* Exceptions for "DeepChordsSdk" folder in "Embed Frameworks" phase from "DeepChordsSdk" target */ = { + isa = PBXFileSystemSynchronizedGroupBuildPhaseMembershipExceptionSet; + attributesByRelativePath = { + StarburstSdk.framework = (CodeSignOnCopy, RemoveHeadersOnCopy, ); + }; + buildPhase = 3F3F14432ED5AC240038A1C8 /* Embed Frameworks */; + membershipExceptions = ( + StarburstSdk.framework, + ); + }; + 3F3F144A2ED5AC570038A1C8 /* Exceptions for "DeepChordsSdk" folder in "Embed Frameworks" phase from "Example" target */ = { + isa = PBXFileSystemSynchronizedGroupBuildPhaseMembershipExceptionSet; + attributesByRelativePath = { + StarburstSdk.framework = (CodeSignOnCopy, RemoveHeadersOnCopy, ); + }; + buildPhase = 3F3F14492ED5AC570038A1C8 /* Embed Frameworks */; + membershipExceptions = ( + StarburstSdk.framework, + ); + }; +/* End PBXFileSystemSynchronizedGroupBuildPhaseMembershipExceptionSet section */ + /* Begin PBXFileSystemSynchronizedRootGroup section */ 3F3F01E52ED451920038A1C8 /* Example */ = { isa = PBXFileSystemSynchronizedRootGroup; @@ -48,6 +95,16 @@ path = Example; sourceTree = ""; }; + 3F3F13E42ED5A8C10038A1C8 /* DeepChordsSdk */ = { + isa = PBXFileSystemSynchronizedRootGroup; + exceptions = ( + 3F3F14462ED5AC420038A1C8 /* Exceptions for "DeepChordsSdk" folder in "Example" target */, + 3F3F144A2ED5AC570038A1C8 /* Exceptions for "DeepChordsSdk" folder in "Embed Frameworks" phase from "Example" target */, + 3F3F14442ED5AC240038A1C8 /* Exceptions for "DeepChordsSdk" folder in "Embed Frameworks" phase from "DeepChordsSdk" target */, + ); + path = DeepChordsSdk; + sourceTree = ""; + }; /* End PBXFileSystemSynchronizedRootGroup section */ /* Begin PBXFrameworksBuildPhase section */ @@ -55,19 +112,27 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 3F3F021A2ED454680038A1C8 /* DeepChordsSdk.framework in Frameworks */, + 3F3F14032ED5A9A50038A1C8 /* DeepChordsSdk.framework in Frameworks */, 6A05823333B2C2EB854DC2D7 /* Pods_Example.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; + 3F3F13E02ED5A8C10038A1C8 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 111E0F1C572CCDE29D292F2C /* Pods_DeepChordsSdk.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ 3F3F01DA2ED451920038A1C8 = { isa = PBXGroup; children = ( - 3F3F020B2ED452DC0038A1C8 /* DeepChordsSdk.xcodeproj */, 3F3F01E52ED451920038A1C8 /* Example */, + 3F3F13E42ED5A8C10038A1C8 /* DeepChordsSdk */, 3F3F01E42ED451920038A1C8 /* Products */, CC7A28DFCD6405C009EC973C /* Pods */, C0F54FE5A9CB8F871597A553 /* Frameworks */, @@ -78,14 +143,7 @@ isa = PBXGroup; children = ( 3F3F01E32ED451920038A1C8 /* Example.app */, - ); - name = Products; - sourceTree = ""; - }; - 3F3F02122ED452DC0038A1C8 /* Products */ = { - isa = PBXGroup; - children = ( - 3F3F02162ED452DC0038A1C8 /* DeepChordsSdk.framework */, + 3F3F13E32ED5A8C10038A1C8 /* DeepChordsSdk.framework */, ); name = Products; sourceTree = ""; @@ -94,6 +152,7 @@ isa = PBXGroup; children = ( 7BA0D452D1F1A03B9DE590FF /* Pods_Example.framework */, + A3D9D4F11FC88844BFEAE4C3 /* Pods_DeepChordsSdk.framework */, ); name = Frameworks; sourceTree = ""; @@ -103,6 +162,8 @@ children = ( 55108288A4959871FAF7AC5F /* Pods-Example.debug.xcconfig */, 6A0C11EDFE570E63DB17064A /* Pods-Example.release.xcconfig */, + C91EC257243FCFD24EEE8863 /* Pods-DeepChordsSdk.debug.xcconfig */, + 23C20F392C077DCC8875F909 /* Pods-DeepChordsSdk.release.xcconfig */, ); name = Pods; path = ../Pods; @@ -110,6 +171,16 @@ }; /* End PBXGroup section */ +/* Begin PBXHeadersBuildPhase section */ + 3F3F13DE2ED5A8C10038A1C8 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXHeadersBuildPhase section */ + /* Begin PBXNativeTarget section */ 3F3F01E22ED451920038A1C8 /* Example */ = { isa = PBXNativeTarget; @@ -120,6 +191,7 @@ 3F3F01E02ED451920038A1C8 /* Frameworks */, 3F3F01E12ED451920038A1C8 /* Resources */, 31C287F34CEEBF9AF3C42349 /* [CP] Embed Pods Frameworks */, + 3F3F14492ED5AC570038A1C8 /* Embed Frameworks */, ); buildRules = ( ); @@ -133,6 +205,29 @@ productReference = 3F3F01E32ED451920038A1C8 /* Example.app */; productType = "com.apple.product-type.application"; }; + 3F3F13E22ED5A8C10038A1C8 /* DeepChordsSdk */ = { + isa = PBXNativeTarget; + buildConfigurationList = 3F3F13EB2ED5A8C10038A1C8 /* Build configuration list for PBXNativeTarget "DeepChordsSdk" */; + buildPhases = ( + 8D997A91CC5B5810A80A417F /* [CP] Check Pods Manifest.lock */, + 3F3F13DE2ED5A8C10038A1C8 /* Headers */, + 3F3F13DF2ED5A8C10038A1C8 /* Sources */, + 3F3F13E02ED5A8C10038A1C8 /* Frameworks */, + 3F3F13E12ED5A8C10038A1C8 /* Resources */, + 3F3F14432ED5AC240038A1C8 /* Embed Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + fileSystemSynchronizedGroups = ( + 3F3F13E42ED5A8C10038A1C8 /* DeepChordsSdk */, + ); + name = DeepChordsSdk; + productName = DeepChordsSdk; + productReference = 3F3F13E32ED5A8C10038A1C8 /* DeepChordsSdk.framework */; + productType = "com.apple.product-type.framework"; + }; /* End PBXNativeTarget section */ /* Begin PBXProject section */ @@ -146,6 +241,9 @@ 3F3F01E22ED451920038A1C8 = { CreatedOnToolsVersion = 16.4; }; + 3F3F13E22ED5A8C10038A1C8 = { + CreatedOnToolsVersion = 16.4; + }; }; }; buildConfigurationList = 3F3F01DE2ED451920038A1C8 /* Build configuration list for PBXProject "Example" */; @@ -160,29 +258,14 @@ preferredProjectObjectVersion = 77; productRefGroup = 3F3F01E42ED451920038A1C8 /* Products */; projectDirPath = ""; - projectReferences = ( - { - ProductGroup = 3F3F02122ED452DC0038A1C8 /* Products */; - ProjectRef = 3F3F020B2ED452DC0038A1C8 /* DeepChordsSdk.xcodeproj */; - }, - ); projectRoot = ""; targets = ( 3F3F01E22ED451920038A1C8 /* Example */, + 3F3F13E22ED5A8C10038A1C8 /* DeepChordsSdk */, ); }; /* End PBXProject section */ -/* Begin PBXReferenceProxy section */ - 3F3F02162ED452DC0038A1C8 /* DeepChordsSdk.framework */ = { - isa = PBXReferenceProxy; - fileType = wrapper.framework; - path = DeepChordsSdk.framework; - remoteRef = 3F3F02152ED452DC0038A1C8 /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; -/* End PBXReferenceProxy section */ - /* Begin PBXResourcesBuildPhase section */ 3F3F01E12ED451920038A1C8 /* Resources */ = { isa = PBXResourcesBuildPhase; @@ -191,6 +274,13 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 3F3F13E12ED5A8C10038A1C8 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ @@ -215,6 +305,28 @@ shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Example/Pods-Example-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; + 8D997A91CC5B5810A80A417F /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-DeepChordsSdk-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; 920C714DEF2228CDD463DAA2 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; @@ -247,6 +359,13 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 3F3F13DF2ED5A8C10038A1C8 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXSourcesBuildPhase section */ /* Begin XCBuildConfiguration section */ @@ -259,8 +378,13 @@ CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; DEVELOPMENT_TEAM = G23X75CJ67; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)/DeepChordsSdk", + ); GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = Example/Info.plist; + INFOPLIST_KEY_NSBluetoothAlwaysUsageDescription = "使用蓝牙哦"; INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen; INFOPLIST_KEY_UIMainStoryboardFile = Main; @@ -272,7 +396,45 @@ "@executable_path/Frameworks", ); MARKETING_VERSION = 1.0; - PRODUCT_BUNDLE_IDENTIFIER = demo.Example; + OTHER_LDFLAGS = ( + "$(inherited)", + "-l\"icucore\"", + "-l\"swiftCoreGraphics\"", + "-framework", + "\"CFNetwork\"", + "-framework", + "\"Combine\"", + "-framework", + "\"IQKeyboardCore\"", + "-framework", + "\"IQKeyboardManagerSwift\"", + "-framework", + "\"IQKeyboardNotification\"", + "-framework", + "\"IQKeyboardReturnManager\"", + "-framework", + "\"IQKeyboardToolbar\"", + "-framework", + "\"IQKeyboardToolbarManager\"", + "-framework", + "\"IQTextInputViewNotification\"", + "-framework", + "\"IQTextView\"", + "-framework", + "\"QuartzCore\"", + "-framework", + "\"Security\"", + "-framework", + "\"SnapKit\"", + "-framework", + "\"SocketRocket\"", + "-framework", + "\"Toast_Swift\"", + "-framework", + "\"UIKit\"", + "-ObjC", + ); + PRODUCT_BUNDLE_IDENTIFIER = deepchords.guchuandao.Example; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_EMIT_LOC_STRINGS = YES; SWIFT_VERSION = 5.0; @@ -289,8 +451,13 @@ CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; DEVELOPMENT_TEAM = G23X75CJ67; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)/DeepChordsSdk", + ); GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = Example/Info.plist; + INFOPLIST_KEY_NSBluetoothAlwaysUsageDescription = "使用蓝牙哦"; INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen; INFOPLIST_KEY_UIMainStoryboardFile = Main; @@ -302,7 +469,45 @@ "@executable_path/Frameworks", ); MARKETING_VERSION = 1.0; - PRODUCT_BUNDLE_IDENTIFIER = demo.Example; + OTHER_LDFLAGS = ( + "$(inherited)", + "-l\"icucore\"", + "-l\"swiftCoreGraphics\"", + "-framework", + "\"CFNetwork\"", + "-framework", + "\"Combine\"", + "-framework", + "\"IQKeyboardCore\"", + "-framework", + "\"IQKeyboardManagerSwift\"", + "-framework", + "\"IQKeyboardNotification\"", + "-framework", + "\"IQKeyboardReturnManager\"", + "-framework", + "\"IQKeyboardToolbar\"", + "-framework", + "\"IQKeyboardToolbarManager\"", + "-framework", + "\"IQTextInputViewNotification\"", + "-framework", + "\"IQTextView\"", + "-framework", + "\"QuartzCore\"", + "-framework", + "\"Security\"", + "-framework", + "\"SnapKit\"", + "-framework", + "\"SocketRocket\"", + "-framework", + "\"Toast_Swift\"", + "-framework", + "\"UIKit\"", + "-ObjC", + ); + PRODUCT_BUNDLE_IDENTIFIER = deepchords.guchuandao.Example; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_EMIT_LOC_STRINGS = YES; SWIFT_VERSION = 5.0; @@ -429,6 +634,112 @@ }; name = Release; }; + 3F3F13EC2ED5A8C10038A1C8 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = C91EC257243FCFD24EEE8863 /* Pods-DeepChordsSdk.debug.xcconfig */; + buildSettings = { + BUILD_LIBRARY_FOR_DISTRIBUTION = YES; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEAD_CODE_STRIPPING = NO; + DEVELOPMENT_TEAM = G23X75CJ67; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_MODULE_VERIFIER = YES; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)/DeepChordsSdk", + ); + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_KEY_NSHumanReadableCopyright = ""; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MACH_O_TYPE = staticlib; + MARKETING_VERSION = 1.0; + MODULE_VERIFIER_SUPPORTED_LANGUAGES = "objective-c objective-c++"; + MODULE_VERIFIER_SUPPORTED_LANGUAGE_STANDARDS = "gnu17 gnu++20"; + OTHER_LDFLAGS = ( + "$(inherited)", + "-l\"icucore\"", + "-framework", + "\"CFNetwork\"", + "-framework", + "\"Security\"", + "-framework", + "\"SocketRocket\"", + "-ObjC", + ); + PRODUCT_BUNDLE_IDENTIFIER = demo.DeepChordsSdk; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + SKIP_INSTALL = YES; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_INSTALL_MODULE = YES; + SWIFT_INSTALL_OBJC_HEADER = NO; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; + 3F3F13ED2ED5A8C10038A1C8 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 23C20F392C077DCC8875F909 /* Pods-DeepChordsSdk.release.xcconfig */; + buildSettings = { + BUILD_LIBRARY_FOR_DISTRIBUTION = YES; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEAD_CODE_STRIPPING = NO; + DEVELOPMENT_TEAM = G23X75CJ67; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_MODULE_VERIFIER = YES; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)/DeepChordsSdk", + ); + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_KEY_NSHumanReadableCopyright = ""; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MACH_O_TYPE = staticlib; + MARKETING_VERSION = 1.0; + MODULE_VERIFIER_SUPPORTED_LANGUAGES = "objective-c objective-c++"; + MODULE_VERIFIER_SUPPORTED_LANGUAGE_STANDARDS = "gnu17 gnu++20"; + OTHER_LDFLAGS = ( + "$(inherited)", + "-l\"icucore\"", + "-framework", + "\"CFNetwork\"", + "-framework", + "\"Security\"", + "-framework", + "\"SocketRocket\"", + "-ObjC", + ); + PRODUCT_BUNDLE_IDENTIFIER = demo.DeepChordsSdk; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + SKIP_INSTALL = YES; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_INSTALL_MODULE = YES; + SWIFT_INSTALL_OBJC_HEADER = NO; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ @@ -450,6 +761,15 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; + 3F3F13EB2ED5A8C10038A1C8 /* Build configuration list for PBXNativeTarget "DeepChordsSdk" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 3F3F13EC2ED5A8C10038A1C8 /* Debug */, + 3F3F13ED2ED5A8C10038A1C8 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; /* End XCConfigurationList section */ }; rootObject = 3F3F01DB2ED451920038A1C8 /* Project object */; diff --git a/document/DeepChordsSdk_iOS/DeepChordsSdk/Example/Example.xcodeproj/xcshareddata/xcschemes/DeepChordsSdk.xcscheme b/document/DeepChordsSdk_iOS/DeepChordsSdk/Example/Example.xcodeproj/xcshareddata/xcschemes/DeepChordsSdk.xcscheme new file mode 100644 index 0000000..75f652e --- /dev/null +++ b/document/DeepChordsSdk_iOS/DeepChordsSdk/Example/Example.xcodeproj/xcshareddata/xcschemes/DeepChordsSdk.xcscheme @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/document/DeepChordsSdk_iOS/DeepChordsSdk/Example/Example/Info.plist b/document/DeepChordsSdk_iOS/DeepChordsSdk/Example/Example/Info.plist index fb4e325..dd3c9af 100644 --- a/document/DeepChordsSdk_iOS/DeepChordsSdk/Example/Example/Info.plist +++ b/document/DeepChordsSdk_iOS/DeepChordsSdk/Example/Example/Info.plist @@ -21,7 +21,5 @@ - NSBluetoothAlwaysUsageDescription - 使用蓝牙哦 diff --git a/document/DeepChordsSdk_iOS/DeepChordsSdk/Example/Example/VC/LogVC.swift b/document/DeepChordsSdk_iOS/DeepChordsSdk/Example/Example/VC/LogVC.swift index 424bb67..dcd6df8 100644 --- a/document/DeepChordsSdk_iOS/DeepChordsSdk/Example/Example/VC/LogVC.swift +++ b/document/DeepChordsSdk_iOS/DeepChordsSdk/Example/Example/VC/LogVC.swift @@ -51,6 +51,10 @@ class LogVC: UIViewController { vc.delegate = self vc.modalPresentationStyle = .overFullScreen self.present(vc, animated: true, completion: nil) + +// let vc = UIActivityViewController(activityItems: [URL(fileURLWithPath: filePath)], applicationActivities: nil) +// vc.modalPresentationStyle = .overFullScreen +// App.shared.topVC().present(vc, animated: true) } } diff --git a/document/DeepChordsSdk_iOS/DeepChordsSdk/Example/Example/VC/SceneDelegate.swift b/document/DeepChordsSdk_iOS/DeepChordsSdk/Example/Example/VC/SceneDelegate.swift index 56a8db4..321585c 100644 --- a/document/DeepChordsSdk_iOS/DeepChordsSdk/Example/Example/VC/SceneDelegate.swift +++ b/document/DeepChordsSdk_iOS/DeepChordsSdk/Example/Example/VC/SceneDelegate.swift @@ -6,7 +6,7 @@ // import UIKit - +import DeepChordsSdk class SceneDelegate: UIResponder, UIWindowSceneDelegate { var window: UIWindow? @@ -19,6 +19,7 @@ class SceneDelegate: UIResponder, UIWindowSceneDelegate { guard let _ = (scene as? UIWindowScene) else { return } App.shared.window = window window?.rootViewController = UINavigationController(rootViewController: HomeVC()) + DeepChordsAiSdk.shared.initSDK() } func sceneDidDisconnect(_ scene: UIScene) { diff --git a/document/DeepChordsSdk_iOS/DeepChordsSdk/Example/Example/tools/LogManager.swift b/document/DeepChordsSdk_iOS/DeepChordsSdk/Example/Example/tools/LogManager.swift deleted file mode 100644 index 38b5c78..0000000 --- a/document/DeepChordsSdk_iOS/DeepChordsSdk/Example/Example/tools/LogManager.swift +++ /dev/null @@ -1,64 +0,0 @@ -//// -//// LogManager.swift -//// Example -//// -//// Created by liangshi on 2025/11/24. -//// -// -//import Foundation -// -///// 日记管理 -//class Logger { -// static var isDebug: Bool = true -// -// fileprivate static let shared = Logger() -// private var fileHandle:FileHandle? -// private init() { -// let path = getPath() -// fileHandle = FileHandle(forWritingAtPath: path)! -// //fileHandle?.seekToEndOfFile() -// } -// -// fileprivate var dateString: String { Date().format(.full) } -// -// static var logs: [String] = [] -// -// -// private func getPath()->String{ -// let foldPath = NSHomeDirectory() + "/Documents/" -// let fileManager = FileManager.default -// if !fileManager.fileExists(atPath: foldPath) { -// do { -// try FileManager.default.createDirectory(atPath: foldPath, withIntermediateDirectories: true, attributes: nil) -// } catch { -// return "" -// } -// } -// let path = foldPath + "\(Date().format(.middle)).log" -// if !FileManager.default.fileExists(atPath: path) { -// FileManager.default.createFile(atPath: path, contents: nil, attributes: nil) -// -// } -// return path -// } -//} -// -//extension Logger { -// static func debug(_ logs: Any..., line: Int = #line, separator: String = " ", terminator: String = "\n") { -// objc_sync_enter(Logger.shared) -// if Logger.isDebug { -// print(Logger.shared.dateString, terminator: " [Example-\(String(format: "%03d", line))]: ") -// print(logs, separator: separator, terminator: terminator) -// let logString = Logger.shared.dateString + " [Example-\(String(format: "%03d", line))]: " + logs.map({ "\($0)" }).joined(separator: separator) + terminator -// Self.logs.append(logString) -// Logger.shared.saveLog(log: logString) -// } -// objc_sync_exit(Logger.shared) -// -// -// } -// -// private func saveLog(log:String){ -// fileHandle?.write(log.data(using: .utf8)!) -// } -//} diff --git a/document/DeepChordsSdk_iOS/DeepChordsSdk/Example/Example/tools/Untitled.swift b/document/DeepChordsSdk_iOS/DeepChordsSdk/Example/Example/tools/Untitled.swift deleted file mode 100644 index f97f11d..0000000 --- a/document/DeepChordsSdk_iOS/DeepChordsSdk/Example/Example/tools/Untitled.swift +++ /dev/null @@ -1,7 +0,0 @@ -// -// Untitled.swift -// Example -// -// Created by liangshi on 2025/11/25. -// - diff --git a/document/DeepChordsSdk_iOS/DeepChordsSdk/Podfile.lock b/document/DeepChordsSdk_iOS/DeepChordsSdk/Podfile.lock index 8f5ff74..4d306eb 100644 --- a/document/DeepChordsSdk_iOS/DeepChordsSdk/Podfile.lock +++ b/document/DeepChordsSdk_iOS/DeepChordsSdk/Podfile.lock @@ -40,11 +40,13 @@ PODS: - IQTextView (1.0.5): - IQKeyboardToolbar/Placeholderable - SnapKit (5.7.1) + - SocketRocket (0.7.1) - Toast-Swift (5.1.1) DEPENDENCIES: - IQKeyboardManagerSwift - SnapKit (~> 5.7.0) + - SocketRocket - Toast-Swift SPEC REPOS: @@ -58,6 +60,7 @@ SPEC REPOS: - IQTextInputViewNotification - IQTextView - SnapKit + - SocketRocket - Toast-Swift SPEC CHECKSUMS: @@ -70,8 +73,9 @@ SPEC CHECKSUMS: IQTextInputViewNotification: f5e954d8881fd9808b744e49e024cc0d4bcfe572 IQTextView: ae13b4922f22e6f027f62c557d9f4f236b19d5c7 SnapKit: d612e99e678a2d3b95bf60b0705ed0a35c03484a + SocketRocket: d4aabe649be1e368d1318fdf28a022d714d65748 Toast-Swift: 7a03a532afe3a560d4044bc7c237e2864d295173 -PODFILE CHECKSUM: 5d97c5bf393ba3a0211c0fe64821f515e1d9488f +PODFILE CHECKSUM: 3b64f91d7c4f6c0036af83b3b1ff330c07d705a8 COCOAPODS: 1.16.2 diff --git a/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/Manifest.lock b/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/Manifest.lock index 8f5ff74..4d306eb 100644 --- a/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/Manifest.lock +++ b/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/Manifest.lock @@ -40,11 +40,13 @@ PODS: - IQTextView (1.0.5): - IQKeyboardToolbar/Placeholderable - SnapKit (5.7.1) + - SocketRocket (0.7.1) - Toast-Swift (5.1.1) DEPENDENCIES: - IQKeyboardManagerSwift - SnapKit (~> 5.7.0) + - SocketRocket - Toast-Swift SPEC REPOS: @@ -58,6 +60,7 @@ SPEC REPOS: - IQTextInputViewNotification - IQTextView - SnapKit + - SocketRocket - Toast-Swift SPEC CHECKSUMS: @@ -70,8 +73,9 @@ SPEC CHECKSUMS: IQTextInputViewNotification: f5e954d8881fd9808b744e49e024cc0d4bcfe572 IQTextView: ae13b4922f22e6f027f62c557d9f4f236b19d5c7 SnapKit: d612e99e678a2d3b95bf60b0705ed0a35c03484a + SocketRocket: d4aabe649be1e368d1318fdf28a022d714d65748 Toast-Swift: 7a03a532afe3a560d4044bc7c237e2864d295173 -PODFILE CHECKSUM: 5d97c5bf393ba3a0211c0fe64821f515e1d9488f +PODFILE CHECKSUM: 3b64f91d7c4f6c0036af83b3b1ff330c07d705a8 COCOAPODS: 1.16.2 diff --git a/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/Pods.xcodeproj/project.pbxproj b/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/Pods.xcodeproj/project.pbxproj index 75530f1..e0e2481 100644 --- a/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/Pods.xcodeproj/project.pbxproj +++ b/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/Pods.xcodeproj/project.pbxproj @@ -7,779 +7,912 @@ objects = { /* Begin PBXBuildFile section */ - 01216C042B056FFF0FC7EE32A002C38A /* IQKeyboardCore-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 488126919669AEE0AB6BD8855DBA7E1D /* IQKeyboardCore-dummy.m */; }; - 0185547536624B4BC74DA12FF9D14085 /* IQKeyboardToolbarManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = AB854D7CA85BFEEFB6266DFA1E9D61B8 /* IQKeyboardToolbarManager.swift */; }; - 05F4664FC4EF89925161A064AA6481BB /* IQKeyboardManager+Position.swift in Sources */ = {isa = PBXBuildFile; fileRef = 27FF931A64B73FEE5D4A85928D51804A /* IQKeyboardManager+Position.swift */; }; - 064D909CD827405E8DCC309DB1B7775A /* ConstraintLayoutSupportDSL.swift in Sources */ = {isa = PBXBuildFile; fileRef = FB1CED982DADF5E89D9B7C4994281A20 /* ConstraintLayoutSupportDSL.swift */; }; - 070601D9903BE1D11DD6DD1367C3F012 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 83D92008D686D90200D0E2D8BE76582B /* Foundation.framework */; }; - 07F73EA22A5F4AA24C081D7739D6652C /* IQKeyboardToolbarConstants.swift in Sources */ = {isa = PBXBuildFile; fileRef = 668BB2AC6F690F784C35587B8BF5F759 /* IQKeyboardToolbarConstants.swift */; }; - 09D303C994021652DF841C463DBD1DC5 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 83D92008D686D90200D0E2D8BE76582B /* Foundation.framework */; }; - 09E1F569A93FAD4B9149E30B9301F44A /* ConstraintPriority.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8ECEAA4A365919AC774C896E18E759AA /* ConstraintPriority.swift */; }; - 09FABB7674B8063235602CC7AEBFAF3D /* IQBarButtonItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7BEC044A89EDCA943365E4156BE49F6A /* IQBarButtonItem.swift */; }; - 0A7F4733B11AE10847063A9D648C9F2C /* Combine.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 288DC5C96A5DECE79EDC44987BF2A77C /* Combine.framework */; }; - 0AE37480557069924C434356A50CB99D /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 83D92008D686D90200D0E2D8BE76582B /* Foundation.framework */; }; - 0C7E48CC6391092D8F5B4341E1EE7485 /* Toast-Swift-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = D6041C81E4991A91F5A45F589A80282E /* Toast-Swift-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 0CA7A132ABE7018DE9295456732F38BB /* ConstraintAttributes.swift in Sources */ = {isa = PBXBuildFile; fileRef = AADFD372200F5622C3E275C18DAEF64C /* ConstraintAttributes.swift */; }; - 0DE5DB9C6227B3416778D8417DD95EA9 /* ConstraintView+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = F6A61B701D8AF835B15A01AC3B3ABDFB /* ConstraintView+Extensions.swift */; }; - 103706F1CB831BCC4745A590866274ED /* UIView+IQKeyboardExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = D6F24EDA81C0D3AF65C1C30A74BC8466 /* UIView+IQKeyboardExtension.swift */; }; - 10B43C98D0F772130D75F66A1984E68C /* IQKeyboardReturnManager-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 612302F0FAD21B517B996AB187CA6449 /* IQKeyboardReturnManager-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 1194E62AA3F6F506799B1A43B16942B5 /* ConstraintDirectionalInsets.swift in Sources */ = {isa = PBXBuildFile; fileRef = C64F946A6CF4B3D30483C6FCDE237D46 /* ConstraintDirectionalInsets.swift */; }; - 154230695B4E3D61B8D2BD02DAA2CE91 /* IQKeyboardManager+Appearance_Deprecated.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33C48FDE215E1319970EE8067F27C546 /* IQKeyboardManager+Appearance_Deprecated.swift */; }; - 172B6B4E5550420B8131FBD62C975821 /* Toast.swift in Sources */ = {isa = PBXBuildFile; fileRef = D70722A63D8C3F991856EF872356AFB1 /* Toast.swift */; }; - 181E35D74C67FFDE9F8A5A870F5F60B1 /* IQKeyboardToolbarManager+Toolbar.swift in Sources */ = {isa = PBXBuildFile; fileRef = 442771E28F516C75AF67BCAA132E4A56 /* IQKeyboardToolbarManager+Toolbar.swift */; }; - 18D58CD25F5E8B4A86170A1D907516C3 /* IQKeyboardReturnManager-IQKeyboardReturnManager in Resources */ = {isa = PBXBuildFile; fileRef = 110BD425B6CAD6801539E2C6AB6E0662 /* IQKeyboardReturnManager-IQKeyboardReturnManager */; }; - 1D06D98BA3B7C6A1D7BFEF8DB9CB1948 /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = 9A926C38DDD5B0CB77DBF7BE94EF672E /* PrivacyInfo.xcprivacy */; }; - 205EB01AED14BB574DD54EAFE26E4786 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 83D92008D686D90200D0E2D8BE76582B /* Foundation.framework */; }; - 24637C51989929A62E5E75585544A14D /* IQKeyboardManager+Debug.swift in Sources */ = {isa = PBXBuildFile; fileRef = 28400A2CE3EE2B07169489BF74B7FE98 /* IQKeyboardManager+Debug.swift */; }; - 25BE643B401DBC4C6DC006ED6871486D /* IQTextView-IQTextView in Resources */ = {isa = PBXBuildFile; fileRef = 847044E56CBBCE1235A6F3CEF3F9F607 /* IQTextView-IQTextView */; }; - 2B067825708D13E7E455426389397D1A /* UIView+IQKeyboardManagerExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = A8E4BB35A9C12143A016443E5B5AF064 /* UIView+IQKeyboardManagerExtension.swift */; }; - 2B2EB369550CE92CEEFCBFD3D32B8A3F /* ConstraintInsetTarget.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0D1B695DB3D9B30B1E895FE056EDB0D2 /* ConstraintInsetTarget.swift */; }; - 30D6F928FC08B13B5BFEEB154A2089C1 /* IQKeyboardManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 93B6A56AC9E28078E6884FB890E1B4F3 /* IQKeyboardManager.swift */; }; - 332EB3263B1002A5A0A146CCE70501AD /* IQRootControllerConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = BD6E85B5A6A0DAC92CE30328684DD7C8 /* IQRootControllerConfiguration.swift */; }; - 355A2A3962A82AE25D219DB774CB6AEE /* UIView+ResignObjc.swift in Sources */ = {isa = PBXBuildFile; fileRef = E78AC8B5EF810FFB832428E336AF5659 /* UIView+ResignObjc.swift */; }; - 3577F172FA68CBAE47CFEE6FE25C5404 /* ConstraintOffsetTarget.swift in Sources */ = {isa = PBXBuildFile; fileRef = EF2D58EB40EE8221B053FACB532A13C1 /* ConstraintOffsetTarget.swift */; }; - 36C3C4911A9F44D14023276D2FEB61FC /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = BD749634E8E36AB77EC9F46FE998985D /* PrivacyInfo.xcprivacy */; }; - 378BD5280F6C07B11CF30B253D824972 /* IQKeyboardExtended.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1D298A925E306A10B586FBD63C04A81F /* IQKeyboardExtended.swift */; }; - 39B33D7873CD89C6A7E96ACD36A1EDFB /* UIScrollView+IQKeyboardManagerExtensionObjc.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5BF7B9A8FF0D82C370F68F2653F54B11 /* UIScrollView+IQKeyboardManagerExtensionObjc.swift */; }; - 3A6B20BEE4F7A5B5835DE5D1E509754E /* IQActiveConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = B8159912988182904A096C5A3036AA65 /* IQActiveConfiguration.swift */; }; - 3C9F55B7C2C67A67897AC53281139677 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BB4934EF6FC043A1A5719CC4ACA8C0F2 /* UIKit.framework */; }; - 3D3B646B4988314275B40E97BEB16C7F /* ConstraintLayoutGuideDSL.swift in Sources */ = {isa = PBXBuildFile; fileRef = 964B48760245F36728533BAAD3F7C58D /* ConstraintLayoutGuideDSL.swift */; }; - 3E715D5BADDEACEEF30D6A4CA82CDA9B /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 83D92008D686D90200D0E2D8BE76582B /* Foundation.framework */; }; - 3E8CD7E5D86973B25CF99233C524ED43 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 83D92008D686D90200D0E2D8BE76582B /* Foundation.framework */; }; - 3EE1D20B4B3D689A0E336B4637441CE1 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 83D92008D686D90200D0E2D8BE76582B /* Foundation.framework */; }; - 40BB4A23AD4A18E81678F58EAA90EB85 /* UIScrollView+IQKeyboardManagerExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6C2845BF731838039657B93E29F7BD5F /* UIScrollView+IQKeyboardManagerExtension.swift */; }; - 42AE30E987B1F2183EEE1414C5108662 /* IQTextView+Placeholderable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6AD91692C7EF9CB5B47DCFFDBCF2BF1F /* IQTextView+Placeholderable.swift */; }; - 431168277840D15391CA0C4A59E81418 /* IQKeyboardToolbarManager+Debug.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7717832333BD8513940DC7E1C94C2EBC /* IQKeyboardToolbarManager+Debug.swift */; }; - 43B865B4E034A97737024C4ACBC60866 /* IQKeyboardToolbar-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 0D0E7899589D00C50376C1B07158AC50 /* IQKeyboardToolbar-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 45D50B26F412D12C2DF12F804CB08FEF /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = 053B43B12209A016C25BFB227BD91974 /* PrivacyInfo.xcprivacy */; }; - 46ECF78EB1506D9CB79AA7D6D2383800 /* IQKeyboardNotification-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 7683AA5C3B2022EED0FC68DA18C8CD8F /* IQKeyboardNotification-dummy.m */; }; - 47B732921A7B90BB28D526626DDB061C /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 83D92008D686D90200D0E2D8BE76582B /* Foundation.framework */; }; - 47C9A000C20E04EC69BFEEF3C6AC6256 /* IQKeyboardAppearanceManager+Internal.swift in Sources */ = {isa = PBXBuildFile; fileRef = C1081457464A541862ABFB75CFF611B1 /* IQKeyboardAppearanceManager+Internal.swift */; }; - 4C484793E290AB422E3600CF962F9792 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BB4934EF6FC043A1A5719CC4ACA8C0F2 /* UIKit.framework */; }; - 4D055AD31ECB4F14AA2CD02DB2155BE0 /* IQTextInputViewNotification-IQTextInputViewNotification in Resources */ = {isa = PBXBuildFile; fileRef = F956E149F5B195BB7833F97FC6211AE8 /* IQTextInputViewNotification-IQTextInputViewNotification */; }; - 4F4DEB687C0E4834A5B291DEE0651D6A /* ConstraintMaker.swift in Sources */ = {isa = PBXBuildFile; fileRef = 71B0C2CECF35343E42C956FB7F6F996F /* ConstraintMaker.swift */; }; - 50224027880A4546066B64EE1B1C51CF /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 83D92008D686D90200D0E2D8BE76582B /* Foundation.framework */; }; - 527FF29C02A555B242FEACAB7AE97287 /* IQKeyboardNotification.swift in Sources */ = {isa = PBXBuildFile; fileRef = 07D76E404E67961840A2FA9E8B592C51 /* IQKeyboardNotification.swift */; }; - 52B0DA7ED06413C2CC26D5CBF31F8352 /* IQKeyboardToolbarConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7278B677DCE375A2402B9587C28AC4E9 /* IQKeyboardToolbarConfiguration.swift */; }; - 57C4F6EFB30DDD14E960AC2D6B34F904 /* SnapKit-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 090EF934D945BE1D4018F0D2D19007E0 /* SnapKit-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 5922A6A0AE7152CF436356B3556F1835 /* ConstraintItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 679C6C1E29E033FE6D3AF5FAF79916A0 /* ConstraintItem.swift */; }; - 59F34874DA4ABB2F5C4E09EA6865936B /* ConstraintLayoutGuide.swift in Sources */ = {isa = PBXBuildFile; fileRef = 125B7ADD9F6F9E6FEAA2172EBF355938 /* ConstraintLayoutGuide.swift */; }; - 61C3C9CD69B4AD5D26416201A45A80E2 /* IQKeyboardToolbar.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC9C89E0D0A3A0CBF2646E4FFB03FD79 /* IQKeyboardToolbar.swift */; }; - 61ED64340371AB30B936A019C22C376D /* UIView+IQKeyboardManagerExtensionObjc.swift in Sources */ = {isa = PBXBuildFile; fileRef = 54E68DA1C9D605BCA82C37688A0D6C22 /* UIView+IQKeyboardManagerExtensionObjc.swift */; }; - 62B90C6FC83F91F91A4BF12022C7B050 /* UIView+Parent.swift in Sources */ = {isa = PBXBuildFile; fileRef = A37E4894C5CC2317619C7ECD09116882 /* UIView+Parent.swift */; }; - 636E78B80031F9F7AB749AA161B6E2E2 /* Array+Sort.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2527373B09781527CFB5F6FCCAE7B821 /* Array+Sort.swift */; }; - 644BBAB0F823E2D81A4EF7114F2F264E /* IQKeyboardToolbarManager-IQKeyboardToolbarManager in Resources */ = {isa = PBXBuildFile; fileRef = 80A40EDA3AF0499BDBCFF09467BB49AD /* IQKeyboardToolbarManager-IQKeyboardToolbarManager */; }; - 6B95FAC4BA6CBF1B1A33BFA00B521A1B /* IQKeyboardReturnManager+UITextViewDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6D68B5BFA92A84156B07F2625E12FD12 /* IQKeyboardReturnManager+UITextViewDelegate.swift */; }; + 01216C042B056FFF0FC7EE32A002C38A /* IQKeyboardCore-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = BFB6F598FCE7D6294584E7334E04ECF2 /* IQKeyboardCore-dummy.m */; }; + 020799C53BF7A383514499A2B455C635 /* IQKeyboardReturnManager-IQKeyboardReturnManager in Resources */ = {isa = PBXBuildFile; fileRef = 110BD425B6CAD6801539E2C6AB6E0662 /* IQKeyboardReturnManager-IQKeyboardReturnManager */; }; + 0362BB03F32EC9FB6013DEE29E8E33EF /* SRHTTPConnectMessage.m in Sources */ = {isa = PBXBuildFile; fileRef = ED22317A1312CBBA0134A8E449ABD201 /* SRHTTPConnectMessage.m */; }; + 04986EEC139DC7C45DAB58056315FDC8 /* SRPinningSecurityPolicy.h in Headers */ = {isa = PBXBuildFile; fileRef = B278701FAF564A3D25B8F87CCDB798D6 /* SRPinningSecurityPolicy.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 05F4664FC4EF89925161A064AA6481BB /* IQKeyboardManager+Position.swift in Sources */ = {isa = PBXBuildFile; fileRef = 936A804D23E5F53A2A38402D624D6EA2 /* IQKeyboardManager+Position.swift */; }; + 064D909CD827405E8DCC309DB1B7775A /* ConstraintLayoutSupportDSL.swift in Sources */ = {isa = PBXBuildFile; fileRef = A55BC45618B737DBC6885D98DC8C9C0C /* ConstraintLayoutSupportDSL.swift */; }; + 06B16BF7C2EA99B47539C34FF4150ABF /* Array+Sort.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7594A52F0B7E0AD0D9F26BE8026E1E4C /* Array+Sort.swift */; }; + 070601D9903BE1D11DD6DD1367C3F012 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E88E50F432B6DEA7E36A35EA934B002C /* Foundation.framework */; }; + 07543B1010D44AA155CAFADBF03E66DB /* IQKeyboardToolbarManager+Action.swift in Sources */ = {isa = PBXBuildFile; fileRef = 782D18DB9D0B7B74F8613026BAD77E86 /* IQKeyboardToolbarManager+Action.swift */; }; + 075FBDF5D186F8BF4537BC34E526F9DB /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E88E50F432B6DEA7E36A35EA934B002C /* Foundation.framework */; }; + 07632D281C5DED61CC7866B079BC9D2C /* SocketRocket.h in Headers */ = {isa = PBXBuildFile; fileRef = 5EF0C08E9D339F2CB75ED0C9E7FA2C0B /* SocketRocket.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 09D303C994021652DF841C463DBD1DC5 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E88E50F432B6DEA7E36A35EA934B002C /* Foundation.framework */; }; + 09E1F569A93FAD4B9149E30B9301F44A /* ConstraintPriority.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6058A4E7C2EAB9B01A8DBB5AAD7E72A2 /* ConstraintPriority.swift */; }; + 0B380F6921261E661C9EF26B02E5D634 /* IQKeyboardNotification-IQKeyboardNotification in Resources */ = {isa = PBXBuildFile; fileRef = 120BD4C670EF00F4D5A40AA4B863A7AE /* IQKeyboardNotification-IQKeyboardNotification */; }; + 0C7E48CC6391092D8F5B4341E1EE7485 /* Toast-Swift-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 3D0CA09E0900EA77648A05D608CBA29F /* Toast-Swift-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0CA7A132ABE7018DE9295456732F38BB /* ConstraintAttributes.swift in Sources */ = {isa = PBXBuildFile; fileRef = E293311AF50DC30E5B7F7D2D91BEB28A /* ConstraintAttributes.swift */; }; + 0DE5DB9C6227B3416778D8417DD95EA9 /* ConstraintView+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = C1C674397D453B6D18F9DE46BC55B6FF /* ConstraintView+Extensions.swift */; }; + 0EB83A2AC8AAECEE26C8739477B3A431 /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = 3649D66694159EF7F40B5A7377AC04D1 /* PrivacyInfo.xcprivacy */; }; + 1194E62AA3F6F506799B1A43B16942B5 /* ConstraintDirectionalInsets.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EE50CC6D98E37DA330EADC9F9C949F0 /* ConstraintDirectionalInsets.swift */; }; + 11A3EB5BE3623EC013AA37B49813E56C /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3A92BC97913B825589680C917211C138 /* UIKit.framework */; }; + 1213C5A29D13B6F2E3AE2356CB9F5807 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E88E50F432B6DEA7E36A35EA934B002C /* Foundation.framework */; }; + 154230695B4E3D61B8D2BD02DAA2CE91 /* IQKeyboardManager+Appearance_Deprecated.swift in Sources */ = {isa = PBXBuildFile; fileRef = FDD0C3C29384D3EEBCB4BE346B1CA890 /* IQKeyboardManager+Appearance_Deprecated.swift */; }; + 164062B86FCAFF355EE04D7A23A6EA1C /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = 6C4219D35CB16DFEC9A662797E27F4D8 /* PrivacyInfo.xcprivacy */; }; + 172B6B4E5550420B8131FBD62C975821 /* Toast.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6D134ED7EB13A9F9FADC82CC86BC10FA /* Toast.swift */; }; + 1A117EC847E321871E40EB39F3576D11 /* SRDelegateController.m in Sources */ = {isa = PBXBuildFile; fileRef = B4BBB6B50C15DFF1221CD8E66DC2D354 /* SRDelegateController.m */; }; + 1A67B4D6FA3F8FB9A1083EF74C966F64 /* UIView+IQKeyboardExtensionDeprecated.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7F565A673CEEF3B818D7A75F2A2EE8B0 /* UIView+IQKeyboardExtensionDeprecated.swift */; }; + 1B5995FCE11B496E4102AC5AD357249A /* IQTextInputViewInfoModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 10288C630688257B185941E1EA55E346 /* IQTextInputViewInfoModel.swift */; }; + 1CCB9F1FA415F93E8F4AD0E4692E4BC6 /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = C97A233DEE5D1279877CD8292A10AD84 /* PrivacyInfo.xcprivacy */; }; + 205EB01AED14BB574DD54EAFE26E4786 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E88E50F432B6DEA7E36A35EA934B002C /* Foundation.framework */; }; + 20B8C7C05E3AF3032935F30500EF5550 /* SRIOConsumerPool.m in Sources */ = {isa = PBXBuildFile; fileRef = A6C0BF00B3D547B50DBE54D99A1307F4 /* SRIOConsumerPool.m */; }; + 2409EDE57DC13E13E7C7A81E9E2DDD9E /* IQTextView-IQTextView in Resources */ = {isa = PBXBuildFile; fileRef = 847044E56CBBCE1235A6F3CEF3F9F607 /* IQTextView-IQTextView */; }; + 24637C51989929A62E5E75585544A14D /* IQKeyboardManager+Debug.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4B0C5FFB36CB099605387F3B9F34032 /* IQKeyboardManager+Debug.swift */; }; + 24A7645685912B02F96A1291D607DBAA /* UIView+IQKeyboardExtensionObjc.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6A599D5DDFD46F7296A5F93623AB6C3A /* UIView+IQKeyboardExtensionObjc.swift */; }; + 2A1DE175A760E9F7CF7AF711BF549BC9 /* IQKeyboardReturnManager-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = DA9BF97689FA8F63852FC5D7EE814D2D /* IQKeyboardReturnManager-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 2B067825708D13E7E455426389397D1A /* UIView+IQKeyboardManagerExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = BDFB64A96CC2B18E25FF662E37821253 /* UIView+IQKeyboardManagerExtension.swift */; }; + 2B2EB369550CE92CEEFCBFD3D32B8A3F /* ConstraintInsetTarget.swift in Sources */ = {isa = PBXBuildFile; fileRef = 92C5C459A1F7BF6872A58A16B7092803 /* ConstraintInsetTarget.swift */; }; + 2B518589AC1F3F54CE14633027E81734 /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = BC590BB41230B885D405920A55DAD210 /* PrivacyInfo.xcprivacy */; }; + 2B7184BD487141C385B3CC3F3984AA55 /* SRSecurityPolicy.h in Headers */ = {isa = PBXBuildFile; fileRef = C33C375328643D5A9A1D1EA02C88D419 /* SRSecurityPolicy.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 30D6F928FC08B13B5BFEEB154A2089C1 /* IQKeyboardManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 895778DCA58AE753D96DD48F3E036F4F /* IQKeyboardManager.swift */; }; + 310A311043229B0F1C21B72E9FD37271 /* IQKeyboardToolbarManager+Debug.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3F992A0DC4578F2D62CB095A497114CC /* IQKeyboardToolbarManager+Debug.swift */; }; + 332EB3263B1002A5A0A146CCE70501AD /* IQRootControllerConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 10C547231342B150BEC39F40295D087E /* IQRootControllerConfiguration.swift */; }; + 355A2A3962A82AE25D219DB774CB6AEE /* UIView+ResignObjc.swift in Sources */ = {isa = PBXBuildFile; fileRef = 12415404E6E70407610188D7ADDC1D02 /* UIView+ResignObjc.swift */; }; + 3577F172FA68CBAE47CFEE6FE25C5404 /* ConstraintOffsetTarget.swift in Sources */ = {isa = PBXBuildFile; fileRef = B77F72F31D132841951EF8E4FA67360A /* ConstraintOffsetTarget.swift */; }; + 378BD5280F6C07B11CF30B253D824972 /* IQKeyboardExtended.swift in Sources */ = {isa = PBXBuildFile; fileRef = A0F99DC81F369C1B739E19DE3923C65A /* IQKeyboardExtended.swift */; }; + 37E0B956B90DE65985C993A4DF4D6CA3 /* UIView+Responders.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97D19ACC9A79A3CF24DA377E12303E12 /* UIView+Responders.swift */; }; + 380EA4E3E2A772560E3A0670B6406450 /* IQTextInputViewInfo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9ECC82996747BDD9C0FF35EC1ECF0751 /* IQTextInputViewInfo.swift */; }; + 39B33D7873CD89C6A7E96ACD36A1EDFB /* UIScrollView+IQKeyboardManagerExtensionObjc.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4EF1258267E4FF8FA1F298C5303B0E86 /* UIScrollView+IQKeyboardManagerExtensionObjc.swift */; }; + 3A6B20BEE4F7A5B5835DE5D1E509754E /* IQActiveConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = D63292C39BAA9B9EB776AAA03EABD932 /* IQActiveConfiguration.swift */; }; + 3BB0B5D924BE769E95E64A5E6FC1675D /* NSRunLoop+SRWebSocketPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 0AE37E30F693ED15CA31B520ED420454 /* NSRunLoop+SRWebSocketPrivate.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 3D1D0BFA512309AE63825C811A1BFC81 /* IQInvocation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9939F486FEF106F98BDD0806CA8E0624 /* IQInvocation.swift */; }; + 3D3B646B4988314275B40E97BEB16C7F /* ConstraintLayoutGuideDSL.swift in Sources */ = {isa = PBXBuildFile; fileRef = 84BBB0405889161CCDDCD4F166723CBF /* ConstraintLayoutGuideDSL.swift */; }; + 3E715D5BADDEACEEF30D6A4CA82CDA9B /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E88E50F432B6DEA7E36A35EA934B002C /* Foundation.framework */; }; + 3F89C7F7F091BA0DFD648E0286E5665D /* IQKeyboardToolbarPlaceholderConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF60B19D2E8B68520E5121EFFF5A7D4B /* IQKeyboardToolbarPlaceholderConfiguration.swift */; }; + 40BB4A23AD4A18E81678F58EAA90EB85 /* UIScrollView+IQKeyboardManagerExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3F70480B31A6883BEDFC6C623FC76A32 /* UIScrollView+IQKeyboardManagerExtension.swift */; }; + 444E95921E2BDCE7512867EAA1A6B381 /* SRWebSocket.h in Headers */ = {isa = PBXBuildFile; fileRef = D389D10DEC7EB9B503CD45CE58851CA6 /* SRWebSocket.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 44EFA9A76932F81582D03076A8346A4B /* SRIOConsumerPool.h in Headers */ = {isa = PBXBuildFile; fileRef = 8C4CE911087AC8260002E6859821FAF0 /* SRIOConsumerPool.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 47C9A000C20E04EC69BFEEF3C6AC6256 /* IQKeyboardAppearanceManager+Internal.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6381011924A059A30C85325FB30E74A7 /* IQKeyboardAppearanceManager+Internal.swift */; }; + 49D83EC94BF242A406B6553F44E52024 /* IQKeyboardToolbar.swift in Sources */ = {isa = PBXBuildFile; fileRef = 63CAFAB9111F6F5AAEFD9E00CD0AF892 /* IQKeyboardToolbar.swift */; }; + 49F88DA1CED23ACF70ED0D51D2BCCE4F /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = C688B508E11EFC4D24CB920CAF96B948 /* PrivacyInfo.xcprivacy */; }; + 4B2FB381B6E14F9E0F442557ADDAA2F8 /* IQTextInputViewNotification-IQTextInputViewNotification in Resources */ = {isa = PBXBuildFile; fileRef = F956E149F5B195BB7833F97FC6211AE8 /* IQTextInputViewNotification-IQTextInputViewNotification */; }; + 4C1E30BD1A58C10DE84E572ECD5DB54D /* IQKeyboardToolbarManager-IQKeyboardToolbarManager in Resources */ = {isa = PBXBuildFile; fileRef = 80A40EDA3AF0499BDBCFF09467BB49AD /* IQKeyboardToolbarManager-IQKeyboardToolbarManager */; }; + 4C26DF4F8D6AC77894F18EC89896258B /* IQKeyboardInfo.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0B11EBC98CF5A275C2F8077CDEA1F18 /* IQKeyboardInfo.swift */; }; + 4DC15DC2DF3C4BBA344C86B112C9C68B /* SRWebSocket.m in Sources */ = {isa = PBXBuildFile; fileRef = 95BCD7B08FF0A2A4F9B0A36B92688E27 /* SRWebSocket.m */; }; + 4E7BB3FBF4B3680AF358C0A0A0F34011 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E88E50F432B6DEA7E36A35EA934B002C /* Foundation.framework */; }; + 4F4DEB687C0E4834A5B291DEE0651D6A /* ConstraintMaker.swift in Sources */ = {isa = PBXBuildFile; fileRef = D4C8C6089794ACE3010224A9FB1D90EA /* ConstraintMaker.swift */; }; + 50ECD138DA8BC1FBBEBFBF3CE5CEB5FF /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = 643F1AECE038E1886712C3619E367201 /* PrivacyInfo.xcprivacy */; }; + 548F940AC071FBFD9D8DF209775771E5 /* UIView+IQKeyboardExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9976447B92E50DDDCA64DBDE5A47FD7F /* UIView+IQKeyboardExtension.swift */; }; + 56851E11140A140A15088A41DC4C33BD /* NSURLRequest+SRWebSocket.h in Headers */ = {isa = PBXBuildFile; fileRef = 3187DDFEE4C490953B2AEF7B0D19EB1B /* NSURLRequest+SRWebSocket.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 56E30C414ED43846B453D6FDE75DF3B5 /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = 25BADE0B95009E3B02C9E6EBB47417A3 /* PrivacyInfo.xcprivacy */; }; + 57A34E19799F03EB53206496FD362449 /* SRURLUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 27DA2684B87B3639C3D3D439F177E219 /* SRURLUtilities.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 57C4F6EFB30DDD14E960AC2D6B34F904 /* SnapKit-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = AFBCEC8A83AB63E7D141D4EA274517BA /* SnapKit-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 5922A6A0AE7152CF436356B3556F1835 /* ConstraintItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 080D923BC81BB12EE5B738187A72A0D4 /* ConstraintItem.swift */; }; + 59F34874DA4ABB2F5C4E09EA6865936B /* ConstraintLayoutGuide.swift in Sources */ = {isa = PBXBuildFile; fileRef = D2793937CF93115D3117A82FB873124B /* ConstraintLayoutGuide.swift */; }; + 5B67445AE2F3934BDA08D407BBA3028B /* SocketRocket-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 7E46C7EF1F6BD003E0DEC56B05B15DDF /* SocketRocket-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 5BB666D0986483D015712429F9FF2674 /* IQKeyboardReturnManager+UITextViewDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 66E229F790E827392A80B7F4C7A6110F /* IQKeyboardReturnManager+UITextViewDelegate.swift */; }; + 5DFD87881941225F0A5EAE64EB247708 /* SRSIMDHelpers.h in Headers */ = {isa = PBXBuildFile; fileRef = 21E9444EE5839429C60E9A16651BAD78 /* SRSIMDHelpers.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 5E7E257AE5D618E46EF57A5818010F85 /* NSRunLoop+SRWebSocket.m in Sources */ = {isa = PBXBuildFile; fileRef = 5FB6A208FD72153F040D4E1354F225B4 /* NSRunLoop+SRWebSocket.m */; }; + 6135798CCD656C1B3A6EA5738A23190A /* SRSIMDHelpers.m in Sources */ = {isa = PBXBuildFile; fileRef = 50A2B3566A43C15186D3A1D9F91DB662 /* SRSIMDHelpers.m */; }; + 61ED64340371AB30B936A019C22C376D /* UIView+IQKeyboardManagerExtensionObjc.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3D8DC22EC08F3E72E7E53ADA12E80CC0 /* UIView+IQKeyboardManagerExtensionObjc.swift */; }; + 62B90C6FC83F91F91A4BF12022C7B050 /* UIView+Parent.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3F8F3D9A02DBFA1FF9899DD8933A95DA /* UIView+Parent.swift */; }; + 64365C2671D733D3AAE1E25684E73255 /* Pods-Example-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 93B05AAE9D91B32B46928A2293611FF4 /* Pods-Example-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 6464C345447C71904DA3706AACA3F55D /* SRProxyConnect.h in Headers */ = {isa = PBXBuildFile; fileRef = 32080BC56EEB26340C6292BA94F068B6 /* SRProxyConnect.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 64684CAF22CAC1002958805187019FD7 /* IQDeepResponderContainerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 484ECEC55CB9E98BAF0AE020F8FFF767 /* IQDeepResponderContainerView.swift */; }; + 65ABC841033E6707C3419B304C1DDD50 /* IQKeyboardNotification-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = DA85287A9C3D760A6324EF926C0C44CE /* IQKeyboardNotification-dummy.m */; }; + 65E5693A457A8AEE3E5758075D1E2792 /* SRError.h in Headers */ = {isa = PBXBuildFile; fileRef = E7EE2526E40B99B0F243808A2396A01C /* SRError.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 6645E9FB4265C5712E38055C931E1630 /* NSURLRequest+SRWebSocket.m in Sources */ = {isa = PBXBuildFile; fileRef = ED7286BA89901CA1D622A1FCF81E718C /* NSURLRequest+SRWebSocket.m */; }; + 6735CEF5CEDBE284902139B3ED3F2E73 /* UIView+RespondersObjc.swift in Sources */ = {isa = PBXBuildFile; fileRef = CEAD5B92B7CF2B0746297208D610D3CD /* UIView+RespondersObjc.swift */; }; 6DE9FD143CBC24075601F8FE2ADC4115 /* IQKeyboardCore-IQKeyboardCore in Resources */ = {isa = PBXBuildFile; fileRef = 6E897F35E5E27028AC58B14B552FBC8D /* IQKeyboardCore-IQKeyboardCore */; }; - 6E39129FC8643A70C276801FEF4C280D /* Constraint.swift in Sources */ = {isa = PBXBuildFile; fileRef = BA15CE80784F2ABB4BC5A66CFF93FA26 /* Constraint.swift */; }; - 700B342543C8220BF44DC2F2448F70C6 /* UIView+Responders.swift in Sources */ = {isa = PBXBuildFile; fileRef = 648E8949F15F11A016686DAB0E5B508E /* UIView+Responders.swift */; }; - 7012CE5AAAF1AEAA878B00AA9B7A3A23 /* IQTextInputViewNotification.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD9285BD914CCA73118032F2F1792F68 /* IQTextInputViewNotification.swift */; }; - 702C60CEA26061730A208FD9AD3148A3 /* IQTextView-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B2918DFD6FEDA148940283A8ED415E2 /* IQTextView-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 72B966A1388CD724413648ADE6819481 /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = A8051AF85E41AF3CE961220AB4E33AFE /* PrivacyInfo.xcprivacy */; }; - 737F408F45BEB0CB13FEFD5E406996A9 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 83D92008D686D90200D0E2D8BE76582B /* Foundation.framework */; }; - 766984BB04C114C7717FA84FD10CEC77 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BB4934EF6FC043A1A5719CC4ACA8C0F2 /* UIKit.framework */; }; - 769B4905AD35AD554AA9DE98DA8E4E11 /* IQKeyboardManager+Deprecated.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1D541D12A563E883F4018584090E33DB /* IQKeyboardManager+Deprecated.swift */; }; - 77F1B40C21EFF28350EDA6A12263B098 /* IQKeyboardManager+Appearance.swift in Sources */ = {isa = PBXBuildFile; fileRef = 18C7EDD0BE0032658D0A03A3BB7CF623 /* IQKeyboardManager+Appearance.swift */; }; - 7AF516B98D45391B909D507D0244104C /* ConstraintDescription.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5F474BB8F008181749A6BEDD3FF6B03E /* ConstraintDescription.swift */; }; - 7B0BC17748C9775A8299A96D501CE5A8 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 72D1C2A015F7D41AEDD14BCE9FA22C03 /* QuartzCore.framework */; }; - 7B6FECCE2D5B00F838A8938B4A87D5E4 /* IQKeyboardToolbar-IQKeyboardToolbar in Resources */ = {isa = PBXBuildFile; fileRef = A16FD016E18EACCF6B23F219F2E236FE /* IQKeyboardToolbar-IQKeyboardToolbar */; }; - 7CBA95E07A492F7311C7DD8EDF0B4172 /* IQScrollViewConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C581F1999F4CCA213DECDF99D28E47A /* IQScrollViewConfiguration.swift */; }; - 7D42390CDB4FA147504B03DA2A174A0C /* ConstraintViewDSL.swift in Sources */ = {isa = PBXBuildFile; fileRef = 334D1CD5A38B79DE9FE482556C492DFA /* ConstraintViewDSL.swift */; }; - 7EDEEAAEA314F2D8221F9ED0179A7843 /* IQTextInputViewNotification-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 1445F9B020E299209EDE5CD49F2EF94D /* IQTextInputViewNotification-dummy.m */; }; - 829CA2939955B57238D8CF3C53F3F404 /* UIView+IQKeyboardExtensionDeprecated.swift in Sources */ = {isa = PBXBuildFile; fileRef = FB2B9CC26612D71D9645DAE895E0A6E3 /* UIView+IQKeyboardExtensionDeprecated.swift */; }; - 8475FCAD5EF1A75BC9BAF027EAB87AAF /* IQKeyboardToolbarManager-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = BE1DF4BC58C1E1E0F060079D0689EC20 /* IQKeyboardToolbarManager-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 868A9F524A7985BDA1EA124D9BF4CA63 /* ConstraintDSL.swift in Sources */ = {isa = PBXBuildFile; fileRef = 45AE6E9F7BEA7559570D1C4611BC97BA /* ConstraintDSL.swift */; }; - 868AD263A86B61C7722575FBCAD4056A /* Pods-Example-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = D6D7C498FA339E02BD53ECB8916CEA8E /* Pods-Example-dummy.m */; }; - 86CAB01D950C8BC35EDE0BDC01A2500B /* ConstraintView.swift in Sources */ = {isa = PBXBuildFile; fileRef = B93572343CE1D7CC5E903F82DF724A64 /* ConstraintView.swift */; }; + 6E39129FC8643A70C276801FEF4C280D /* Constraint.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47BC329529726FFACA942239310E3841 /* Constraint.swift */; }; + 71311BC21C92A7DE376CAD928E325979 /* IQKeyboardToolbarManager+Deprecated.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF4BC9A0614A1C63539C14C08655781F /* IQKeyboardToolbarManager+Deprecated.swift */; }; + 7174D48AADABCBE6FC53185C5442B952 /* NSURLRequest+SRWebSocketPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = FA41F5D42C8280BA202FDE26BDBDFFA3 /* NSURLRequest+SRWebSocketPrivate.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 721D0AFDE15FCC46F4579069672719B9 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3A92BC97913B825589680C917211C138 /* UIKit.framework */; }; + 737CE5F34A1D2B09DEF3038425A40877 /* IQTextView+Placeholderable.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1F86119EB8AFCE72C0BA2356BBA4C46 /* IQTextView+Placeholderable.swift */; }; + 769B4905AD35AD554AA9DE98DA8E4E11 /* IQKeyboardManager+Deprecated.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0689F5C192D1672448116583D233922 /* IQKeyboardManager+Deprecated.swift */; }; + 77F1B40C21EFF28350EDA6A12263B098 /* IQKeyboardManager+Appearance.swift in Sources */ = {isa = PBXBuildFile; fileRef = A44F945B3203BCA4B178E49ED53E5391 /* IQKeyboardManager+Appearance.swift */; }; + 782981022BF319DFD85AE89A392639A2 /* SRMutex.h in Headers */ = {isa = PBXBuildFile; fileRef = CEA0C9AAC08B9E0D20DE8BC894AE3FDE /* SRMutex.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 7AF516B98D45391B909D507D0244104C /* ConstraintDescription.swift in Sources */ = {isa = PBXBuildFile; fileRef = FF4B96374C0DB9D56AB95C3D5A31B152 /* ConstraintDescription.swift */; }; + 7B0BC17748C9775A8299A96D501CE5A8 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 133A600484839BF74BDD51C8B0BB6EBE /* QuartzCore.framework */; }; + 7BA968278DAB1050E34D0B65E56E5846 /* IQKeyboardToolbar-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 994130CE96E0F8ED28DCF165B03CB200 /* IQKeyboardToolbar-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 7BBD64ADF2DD2B427F258E87F3EDA284 /* IQTitleBarButtonItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2E8E02D90547D6DBD75A856D8A4E1275 /* IQTitleBarButtonItem.swift */; }; + 7BEAD7E859FB5BFCACD23CE492484CC4 /* IQPlaceholderable.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE1B2703C190723870111C925A464468 /* IQPlaceholderable.swift */; }; + 7CBA95E07A492F7311C7DD8EDF0B4172 /* IQScrollViewConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47F6CB0808BEA63D36E484B5D53B6436 /* IQScrollViewConfiguration.swift */; }; + 7D42390CDB4FA147504B03DA2A174A0C /* ConstraintViewDSL.swift in Sources */ = {isa = PBXBuildFile; fileRef = C53921D76AE7ECC63293C2263C9325A0 /* ConstraintViewDSL.swift */; }; + 7F30D73D46CAD9D21A25738B11A6DDDA /* SRURLUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 390BB9902E7A26E5A753B9CF32673BE9 /* SRURLUtilities.m */; }; + 7FCA9A032C39444BD74F08A5F3927839 /* Pods-Example-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = A6BD2261427B29C50F84843B6BAB7DEA /* Pods-Example-dummy.m */; }; + 809199B64088AA02A6B900316396A83D /* IQKeyboardToolbarManager+Toolbar.swift in Sources */ = {isa = PBXBuildFile; fileRef = BA718E8C5B46720F8012D7471BC6BF37 /* IQKeyboardToolbarManager+Toolbar.swift */; }; + 860017D588B23C12B08A3C4390BAEA56 /* IQKeyboardNotification-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 822DD0DAF7E4428BCCDFE28EAD683ADD /* IQKeyboardNotification-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 8667EBBAD4365F7E2DECFE792D488128 /* IQTextView-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 64607CC28651258E6DAB2D1358080FB5 /* IQTextView-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 868A9F524A7985BDA1EA124D9BF4CA63 /* ConstraintDSL.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFCB22B3ED6C05251CBD3059AAE51013 /* ConstraintDSL.swift */; }; + 86CAB01D950C8BC35EDE0BDC01A2500B /* ConstraintView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A8BBDD1BF37BF58D4C467C1D1F21D462 /* ConstraintView.swift */; }; + 870DC4F98094456228D282F5F6200609 /* IQTextView-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = B560A38E28D510B4A50AFF9595D57670 /* IQTextView-dummy.m */; }; + 8762AC084551DBB2E00C3091CAF011ED /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E88E50F432B6DEA7E36A35EA934B002C /* Foundation.framework */; }; 87E921A1D8B0C683DA2133709C867859 /* Toast-Swift-Toast-Swift in Resources */ = {isa = PBXBuildFile; fileRef = 13FD39576595D8A884BF5166065C5236 /* Toast-Swift-Toast-Swift */; }; - 883EDEE1C699497CF2A77C3B8A32A790 /* ConstraintMultiplierTarget.swift in Sources */ = {isa = PBXBuildFile; fileRef = 42892A584E9AC22D35E1D9FE68B53469 /* ConstraintMultiplierTarget.swift */; }; - 894A8EA7637D4C761EC74FB4F16BEFD3 /* IQTextView-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 71450C650474E14E27C58DC6031DED15 /* IQTextView-dummy.m */; }; - 8ACE9296AA479804EFD2D3CC417DE801 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BB4934EF6FC043A1A5719CC4ACA8C0F2 /* UIKit.framework */; }; - 8AD605858D16DC3D7B735572F0C7ED8E /* IQPlaceholderable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 231CDDC4DB13BC0B46D3EB8176FFE464 /* IQPlaceholderable.swift */; }; - 8B0CD445CE2368FD1D2E5A97917004DA /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = B10297739CDE35118B5C7226834CD882 /* PrivacyInfo.xcprivacy */; }; - 8BABA32F7B94A25D8E9208C0A8D90B2E /* ConstraintMakerRelatable+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E142A384801F69E54EECA3E3F8667AF /* ConstraintMakerRelatable+Extensions.swift */; }; - 8C41EA954997897C3E30C5754010C05F /* UIViewController+ParentContainer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9DAD88CD28AA6C418EA42F22ED77F6BE /* UIViewController+ParentContainer.swift */; }; - 8CBC72065F0261B373B958696985AF99 /* IQKeyboardResignHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 078038EA55CCEFB2FCFDAC364A3A475F /* IQKeyboardResignHandler.swift */; }; - 908714BB1129E58E79E45ABBAFC67F5F /* Pods-Example-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 7825A90E082A1582EB16256B0E722B3F /* Pods-Example-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 91CA63A8C62222E89FBB8FA2B7FE9CDE /* IQKeyboardManager+Resign.swift in Sources */ = {isa = PBXBuildFile; fileRef = CA0BFED3F4B8F736E248BED9F016F046 /* IQKeyboardManager+Resign.swift */; }; - 92884C4C1C02E75A52CC712EC8A34421 /* IQBarButtonItemConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = F708C6E5D928E67F9C3E7613BCB59A0D /* IQBarButtonItemConfiguration.swift */; }; - 9298CB7C2E4AC4E751E535DA15BEEFA8 /* IQKeyboardManagerSwift-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 5C9682F1DA72621A7697B6CC652E5564 /* IQKeyboardManagerSwift-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 93FA76E7D394EF1BE061B8AEB4E8F603 /* IQKeyboardNotification-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = BCCF122A4CCCE14CB1CC9357A7D12E0E /* IQKeyboardNotification-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 98403A634D6A5D0ED83E9F41A1A84AB2 /* UIView+RespondersObjc.swift in Sources */ = {isa = PBXBuildFile; fileRef = ACE56E6AC8845E4C5C29E55E4CA9B2FF /* UIView+RespondersObjc.swift */; }; - 9D22F88B7F1AF054C2BF025DFB767154 /* IQKeyboardManager+ToolbarManagerDeprecated.swift in Sources */ = {isa = PBXBuildFile; fileRef = 117ED6DB1BD04E643776E77477BB0EF1 /* IQKeyboardManager+ToolbarManagerDeprecated.swift */; }; + 883EDEE1C699497CF2A77C3B8A32A790 /* ConstraintMultiplierTarget.swift in Sources */ = {isa = PBXBuildFile; fileRef = 750817E69AAE97D1AF5F958FC5904BF2 /* ConstraintMultiplierTarget.swift */; }; + 89CAC1E5DC5833EE630A652957D253A7 /* SRLog.h in Headers */ = {isa = PBXBuildFile; fileRef = AF5E93556B3B98CA5218F3B9E49304F6 /* SRLog.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 8ACE9296AA479804EFD2D3CC417DE801 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3A92BC97913B825589680C917211C138 /* UIKit.framework */; }; + 8BA78192EBB4433C386A932BE198C2AD /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = CF362111EEE4CBA3A09DDC5814422B70 /* PrivacyInfo.xcprivacy */; }; + 8BA91314914C4486DACA16122819AF1C /* IQTextInputViewNotification-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = C2878B4F3D509987EC767604F46AD0E1 /* IQTextInputViewNotification-dummy.m */; }; + 8BABA32F7B94A25D8E9208C0A8D90B2E /* ConstraintMakerRelatable+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 529559A67714BC64192FD9BF92B33312 /* ConstraintMakerRelatable+Extensions.swift */; }; + 8C41EA954997897C3E30C5754010C05F /* UIViewController+ParentContainer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 995B281C84F1083BE4DB31B75BCC029C /* UIViewController+ParentContainer.swift */; }; + 8CBC72065F0261B373B958696985AF99 /* IQKeyboardResignHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 261E9C437FF6FFF72C01BBB73341409D /* IQKeyboardResignHandler.swift */; }; + 8D0D15CE4E92BA4433AE7EA578FE3E15 /* SRSecurityPolicy.m in Sources */ = {isa = PBXBuildFile; fileRef = 6839FC9EB46E8CB05E17C35E5A5B579F /* SRSecurityPolicy.m */; }; + 8DC89975CCCA53253DE9DB5646E468FB /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3A92BC97913B825589680C917211C138 /* UIKit.framework */; }; + 91CA63A8C62222E89FBB8FA2B7FE9CDE /* IQKeyboardManager+Resign.swift in Sources */ = {isa = PBXBuildFile; fileRef = 236C98A9FAEF3200D70937E889092818 /* IQKeyboardManager+Resign.swift */; }; + 92571FFBEF3A7B2F4F633624013010EE /* SRRunLoopThread.m in Sources */ = {isa = PBXBuildFile; fileRef = 8609C41722C0D97335DBF43B1CE7AB03 /* SRRunLoopThread.m */; }; + 9298CB7C2E4AC4E751E535DA15BEEFA8 /* IQKeyboardManagerSwift-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 5C8BDF6ED7A0F1533FC84E97705B2878 /* IQKeyboardManagerSwift-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 939EE0216FC02064B2F5894E87628182 /* SRRunLoopThread.h in Headers */ = {isa = PBXBuildFile; fileRef = 43CBF3C99F0BF342AEE8D7C7BE945B62 /* SRRunLoopThread.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 95A620A5272057BA126D00CC498F9B8A /* Combine.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3ED18FF4963E7B4F60DBBA903E25C67B /* Combine.framework */; }; + 975E6903FBA7CF724108613000500E7E /* IQKeyboardNotification.swift in Sources */ = {isa = PBXBuildFile; fileRef = E6A14C9A838BD693FFDCAF82F4D5604A /* IQKeyboardNotification.swift */; }; + 992815E207201EE57916809E07ADBD74 /* IQKeyboardToolbarConstants.swift in Sources */ = {isa = PBXBuildFile; fileRef = BC713814A822ABA18A07C72E6B97AE04 /* IQKeyboardToolbarConstants.swift */; }; + 9A3761D8CEFB0E2131D2EFA2DEBB3A99 /* SRRandom.m in Sources */ = {isa = PBXBuildFile; fileRef = 68443C8F28AD901E531D6BFA7559C683 /* SRRandom.m */; }; + 9A3B9C740BC8FE0500132251551E5BE7 /* SRIOConsumer.h in Headers */ = {isa = PBXBuildFile; fileRef = 26FE696F5243F520CB872AC051139FE5 /* SRIOConsumer.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 9CFA943AABBDB657A85AAAF2FB4DED67 /* IQKeyboardToolbarManager-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 8C2460EF332DB152D7A7B9869C8F4032 /* IQKeyboardToolbarManager-dummy.m */; }; + 9D22F88B7F1AF054C2BF025DFB767154 /* IQKeyboardManager+ToolbarManagerDeprecated.swift in Sources */ = {isa = PBXBuildFile; fileRef = C61F58870F6E8F6EEF25FA9A6A0E7F60 /* IQKeyboardManager+ToolbarManagerDeprecated.swift */; }; + 9D71239428D38EB9B5E7F5AA51E3E1BB /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3A92BC97913B825589680C917211C138 /* UIKit.framework */; }; 9E0045B41BFE697DB4ADE151228024D2 /* SnapKit-SnapKit_Privacy in Resources */ = {isa = PBXBuildFile; fileRef = B9DCB5EC0B1CDADD221717CADDF62359 /* SnapKit-SnapKit_Privacy */; }; - A0AB639AB77EC86109B51D023E788297 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BB4934EF6FC043A1A5719CC4ACA8C0F2 /* UIKit.framework */; }; - A102FFF603219976098A876E2E14CF6A /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 83D92008D686D90200D0E2D8BE76582B /* Foundation.framework */; }; - A1C2AAD2AF8E9E50DA1A078AC74400A9 /* IQKeyboardInfo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7D66880441D4B9000B03722BC09971E9 /* IQKeyboardInfo.swift */; }; - A39FE5F72261B202CC63722A7B357206 /* IQTextInputView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9259BB742B0F6B1D52074F71BD71B42F /* IQTextInputView.swift */; }; - A61774BEF07AB7C1107C3FDA1297E5BB /* IQTextInputViewInfo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7A8AA0C87B06CB08F33F1C9C7749E0DF /* IQTextInputViewInfo.swift */; }; - A6C834360B4DDD0238C232ED530E46F9 /* IQKeyboardToolbarManager+Deprecated.swift in Sources */ = {isa = PBXBuildFile; fileRef = E5DDF11C94E0521FF93720B78FF737EA /* IQKeyboardToolbarManager+Deprecated.swift */; }; - A6F1EFC3CDA009A4BE6CCBB01248DA21 /* UICollectionView+IndexPaths.swift in Sources */ = {isa = PBXBuildFile; fileRef = B627ECEFAF29D21C3B5D4634873DC799 /* UICollectionView+IndexPaths.swift */; }; - A74F5C96D4E6C5927CD31690CBBD40F9 /* IQTitleBarButtonItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = C2DDB1A49CDC72CEC4AC3A0667142BB2 /* IQTitleBarButtonItem.swift */; }; - A983CCA5F6596F030EFCC1E27C1E766E /* UITableView+IndexPaths.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8F70375CE5D16313A9CC78E1FFAC5536 /* UITableView+IndexPaths.swift */; }; - A9B5C45C3C4D517B581E536DE846A078 /* Toast-Swift-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = A7ACF9EC00F202138E2D10D8C2DE771D /* Toast-Swift-dummy.m */; }; - A9C64D3EF4B2D97F8AA93A0C6D3F1018 /* Combine.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 288DC5C96A5DECE79EDC44987BF2A77C /* Combine.framework */; }; - A9F6F279F9AE6B3EB30CC9ADE242E7C5 /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = 168C7D47B997C62E8CB232D83F0310AB /* PrivacyInfo.xcprivacy */; }; - AABEF13464BA7F4621BD94736C1D057C /* ConstraintMakerPrioritizable.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF398810396855B6BEE8D80C8EF6518A /* ConstraintMakerPrioritizable.swift */; }; - AC22AD1E1EF9CD9D6E242F3630A9A012 /* IQKeyboardManager+ToolbarManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = C5BFD04CC97A0992D34437E786ACA4D3 /* IQKeyboardManager+ToolbarManager.swift */; }; - AE224EDB6D044C0FE86B086E950FC2F9 /* Debugging.swift in Sources */ = {isa = PBXBuildFile; fileRef = 789D34626E9F27F10F113B699A0936D7 /* Debugging.swift */; }; - AE5E125694A1F601CBC7ED5362DA54E8 /* UIView+IQKeyboardExtensionObjc.swift in Sources */ = {isa = PBXBuildFile; fileRef = AE0F784B4D89883BEA9DBDA5D3427CF0 /* UIView+IQKeyboardExtensionObjc.swift */; }; - AEAE611FB5BD66AD2DBE734140C75C12 /* IQTextInputViewInfoModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 425F3E2CCAC6FE05E103DD993BE61B34 /* IQTextInputViewInfoModel.swift */; }; - AF760C78F1C7E11BF7CB9E9B29903530 /* ConstraintInsets.swift in Sources */ = {isa = PBXBuildFile; fileRef = 859853A4B800A598CFCE06A228A4E5DB /* ConstraintInsets.swift */; }; - B0875E3AB8718E7DFE5C53497C02A15E /* ConstraintLayoutSupport.swift in Sources */ = {isa = PBXBuildFile; fileRef = B027F0500294FFF3F8823CC8C93B34DC /* ConstraintLayoutSupport.swift */; }; - B903049E7C1BED7918DAB208754107C7 /* ConstraintMakerFinalizable.swift in Sources */ = {isa = PBXBuildFile; fileRef = ABFD1CA60E15B4B7FCB561F401E9ECDC /* ConstraintMakerFinalizable.swift */; }; - BA2FB695DEB0D179253EEB8DFCE3578B /* SnapKit-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 0FC7A70F2E2D28124280A06C1FD9760B /* SnapKit-dummy.m */; }; - BCA36C0165E90BE953EDB5DF596E961C /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = FB9E0FF56143337737133FDD5DFF1373 /* PrivacyInfo.xcprivacy */; }; - BDA5C7CC91E86448237CF40954FAC5AF /* ConstraintMakerRelatable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 583D0819254BED967661EC2359B98F18 /* ConstraintMakerRelatable.swift */; }; - BDA87F0C05C9C4A2AA0A0D2B98C33E8C /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = 5FA5B7CA13253C1FC9B86FA274000F3F /* PrivacyInfo.xcprivacy */; }; - BF1AE4D97E813B95C43EA4A298B973D1 /* LayoutConstraint.swift in Sources */ = {isa = PBXBuildFile; fileRef = 629AE0F7346599178ABEF604C7BB964F /* LayoutConstraint.swift */; }; - C00D516DBF4BD4AD8DC4CEF51C5DD8D0 /* IQKeyboardToolbarManager-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = B017A824A4E1A13FDACEB926F92C62FA /* IQKeyboardToolbarManager-dummy.m */; }; - C07CB3E9A4D1BF00F841E4285629A2B2 /* ConstraintRelatableTarget.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E85E98FFCFC789BC6D8C97871841FB5 /* ConstraintRelatableTarget.swift */; }; - C0AD493AE4A8DC8FF960D753D6D971E3 /* IQKeyboardManagerSwift-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 6FB32CD2529DBAA6A58EE1C218F3F26B /* IQKeyboardManagerSwift-dummy.m */; }; - C14F10B663FE2898EACAB90C202B3F50 /* ConstraintMakerEditable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1FB0B399D6B51466AFD1D3DABBB19C1A /* ConstraintMakerEditable.swift */; }; - C20ECE96A97688090D5FE186DCF7B5D9 /* IQKeyboardManager+Resign_Deprecated.swift in Sources */ = {isa = PBXBuildFile; fileRef = 51E4C8BDDCD249D53F68B657894D3C33 /* IQKeyboardManager+Resign_Deprecated.swift */; }; - C2A846F101C12CC0E946ED40A0C2C33B /* IQDeepResponderContainerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = BE4AFEFA1716D5281D0EA17603944826 /* IQDeepResponderContainerView.swift */; }; - C6A4302ACE006C4E2CDD481287E2916B /* Typealiases.swift in Sources */ = {isa = PBXBuildFile; fileRef = A1818F69B6E5828B7B096AEDA2284766 /* Typealiases.swift */; }; - C6F45595676957ADBEC18EB3F23EAEC4 /* LayoutConstraintItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = AA29B4610AE76CC6CC7A09F3BA316FA3 /* LayoutConstraintItem.swift */; }; - C7C6F1AD0C44C79C4A3416FCB32B0233 /* IQKeyboardResignHandler+Internal.swift in Sources */ = {isa = PBXBuildFile; fileRef = 45E9A660E884B1EFF55785DC5472CA56 /* IQKeyboardResignHandler+Internal.swift */; }; - C945CB4EC42271D435BF23E7749BE6BF /* IQKeyboardConstants.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5CA792EF08162ADE7BAC7607327CBAED /* IQKeyboardConstants.swift */; }; - CB64410E0CF8BF6ADD6054B90C06E0DB /* IQTextInputViewNotification-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 4CBC06BCB9A7BAD3F1CB9489020EFAA4 /* IQTextInputViewNotification-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - CB6B20426E6FD0E9970A1514451DE634 /* IQKeyboardReturnManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5A543731802B05A4CF7F5D8024952273 /* IQKeyboardReturnManager.swift */; }; - CD5C1FEDB9C4C34CB6E33A8A29D6ADA3 /* IQKeyboardReturnManager+UITextFieldDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8AE4CFFFB83D44D25692067A36EE407A /* IQKeyboardReturnManager+UITextFieldDelegate.swift */; }; - CE593943A9E7CF83822CF60304BCAD43 /* ConstraintConstantTarget.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6B2D1FC7F34EF685AF2452AC43FFE816 /* ConstraintConstantTarget.swift */; }; - CF42B90B9D36F1A8370820AE19E549D4 /* IQTextView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9915B34E81CF6906E0C1C0AA6D681726 /* IQTextView.swift */; }; - CFB66030405436F94DE6E8C2D9175A0E /* IQInvocation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 92335BB8898DE45ED349EF272C417E5F /* IQInvocation.swift */; }; - D2AB53462493B2F2B42D070A1D7E54F2 /* IQKeyboardReturnManager-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = C997F74F024831561D7BCC7832899644 /* IQKeyboardReturnManager-dummy.m */; }; - D2E2744A0122A5447E6FD80BBA6FB36A /* IQKeyboardNotification-IQKeyboardNotification in Resources */ = {isa = PBXBuildFile; fileRef = 120BD4C670EF00F4D5A40AA4B863A7AE /* IQKeyboardNotification-IQKeyboardNotification */; }; - D4218DA55B2BA45937589200CC0DF1FB /* ConstraintMakerExtendable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3A0EC753684DB9D548B2F21B240AB183 /* ConstraintMakerExtendable.swift */; }; - D6B15F2F110BC58F7635A9FD7A985C79 /* IQKeyboardManager+ActiveConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = A05DE88657E839818EACAAED4CD60B34 /* IQKeyboardManager+ActiveConfiguration.swift */; }; - D6EFA9EAA562143F338EB164836B7837 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BB4934EF6FC043A1A5719CC4ACA8C0F2 /* UIKit.framework */; }; - DBA4803F4765E1650B8C6841157F5D73 /* ConstraintPriorityTarget.swift in Sources */ = {isa = PBXBuildFile; fileRef = E3863E29A7A589B2F92E5FA4658C10A7 /* ConstraintPriorityTarget.swift */; }; - DF23DA299917B90E658EC4A4844A6464 /* IQKeyboardToolbarManager+Action.swift in Sources */ = {isa = PBXBuildFile; fileRef = 96778D30391C6741ED9D0A46200EF18C /* IQKeyboardToolbarManager+Action.swift */; }; - E007B42A515F1B4D6C1477ACA9AD43C0 /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = 3DC059D4E73E400F389B683A21D3A187 /* PrivacyInfo.xcprivacy */; }; - E1734E56DB48E6F238408C9A232C7051 /* UIView+Hierarchy.swift in Sources */ = {isa = PBXBuildFile; fileRef = A1FEE90906065AB1BED6A249EE74C5CB /* UIView+Hierarchy.swift */; }; - E37671A03B4C17A1CF3766A6125833BB /* ConstraintDirectionalInsetTarget.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65CE8BABA0B27FB3861EFDC42FAF7936 /* ConstraintDirectionalInsetTarget.swift */; }; - E3D779DEE753C0B0D33BA8E73A980265 /* ConstraintLayoutGuide+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C4A1A93E1ED51A08661C32F4EDBBA11 /* ConstraintLayoutGuide+Extensions.swift */; }; - E4A29F8C3ED424A7BC912DB796D03AFB /* UIView+ParentObjc.swift in Sources */ = {isa = PBXBuildFile; fileRef = 024EBC1EBC8B76295C273069400071F2 /* UIView+ParentObjc.swift */; }; + A3585531EE4D8466B74A5A6F7958EC79 /* SocketRocket-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = B1F45CBD7E407DB108D6FAD8FF0A1415 /* SocketRocket-dummy.m */; }; + A39FE5F72261B202CC63722A7B357206 /* IQTextInputView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 502964DCE1567348B5B03211445AEA35 /* IQTextInputView.swift */; }; + A564D0B0EE8AED950D943A75C2B3092E /* SRMutex.m in Sources */ = {isa = PBXBuildFile; fileRef = D7EF3525F706753F05EA05BD1819EC4E /* SRMutex.m */; }; + A6F1EFC3CDA009A4BE6CCBB01248DA21 /* UICollectionView+IndexPaths.swift in Sources */ = {isa = PBXBuildFile; fileRef = 115E19C96EB6123FE27F3A530B3BE30D /* UICollectionView+IndexPaths.swift */; }; + A802B52FE5903601486CB77E2FDCF18B /* IQKeyboardToolbarManager+Internal.swift in Sources */ = {isa = PBXBuildFile; fileRef = 158193B636D7824993DB68D81AE2C233 /* IQKeyboardToolbarManager+Internal.swift */; }; + A92367989121B0877023A09BF2F96F15 /* IQKeyboardToolbarManager-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 1D8DCDE8A3DFBFEA690BD5A6081C5762 /* IQKeyboardToolbarManager-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + A983CCA5F6596F030EFCC1E27C1E766E /* UITableView+IndexPaths.swift in Sources */ = {isa = PBXBuildFile; fileRef = A15B541658FAC5E8233C91001D7888EC /* UITableView+IndexPaths.swift */; }; + A98E7BF0F63124A6CB7FC2BB19B1DCBE /* IQKeyboardReturnManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 224FAFA7B0169BBAAFD0FA422D7D11A6 /* IQKeyboardReturnManager.swift */; }; + A9B5C45C3C4D517B581E536DE846A078 /* Toast-Swift-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = B98BCBD470DE1E0FC19C5E1F3AF37195 /* Toast-Swift-dummy.m */; }; + AA3E0F99979D1B54EE9DCD8FE01816CF /* IQKeyboardReturnManager+UITextFieldDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = FB23C93E47AFBF1FA651D132F7AC06E2 /* IQKeyboardReturnManager+UITextFieldDelegate.swift */; }; + AABEF13464BA7F4621BD94736C1D057C /* ConstraintMakerPrioritizable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9101BAF3027E387E34B0301BE000FA50 /* ConstraintMakerPrioritizable.swift */; }; + AB12501C57FFF722131F674ACB425944 /* SRError.m in Sources */ = {isa = PBXBuildFile; fileRef = 77195404B1F7ADCD8B3008B1B89F5C03 /* SRError.m */; }; + AC22AD1E1EF9CD9D6E242F3630A9A012 /* IQKeyboardManager+ToolbarManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6A737607DB763EBB681D8D0F6E6AB5FB /* IQKeyboardManager+ToolbarManager.swift */; }; + AC68F7636D1D7832E4B5B18DD2BF2941 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3A92BC97913B825589680C917211C138 /* UIKit.framework */; }; + AD9EF3D3778212D1147044DC3A971C80 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E88E50F432B6DEA7E36A35EA934B002C /* Foundation.framework */; }; + AE224EDB6D044C0FE86B086E950FC2F9 /* Debugging.swift in Sources */ = {isa = PBXBuildFile; fileRef = B8A90925F3434F73BD6A036480A5A473 /* Debugging.swift */; }; + AEA1A05086EA1256D504393FAED3CF4B /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E88E50F432B6DEA7E36A35EA934B002C /* Foundation.framework */; }; + AF760C78F1C7E11BF7CB9E9B29903530 /* ConstraintInsets.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6DFE571CD6A634198545BB1149A5399C /* ConstraintInsets.swift */; }; + B0875E3AB8718E7DFE5C53497C02A15E /* ConstraintLayoutSupport.swift in Sources */ = {isa = PBXBuildFile; fileRef = D8D8726D60E6EF3E455768E64432DA57 /* ConstraintLayoutSupport.swift */; }; + B1990109AA9AF8F57180C17D4A04EF6B /* IQKeyboardToolbarManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB176716E9339D1CA456C696313236FE /* IQKeyboardToolbarManager.swift */; }; + B4C82668A78939FE910FEA0D314F06C1 /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 91B24E7C9EB4215BEA2C0A23D3960815 /* Security.framework */; }; + B543A1E1882CAEA19589891FCE2D17EA /* NSRunLoop+SRWebSocket.h in Headers */ = {isa = PBXBuildFile; fileRef = 306B6BBB2D0B4D417ADD4B82D7D51E82 /* NSRunLoop+SRWebSocket.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B5C5EBCC5EC278EA704D27FB2D333B22 /* Combine.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3ED18FF4963E7B4F60DBBA903E25C67B /* Combine.framework */; }; + B7D5043A8EC4C7C38F6C1688ACA93185 /* IQKeyboardReturnManager-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = A8FACB5BCF825223E394FFECCE4AA031 /* IQKeyboardReturnManager-dummy.m */; }; + B893C0DD5BE32FAE1D6895E1ED392B7A /* SRConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = A284951838ACA1015F31DBE6C5A8D45F /* SRConstants.m */; }; + B903049E7C1BED7918DAB208754107C7 /* ConstraintMakerFinalizable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 24926E8158D8FAD9BE42C760B3154B55 /* ConstraintMakerFinalizable.swift */; }; + BA2FB695DEB0D179253EEB8DFCE3578B /* SnapKit-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 02EDA2792EBD3343A7DBC6B427F1F041 /* SnapKit-dummy.m */; }; + BDA5C7CC91E86448237CF40954FAC5AF /* ConstraintMakerRelatable.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8BFDD7C500F5D6D58D212CB15B52E08 /* ConstraintMakerRelatable.swift */; }; + BF1AE4D97E813B95C43EA4A298B973D1 /* LayoutConstraint.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C0366C8DAD8762352B37EDB4DD62E2E /* LayoutConstraint.swift */; }; + C07CB3E9A4D1BF00F841E4285629A2B2 /* ConstraintRelatableTarget.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFB853532F59E8A63D1C93202280CEE9 /* ConstraintRelatableTarget.swift */; }; + C0AD493AE4A8DC8FF960D753D6D971E3 /* IQKeyboardManagerSwift-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 01E23D7305E51271DEFF79A9CADBF926 /* IQKeyboardManagerSwift-dummy.m */; }; + C14F10B663FE2898EACAB90C202B3F50 /* ConstraintMakerEditable.swift in Sources */ = {isa = PBXBuildFile; fileRef = FB474AD377D72ECDF638D46A73B7D687 /* ConstraintMakerEditable.swift */; }; + C20ECE96A97688090D5FE186DCF7B5D9 /* IQKeyboardManager+Resign_Deprecated.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EC73E02165E26ABFCACC677AF94DD8B /* IQKeyboardManager+Resign_Deprecated.swift */; }; + C36214D8311B615CDA115276934926DC /* SRRandom.h in Headers */ = {isa = PBXBuildFile; fileRef = D1B2801FD44E489C5B7F202C13D651F2 /* SRRandom.h */; settings = {ATTRIBUTES = (Project, ); }; }; + C433EA40A4C18AC4714CF6C9BC1172CA /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = 0F6A2BF98BD227110E60762E29808CEC /* PrivacyInfo.xcprivacy */; }; + C4CC8FC7015DCE5912B7607AFB238EFE /* Pods-DeepChordsSdk-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 284AC2E81CAAA90FEA12A250A16B11AB /* Pods-DeepChordsSdk-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C6A4302ACE006C4E2CDD481287E2916B /* Typealiases.swift in Sources */ = {isa = PBXBuildFile; fileRef = AEF5BBB7C4ACF7C06BBD262B6C1145CE /* Typealiases.swift */; }; + C6F45595676957ADBEC18EB3F23EAEC4 /* LayoutConstraintItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD6C692550BC0661BA84378E58F6BA8A /* LayoutConstraintItem.swift */; }; + C749F0EFAF3D6CAE7C3C0B198665DFA5 /* IQTextView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1E2BADF249E4A558D7EE5BB1077C1DE1 /* IQTextView.swift */; }; + C7C6F1AD0C44C79C4A3416FCB32B0233 /* IQKeyboardResignHandler+Internal.swift in Sources */ = {isa = PBXBuildFile; fileRef = E39AF10B1F50FF70721677FFF69BED27 /* IQKeyboardResignHandler+Internal.swift */; }; + C92D93F48E74B79C08A2C5B81B68FD7D /* SRConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = 6A3DB74B2C40BCD9F3AFA585DA322FF5 /* SRConstants.h */; settings = {ATTRIBUTES = (Project, ); }; }; + C945CB4EC42271D435BF23E7749BE6BF /* IQKeyboardConstants.swift in Sources */ = {isa = PBXBuildFile; fileRef = FBC1F980FADF5CA26AF9C77CF3D9B1A2 /* IQKeyboardConstants.swift */; }; + CA547E1928ADED547C368A3AB7CE9267 /* IQBarButtonItemConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 14A61C146CFCDB5CEC8508DC60360819 /* IQBarButtonItemConfiguration.swift */; }; + CE593943A9E7CF83822CF60304BCAD43 /* ConstraintConstantTarget.swift in Sources */ = {isa = PBXBuildFile; fileRef = C23ABFD4CEF6F11C0094E61729745DE3 /* ConstraintConstantTarget.swift */; }; + CF6554D8A9380CAC0F51D5043769D930 /* SRLog.m in Sources */ = {isa = PBXBuildFile; fileRef = F930ACB6AC5D06295D698ED0249EB0AB /* SRLog.m */; }; + D25185C12789EA624C8BAC6A6432E77B /* SRPinningSecurityPolicy.m in Sources */ = {isa = PBXBuildFile; fileRef = 0AF7DA075D6BD7E141707379E62BFA63 /* SRPinningSecurityPolicy.m */; }; + D2E460754683003AE9ECF32A831D401F /* CFNetwork.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0C917A6291C02472ECB91FD7B8B2CFC1 /* CFNetwork.framework */; }; + D4218DA55B2BA45937589200CC0DF1FB /* ConstraintMakerExtendable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37445197B6E56B3F3CA861A7F21F1C41 /* ConstraintMakerExtendable.swift */; }; + D623A6CB33709C4D87766C66A756A0F7 /* SRProxyConnect.m in Sources */ = {isa = PBXBuildFile; fileRef = C3F49C31FFD05F4734B464D5C31979FB /* SRProxyConnect.m */; }; + D6B15F2F110BC58F7635A9FD7A985C79 /* IQKeyboardManager+ActiveConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 792548D571F70D8E7FA3B52FA58D9591 /* IQKeyboardManager+ActiveConfiguration.swift */; }; + D6EFA9EAA562143F338EB164836B7837 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3A92BC97913B825589680C917211C138 /* UIKit.framework */; }; + DBA4803F4765E1650B8C6841157F5D73 /* ConstraintPriorityTarget.swift in Sources */ = {isa = PBXBuildFile; fileRef = B932A928D72C73FB59FC964A82AC2723 /* ConstraintPriorityTarget.swift */; }; + DD4291CF0D9971BFED1BD55FB65ACA32 /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = E3B1CECC33970571F4F9AF61CB1D3DCD /* PrivacyInfo.xcprivacy */; }; + DEEC14319D7619F96C4E93415A6D577D /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E88E50F432B6DEA7E36A35EA934B002C /* Foundation.framework */; }; + DF011D18EBB28ECE459B6D96D3E460D8 /* SRHTTPConnectMessage.h in Headers */ = {isa = PBXBuildFile; fileRef = FB26ACEBA0181227271430FB01A76848 /* SRHTTPConnectMessage.h */; settings = {ATTRIBUTES = (Project, ); }; }; + E1734E56DB48E6F238408C9A232C7051 /* UIView+Hierarchy.swift in Sources */ = {isa = PBXBuildFile; fileRef = A368339039F84E09260E0C59DD294DF3 /* UIView+Hierarchy.swift */; }; + E3535804CAC5D872E37CD8639C930771 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E88E50F432B6DEA7E36A35EA934B002C /* Foundation.framework */; }; + E37671A03B4C17A1CF3766A6125833BB /* ConstraintDirectionalInsetTarget.swift in Sources */ = {isa = PBXBuildFile; fileRef = 58E0237741E33CAFB3DB96DAA7559910 /* ConstraintDirectionalInsetTarget.swift */; }; + E3D779DEE753C0B0D33BA8E73A980265 /* ConstraintLayoutGuide+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 45E554E7AE314B29D9C07A10667261BE /* ConstraintLayoutGuide+Extensions.swift */; }; + E4A0C00A361F30B7848B8AE7653C9C60 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3A92BC97913B825589680C917211C138 /* UIKit.framework */; }; + E4A29F8C3ED424A7BC912DB796D03AFB /* UIView+ParentObjc.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8BD0BDF557D8D8D7CFB04CB9C9482634 /* UIView+ParentObjc.swift */; }; + E51720E5CBEEB2151A69D4FDF36B7E2D /* IQKeyboardToolbar-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 48CA3ADFB16E0C4E235D89C552572332 /* IQKeyboardToolbar-dummy.m */; }; E6FE2596512201193E95FC356C6E3351 /* IQKeyboardManagerSwift-IQKeyboardManagerSwift in Resources */ = {isa = PBXBuildFile; fileRef = 8D8069D3964814114ACEC3084C010B59 /* IQKeyboardManagerSwift-IQKeyboardManagerSwift */; }; - E84C30FA4A382D9C330E87FB32C009AE /* IQKeyboardAppearanceManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6824C490150831540A8B6007E6B0B0EF /* IQKeyboardAppearanceManager.swift */; }; - EBF34312A1F64FE81987440230E5BC49 /* IQKeyboardManager+Internal.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6B1A7FE44491E9065CDE0EC638D84820 /* IQKeyboardManager+Internal.swift */; }; - ECC5C2ADC2682F9171FEA22AF10DCE53 /* ConstraintRelation.swift in Sources */ = {isa = PBXBuildFile; fileRef = B8783F3308A893AC9F1E8B1450DB38B3 /* ConstraintRelation.swift */; }; - F239DABFACA179E89920C7F09D67336B /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BB4934EF6FC043A1A5719CC4ACA8C0F2 /* UIKit.framework */; }; - F4B6A7F0EDE77E5C46C63C4C2125D1D9 /* IQKeyboardToolbarManager+Internal.swift in Sources */ = {isa = PBXBuildFile; fileRef = 60CE4193979A1692CB7524C594A33F5F /* IQKeyboardToolbarManager+Internal.swift */; }; - F4D65B0771272C500F2E872705893146 /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = 5EB5C94FD93112688DCB0AC41215A68F /* PrivacyInfo.xcprivacy */; }; - F5EA9B9630BC0ABCA401EBB41ACF0CAA /* IQKeyboardToolbar-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 903F0FF8B72AF2E84101EE1AD8E525B8 /* IQKeyboardToolbar-dummy.m */; }; - F6F33E8B268F3D41075374D95B8088DC /* UILayoutSupport+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = B6BC2BCCF67E34C8D4DF08BBE177A05A /* UILayoutSupport+Extensions.swift */; }; - F943E8FEFBAB09B9DA17295178CD80A1 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BB4934EF6FC043A1A5719CC4ACA8C0F2 /* UIKit.framework */; }; - F9EBA65892D78A31C068D727D84BCB88 /* ConstraintConfig.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8510B576847C74847E63FDFB695CF836 /* ConstraintConfig.swift */; }; - FA1E4DF059F9D021A2B913A8DA9D1CBE /* IQKeyboardToolbarPlaceholderConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 85F474F9E7D6BD1F6B7663352D31EC40 /* IQKeyboardToolbarPlaceholderConfiguration.swift */; }; - FD552610731EB624F8A47C3ACA927A15 /* UIView+Resign.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8E9C7F86EF79309A7D62796C50BD2C4 /* UIView+Resign.swift */; }; - FE0D3260BF27D388B0200F1AC8151619 /* IQKeyboardCore-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 2570B16F7E9DBA42AAF1C41E54783C89 /* IQKeyboardCore-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - FF020D50D3B0742EFED9C172269D9D83 /* IQKeyboardAppearanceConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5563167CBEFFA8F84B6DCD2C1CF029A /* IQKeyboardAppearanceConfiguration.swift */; }; + E84C30FA4A382D9C330E87FB32C009AE /* IQKeyboardAppearanceManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = E25ABD3C4935A40132346F656CA1AA7C /* IQKeyboardAppearanceManager.swift */; }; + EB3BCE9B36BF814DA3069FA077168301 /* SRHash.m in Sources */ = {isa = PBXBuildFile; fileRef = 109E37988FF06586D32321CEA99162B0 /* SRHash.m */; }; + EBDF215E376C3DF934F05D201833DDDC /* IQTextInputViewNotification.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0578E47B5AE5713CF21EA86848CA87DD /* IQTextInputViewNotification.swift */; }; + EBF34312A1F64FE81987440230E5BC49 /* IQKeyboardManager+Internal.swift in Sources */ = {isa = PBXBuildFile; fileRef = F92A13F8C77041A7711D1764A76C37A3 /* IQKeyboardManager+Internal.swift */; }; + EC8DB2CC9791B7DC686DCC78EFBB56C5 /* SRDelegateController.h in Headers */ = {isa = PBXBuildFile; fileRef = 2582EC469D9940C7AAE3F903A495E86A /* SRDelegateController.h */; settings = {ATTRIBUTES = (Project, ); }; }; + ECC5C2ADC2682F9171FEA22AF10DCE53 /* ConstraintRelation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 363F0A017C453E3DC084A7B5BDB87911 /* ConstraintRelation.swift */; }; + F020DBD67EA8E12A860BE211F6BE04D5 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E88E50F432B6DEA7E36A35EA934B002C /* Foundation.framework */; }; + F1E1B1AC67AA1B21E1AF8D3AB5C9849C /* IQTextInputViewNotification-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = EA467055B207002F9B70E96F08A0FF86 /* IQTextInputViewNotification-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F312D740135121FC4C7D0EB4A5F76F90 /* IQKeyboardToolbarConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 44AFC022F6D6DD0DF30E10F9B7C4615A /* IQKeyboardToolbarConfiguration.swift */; }; + F3D41915714BC875B1DC32F49293A8B6 /* Pods-DeepChordsSdk-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = D5278EBCB01A333274C163B9281DE38B /* Pods-DeepChordsSdk-dummy.m */; }; + F4B260EE81F1B5801FC6DA3097F2E433 /* IQBarButtonItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4D6EF89B651DCBED1F5A7FA5D36D1FA6 /* IQBarButtonItem.swift */; }; + F5F31138D70F9AEBD476D8AE418F37F9 /* IQKeyboardToolbar-IQKeyboardToolbar in Resources */ = {isa = PBXBuildFile; fileRef = A16FD016E18EACCF6B23F219F2E236FE /* IQKeyboardToolbar-IQKeyboardToolbar */; }; + F6E948E2688CC08D3843DAA74F6328E8 /* SRHash.h in Headers */ = {isa = PBXBuildFile; fileRef = F2183FF2315FBF68B5F334EC6EB19A9B /* SRHash.h */; settings = {ATTRIBUTES = (Project, ); }; }; + F6F33E8B268F3D41075374D95B8088DC /* UILayoutSupport+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = E54219744D41CC6C6674908699602DD9 /* UILayoutSupport+Extensions.swift */; }; + F9EBA65892D78A31C068D727D84BCB88 /* ConstraintConfig.swift in Sources */ = {isa = PBXBuildFile; fileRef = 972CC8A48122693582F02385A70853A0 /* ConstraintConfig.swift */; }; + FCFC8D5B48F3DC4BC8942320631D8C1B /* SRIOConsumer.m in Sources */ = {isa = PBXBuildFile; fileRef = B5D1545C4C0C2474FD103EFECB90E9C5 /* SRIOConsumer.m */; }; + FD552610731EB624F8A47C3ACA927A15 /* UIView+Resign.swift in Sources */ = {isa = PBXBuildFile; fileRef = B704D82F61A7F3E0FF10EBDE953E7E49 /* UIView+Resign.swift */; }; + FE0D3260BF27D388B0200F1AC8151619 /* IQKeyboardCore-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 9F657D2C1582A8BFEADD06E527D796B2 /* IQKeyboardCore-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + FF020D50D3B0742EFED9C172269D9D83 /* IQKeyboardAppearanceConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = EF4B79F3BC3201907DE2B7A2671776C1 /* IQKeyboardAppearanceConfiguration.swift */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ - 00F0DC7B61401655CA2B4F07931B44B9 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = F9A1BF709B7BA4C24A83664EB1E1C7D4; - remoteInfo = IQKeyboardCore; - }; - 0C35F82AFEAA8CEBC12C81F2D5248473 /* PBXContainerItemProxy */ = { + 186EFCD32F2BEEE1514385E97F48B014 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 020993F16DA5986DACE118349EBCE9E5; remoteInfo = IQKeyboardToolbarManager; }; - 1708F2EF228CBF9B2A6AB17CAF389904 /* PBXContainerItemProxy */ = { + 1CC338AE066CE11E9D4C832A727D9C61 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = F9A1BF709B7BA4C24A83664EB1E1C7D4; - remoteInfo = IQKeyboardCore; + remoteGlobalIDString = EEE261386011CDF271BE289F73FF5959; + remoteInfo = "IQKeyboardCore-IQKeyboardCore"; }; - 18898E41CB6825094A12ED9DADD5CF80 /* PBXContainerItemProxy */ = { + 1E3FD4E83C3BACBC0EE2DD7F457AA6E9 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = B990BD87169C76A3ED3FE8A9258D91A3; - remoteInfo = "Toast-Swift"; + remoteGlobalIDString = 12890DE3ABBC2CA295E108358D85EE69; + remoteInfo = IQTextView; }; - 1BBEB339A4BA742D13B5D2CCEEB77C70 /* PBXContainerItemProxy */ = { + 2DE1780C07830F70EB974DDA0E002280 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = EEE261386011CDF271BE289F73FF5959; - remoteInfo = "IQKeyboardCore-IQKeyboardCore"; + remoteGlobalIDString = B490E7485944099E16C9CBD79119D1D4; + remoteInfo = IQKeyboardManagerSwift; }; - 32D05F1AB78AE48011D6E9E0203F4737 /* PBXContainerItemProxy */ = { + 32B49C1963D38D5E1E60E037311DCDEF /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 88810798DA63A2F6611B0970EA276DEC; - remoteInfo = "IQKeyboardReturnManager-IQKeyboardReturnManager"; + remoteGlobalIDString = 0981F89DB5DA3FFCFFEBDE1F56287054; + remoteInfo = IQKeyboardReturnManager; }; - 372862B6668E1DB2CCD2D7423C0B38B8 /* PBXContainerItemProxy */ = { + 4294839685D9EA7EF6090113DB9528A3 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 12890DE3ABBC2CA295E108358D85EE69; - remoteInfo = IQTextView; + remoteGlobalIDString = 8A8DB685241263AFDF5E6B20FE67B93A; + remoteInfo = "SnapKit-SnapKit_Privacy"; }; - 38C3E138887D23F98FA6B811D30BFFD6 /* PBXContainerItemProxy */ = { + 43A509886BF66DE03AA2357743AC5769 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 4502C7427440BEB17A50C0BF6E638A85; - remoteInfo = "IQTextInputViewNotification-IQTextInputViewNotification"; + remoteGlobalIDString = 12890DE3ABBC2CA295E108358D85EE69; + remoteInfo = IQTextView; }; - 45341E287C20B448A537FD1F897A05AE /* PBXContainerItemProxy */ = { + 4BEE988A3465649375AC57D797ABF617 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 020993F16DA5986DACE118349EBCE9E5; - remoteInfo = IQKeyboardToolbarManager; + remoteGlobalIDString = 283C1F2EA88CD4413165801A6748A48E; + remoteInfo = IQTextInputViewNotification; }; - 48FBB4A28EC9FA70CCC88ED390275D62 /* PBXContainerItemProxy */ = { + 548AF3FE70CC81B2ABBAEF65818BA3A6 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = B490E7485944099E16C9CBD79119D1D4; - remoteInfo = IQKeyboardManagerSwift; + remoteGlobalIDString = B990BD87169C76A3ED3FE8A9258D91A3; + remoteInfo = "Toast-Swift"; }; - 588F3D8DD7248AC48468DA05E1605928 /* PBXContainerItemProxy */ = { + 57A1C5DB51B6CD350C79C7B055A7F66B /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 7C5613175BBC4BF67E36DB4FBEBC01D0; - remoteInfo = "IQKeyboardToolbarManager-IQKeyboardToolbarManager"; + remoteGlobalIDString = C344E85893FCDEE5B70436E0A4A3472B; + remoteInfo = "Toast-Swift-Toast-Swift"; }; - 639BD9FF9BA7192485B4F917947EB7B7 /* PBXContainerItemProxy */ = { + 6130D9140D152F57AA543D42CA625298 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 12890DE3ABBC2CA295E108358D85EE69; - remoteInfo = IQTextView; + remoteGlobalIDString = F4FE17428FD0E607723A44F17231B7A1; + remoteInfo = IQKeyboardToolbar; }; - 6887DA1C8583123202CFE8CCD0114D70 /* PBXContainerItemProxy */ = { + 64F6091A60F53F5A90BEE2C59126E133 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 982A68D37F5DCBC1FC1FDC0BB2F0EB8E; - remoteInfo = "IQKeyboardManagerSwift-IQKeyboardManagerSwift"; + remoteGlobalIDString = 2B8FF445A5162845FAB9EC00FC92B694; + remoteInfo = "IQKeyboardNotification-IQKeyboardNotification"; }; - 68FACE05FDF37AD58CB1E8DBD213317C /* PBXContainerItemProxy */ = { + 6795B29B74A0DFB983C8C121DAC73B8F /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = F9A1BF709B7BA4C24A83664EB1E1C7D4; - remoteInfo = IQKeyboardCore; + remoteGlobalIDString = A26E6FD851C20D652B2755C1464A9990; + remoteInfo = IQKeyboardNotification; }; - 702967F91B360154587EAF7A3E6E5FE0 /* PBXContainerItemProxy */ = { + 6C9C732B28DF0513A21CE6E248F89072 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 283C1F2EA88CD4413165801A6748A48E; remoteInfo = IQTextInputViewNotification; }; - 706CD7E6D12A879E778A910FA680C4E3 /* PBXContainerItemProxy */ = { + 7C1DC3C44CB9ED8404023CBE11C3A841 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = A26E6FD851C20D652B2755C1464A9990; - remoteInfo = IQKeyboardNotification; + remoteGlobalIDString = 1948D0B63D2CF6A48E18B0B292BC6091; + remoteInfo = SocketRocket; }; - 7A006DA632FA3C0EBCCE76968F857A1A /* PBXContainerItemProxy */ = { + 7D69ABF84486EAFB55FB87BC9B44D3F6 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = B247F77A0CD5E19C8187A9BA1EB58C09; - remoteInfo = "IQKeyboardToolbar-IQKeyboardToolbar"; + remoteGlobalIDString = F4FE17428FD0E607723A44F17231B7A1; + remoteInfo = IQKeyboardToolbar; }; - 800F28AAF8E18E00B53F6C32799DAF22 /* PBXContainerItemProxy */ = { + 8031384E87ED727FE68F4242803FF742 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 8A8DB685241263AFDF5E6B20FE67B93A; - remoteInfo = "SnapKit-SnapKit_Privacy"; + remoteGlobalIDString = 0981F89DB5DA3FFCFFEBDE1F56287054; + remoteInfo = IQKeyboardReturnManager; }; - 82B27615B5CA1FD97F7A8DBCAF5AA360 /* PBXContainerItemProxy */ = { + 8581EB306F93FE5BF5504824295F3722 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 2B8FF445A5162845FAB9EC00FC92B694; - remoteInfo = "IQKeyboardNotification-IQKeyboardNotification"; + remoteGlobalIDString = B247F77A0CD5E19C8187A9BA1EB58C09; + remoteInfo = "IQKeyboardToolbar-IQKeyboardToolbar"; }; - 89E300EC786E5D7673A67AC97D2EE1EE /* PBXContainerItemProxy */ = { + 925132ADAAA2012B51EAE2C13D1BD31F /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = F4FE17428FD0E607723A44F17231B7A1; - remoteInfo = IQKeyboardToolbar; + remoteGlobalIDString = F9A1BF709B7BA4C24A83664EB1E1C7D4; + remoteInfo = IQKeyboardCore; }; - 92B42FC203D9B7A77B162665E26974A4 /* PBXContainerItemProxy */ = { + 92C92FF2930D007DABF544DC7AC08060 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 19622742EBA51E823D6DAE3F8CDBFAD4; remoteInfo = SnapKit; }; - A69D14A28BD4F695373B894B83DC79B0 /* PBXContainerItemProxy */ = { + 94872272C37CF76A4C27D08B5EC60D6D /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 0981F89DB5DA3FFCFFEBDE1F56287054; - remoteInfo = IQKeyboardReturnManager; + remoteGlobalIDString = F9A1BF709B7BA4C24A83664EB1E1C7D4; + remoteInfo = IQKeyboardCore; }; - C1038B841E8ED4F36EFA5B37AB9B3CC7 /* PBXContainerItemProxy */ = { + 9A200DA2E207287B114783961A389F97 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = F9A1BF709B7BA4C24A83664EB1E1C7D4; - remoteInfo = IQKeyboardCore; + remoteGlobalIDString = 982A68D37F5DCBC1FC1FDC0BB2F0EB8E; + remoteInfo = "IQKeyboardManagerSwift-IQKeyboardManagerSwift"; }; - C3F103E89D84D1B12D2D9F7EEACD1156 /* PBXContainerItemProxy */ = { + 9D53E47458385470A91D7295E48E0FD6 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = F4FE17428FD0E607723A44F17231B7A1; remoteInfo = IQKeyboardToolbar; }; - CA95E7DE958C9E11A32E3AD3AB58DFCD /* PBXContainerItemProxy */ = { + A24EA8C0FD67224523A2A8049A529730 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = A26E6FD851C20D652B2755C1464A9990; remoteInfo = IQKeyboardNotification; }; - D0E1C04F54B8D007689B29ABE9DD60E6 /* PBXContainerItemProxy */ = { + BACED4BB4D08C0B382C214709ABE6A91 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 283C1F2EA88CD4413165801A6748A48E; - remoteInfo = IQTextInputViewNotification; + remoteGlobalIDString = 1948D0B63D2CF6A48E18B0B292BC6091; + remoteInfo = SocketRocket; }; - D72F2F53A0379A93208CF4F91FD0C100 /* PBXContainerItemProxy */ = { + C7AFFBB48EEA1AF602657886DA4FE905 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = F4FE17428FD0E607723A44F17231B7A1; - remoteInfo = IQKeyboardToolbar; + remoteGlobalIDString = 88810798DA63A2F6611B0970EA276DEC; + remoteInfo = "IQKeyboardReturnManager-IQKeyboardReturnManager"; }; - E59379C6B9F90539CF5EDC2160A4A44E /* PBXContainerItemProxy */ = { + C96EFF1386F982C542C2B03977A6FFD6 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = C344E85893FCDEE5B70436E0A4A3472B; - remoteInfo = "Toast-Swift-Toast-Swift"; + remoteGlobalIDString = F9A1BF709B7BA4C24A83664EB1E1C7D4; + remoteInfo = IQKeyboardCore; }; - E7856FD48E3CAE02F84A77F821511AAB /* PBXContainerItemProxy */ = { + D0E89F4255608F3B229AA3E8DFD93CF9 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = A6602BCAA6F4F932A586C41D0B7E019C; - remoteInfo = "IQTextView-IQTextView"; + remoteGlobalIDString = 4502C7427440BEB17A50C0BF6E638A85; + remoteInfo = "IQTextInputViewNotification-IQTextInputViewNotification"; + }; + D3993F1F1D303ACFD97829D6D9115BA0 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 020993F16DA5986DACE118349EBCE9E5; + remoteInfo = IQKeyboardToolbarManager; + }; + D3C8D19228BDBCB03280ABF945D775BA /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = F9A1BF709B7BA4C24A83664EB1E1C7D4; + remoteInfo = IQKeyboardCore; }; - EE7C8A2F9421920413779D8E1F207DF7 /* PBXContainerItemProxy */ = { + D7076AE16282F5B2F87DAD903E05C6C4 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 283C1F2EA88CD4413165801A6748A48E; remoteInfo = IQTextInputViewNotification; }; - FE3107107D5B289341BD608148335E3B /* PBXContainerItemProxy */ = { + D72B40330912494BEDC722CCB167FF77 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 0981F89DB5DA3FFCFFEBDE1F56287054; - remoteInfo = IQKeyboardReturnManager; + remoteGlobalIDString = 7C5613175BBC4BF67E36DB4FBEBC01D0; + remoteInfo = "IQKeyboardToolbarManager-IQKeyboardToolbarManager"; + }; + F68560EF2AF1432CDC4EDEE224F0B10F /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = A6602BCAA6F4F932A586C41D0B7E019C; + remoteInfo = "IQTextView-IQTextView"; }; /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ - 0162BAFB778BF2E7D66A112029D508AB /* IQKeyboardManagerSwift-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "IQKeyboardManagerSwift-prefix.pch"; sourceTree = ""; }; - 024EBC1EBC8B76295C273069400071F2 /* UIView+ParentObjc.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UIView+ParentObjc.swift"; path = "IQKeyboardManagerSwift/IQKeyboardManager/UIKitExtensions/UIView+ParentObjc.swift"; sourceTree = ""; }; - 04D424EE2CE0897D1A9D495245578DB7 /* IQKeyboardManagerSwift.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = IQKeyboardManagerSwift.modulemap; sourceTree = ""; }; - 053B43B12209A016C25BFB227BD91974 /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; includeInIndex = 1; name = PrivacyInfo.xcprivacy; path = IQKeyboardNotification/Assets/PrivacyInfo.xcprivacy; sourceTree = ""; }; + 01E23D7305E51271DEFF79A9CADBF926 /* IQKeyboardManagerSwift-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "IQKeyboardManagerSwift-dummy.m"; sourceTree = ""; }; + 02E139B151EDFA1F4F63EA119D2269C7 /* Toast-Swift.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Toast-Swift.debug.xcconfig"; sourceTree = ""; }; + 02EDA2792EBD3343A7DBC6B427F1F041 /* SnapKit-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "SnapKit-dummy.m"; sourceTree = ""; }; + 0578E47B5AE5713CF21EA86848CA87DD /* IQTextInputViewNotification.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQTextInputViewNotification.swift; path = IQTextInputViewNotification/Classes/IQTextInputViewNotification.swift; sourceTree = ""; }; 06E5B413FEA5A600D76636DA132F8FB9 /* IQTextInputViewNotification */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = IQTextInputViewNotification; path = IQTextInputViewNotification.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 078038EA55CCEFB2FCFDAC364A3A475F /* IQKeyboardResignHandler.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQKeyboardResignHandler.swift; path = IQKeyboardManagerSwift/Resign/IQKeyboardResignHandler.swift; sourceTree = ""; }; - 07D76E404E67961840A2FA9E8B592C51 /* IQKeyboardNotification.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQKeyboardNotification.swift; path = IQKeyboardNotification/Classes/IQKeyboardNotification.swift; sourceTree = ""; }; - 090EF934D945BE1D4018F0D2D19007E0 /* SnapKit-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SnapKit-umbrella.h"; sourceTree = ""; }; - 0B21B1D5CEC2F4C2602EFA71D8417344 /* IQTextView.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = IQTextView.modulemap; sourceTree = ""; }; - 0BBF04F3ACCC6329B881C1679E0733BB /* IQKeyboardToolbar.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = IQKeyboardToolbar.release.xcconfig; sourceTree = ""; }; - 0D0E7899589D00C50376C1B07158AC50 /* IQKeyboardToolbar-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "IQKeyboardToolbar-umbrella.h"; sourceTree = ""; }; - 0D1B695DB3D9B30B1E895FE056EDB0D2 /* ConstraintInsetTarget.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintInsetTarget.swift; path = Sources/ConstraintInsetTarget.swift; sourceTree = ""; }; + 06FEEB0FA2AA89DF42A1C6525F644FBF /* Pods-DeepChordsSdk */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = "Pods-DeepChordsSdk"; path = Pods_DeepChordsSdk.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 07FD04B2D25C4767E2AACE039E3E77A8 /* IQTextInputViewNotification.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = IQTextInputViewNotification.modulemap; sourceTree = ""; }; + 080D923BC81BB12EE5B738187A72A0D4 /* ConstraintItem.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintItem.swift; path = Sources/ConstraintItem.swift; sourceTree = ""; }; + 0A8C10276B315358D1F985B8F641683A /* ResourceBundle-SnapKit_Privacy-SnapKit-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "ResourceBundle-SnapKit_Privacy-SnapKit-Info.plist"; sourceTree = ""; }; + 0AE37E30F693ED15CA31B520ED420454 /* NSRunLoop+SRWebSocketPrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSRunLoop+SRWebSocketPrivate.h"; path = "SocketRocket/Internal/NSRunLoop+SRWebSocketPrivate.h"; sourceTree = ""; }; + 0AF7DA075D6BD7E141707379E62BFA63 /* SRPinningSecurityPolicy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SRPinningSecurityPolicy.m; path = SocketRocket/Internal/Security/SRPinningSecurityPolicy.m; sourceTree = ""; }; + 0C917A6291C02472ECB91FD7B8B2CFC1 /* CFNetwork.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CFNetwork.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS18.0.sdk/System/Library/Frameworks/CFNetwork.framework; sourceTree = DEVELOPER_DIR; }; 0DFD4541FF9DAA31A2FC2A7F6D03ED22 /* IQTextView */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = IQTextView; path = IQTextView.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 0FC7A70F2E2D28124280A06C1FD9760B /* SnapKit-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "SnapKit-dummy.m"; sourceTree = ""; }; + 0EE50CC6D98E37DA330EADC9F9C949F0 /* ConstraintDirectionalInsets.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintDirectionalInsets.swift; path = Sources/ConstraintDirectionalInsets.swift; sourceTree = ""; }; + 0F6A2BF98BD227110E60762E29808CEC /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; includeInIndex = 1; name = PrivacyInfo.xcprivacy; path = IQTextView/Assets/PrivacyInfo.xcprivacy; sourceTree = ""; }; + 10288C630688257B185941E1EA55E346 /* IQTextInputViewInfoModel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQTextInputViewInfoModel.swift; path = IQKeyboardReturnManager/Classes/IQTextInputViewInfoModel.swift; sourceTree = ""; }; + 109E37988FF06586D32321CEA99162B0 /* SRHash.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SRHash.m; path = SocketRocket/Internal/Utilities/SRHash.m; sourceTree = ""; }; + 10C547231342B150BEC39F40295D087E /* IQRootControllerConfiguration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQRootControllerConfiguration.swift; path = IQKeyboardManagerSwift/IQKeyboardManager/Configuration/IQRootControllerConfiguration.swift; sourceTree = ""; }; + 10CAAD795A45AB49A0EE4D6805AB7A1F /* SocketRocket.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SocketRocket.release.xcconfig; sourceTree = ""; }; 110BD425B6CAD6801539E2C6AB6E0662 /* IQKeyboardReturnManager-IQKeyboardReturnManager */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; name = "IQKeyboardReturnManager-IQKeyboardReturnManager"; path = IQKeyboardReturnManager.bundle; sourceTree = BUILT_PRODUCTS_DIR; }; - 117ED6DB1BD04E643776E77477BB0EF1 /* IQKeyboardManager+ToolbarManagerDeprecated.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQKeyboardManager+ToolbarManagerDeprecated.swift"; path = "IQKeyboardManagerSwift/IQKeyboardToolbarManager/IQKeyboardManager+ToolbarManagerDeprecated.swift"; sourceTree = ""; }; + 115E19C96EB6123FE27F3A530B3BE30D /* UICollectionView+IndexPaths.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UICollectionView+IndexPaths.swift"; path = "IQKeyboardManagerSwift/IQKeyboardManager/UIKitExtensions/UICollectionView+IndexPaths.swift"; sourceTree = ""; }; 120BD4C670EF00F4D5A40AA4B863A7AE /* IQKeyboardNotification-IQKeyboardNotification */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; name = "IQKeyboardNotification-IQKeyboardNotification"; path = IQKeyboardNotification.bundle; sourceTree = BUILT_PRODUCTS_DIR; }; - 125B7ADD9F6F9E6FEAA2172EBF355938 /* ConstraintLayoutGuide.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintLayoutGuide.swift; path = Sources/ConstraintLayoutGuide.swift; sourceTree = ""; }; - 130A1731BEBE0674DF4B874494BFF139 /* IQKeyboardNotification-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "IQKeyboardNotification-prefix.pch"; sourceTree = ""; }; + 12415404E6E70407610188D7ADDC1D02 /* UIView+ResignObjc.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UIView+ResignObjc.swift"; path = "IQKeyboardManagerSwift/Resign/UIKItExtensions/UIView+ResignObjc.swift"; sourceTree = ""; }; + 133A600484839BF74BDD51C8B0BB6EBE /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS18.0.sdk/System/Library/Frameworks/QuartzCore.framework; sourceTree = DEVELOPER_DIR; }; 13FD39576595D8A884BF5166065C5236 /* Toast-Swift-Toast-Swift */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; name = "Toast-Swift-Toast-Swift"; path = "Toast-Swift.bundle"; sourceTree = BUILT_PRODUCTS_DIR; }; - 1445F9B020E299209EDE5CD49F2EF94D /* IQTextInputViewNotification-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "IQTextInputViewNotification-dummy.m"; sourceTree = ""; }; + 14A61C146CFCDB5CEC8508DC60360819 /* IQBarButtonItemConfiguration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQBarButtonItemConfiguration.swift; path = IQKeyboardToolbar/Classes/IQBarButtonItem/IQBarButtonItemConfiguration.swift; sourceTree = ""; }; + 1515EB933E55F8DF1275984150311F6F /* IQTextInputViewNotification.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = IQTextInputViewNotification.release.xcconfig; sourceTree = ""; }; + 158193B636D7824993DB68D81AE2C233 /* IQKeyboardToolbarManager+Internal.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQKeyboardToolbarManager+Internal.swift"; path = "IQKeyboardToolbarManager/Classes/IQKeyboardToolbarManager+Internal.swift"; sourceTree = ""; }; 15848DEC7727A809830E7F6FC1B6CE0F /* IQKeyboardReturnManager */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = IQKeyboardReturnManager; path = IQKeyboardReturnManager.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 168C7D47B997C62E8CB232D83F0310AB /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; includeInIndex = 1; name = PrivacyInfo.xcprivacy; path = Sources/PrivacyInfo.xcprivacy; sourceTree = ""; }; - 18C7EDD0BE0032658D0A03A3BB7CF623 /* IQKeyboardManager+Appearance.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQKeyboardManager+Appearance.swift"; path = "IQKeyboardManagerSwift/Appearance/IQKeyboardManager+Appearance.swift"; sourceTree = ""; }; - 1D298A925E306A10B586FBD63C04A81F /* IQKeyboardExtended.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQKeyboardExtended.swift; path = IQKeyboardCore/Classes/IQKeyboardExtended.swift; sourceTree = ""; }; - 1D541D12A563E883F4018584090E33DB /* IQKeyboardManager+Deprecated.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQKeyboardManager+Deprecated.swift"; path = "IQKeyboardManagerSwift/IQKeyboardManager/Deprecated/IQKeyboardManager+Deprecated.swift"; sourceTree = ""; }; + 159C74980AC55D136945F073F6CEDC14 /* IQKeyboardToolbar.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = IQKeyboardToolbar.debug.xcconfig; sourceTree = ""; }; + 15FF3E312676449AB12DADDDB8D5C352 /* IQKeyboardNotification.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = IQKeyboardNotification.modulemap; sourceTree = ""; }; + 170AE4D919026EA3D1FB264423443921 /* IQTextView-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "IQTextView-prefix.pch"; sourceTree = ""; }; + 1917E3D591E530CFE1940C6F4E878690 /* Pods-DeepChordsSdk-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-DeepChordsSdk-Info.plist"; sourceTree = ""; }; + 1AB8D5FD6175CD8FCC7153B71E6DD77A /* IQKeyboardNotification.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = IQKeyboardNotification.release.xcconfig; sourceTree = ""; }; + 1D8DCDE8A3DFBFEA690BD5A6081C5762 /* IQKeyboardToolbarManager-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "IQKeyboardToolbarManager-umbrella.h"; sourceTree = ""; }; + 1E2BADF249E4A558D7EE5BB1077C1DE1 /* IQTextView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQTextView.swift; path = IQTextView/Classes/IQTextView.swift; sourceTree = ""; }; + 1EEC9E9674D2F2735A1237FEC96C44CB /* IQKeyboardReturnManager.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = IQKeyboardReturnManager.modulemap; sourceTree = ""; }; 1F667CC0E19EAF34E5A4119E2121F585 /* Pods-Example */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = "Pods-Example"; path = Pods_Example.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 1FB0B399D6B51466AFD1D3DABBB19C1A /* ConstraintMakerEditable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintMakerEditable.swift; path = Sources/ConstraintMakerEditable.swift; sourceTree = ""; }; - 231CDDC4DB13BC0B46D3EB8176FFE464 /* IQPlaceholderable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQPlaceholderable.swift; path = IQKeyboardToolbar/Placeholderable/IQPlaceholderable.swift; sourceTree = ""; }; - 243410B9535472556EA4BB6DBC133A0D /* Pods-Example.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-Example.release.xcconfig"; sourceTree = ""; }; - 2527373B09781527CFB5F6FCCAE7B821 /* Array+Sort.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Array+Sort.swift"; path = "IQKeyboardToolbarManager/Classes/UIKitExtensions/Array+Sort.swift"; sourceTree = ""; }; - 2570B16F7E9DBA42AAF1C41E54783C89 /* IQKeyboardCore-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "IQKeyboardCore-umbrella.h"; sourceTree = ""; }; - 267AC3B58CA7E99D46B70842A2CD1255 /* ResourceBundle-IQKeyboardToolbar-IQKeyboardToolbar-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "ResourceBundle-IQKeyboardToolbar-IQKeyboardToolbar-Info.plist"; sourceTree = ""; }; - 27FF931A64B73FEE5D4A85928D51804A /* IQKeyboardManager+Position.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQKeyboardManager+Position.swift"; path = "IQKeyboardManagerSwift/IQKeyboardManager/IQKeyboardManager+Position.swift"; sourceTree = ""; }; - 28400A2CE3EE2B07169489BF74B7FE98 /* IQKeyboardManager+Debug.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQKeyboardManager+Debug.swift"; path = "IQKeyboardManagerSwift/IQKeyboardManager/Debug/IQKeyboardManager+Debug.swift"; sourceTree = ""; }; - 288DC5C96A5DECE79EDC44987BF2A77C /* Combine.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Combine.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS18.0.sdk/System/Library/Frameworks/Combine.framework; sourceTree = DEVELOPER_DIR; }; - 2B7459F0C8EEFEF3A4B8406D396BC764 /* IQKeyboardReturnManager.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = IQKeyboardReturnManager.modulemap; sourceTree = ""; }; - 2CD6955DD3969A106AF4982FF7008B0F /* IQKeyboardToolbarManager-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "IQKeyboardToolbarManager-prefix.pch"; sourceTree = ""; }; - 2EDDE4B8CE41298570515C4EBF67CA45 /* Toast-Swift.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Toast-Swift.modulemap"; sourceTree = ""; }; - 31C1D37707DFAA5E6A164BCC07834264 /* Pods-Example-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-Example-Info.plist"; sourceTree = ""; }; - 334D1CD5A38B79DE9FE482556C492DFA /* ConstraintViewDSL.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintViewDSL.swift; path = Sources/ConstraintViewDSL.swift; sourceTree = ""; }; - 33C48FDE215E1319970EE8067F27C546 /* IQKeyboardManager+Appearance_Deprecated.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQKeyboardManager+Appearance_Deprecated.swift"; path = "IQKeyboardManagerSwift/Appearance/IQKeyboardManager+Appearance_Deprecated.swift"; sourceTree = ""; }; - 3579ECE9098CFE0A18918D8F0F6BBC16 /* IQKeyboardCore.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = IQKeyboardCore.release.xcconfig; sourceTree = ""; }; - 35B03A32DAB0EC00D0F7CE971723BD7C /* IQKeyboardNotification.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = IQKeyboardNotification.modulemap; sourceTree = ""; }; - 35C305D3797C284E6F5BAA1D3E6F9BF8 /* Pods-Example.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-Example.modulemap"; sourceTree = ""; }; - 3A0EC753684DB9D548B2F21B240AB183 /* ConstraintMakerExtendable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintMakerExtendable.swift; path = Sources/ConstraintMakerExtendable.swift; sourceTree = ""; }; - 3DC059D4E73E400F389B683A21D3A187 /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; includeInIndex = 1; name = PrivacyInfo.xcprivacy; path = IQKeyboardManagerSwift/PrivacyInfo.xcprivacy; sourceTree = ""; }; - 425F3E2CCAC6FE05E103DD993BE61B34 /* IQTextInputViewInfoModel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQTextInputViewInfoModel.swift; path = IQKeyboardReturnManager/Classes/IQTextInputViewInfoModel.swift; sourceTree = ""; }; - 42892A584E9AC22D35E1D9FE68B53469 /* ConstraintMultiplierTarget.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintMultiplierTarget.swift; path = Sources/ConstraintMultiplierTarget.swift; sourceTree = ""; }; - 42F154595907A9B7C232A08628BBC592 /* IQKeyboardToolbar-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "IQKeyboardToolbar-prefix.pch"; sourceTree = ""; }; - 441854E35F81731E63E53DC7E4EEAD9D /* Pods-Example-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-Example-acknowledgements.markdown"; sourceTree = ""; }; - 442771E28F516C75AF67BCAA132E4A56 /* IQKeyboardToolbarManager+Toolbar.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQKeyboardToolbarManager+Toolbar.swift"; path = "IQKeyboardToolbarManager/Classes/Toolbar/IQKeyboardToolbarManager+Toolbar.swift"; sourceTree = ""; }; - 44B578B4BB9C2CE2BF3D0618DD618E6E /* IQKeyboardCore-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "IQKeyboardCore-Info.plist"; sourceTree = ""; }; - 45AE6E9F7BEA7559570D1C4611BC97BA /* ConstraintDSL.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintDSL.swift; path = Sources/ConstraintDSL.swift; sourceTree = ""; }; - 45E9A660E884B1EFF55785DC5472CA56 /* IQKeyboardResignHandler+Internal.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQKeyboardResignHandler+Internal.swift"; path = "IQKeyboardManagerSwift/Resign/IQKeyboardResignHandler+Internal.swift"; sourceTree = ""; }; - 46363399D08CEC56582B10CBA23FE101 /* ResourceBundle-SnapKit_Privacy-SnapKit-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "ResourceBundle-SnapKit_Privacy-SnapKit-Info.plist"; sourceTree = ""; }; - 48287E0AEAB23085B0FF5012495D3C9D /* IQKeyboardNotification-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "IQKeyboardNotification-Info.plist"; sourceTree = ""; }; - 488126919669AEE0AB6BD8855DBA7E1D /* IQKeyboardCore-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "IQKeyboardCore-dummy.m"; sourceTree = ""; }; - 4C4A1A93E1ED51A08661C32F4EDBBA11 /* ConstraintLayoutGuide+Extensions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "ConstraintLayoutGuide+Extensions.swift"; path = "Sources/ConstraintLayoutGuide+Extensions.swift"; sourceTree = ""; }; - 4CBC06BCB9A7BAD3F1CB9489020EFAA4 /* IQTextInputViewNotification-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "IQTextInputViewNotification-umbrella.h"; sourceTree = ""; }; - 51E4C8BDDCD249D53F68B657894D3C33 /* IQKeyboardManager+Resign_Deprecated.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQKeyboardManager+Resign_Deprecated.swift"; path = "IQKeyboardManagerSwift/Resign/IQKeyboardManager+Resign_Deprecated.swift"; sourceTree = ""; }; - 54E68DA1C9D605BCA82C37688A0D6C22 /* UIView+IQKeyboardManagerExtensionObjc.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UIView+IQKeyboardManagerExtensionObjc.swift"; path = "IQKeyboardManagerSwift/IQKeyboardManager/IQKeyboardManagerExtension/UIView+IQKeyboardManagerExtensionObjc.swift"; sourceTree = ""; }; - 583D0819254BED967661EC2359B98F18 /* ConstraintMakerRelatable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintMakerRelatable.swift; path = Sources/ConstraintMakerRelatable.swift; sourceTree = ""; }; - 5A543731802B05A4CF7F5D8024952273 /* IQKeyboardReturnManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQKeyboardReturnManager.swift; path = IQKeyboardReturnManager/Classes/IQKeyboardReturnManager.swift; sourceTree = ""; }; - 5AD8C08E06D5E01990AA80544C0901BA /* IQKeyboardToolbarManager.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = IQKeyboardToolbarManager.debug.xcconfig; sourceTree = ""; }; - 5BEBDD0CF7D42D6159D8E2EF081BD93B /* IQKeyboardToolbarManager.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = IQKeyboardToolbarManager.release.xcconfig; sourceTree = ""; }; - 5BF7B9A8FF0D82C370F68F2653F54B11 /* UIScrollView+IQKeyboardManagerExtensionObjc.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UIScrollView+IQKeyboardManagerExtensionObjc.swift"; path = "IQKeyboardManagerSwift/IQKeyboardManager/IQKeyboardManagerExtension/UIScrollView+IQKeyboardManagerExtensionObjc.swift"; sourceTree = ""; }; - 5C581F1999F4CCA213DECDF99D28E47A /* IQScrollViewConfiguration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQScrollViewConfiguration.swift; path = IQKeyboardManagerSwift/IQKeyboardManager/Configuration/IQScrollViewConfiguration.swift; sourceTree = ""; }; - 5C9682F1DA72621A7697B6CC652E5564 /* IQKeyboardManagerSwift-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "IQKeyboardManagerSwift-umbrella.h"; sourceTree = ""; }; - 5CA792EF08162ADE7BAC7607327CBAED /* IQKeyboardConstants.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQKeyboardConstants.swift; path = IQKeyboardCore/Classes/Constants/IQKeyboardConstants.swift; sourceTree = ""; }; - 5E6E2ED6E4CC42A0E37225A15EC2C6F1 /* IQTextView-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "IQTextView-prefix.pch"; sourceTree = ""; }; - 5EB5C94FD93112688DCB0AC41215A68F /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; includeInIndex = 1; name = PrivacyInfo.xcprivacy; path = IQTextInputViewNotification/Assets/PrivacyInfo.xcprivacy; sourceTree = ""; }; - 5F474BB8F008181749A6BEDD3FF6B03E /* ConstraintDescription.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintDescription.swift; path = Sources/ConstraintDescription.swift; sourceTree = ""; }; - 5FA5B7CA13253C1FC9B86FA274000F3F /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; includeInIndex = 1; name = PrivacyInfo.xcprivacy; path = Toast/Resources/PrivacyInfo.xcprivacy; sourceTree = ""; }; - 60CE4193979A1692CB7524C594A33F5F /* IQKeyboardToolbarManager+Internal.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQKeyboardToolbarManager+Internal.swift"; path = "IQKeyboardToolbarManager/Classes/IQKeyboardToolbarManager+Internal.swift"; sourceTree = ""; }; - 612302F0FAD21B517B996AB187CA6449 /* IQKeyboardReturnManager-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "IQKeyboardReturnManager-umbrella.h"; sourceTree = ""; }; - 629AE0F7346599178ABEF604C7BB964F /* LayoutConstraint.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = LayoutConstraint.swift; path = Sources/LayoutConstraint.swift; sourceTree = ""; }; - 648E8949F15F11A016686DAB0E5B508E /* UIView+Responders.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UIView+Responders.swift"; path = "IQKeyboardToolbarManager/Classes/UIKitExtensions/UIView+Responders.swift"; sourceTree = ""; }; - 64FDAD67044464E102D4F1F14A995D44 /* ResourceBundle-IQTextInputViewNotification-IQTextInputViewNotification-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "ResourceBundle-IQTextInputViewNotification-IQTextInputViewNotification-Info.plist"; sourceTree = ""; }; - 65CE8BABA0B27FB3861EFDC42FAF7936 /* ConstraintDirectionalInsetTarget.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintDirectionalInsetTarget.swift; path = Sources/ConstraintDirectionalInsetTarget.swift; sourceTree = ""; }; - 668BB2AC6F690F784C35587B8BF5F759 /* IQKeyboardToolbarConstants.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQKeyboardToolbarConstants.swift; path = IQKeyboardToolbarManager/Classes/Constants/IQKeyboardToolbarConstants.swift; sourceTree = ""; }; - 679C6C1E29E033FE6D3AF5FAF79916A0 /* ConstraintItem.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintItem.swift; path = Sources/ConstraintItem.swift; sourceTree = ""; }; - 67BCA4DE5DC478383D44A61FADBBB1A1 /* SnapKit.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SnapKit.debug.xcconfig; sourceTree = ""; }; - 6824C490150831540A8B6007E6B0B0EF /* IQKeyboardAppearanceManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQKeyboardAppearanceManager.swift; path = IQKeyboardManagerSwift/Appearance/IQKeyboardAppearanceManager.swift; sourceTree = ""; }; - 6AD91692C7EF9CB5B47DCFFDBCF2BF1F /* IQTextView+Placeholderable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQTextView+Placeholderable.swift"; path = "IQTextView/Classes/IQTextView+Placeholderable.swift"; sourceTree = ""; }; - 6B1A7FE44491E9065CDE0EC638D84820 /* IQKeyboardManager+Internal.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQKeyboardManager+Internal.swift"; path = "IQKeyboardManagerSwift/IQKeyboardManager/IQKeyboardManager+Internal.swift"; sourceTree = ""; }; - 6B2D1FC7F34EF685AF2452AC43FFE816 /* ConstraintConstantTarget.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintConstantTarget.swift; path = Sources/ConstraintConstantTarget.swift; sourceTree = ""; }; - 6C2845BF731838039657B93E29F7BD5F /* UIScrollView+IQKeyboardManagerExtension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UIScrollView+IQKeyboardManagerExtension.swift"; path = "IQKeyboardManagerSwift/IQKeyboardManager/IQKeyboardManagerExtension/UIScrollView+IQKeyboardManagerExtension.swift"; sourceTree = ""; }; - 6D68B5BFA92A84156B07F2625E12FD12 /* IQKeyboardReturnManager+UITextViewDelegate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQKeyboardReturnManager+UITextViewDelegate.swift"; path = "IQKeyboardReturnManager/Classes/Delegates/IQKeyboardReturnManager+UITextViewDelegate.swift"; sourceTree = ""; }; + 21E9444EE5839429C60E9A16651BAD78 /* SRSIMDHelpers.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SRSIMDHelpers.h; path = SocketRocket/Internal/Utilities/SRSIMDHelpers.h; sourceTree = ""; }; + 224FAFA7B0169BBAAFD0FA422D7D11A6 /* IQKeyboardReturnManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQKeyboardReturnManager.swift; path = IQKeyboardReturnManager/Classes/IQKeyboardReturnManager.swift; sourceTree = ""; }; + 236C98A9FAEF3200D70937E889092818 /* IQKeyboardManager+Resign.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQKeyboardManager+Resign.swift"; path = "IQKeyboardManagerSwift/Resign/IQKeyboardManager+Resign.swift"; sourceTree = ""; }; + 24926E8158D8FAD9BE42C760B3154B55 /* ConstraintMakerFinalizable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintMakerFinalizable.swift; path = Sources/ConstraintMakerFinalizable.swift; sourceTree = ""; }; + 2582EC469D9940C7AAE3F903A495E86A /* SRDelegateController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SRDelegateController.h; path = SocketRocket/Internal/Delegate/SRDelegateController.h; sourceTree = ""; }; + 25BADE0B95009E3B02C9E6EBB47417A3 /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; includeInIndex = 1; name = PrivacyInfo.xcprivacy; path = IQKeyboardNotification/Assets/PrivacyInfo.xcprivacy; sourceTree = ""; }; + 261E9C437FF6FFF72C01BBB73341409D /* IQKeyboardResignHandler.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQKeyboardResignHandler.swift; path = IQKeyboardManagerSwift/Resign/IQKeyboardResignHandler.swift; sourceTree = ""; }; + 26FE696F5243F520CB872AC051139FE5 /* SRIOConsumer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SRIOConsumer.h; path = SocketRocket/Internal/IOConsumer/SRIOConsumer.h; sourceTree = ""; }; + 27296D8B66561FF21E0EB354428156C7 /* IQKeyboardNotification-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "IQKeyboardNotification-prefix.pch"; sourceTree = ""; }; + 27DA2684B87B3639C3D3D439F177E219 /* SRURLUtilities.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SRURLUtilities.h; path = SocketRocket/Internal/Utilities/SRURLUtilities.h; sourceTree = ""; }; + 284AC2E81CAAA90FEA12A250A16B11AB /* Pods-DeepChordsSdk-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-DeepChordsSdk-umbrella.h"; sourceTree = ""; }; + 2C45BE81EF6A9A12E115F2EDB69FC7D7 /* Pods-Example-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-Example-acknowledgements.markdown"; sourceTree = ""; }; + 2E8E02D90547D6DBD75A856D8A4E1275 /* IQTitleBarButtonItem.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQTitleBarButtonItem.swift; path = IQKeyboardToolbar/Classes/IQBarButtonItem/IQTitleBarButtonItem.swift; sourceTree = ""; }; + 2EFB802792096CDDF8FD170084E303BC /* ResourceBundle-IQKeyboardReturnManager-IQKeyboardReturnManager-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "ResourceBundle-IQKeyboardReturnManager-IQKeyboardReturnManager-Info.plist"; sourceTree = ""; }; + 306B6BBB2D0B4D417ADD4B82D7D51E82 /* NSRunLoop+SRWebSocket.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSRunLoop+SRWebSocket.h"; path = "SocketRocket/NSRunLoop+SRWebSocket.h"; sourceTree = ""; }; + 3187DDFEE4C490953B2AEF7B0D19EB1B /* NSURLRequest+SRWebSocket.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSURLRequest+SRWebSocket.h"; path = "SocketRocket/NSURLRequest+SRWebSocket.h"; sourceTree = ""; }; + 319AC1D7C71149C2DD5EF02DECE3F511 /* SnapKit.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SnapKit.debug.xcconfig; sourceTree = ""; }; + 32080BC56EEB26340C6292BA94F068B6 /* SRProxyConnect.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SRProxyConnect.h; path = SocketRocket/Internal/Proxy/SRProxyConnect.h; sourceTree = ""; }; + 32B4B8845C7824A1AB6C42EB0B32845E /* ResourceBundle-IQKeyboardToolbarManager-IQKeyboardToolbarManager-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "ResourceBundle-IQKeyboardToolbarManager-IQKeyboardToolbarManager-Info.plist"; sourceTree = ""; }; + 363F0A017C453E3DC084A7B5BDB87911 /* ConstraintRelation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintRelation.swift; path = Sources/ConstraintRelation.swift; sourceTree = ""; }; + 3649D66694159EF7F40B5A7377AC04D1 /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; includeInIndex = 1; name = PrivacyInfo.xcprivacy; path = IQKeyboardToolbarManager/Assets/PrivacyInfo.xcprivacy; sourceTree = ""; }; + 3725B14D6A408FA007F106F8CA983CE3 /* Pods-DeepChordsSdk-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-DeepChordsSdk-acknowledgements.markdown"; sourceTree = ""; }; + 37445197B6E56B3F3CA861A7F21F1C41 /* ConstraintMakerExtendable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintMakerExtendable.swift; path = Sources/ConstraintMakerExtendable.swift; sourceTree = ""; }; + 390BB9902E7A26E5A753B9CF32673BE9 /* SRURLUtilities.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SRURLUtilities.m; path = SocketRocket/Internal/Utilities/SRURLUtilities.m; sourceTree = ""; }; + 39B4B067040847EC4A5CE870C4E0C5A1 /* IQKeyboardToolbarManager-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "IQKeyboardToolbarManager-Info.plist"; sourceTree = ""; }; + 3A92BC97913B825589680C917211C138 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS18.0.sdk/System/Library/Frameworks/UIKit.framework; sourceTree = DEVELOPER_DIR; }; + 3D0CA09E0900EA77648A05D608CBA29F /* Toast-Swift-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Toast-Swift-umbrella.h"; sourceTree = ""; }; + 3D8DC22EC08F3E72E7E53ADA12E80CC0 /* UIView+IQKeyboardManagerExtensionObjc.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UIView+IQKeyboardManagerExtensionObjc.swift"; path = "IQKeyboardManagerSwift/IQKeyboardManager/IQKeyboardManagerExtension/UIView+IQKeyboardManagerExtensionObjc.swift"; sourceTree = ""; }; + 3ECA1919991B8674C3FD3253CD02BE4B /* IQTextInputViewNotification-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "IQTextInputViewNotification-Info.plist"; sourceTree = ""; }; + 3ED18FF4963E7B4F60DBBA903E25C67B /* Combine.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Combine.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS18.0.sdk/System/Library/Frameworks/Combine.framework; sourceTree = DEVELOPER_DIR; }; + 3F70480B31A6883BEDFC6C623FC76A32 /* UIScrollView+IQKeyboardManagerExtension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UIScrollView+IQKeyboardManagerExtension.swift"; path = "IQKeyboardManagerSwift/IQKeyboardManager/IQKeyboardManagerExtension/UIScrollView+IQKeyboardManagerExtension.swift"; sourceTree = ""; }; + 3F8F3D9A02DBFA1FF9899DD8933A95DA /* UIView+Parent.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UIView+Parent.swift"; path = "IQKeyboardManagerSwift/IQKeyboardManager/UIKitExtensions/UIView+Parent.swift"; sourceTree = ""; }; + 3F992A0DC4578F2D62CB095A497114CC /* IQKeyboardToolbarManager+Debug.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQKeyboardToolbarManager+Debug.swift"; path = "IQKeyboardToolbarManager/Classes/Debug/IQKeyboardToolbarManager+Debug.swift"; sourceTree = ""; }; + 42E3FC1A9F2FBB9AE28FDE3285B70F2C /* IQKeyboardCore-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "IQKeyboardCore-Info.plist"; sourceTree = ""; }; + 43CBF3C99F0BF342AEE8D7C7BE945B62 /* SRRunLoopThread.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SRRunLoopThread.h; path = SocketRocket/Internal/RunLoop/SRRunLoopThread.h; sourceTree = ""; }; + 44AFC022F6D6DD0DF30E10F9B7C4615A /* IQKeyboardToolbarConfiguration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQKeyboardToolbarConfiguration.swift; path = IQKeyboardToolbarManager/Classes/Configuration/IQKeyboardToolbarConfiguration.swift; sourceTree = ""; }; + 455A2446E1A8F92123FBE90A1D4B8D0B /* Pods-Example.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-Example.debug.xcconfig"; sourceTree = ""; }; + 45E554E7AE314B29D9C07A10667261BE /* ConstraintLayoutGuide+Extensions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "ConstraintLayoutGuide+Extensions.swift"; path = "Sources/ConstraintLayoutGuide+Extensions.swift"; sourceTree = ""; }; + 47BC329529726FFACA942239310E3841 /* Constraint.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Constraint.swift; path = Sources/Constraint.swift; sourceTree = ""; }; + 47F6CB0808BEA63D36E484B5D53B6436 /* IQScrollViewConfiguration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQScrollViewConfiguration.swift; path = IQKeyboardManagerSwift/IQKeyboardManager/Configuration/IQScrollViewConfiguration.swift; sourceTree = ""; }; + 484ECEC55CB9E98BAF0AE020F8FFF767 /* IQDeepResponderContainerView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQDeepResponderContainerView.swift; path = IQKeyboardToolbarManager/Classes/IQDeepResponderContainerView.swift; sourceTree = ""; }; + 48CA3ADFB16E0C4E235D89C552572332 /* IQKeyboardToolbar-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "IQKeyboardToolbar-dummy.m"; sourceTree = ""; }; + 4AB6723E60A4A0D494C4DCA4686CD3F0 /* IQKeyboardManagerSwift-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "IQKeyboardManagerSwift-Info.plist"; sourceTree = ""; }; + 4B6ABE8E0C199299C26E4B5977886B71 /* SnapKit.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SnapKit.release.xcconfig; sourceTree = ""; }; + 4BF6C697C2EB03CCBCE9CA841EA31F47 /* Pods-DeepChordsSdk.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-DeepChordsSdk.debug.xcconfig"; sourceTree = ""; }; + 4D6EF89B651DCBED1F5A7FA5D36D1FA6 /* IQBarButtonItem.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQBarButtonItem.swift; path = IQKeyboardToolbar/Classes/IQBarButtonItem/IQBarButtonItem.swift; sourceTree = ""; }; + 4EF1258267E4FF8FA1F298C5303B0E86 /* UIScrollView+IQKeyboardManagerExtensionObjc.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UIScrollView+IQKeyboardManagerExtensionObjc.swift"; path = "IQKeyboardManagerSwift/IQKeyboardManager/IQKeyboardManagerExtension/UIScrollView+IQKeyboardManagerExtensionObjc.swift"; sourceTree = ""; }; + 4F8CA916A31362AD762A33A32B0D936C /* ResourceBundle-IQTextInputViewNotification-IQTextInputViewNotification-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "ResourceBundle-IQTextInputViewNotification-IQTextInputViewNotification-Info.plist"; sourceTree = ""; }; + 4FB988C66900BB1BEEF5C5CA21B14AC9 /* IQTextView-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "IQTextView-Info.plist"; sourceTree = ""; }; + 502964DCE1567348B5B03211445AEA35 /* IQTextInputView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQTextInputView.swift; path = IQKeyboardCore/Classes/IQTextInputView.swift; sourceTree = ""; }; + 5084335EF29A15EB6C31DFB1ACA15349 /* IQKeyboardManagerSwift.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = IQKeyboardManagerSwift.debug.xcconfig; sourceTree = ""; }; + 50A2B3566A43C15186D3A1D9F91DB662 /* SRSIMDHelpers.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SRSIMDHelpers.m; path = SocketRocket/Internal/Utilities/SRSIMDHelpers.m; sourceTree = ""; }; + 529559A67714BC64192FD9BF92B33312 /* ConstraintMakerRelatable+Extensions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "ConstraintMakerRelatable+Extensions.swift"; path = "Sources/ConstraintMakerRelatable+Extensions.swift"; sourceTree = ""; }; + 58E0237741E33CAFB3DB96DAA7559910 /* ConstraintDirectionalInsetTarget.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintDirectionalInsetTarget.swift; path = Sources/ConstraintDirectionalInsetTarget.swift; sourceTree = ""; }; + 5AF0EBE9A79115D36EF40E456919D63B /* IQKeyboardManagerSwift.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = IQKeyboardManagerSwift.release.xcconfig; sourceTree = ""; }; + 5C0366C8DAD8762352B37EDB4DD62E2E /* LayoutConstraint.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = LayoutConstraint.swift; path = Sources/LayoutConstraint.swift; sourceTree = ""; }; + 5C8BDF6ED7A0F1533FC84E97705B2878 /* IQKeyboardManagerSwift-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "IQKeyboardManagerSwift-umbrella.h"; sourceTree = ""; }; + 5EF0C08E9D339F2CB75ED0C9E7FA2C0B /* SocketRocket.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SocketRocket.h; path = SocketRocket/SocketRocket.h; sourceTree = ""; }; + 5FB6A208FD72153F040D4E1354F225B4 /* NSRunLoop+SRWebSocket.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSRunLoop+SRWebSocket.m"; path = "SocketRocket/NSRunLoop+SRWebSocket.m"; sourceTree = ""; }; + 6058A4E7C2EAB9B01A8DBB5AAD7E72A2 /* ConstraintPriority.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintPriority.swift; path = Sources/ConstraintPriority.swift; sourceTree = ""; }; + 61AD3899C2D649897E11DA65A33ABCEE /* Toast-Swift-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Toast-Swift-prefix.pch"; sourceTree = ""; }; + 6381011924A059A30C85325FB30E74A7 /* IQKeyboardAppearanceManager+Internal.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQKeyboardAppearanceManager+Internal.swift"; path = "IQKeyboardManagerSwift/Appearance/IQKeyboardAppearanceManager+Internal.swift"; sourceTree = ""; }; + 63CAFAB9111F6F5AAEFD9E00CD0AF892 /* IQKeyboardToolbar.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQKeyboardToolbar.swift; path = IQKeyboardToolbar/Classes/IQKeyboardToolbar.swift; sourceTree = ""; }; + 643F1AECE038E1886712C3619E367201 /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; includeInIndex = 1; name = PrivacyInfo.xcprivacy; path = IQKeyboardManagerSwift/PrivacyInfo.xcprivacy; sourceTree = ""; }; + 64607CC28651258E6DAB2D1358080FB5 /* IQTextView-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "IQTextView-umbrella.h"; sourceTree = ""; }; + 66E229F790E827392A80B7F4C7A6110F /* IQKeyboardReturnManager+UITextViewDelegate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQKeyboardReturnManager+UITextViewDelegate.swift"; path = "IQKeyboardReturnManager/Classes/Delegates/IQKeyboardReturnManager+UITextViewDelegate.swift"; sourceTree = ""; }; + 67B06A63B2F6FDD332A5D14963BFC3E3 /* IQKeyboardReturnManager-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "IQKeyboardReturnManager-Info.plist"; sourceTree = ""; }; + 6839FC9EB46E8CB05E17C35E5A5B579F /* SRSecurityPolicy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SRSecurityPolicy.m; path = SocketRocket/SRSecurityPolicy.m; sourceTree = ""; }; + 68443C8F28AD901E531D6BFA7559C683 /* SRRandom.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SRRandom.m; path = SocketRocket/Internal/Utilities/SRRandom.m; sourceTree = ""; }; + 6937B145AC462041831CC9D76D3CF28A /* SnapKit-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SnapKit-prefix.pch"; sourceTree = ""; }; + 6A3DB74B2C40BCD9F3AFA585DA322FF5 /* SRConstants.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SRConstants.h; path = SocketRocket/Internal/SRConstants.h; sourceTree = ""; }; + 6A599D5DDFD46F7296A5F93623AB6C3A /* UIView+IQKeyboardExtensionObjc.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UIView+IQKeyboardExtensionObjc.swift"; path = "IQKeyboardToolbar/Classes/IQKeyboardExtension/UIView+IQKeyboardExtensionObjc.swift"; sourceTree = ""; }; + 6A737607DB763EBB681D8D0F6E6AB5FB /* IQKeyboardManager+ToolbarManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQKeyboardManager+ToolbarManager.swift"; path = "IQKeyboardManagerSwift/IQKeyboardToolbarManager/IQKeyboardManager+ToolbarManager.swift"; sourceTree = ""; }; + 6C4219D35CB16DFEC9A662797E27F4D8 /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; includeInIndex = 1; name = PrivacyInfo.xcprivacy; path = IQKeyboardCore/Assets/PrivacyInfo.xcprivacy; sourceTree = ""; }; + 6D134ED7EB13A9F9FADC82CC86BC10FA /* Toast.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Toast.swift; path = Toast/Toast.swift; sourceTree = ""; }; + 6DFE571CD6A634198545BB1149A5399C /* ConstraintInsets.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintInsets.swift; path = Sources/ConstraintInsets.swift; sourceTree = ""; }; 6E897F35E5E27028AC58B14B552FBC8D /* IQKeyboardCore-IQKeyboardCore */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; name = "IQKeyboardCore-IQKeyboardCore"; path = IQKeyboardCore.bundle; sourceTree = BUILT_PRODUCTS_DIR; }; - 6FB32CD2529DBAA6A58EE1C218F3F26B /* IQKeyboardManagerSwift-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "IQKeyboardManagerSwift-dummy.m"; sourceTree = ""; }; - 71450C650474E14E27C58DC6031DED15 /* IQTextView-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "IQTextView-dummy.m"; sourceTree = ""; }; - 7181351BD01340D69B83002F942C6238 /* Toast-Swift.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Toast-Swift.release.xcconfig"; sourceTree = ""; }; - 71B0C2CECF35343E42C956FB7F6F996F /* ConstraintMaker.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintMaker.swift; path = Sources/ConstraintMaker.swift; sourceTree = ""; }; - 7278B677DCE375A2402B9587C28AC4E9 /* IQKeyboardToolbarConfiguration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQKeyboardToolbarConfiguration.swift; path = IQKeyboardToolbarManager/Classes/Configuration/IQKeyboardToolbarConfiguration.swift; sourceTree = ""; }; - 72D1C2A015F7D41AEDD14BCE9FA22C03 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS18.0.sdk/System/Library/Frameworks/QuartzCore.framework; sourceTree = DEVELOPER_DIR; }; - 76334455F598BE0C113D08A675132729 /* ResourceBundle-IQKeyboardToolbarManager-IQKeyboardToolbarManager-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "ResourceBundle-IQKeyboardToolbarManager-IQKeyboardToolbarManager-Info.plist"; sourceTree = ""; }; - 7683AA5C3B2022EED0FC68DA18C8CD8F /* IQKeyboardNotification-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "IQKeyboardNotification-dummy.m"; sourceTree = ""; }; - 7717832333BD8513940DC7E1C94C2EBC /* IQKeyboardToolbarManager+Debug.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQKeyboardToolbarManager+Debug.swift"; path = "IQKeyboardToolbarManager/Classes/Debug/IQKeyboardToolbarManager+Debug.swift"; sourceTree = ""; }; - 7825A90E082A1582EB16256B0E722B3F /* Pods-Example-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-Example-umbrella.h"; sourceTree = ""; }; - 789D34626E9F27F10F113B699A0936D7 /* Debugging.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Debugging.swift; path = Sources/Debugging.swift; sourceTree = ""; }; - 7A8AA0C87B06CB08F33F1C9C7749E0DF /* IQTextInputViewInfo.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQTextInputViewInfo.swift; path = IQTextInputViewNotification/Classes/IQTextInputViewInfo.swift; sourceTree = ""; }; - 7AD2B04F0FA541294181478CCE734D25 /* IQTextInputViewNotification-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "IQTextInputViewNotification-Info.plist"; sourceTree = ""; }; - 7BEC044A89EDCA943365E4156BE49F6A /* IQBarButtonItem.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQBarButtonItem.swift; path = IQKeyboardToolbar/Classes/IQBarButtonItem/IQBarButtonItem.swift; sourceTree = ""; }; - 7D66880441D4B9000B03722BC09971E9 /* IQKeyboardInfo.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQKeyboardInfo.swift; path = IQKeyboardNotification/Classes/IQKeyboardInfo.swift; sourceTree = ""; }; - 7DC62F5E57E6012851C6645C3C59034B /* Toast-Swift-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Toast-Swift-Info.plist"; sourceTree = ""; }; + 6EC73E02165E26ABFCACC677AF94DD8B /* IQKeyboardManager+Resign_Deprecated.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQKeyboardManager+Resign_Deprecated.swift"; path = "IQKeyboardManagerSwift/Resign/IQKeyboardManager+Resign_Deprecated.swift"; sourceTree = ""; }; + 6F879A10A3809420736A229A9720D75A /* IQKeyboardReturnManager-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "IQKeyboardReturnManager-prefix.pch"; sourceTree = ""; }; + 73D26C4F196C661EA1DB04BCC2471A24 /* Pods-Example-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-Example-frameworks.sh"; sourceTree = ""; }; + 750817E69AAE97D1AF5F958FC5904BF2 /* ConstraintMultiplierTarget.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintMultiplierTarget.swift; path = Sources/ConstraintMultiplierTarget.swift; sourceTree = ""; }; + 7594A52F0B7E0AD0D9F26BE8026E1E4C /* Array+Sort.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Array+Sort.swift"; path = "IQKeyboardToolbarManager/Classes/UIKitExtensions/Array+Sort.swift"; sourceTree = ""; }; + 761B4D8A688672EC9D13AB178F184A16 /* IQKeyboardToolbar.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = IQKeyboardToolbar.modulemap; sourceTree = ""; }; + 77195404B1F7ADCD8B3008B1B89F5C03 /* SRError.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SRError.m; path = SocketRocket/Internal/Utilities/SRError.m; sourceTree = ""; }; + 77B67B7AD3900B61154BC9C1973DD611 /* SocketRocket.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = SocketRocket.modulemap; sourceTree = ""; }; + 782D18DB9D0B7B74F8613026BAD77E86 /* IQKeyboardToolbarManager+Action.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQKeyboardToolbarManager+Action.swift"; path = "IQKeyboardToolbarManager/Classes/Toolbar/IQKeyboardToolbarManager+Action.swift"; sourceTree = ""; }; + 78882EBBF9DB9EAA48F3FFBF14D1E0B5 /* IQKeyboardToolbar.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = IQKeyboardToolbar.release.xcconfig; sourceTree = ""; }; + 78F95F4E86380B049117A093BFC1CD7B /* IQTextInputViewNotification.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = IQTextInputViewNotification.debug.xcconfig; sourceTree = ""; }; + 792548D571F70D8E7FA3B52FA58D9591 /* IQKeyboardManager+ActiveConfiguration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQKeyboardManager+ActiveConfiguration.swift"; path = "IQKeyboardManagerSwift/IQKeyboardManager/IQKeyboardManager+ActiveConfiguration.swift"; sourceTree = ""; }; + 79E6154EEE25D08664ACFE66C69DDFA0 /* Toast-Swift.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Toast-Swift.release.xcconfig"; sourceTree = ""; }; + 7E07F795F5513269A6EA62DE5EE8C187 /* IQKeyboardCore-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "IQKeyboardCore-prefix.pch"; sourceTree = ""; }; + 7E46C7EF1F6BD003E0DEC56B05B15DDF /* SocketRocket-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SocketRocket-umbrella.h"; sourceTree = ""; }; + 7E6C82BDAFC8E25852BD0F53480C2FE2 /* IQKeyboardToolbarManager-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "IQKeyboardToolbarManager-prefix.pch"; sourceTree = ""; }; + 7F565A673CEEF3B818D7A75F2A2EE8B0 /* UIView+IQKeyboardExtensionDeprecated.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UIView+IQKeyboardExtensionDeprecated.swift"; path = "IQKeyboardToolbar/Classes/IQKeyboardExtension/UIView+IQKeyboardExtensionDeprecated.swift"; sourceTree = ""; }; 80A40EDA3AF0499BDBCFF09467BB49AD /* IQKeyboardToolbarManager-IQKeyboardToolbarManager */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; name = "IQKeyboardToolbarManager-IQKeyboardToolbarManager"; path = IQKeyboardToolbarManager.bundle; sourceTree = BUILT_PRODUCTS_DIR; }; - 81A4530B3DFED1CF5D377C4320215A4A /* IQKeyboardReturnManager.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = IQKeyboardReturnManager.release.xcconfig; sourceTree = ""; }; - 81C8D08EE2B731D17BFDF51DB75C7FD4 /* IQTextInputViewNotification.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = IQTextInputViewNotification.release.xcconfig; sourceTree = ""; }; - 83D92008D686D90200D0E2D8BE76582B /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS18.0.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; + 822DD0DAF7E4428BCCDFE28EAD683ADD /* IQKeyboardNotification-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "IQKeyboardNotification-umbrella.h"; sourceTree = ""; }; 847044E56CBBCE1235A6F3CEF3F9F607 /* IQTextView-IQTextView */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; name = "IQTextView-IQTextView"; path = IQTextView.bundle; sourceTree = BUILT_PRODUCTS_DIR; }; - 8510B576847C74847E63FDFB695CF836 /* ConstraintConfig.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintConfig.swift; path = Sources/ConstraintConfig.swift; sourceTree = ""; }; - 859853A4B800A598CFCE06A228A4E5DB /* ConstraintInsets.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintInsets.swift; path = Sources/ConstraintInsets.swift; sourceTree = ""; }; - 85F474F9E7D6BD1F6B7663352D31EC40 /* IQKeyboardToolbarPlaceholderConfiguration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQKeyboardToolbarPlaceholderConfiguration.swift; path = IQKeyboardToolbar/Classes/Placeholder/IQKeyboardToolbarPlaceholderConfiguration.swift; sourceTree = ""; }; - 8AE4CFFFB83D44D25692067A36EE407A /* IQKeyboardReturnManager+UITextFieldDelegate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQKeyboardReturnManager+UITextFieldDelegate.swift"; path = "IQKeyboardReturnManager/Classes/Delegates/IQKeyboardReturnManager+UITextFieldDelegate.swift"; sourceTree = ""; }; - 8B2918DFD6FEDA148940283A8ED415E2 /* IQTextView-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "IQTextView-umbrella.h"; sourceTree = ""; }; - 8BAEA3E897A92AD6ABF227954A59DB29 /* ResourceBundle-IQKeyboardManagerSwift-IQKeyboardManagerSwift-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "ResourceBundle-IQKeyboardManagerSwift-IQKeyboardManagerSwift-Info.plist"; sourceTree = ""; }; - 8BC190548C4E12A7F2A38DB809F88934 /* Toast-Swift.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Toast-Swift.debug.xcconfig"; sourceTree = ""; }; - 8C80464FA646E2505448549CED65DFF1 /* SnapKit-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SnapKit-prefix.pch"; sourceTree = ""; }; - 8D338917B2BCFE987917671C13FABE6E /* IQKeyboardManagerSwift-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "IQKeyboardManagerSwift-Info.plist"; sourceTree = ""; }; + 84BBB0405889161CCDDCD4F166723CBF /* ConstraintLayoutGuideDSL.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintLayoutGuideDSL.swift; path = Sources/ConstraintLayoutGuideDSL.swift; sourceTree = ""; }; + 85A01882ED06DFEA2E0CE78BCDB204A7 /* SocketRocket */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = SocketRocket; path = SocketRocket.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 8609C41722C0D97335DBF43B1CE7AB03 /* SRRunLoopThread.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SRRunLoopThread.m; path = SocketRocket/Internal/RunLoop/SRRunLoopThread.m; sourceTree = ""; }; + 87F05B4E0307C30EB4FC212724C8F157 /* IQKeyboardNotification.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = IQKeyboardNotification.debug.xcconfig; sourceTree = ""; }; + 888ACD87ACA8BCCE5527AAC76E41A5A3 /* ResourceBundle-IQKeyboardToolbar-IQKeyboardToolbar-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "ResourceBundle-IQKeyboardToolbar-IQKeyboardToolbar-Info.plist"; sourceTree = ""; }; + 895778DCA58AE753D96DD48F3E036F4F /* IQKeyboardManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQKeyboardManager.swift; path = IQKeyboardManagerSwift/IQKeyboardManager/IQKeyboardManager.swift; sourceTree = ""; }; + 8981CA762CD2FDB68D15FEEA091439B5 /* IQKeyboardToolbarManager.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = IQKeyboardToolbarManager.release.xcconfig; sourceTree = ""; }; + 8B5BF34764325604D366CC5C6F31A43A /* IQKeyboardToolbarManager.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = IQKeyboardToolbarManager.modulemap; sourceTree = ""; }; + 8BD0BDF557D8D8D7CFB04CB9C9482634 /* UIView+ParentObjc.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UIView+ParentObjc.swift"; path = "IQKeyboardManagerSwift/IQKeyboardManager/UIKitExtensions/UIView+ParentObjc.swift"; sourceTree = ""; }; + 8C2460EF332DB152D7A7B9869C8F4032 /* IQKeyboardToolbarManager-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "IQKeyboardToolbarManager-dummy.m"; sourceTree = ""; }; + 8C4CE911087AC8260002E6859821FAF0 /* SRIOConsumerPool.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SRIOConsumerPool.h; path = SocketRocket/Internal/IOConsumer/SRIOConsumerPool.h; sourceTree = ""; }; 8D8069D3964814114ACEC3084C010B59 /* IQKeyboardManagerSwift-IQKeyboardManagerSwift */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; name = "IQKeyboardManagerSwift-IQKeyboardManagerSwift"; path = IQKeyboardManagerSwift.bundle; sourceTree = BUILT_PRODUCTS_DIR; }; - 8E142A384801F69E54EECA3E3F8667AF /* ConstraintMakerRelatable+Extensions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "ConstraintMakerRelatable+Extensions.swift"; path = "Sources/ConstraintMakerRelatable+Extensions.swift"; sourceTree = ""; }; - 8E4ED9BFDF71764CBE3D2C853E329AC8 /* IQKeyboardCore.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = IQKeyboardCore.debug.xcconfig; sourceTree = ""; }; - 8E85E98FFCFC789BC6D8C97871841FB5 /* ConstraintRelatableTarget.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintRelatableTarget.swift; path = Sources/ConstraintRelatableTarget.swift; sourceTree = ""; }; - 8ECEAA4A365919AC774C896E18E759AA /* ConstraintPriority.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintPriority.swift; path = Sources/ConstraintPriority.swift; sourceTree = ""; }; - 8F70375CE5D16313A9CC78E1FFAC5536 /* UITableView+IndexPaths.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UITableView+IndexPaths.swift"; path = "IQKeyboardManagerSwift/IQKeyboardManager/UIKitExtensions/UITableView+IndexPaths.swift"; sourceTree = ""; }; - 8FE0C4981E2732BCC6938C0CC26922A2 /* ResourceBundle-IQTextView-IQTextView-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "ResourceBundle-IQTextView-IQTextView-Info.plist"; sourceTree = ""; }; - 903F0FF8B72AF2E84101EE1AD8E525B8 /* IQKeyboardToolbar-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "IQKeyboardToolbar-dummy.m"; sourceTree = ""; }; - 92335BB8898DE45ED349EF272C417E5F /* IQInvocation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQInvocation.swift; path = IQKeyboardToolbar/Classes/IQBarButtonItem/IQInvocation.swift; sourceTree = ""; }; - 9259BB742B0F6B1D52074F71BD71B42F /* IQTextInputView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQTextInputView.swift; path = IQKeyboardCore/Classes/IQTextInputView.swift; sourceTree = ""; }; - 93B6A56AC9E28078E6884FB890E1B4F3 /* IQKeyboardManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQKeyboardManager.swift; path = IQKeyboardManagerSwift/IQKeyboardManager/IQKeyboardManager.swift; sourceTree = ""; }; - 95251F6BFD6A006568D4215EC8605879 /* IQTextInputViewNotification.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = IQTextInputViewNotification.modulemap; sourceTree = ""; }; - 964B48760245F36728533BAAD3F7C58D /* ConstraintLayoutGuideDSL.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintLayoutGuideDSL.swift; path = Sources/ConstraintLayoutGuideDSL.swift; sourceTree = ""; }; - 96778D30391C6741ED9D0A46200EF18C /* IQKeyboardToolbarManager+Action.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQKeyboardToolbarManager+Action.swift"; path = "IQKeyboardToolbarManager/Classes/Toolbar/IQKeyboardToolbarManager+Action.swift"; sourceTree = ""; }; - 969958CCDF4F680B2CEA8E4DD27B72C7 /* SnapKit.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SnapKit.release.xcconfig; sourceTree = ""; }; - 96ED5DD9A8DC870C9E93546874FAD053 /* IQKeyboardReturnManager-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "IQKeyboardReturnManager-prefix.pch"; sourceTree = ""; }; + 8EE7DE8BEE69315B9018594B62622247 /* SocketRocket-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "SocketRocket-Info.plist"; sourceTree = ""; }; + 8F74E325EE2B99C0C5504B461E558136 /* ResourceBundle-IQKeyboardCore-IQKeyboardCore-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "ResourceBundle-IQKeyboardCore-IQKeyboardCore-Info.plist"; sourceTree = ""; }; + 90A0A417BB33C9C0B15A1946762E0142 /* Pods-Example-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-Example-Info.plist"; sourceTree = ""; }; + 9101BAF3027E387E34B0301BE000FA50 /* ConstraintMakerPrioritizable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintMakerPrioritizable.swift; path = Sources/ConstraintMakerPrioritizable.swift; sourceTree = ""; }; + 914B3416C83998074DDAB130CB468706 /* IQKeyboardReturnManager.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = IQKeyboardReturnManager.release.xcconfig; sourceTree = ""; }; + 91511868D1335C41FD84563EF906555C /* Pods-DeepChordsSdk.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-DeepChordsSdk.release.xcconfig"; sourceTree = ""; }; + 91B24E7C9EB4215BEA2C0A23D3960815 /* Security.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Security.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS18.0.sdk/System/Library/Frameworks/Security.framework; sourceTree = DEVELOPER_DIR; }; + 92C5C459A1F7BF6872A58A16B7092803 /* ConstraintInsetTarget.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintInsetTarget.swift; path = Sources/ConstraintInsetTarget.swift; sourceTree = ""; }; + 936A804D23E5F53A2A38402D624D6EA2 /* IQKeyboardManager+Position.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQKeyboardManager+Position.swift"; path = "IQKeyboardManagerSwift/IQKeyboardManager/IQKeyboardManager+Position.swift"; sourceTree = ""; }; + 9374F8A0206251FC7979A888F803B656 /* IQKeyboardCore.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = IQKeyboardCore.debug.xcconfig; sourceTree = ""; }; + 93B05AAE9D91B32B46928A2293611FF4 /* Pods-Example-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-Example-umbrella.h"; sourceTree = ""; }; + 95BCD7B08FF0A2A4F9B0A36B92688E27 /* SRWebSocket.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SRWebSocket.m; path = SocketRocket/SRWebSocket.m; sourceTree = ""; }; + 972CC8A48122693582F02385A70853A0 /* ConstraintConfig.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintConfig.swift; path = Sources/ConstraintConfig.swift; sourceTree = ""; }; 979486118B3E90C08386079D57962701 /* SnapKit */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = SnapKit; path = SnapKit.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 98AA99C68FB3D6ED22719CAE6606E9EA /* SnapKit.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = SnapKit.modulemap; sourceTree = ""; }; - 9915B34E81CF6906E0C1C0AA6D681726 /* IQTextView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQTextView.swift; path = IQTextView/Classes/IQTextView.swift; sourceTree = ""; }; - 99A357D21311D4CAEF91E8D645B9EF1B /* IQKeyboardNotification.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = IQKeyboardNotification.debug.xcconfig; sourceTree = ""; }; - 9A926C38DDD5B0CB77DBF7BE94EF672E /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; includeInIndex = 1; name = PrivacyInfo.xcprivacy; path = IQKeyboardToolbarManager/Assets/PrivacyInfo.xcprivacy; sourceTree = ""; }; + 97D19ACC9A79A3CF24DA377E12303E12 /* UIView+Responders.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UIView+Responders.swift"; path = "IQKeyboardToolbarManager/Classes/UIKitExtensions/UIView+Responders.swift"; sourceTree = ""; }; + 9939F486FEF106F98BDD0806CA8E0624 /* IQInvocation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQInvocation.swift; path = IQKeyboardToolbar/Classes/IQBarButtonItem/IQInvocation.swift; sourceTree = ""; }; + 994130CE96E0F8ED28DCF165B03CB200 /* IQKeyboardToolbar-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "IQKeyboardToolbar-umbrella.h"; sourceTree = ""; }; + 995B281C84F1083BE4DB31B75BCC029C /* UIViewController+ParentContainer.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UIViewController+ParentContainer.swift"; path = "IQKeyboardManagerSwift/IQKeyboardManager/UIKitExtensions/UIViewController+ParentContainer.swift"; sourceTree = ""; }; + 9976447B92E50DDDCA64DBDE5A47FD7F /* UIView+IQKeyboardExtension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UIView+IQKeyboardExtension.swift"; path = "IQKeyboardToolbar/Classes/IQKeyboardExtension/UIView+IQKeyboardExtension.swift"; sourceTree = ""; }; + 99B82533878EEF9F0E2FB3560695FF8A /* IQTextView.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = IQTextView.debug.xcconfig; sourceTree = ""; }; + 9D3FF860EEACD6D1A4A582CB31FC31C1 /* Pods-DeepChordsSdk-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-DeepChordsSdk-acknowledgements.plist"; sourceTree = ""; }; 9D940727FF8FB9C785EB98E56350EF41 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; - 9DAD88CD28AA6C418EA42F22ED77F6BE /* UIViewController+ParentContainer.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UIViewController+ParentContainer.swift"; path = "IQKeyboardManagerSwift/IQKeyboardManager/UIKitExtensions/UIViewController+ParentContainer.swift"; sourceTree = ""; }; - A05DE88657E839818EACAAED4CD60B34 /* IQKeyboardManager+ActiveConfiguration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQKeyboardManager+ActiveConfiguration.swift"; path = "IQKeyboardManagerSwift/IQKeyboardManager/IQKeyboardManager+ActiveConfiguration.swift"; sourceTree = ""; }; + 9ECC82996747BDD9C0FF35EC1ECF0751 /* IQTextInputViewInfo.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQTextInputViewInfo.swift; path = IQTextInputViewNotification/Classes/IQTextInputViewInfo.swift; sourceTree = ""; }; + 9F272A689E05B2AA0C0ED18AD4383DDE /* SocketRocket.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SocketRocket.debug.xcconfig; sourceTree = ""; }; + 9F657D2C1582A8BFEADD06E527D796B2 /* IQKeyboardCore-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "IQKeyboardCore-umbrella.h"; sourceTree = ""; }; + A0F99DC81F369C1B739E19DE3923C65A /* IQKeyboardExtended.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQKeyboardExtended.swift; path = IQKeyboardCore/Classes/IQKeyboardExtended.swift; sourceTree = ""; }; + A15B541658FAC5E8233C91001D7888EC /* UITableView+IndexPaths.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UITableView+IndexPaths.swift"; path = "IQKeyboardManagerSwift/IQKeyboardManager/UIKitExtensions/UITableView+IndexPaths.swift"; sourceTree = ""; }; A16FD016E18EACCF6B23F219F2E236FE /* IQKeyboardToolbar-IQKeyboardToolbar */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; name = "IQKeyboardToolbar-IQKeyboardToolbar"; path = IQKeyboardToolbar.bundle; sourceTree = BUILT_PRODUCTS_DIR; }; - A1818F69B6E5828B7B096AEDA2284766 /* Typealiases.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Typealiases.swift; path = Sources/Typealiases.swift; sourceTree = ""; }; - A1FEE90906065AB1BED6A249EE74C5CB /* UIView+Hierarchy.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UIView+Hierarchy.swift"; path = "IQKeyboardCore/Classes/UIKitExtensions/UIView+Hierarchy.swift"; sourceTree = ""; }; - A37E4894C5CC2317619C7ECD09116882 /* UIView+Parent.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UIView+Parent.swift"; path = "IQKeyboardManagerSwift/IQKeyboardManager/UIKitExtensions/UIView+Parent.swift"; sourceTree = ""; }; - A7ACF9EC00F202138E2D10D8C2DE771D /* Toast-Swift-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Toast-Swift-dummy.m"; sourceTree = ""; }; - A8051AF85E41AF3CE961220AB4E33AFE /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; includeInIndex = 1; name = PrivacyInfo.xcprivacy; path = IQTextView/Assets/PrivacyInfo.xcprivacy; sourceTree = ""; }; - A8E4BB35A9C12143A016443E5B5AF064 /* UIView+IQKeyboardManagerExtension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UIView+IQKeyboardManagerExtension.swift"; path = "IQKeyboardManagerSwift/IQKeyboardManager/IQKeyboardManagerExtension/UIView+IQKeyboardManagerExtension.swift"; sourceTree = ""; }; + A1B189AA95276D5EC85F6B80EED66624 /* Pods-DeepChordsSdk.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-DeepChordsSdk.modulemap"; sourceTree = ""; }; + A284951838ACA1015F31DBE6C5A8D45F /* SRConstants.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SRConstants.m; path = SocketRocket/Internal/SRConstants.m; sourceTree = ""; }; + A368339039F84E09260E0C59DD294DF3 /* UIView+Hierarchy.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UIView+Hierarchy.swift"; path = "IQKeyboardCore/Classes/UIKitExtensions/UIView+Hierarchy.swift"; sourceTree = ""; }; + A44F945B3203BCA4B178E49ED53E5391 /* IQKeyboardManager+Appearance.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQKeyboardManager+Appearance.swift"; path = "IQKeyboardManagerSwift/Appearance/IQKeyboardManager+Appearance.swift"; sourceTree = ""; }; + A55BC45618B737DBC6885D98DC8C9C0C /* ConstraintLayoutSupportDSL.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintLayoutSupportDSL.swift; path = Sources/ConstraintLayoutSupportDSL.swift; sourceTree = ""; }; + A6BD2261427B29C50F84843B6BAB7DEA /* Pods-Example-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-Example-dummy.m"; sourceTree = ""; }; + A6C0BF00B3D547B50DBE54D99A1307F4 /* SRIOConsumerPool.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SRIOConsumerPool.m; path = SocketRocket/Internal/IOConsumer/SRIOConsumerPool.m; sourceTree = ""; }; + A8BBDD1BF37BF58D4C467C1D1F21D462 /* ConstraintView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintView.swift; path = Sources/ConstraintView.swift; sourceTree = ""; }; A8E950A16D00F649C54FFB30F81D7842 /* IQKeyboardManagerSwift */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = IQKeyboardManagerSwift; path = IQKeyboardManagerSwift.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - AA29B4610AE76CC6CC7A09F3BA316FA3 /* LayoutConstraintItem.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = LayoutConstraintItem.swift; path = Sources/LayoutConstraintItem.swift; sourceTree = ""; }; - AADFD372200F5622C3E275C18DAEF64C /* ConstraintAttributes.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintAttributes.swift; path = Sources/ConstraintAttributes.swift; sourceTree = ""; }; - AB854D7CA85BFEEFB6266DFA1E9D61B8 /* IQKeyboardToolbarManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQKeyboardToolbarManager.swift; path = IQKeyboardToolbarManager/Classes/IQKeyboardToolbarManager.swift; sourceTree = ""; }; - ABFD1CA60E15B4B7FCB561F401E9ECDC /* ConstraintMakerFinalizable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintMakerFinalizable.swift; path = Sources/ConstraintMakerFinalizable.swift; sourceTree = ""; }; - ACE56E6AC8845E4C5C29E55E4CA9B2FF /* UIView+RespondersObjc.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UIView+RespondersObjc.swift"; path = "IQKeyboardToolbarManager/Classes/UIKitExtensions/UIView+RespondersObjc.swift"; sourceTree = ""; }; - AE0F784B4D89883BEA9DBDA5D3427CF0 /* UIView+IQKeyboardExtensionObjc.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UIView+IQKeyboardExtensionObjc.swift"; path = "IQKeyboardToolbar/Classes/IQKeyboardExtension/UIView+IQKeyboardExtensionObjc.swift"; sourceTree = ""; }; - AF8B43F557099CFFDFCE29B27283089F /* ResourceBundle-IQKeyboardCore-IQKeyboardCore-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "ResourceBundle-IQKeyboardCore-IQKeyboardCore-Info.plist"; sourceTree = ""; }; - AFECBC24E09D0D25F822C27BD944AFD4 /* Pods-Example-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-Example-frameworks.sh"; sourceTree = ""; }; - B017A824A4E1A13FDACEB926F92C62FA /* IQKeyboardToolbarManager-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "IQKeyboardToolbarManager-dummy.m"; sourceTree = ""; }; - B027F0500294FFF3F8823CC8C93B34DC /* ConstraintLayoutSupport.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintLayoutSupport.swift; path = Sources/ConstraintLayoutSupport.swift; sourceTree = ""; }; - B057F1FE2FF50734827A356AFE1C3763 /* IQTextView.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = IQTextView.release.xcconfig; sourceTree = ""; }; - B10297739CDE35118B5C7226834CD882 /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; includeInIndex = 1; name = PrivacyInfo.xcprivacy; path = IQKeyboardToolbar/Assets/PrivacyInfo.xcprivacy; sourceTree = ""; }; - B148DDA9F2C353D7D89E11352B57A789 /* SnapKit-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "SnapKit-Info.plist"; sourceTree = ""; }; - B2E5A5B9F96103B68EFF7B3BFF9D0D2E /* IQKeyboardToolbarManager.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = IQKeyboardToolbarManager.modulemap; sourceTree = ""; }; - B45138496B85A072654D1D0F8EBBEDE5 /* Pods-Example.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-Example.debug.xcconfig"; sourceTree = ""; }; + A8FACB5BCF825223E394FFECCE4AA031 /* IQKeyboardReturnManager-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "IQKeyboardReturnManager-dummy.m"; sourceTree = ""; }; + A925E59D0B05DC5A56E631BD47C64317 /* IQTextView.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = IQTextView.modulemap; sourceTree = ""; }; + AA485EB92636FB68E91AF3FCC1CE9C5E /* IQKeyboardCore.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = IQKeyboardCore.release.xcconfig; sourceTree = ""; }; + AB0D6BE05753DE859156BD2E8FCD55AD /* IQTextInputViewNotification-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "IQTextInputViewNotification-prefix.pch"; sourceTree = ""; }; + AEF5BBB7C4ACF7C06BBD262B6C1145CE /* Typealiases.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Typealiases.swift; path = Sources/Typealiases.swift; sourceTree = ""; }; + AF5E93556B3B98CA5218F3B9E49304F6 /* SRLog.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SRLog.h; path = SocketRocket/Internal/Utilities/SRLog.h; sourceTree = ""; }; + AFBCEC8A83AB63E7D141D4EA274517BA /* SnapKit-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SnapKit-umbrella.h"; sourceTree = ""; }; + B1F45CBD7E407DB108D6FAD8FF0A1415 /* SocketRocket-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "SocketRocket-dummy.m"; sourceTree = ""; }; + B1F86119EB8AFCE72C0BA2356BBA4C46 /* IQTextView+Placeholderable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQTextView+Placeholderable.swift"; path = "IQTextView/Classes/IQTextView+Placeholderable.swift"; sourceTree = ""; }; + B278701FAF564A3D25B8F87CCDB798D6 /* SRPinningSecurityPolicy.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SRPinningSecurityPolicy.h; path = SocketRocket/Internal/Security/SRPinningSecurityPolicy.h; sourceTree = ""; }; + B3AA4CA7BB409A5191DBD08356FE703A /* Pods-Example.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-Example.release.xcconfig"; sourceTree = ""; }; B4B1A58096F15199A14069C5D6AA1C99 /* IQKeyboardToolbar */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = IQKeyboardToolbar; path = IQKeyboardToolbar.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - B5563167CBEFFA8F84B6DCD2C1CF029A /* IQKeyboardAppearanceConfiguration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQKeyboardAppearanceConfiguration.swift; path = IQKeyboardManagerSwift/Appearance/IQKeyboardAppearanceConfiguration.swift; sourceTree = ""; }; - B627ECEFAF29D21C3B5D4634873DC799 /* UICollectionView+IndexPaths.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UICollectionView+IndexPaths.swift"; path = "IQKeyboardManagerSwift/IQKeyboardManager/UIKitExtensions/UICollectionView+IndexPaths.swift"; sourceTree = ""; }; - B6BC2BCCF67E34C8D4DF08BBE177A05A /* UILayoutSupport+Extensions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UILayoutSupport+Extensions.swift"; path = "Sources/UILayoutSupport+Extensions.swift"; sourceTree = ""; }; - B8159912988182904A096C5A3036AA65 /* IQActiveConfiguration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQActiveConfiguration.swift; path = IQKeyboardManagerSwift/IQKeyboardManager/Configuration/IQActiveConfiguration.swift; sourceTree = ""; }; - B8783F3308A893AC9F1E8B1450DB38B3 /* ConstraintRelation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintRelation.swift; path = Sources/ConstraintRelation.swift; sourceTree = ""; }; - B93572343CE1D7CC5E903F82DF724A64 /* ConstraintView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintView.swift; path = Sources/ConstraintView.swift; sourceTree = ""; }; - B96E6AE7F8B203883A206CD26BD909D0 /* Toast-Swift-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Toast-Swift-prefix.pch"; sourceTree = ""; }; + B4BBB6B50C15DFF1221CD8E66DC2D354 /* SRDelegateController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SRDelegateController.m; path = SocketRocket/Internal/Delegate/SRDelegateController.m; sourceTree = ""; }; + B560A38E28D510B4A50AFF9595D57670 /* IQTextView-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "IQTextView-dummy.m"; sourceTree = ""; }; + B5D1545C4C0C2474FD103EFECB90E9C5 /* SRIOConsumer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SRIOConsumer.m; path = SocketRocket/Internal/IOConsumer/SRIOConsumer.m; sourceTree = ""; }; + B704D82F61A7F3E0FF10EBDE953E7E49 /* UIView+Resign.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UIView+Resign.swift"; path = "IQKeyboardManagerSwift/Resign/UIKItExtensions/UIView+Resign.swift"; sourceTree = ""; }; + B77F72F31D132841951EF8E4FA67360A /* ConstraintOffsetTarget.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintOffsetTarget.swift; path = Sources/ConstraintOffsetTarget.swift; sourceTree = ""; }; + B7AEC5DC6E5D0A8EAE327461A3FAFE6B /* ResourceBundle-IQTextView-IQTextView-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "ResourceBundle-IQTextView-IQTextView-Info.plist"; sourceTree = ""; }; + B7EC4834CE090AEAE5858B4D8B4513C7 /* ResourceBundle-IQKeyboardNotification-IQKeyboardNotification-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "ResourceBundle-IQKeyboardNotification-IQKeyboardNotification-Info.plist"; sourceTree = ""; }; + B8A90925F3434F73BD6A036480A5A473 /* Debugging.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Debugging.swift; path = Sources/Debugging.swift; sourceTree = ""; }; + B932A928D72C73FB59FC964A82AC2723 /* ConstraintPriorityTarget.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintPriorityTarget.swift; path = Sources/ConstraintPriorityTarget.swift; sourceTree = ""; }; + B98BCBD470DE1E0FC19C5E1F3AF37195 /* Toast-Swift-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Toast-Swift-dummy.m"; sourceTree = ""; }; B9DCB5EC0B1CDADD221717CADDF62359 /* SnapKit-SnapKit_Privacy */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; name = "SnapKit-SnapKit_Privacy"; path = SnapKit_Privacy.bundle; sourceTree = BUILT_PRODUCTS_DIR; }; - B9E5B7ACA1C4831DB0FC6F6DC415806B /* IQKeyboardManagerSwift.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = IQKeyboardManagerSwift.debug.xcconfig; sourceTree = ""; }; - BA15CE80784F2ABB4BC5A66CFF93FA26 /* Constraint.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Constraint.swift; path = Sources/Constraint.swift; sourceTree = ""; }; - BB4934EF6FC043A1A5719CC4ACA8C0F2 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS18.0.sdk/System/Library/Frameworks/UIKit.framework; sourceTree = DEVELOPER_DIR; }; - BCCF122A4CCCE14CB1CC9357A7D12E0E /* IQKeyboardNotification-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "IQKeyboardNotification-umbrella.h"; sourceTree = ""; }; - BD6E85B5A6A0DAC92CE30328684DD7C8 /* IQRootControllerConfiguration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQRootControllerConfiguration.swift; path = IQKeyboardManagerSwift/IQKeyboardManager/Configuration/IQRootControllerConfiguration.swift; sourceTree = ""; }; - BD749634E8E36AB77EC9F46FE998985D /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; includeInIndex = 1; name = PrivacyInfo.xcprivacy; path = IQKeyboardReturnManager/Assets/PrivacyInfo.xcprivacy; sourceTree = ""; }; - BE1DF4BC58C1E1E0F060079D0689EC20 /* IQKeyboardToolbarManager-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "IQKeyboardToolbarManager-umbrella.h"; sourceTree = ""; }; - BE4AFEFA1716D5281D0EA17603944826 /* IQDeepResponderContainerView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQDeepResponderContainerView.swift; path = IQKeyboardToolbarManager/Classes/IQDeepResponderContainerView.swift; sourceTree = ""; }; - BEC0587EC3B7B9A0BC5BB1A63BCDE662 /* IQKeyboardReturnManager-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "IQKeyboardReturnManager-Info.plist"; sourceTree = ""; }; - C1081457464A541862ABFB75CFF611B1 /* IQKeyboardAppearanceManager+Internal.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQKeyboardAppearanceManager+Internal.swift"; path = "IQKeyboardManagerSwift/Appearance/IQKeyboardAppearanceManager+Internal.swift"; sourceTree = ""; }; - C11B662EA98DB1DB2E0BBB631FFCB9BC /* IQTextView-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "IQTextView-Info.plist"; sourceTree = ""; }; - C2DDB1A49CDC72CEC4AC3A0667142BB2 /* IQTitleBarButtonItem.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQTitleBarButtonItem.swift; path = IQKeyboardToolbar/Classes/IQBarButtonItem/IQTitleBarButtonItem.swift; sourceTree = ""; }; - C2FE0524AC7581B2CCDF2765D76D4454 /* ResourceBundle-IQKeyboardReturnManager-IQKeyboardReturnManager-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "ResourceBundle-IQKeyboardReturnManager-IQKeyboardReturnManager-Info.plist"; sourceTree = ""; }; - C54CD51A4611587F72A12DCFF57547B3 /* IQKeyboardToolbar-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "IQKeyboardToolbar-Info.plist"; sourceTree = ""; }; - C5BFD04CC97A0992D34437E786ACA4D3 /* IQKeyboardManager+ToolbarManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQKeyboardManager+ToolbarManager.swift"; path = "IQKeyboardManagerSwift/IQKeyboardToolbarManager/IQKeyboardManager+ToolbarManager.swift"; sourceTree = ""; }; - C64F946A6CF4B3D30483C6FCDE237D46 /* ConstraintDirectionalInsets.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintDirectionalInsets.swift; path = Sources/ConstraintDirectionalInsets.swift; sourceTree = ""; }; - C8482B39147BBBDB16D770864BDE1CD5 /* IQTextView.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = IQTextView.debug.xcconfig; sourceTree = ""; }; - C8C1B3AFD0A52650DF90D553FC72040D /* IQKeyboardReturnManager.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = IQKeyboardReturnManager.debug.xcconfig; sourceTree = ""; }; - C8E9C7F86EF79309A7D62796C50BD2C4 /* UIView+Resign.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UIView+Resign.swift"; path = "IQKeyboardManagerSwift/Resign/UIKItExtensions/UIView+Resign.swift"; sourceTree = ""; }; - C997F74F024831561D7BCC7832899644 /* IQKeyboardReturnManager-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "IQKeyboardReturnManager-dummy.m"; sourceTree = ""; }; - CA0BFED3F4B8F736E248BED9F016F046 /* IQKeyboardManager+Resign.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQKeyboardManager+Resign.swift"; path = "IQKeyboardManagerSwift/Resign/IQKeyboardManager+Resign.swift"; sourceTree = ""; }; - CEDA17E76A289361BA57D894985793E8 /* IQKeyboardToolbar.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = IQKeyboardToolbar.modulemap; sourceTree = ""; }; - D36423993D0DC2D82438F5A0E2D49149 /* ResourceBundle-Toast-Swift-Toast-Swift-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "ResourceBundle-Toast-Swift-Toast-Swift-Info.plist"; sourceTree = ""; }; - D6041C81E4991A91F5A45F589A80282E /* Toast-Swift-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Toast-Swift-umbrella.h"; sourceTree = ""; }; + BA718E8C5B46720F8012D7471BC6BF37 /* IQKeyboardToolbarManager+Toolbar.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQKeyboardToolbarManager+Toolbar.swift"; path = "IQKeyboardToolbarManager/Classes/Toolbar/IQKeyboardToolbarManager+Toolbar.swift"; sourceTree = ""; }; + BB176716E9339D1CA456C696313236FE /* IQKeyboardToolbarManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQKeyboardToolbarManager.swift; path = IQKeyboardToolbarManager/Classes/IQKeyboardToolbarManager.swift; sourceTree = ""; }; + BC06E9DFB77603B36FDA218B323243F1 /* Toast-Swift.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Toast-Swift.modulemap"; sourceTree = ""; }; + BC590BB41230B885D405920A55DAD210 /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; includeInIndex = 1; name = PrivacyInfo.xcprivacy; path = IQKeyboardToolbar/Assets/PrivacyInfo.xcprivacy; sourceTree = ""; }; + BC713814A822ABA18A07C72E6B97AE04 /* IQKeyboardToolbarConstants.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQKeyboardToolbarConstants.swift; path = IQKeyboardToolbarManager/Classes/Constants/IQKeyboardToolbarConstants.swift; sourceTree = ""; }; + BDFB64A96CC2B18E25FF662E37821253 /* UIView+IQKeyboardManagerExtension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UIView+IQKeyboardManagerExtension.swift"; path = "IQKeyboardManagerSwift/IQKeyboardManager/IQKeyboardManagerExtension/UIView+IQKeyboardManagerExtension.swift"; sourceTree = ""; }; + BF4BC9A0614A1C63539C14C08655781F /* IQKeyboardToolbarManager+Deprecated.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQKeyboardToolbarManager+Deprecated.swift"; path = "IQKeyboardToolbarManager/Classes/IQKeyboardToolbarManager+Deprecated.swift"; sourceTree = ""; }; + BF60B19D2E8B68520E5121EFFF5A7D4B /* IQKeyboardToolbarPlaceholderConfiguration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQKeyboardToolbarPlaceholderConfiguration.swift; path = IQKeyboardToolbar/Classes/Placeholder/IQKeyboardToolbarPlaceholderConfiguration.swift; sourceTree = ""; }; + BFB6F598FCE7D6294584E7334E04ECF2 /* IQKeyboardCore-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "IQKeyboardCore-dummy.m"; sourceTree = ""; }; + C0B11EBC98CF5A275C2F8077CDEA1F18 /* IQKeyboardInfo.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQKeyboardInfo.swift; path = IQKeyboardNotification/Classes/IQKeyboardInfo.swift; sourceTree = ""; }; + C1C674397D453B6D18F9DE46BC55B6FF /* ConstraintView+Extensions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "ConstraintView+Extensions.swift"; path = "Sources/ConstraintView+Extensions.swift"; sourceTree = ""; }; + C23ABFD4CEF6F11C0094E61729745DE3 /* ConstraintConstantTarget.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintConstantTarget.swift; path = Sources/ConstraintConstantTarget.swift; sourceTree = ""; }; + C2878B4F3D509987EC767604F46AD0E1 /* IQTextInputViewNotification-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "IQTextInputViewNotification-dummy.m"; sourceTree = ""; }; + C2E377B4F7062BE5BC6007798C6619AD /* IQKeyboardNotification-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "IQKeyboardNotification-Info.plist"; sourceTree = ""; }; + C33C375328643D5A9A1D1EA02C88D419 /* SRSecurityPolicy.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SRSecurityPolicy.h; path = SocketRocket/SRSecurityPolicy.h; sourceTree = ""; }; + C3F49C31FFD05F4734B464D5C31979FB /* SRProxyConnect.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SRProxyConnect.m; path = SocketRocket/Internal/Proxy/SRProxyConnect.m; sourceTree = ""; }; + C4B0C5FFB36CB099605387F3B9F34032 /* IQKeyboardManager+Debug.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQKeyboardManager+Debug.swift"; path = "IQKeyboardManagerSwift/IQKeyboardManager/Debug/IQKeyboardManager+Debug.swift"; sourceTree = ""; }; + C53921D76AE7ECC63293C2263C9325A0 /* ConstraintViewDSL.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintViewDSL.swift; path = Sources/ConstraintViewDSL.swift; sourceTree = ""; }; + C61F58870F6E8F6EEF25FA9A6A0E7F60 /* IQKeyboardManager+ToolbarManagerDeprecated.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQKeyboardManager+ToolbarManagerDeprecated.swift"; path = "IQKeyboardManagerSwift/IQKeyboardToolbarManager/IQKeyboardManager+ToolbarManagerDeprecated.swift"; sourceTree = ""; }; + C688B508E11EFC4D24CB920CAF96B948 /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; includeInIndex = 1; name = PrivacyInfo.xcprivacy; path = Sources/PrivacyInfo.xcprivacy; sourceTree = ""; }; + C8BFDD7C500F5D6D58D212CB15B52E08 /* ConstraintMakerRelatable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintMakerRelatable.swift; path = Sources/ConstraintMakerRelatable.swift; sourceTree = ""; }; + C97A233DEE5D1279877CD8292A10AD84 /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; includeInIndex = 1; name = PrivacyInfo.xcprivacy; path = IQTextInputViewNotification/Assets/PrivacyInfo.xcprivacy; sourceTree = ""; }; + CC93FCE609BBB131B2F1C23EEA6B9997 /* IQKeyboardCore.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = IQKeyboardCore.modulemap; sourceTree = ""; }; + CCC7F61220FD5938841683501167A10F /* SnapKit.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = SnapKit.modulemap; sourceTree = ""; }; + CDD93D5045280AD0FFBB587ADD1D3B83 /* IQKeyboardManagerSwift.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = IQKeyboardManagerSwift.modulemap; sourceTree = ""; }; + CEA0C9AAC08B9E0D20DE8BC894AE3FDE /* SRMutex.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SRMutex.h; path = SocketRocket/Internal/Utilities/SRMutex.h; sourceTree = ""; }; + CEAD5B92B7CF2B0746297208D610D3CD /* UIView+RespondersObjc.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UIView+RespondersObjc.swift"; path = "IQKeyboardToolbarManager/Classes/UIKitExtensions/UIView+RespondersObjc.swift"; sourceTree = ""; }; + CF362111EEE4CBA3A09DDC5814422B70 /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; includeInIndex = 1; name = PrivacyInfo.xcprivacy; path = Toast/Resources/PrivacyInfo.xcprivacy; sourceTree = ""; }; + CFB853532F59E8A63D1C93202280CEE9 /* ConstraintRelatableTarget.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintRelatableTarget.swift; path = Sources/ConstraintRelatableTarget.swift; sourceTree = ""; }; + CFCB22B3ED6C05251CBD3059AAE51013 /* ConstraintDSL.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintDSL.swift; path = Sources/ConstraintDSL.swift; sourceTree = ""; }; + D0689F5C192D1672448116583D233922 /* IQKeyboardManager+Deprecated.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQKeyboardManager+Deprecated.swift"; path = "IQKeyboardManagerSwift/IQKeyboardManager/Deprecated/IQKeyboardManager+Deprecated.swift"; sourceTree = ""; }; + D1B2801FD44E489C5B7F202C13D651F2 /* SRRandom.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SRRandom.h; path = SocketRocket/Internal/Utilities/SRRandom.h; sourceTree = ""; }; + D2793937CF93115D3117A82FB873124B /* ConstraintLayoutGuide.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintLayoutGuide.swift; path = Sources/ConstraintLayoutGuide.swift; sourceTree = ""; }; + D389D10DEC7EB9B503CD45CE58851CA6 /* SRWebSocket.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SRWebSocket.h; path = SocketRocket/SRWebSocket.h; sourceTree = ""; }; + D4C8C6089794ACE3010224A9FB1D90EA /* ConstraintMaker.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintMaker.swift; path = Sources/ConstraintMaker.swift; sourceTree = ""; }; + D5278EBCB01A333274C163B9281DE38B /* Pods-DeepChordsSdk-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-DeepChordsSdk-dummy.m"; sourceTree = ""; }; + D5434748DD18D8B60013ABF3FFC5B95F /* IQTextView.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = IQTextView.release.xcconfig; sourceTree = ""; }; + D5BD8A09B0B0972162CDD072ACB69843 /* IQKeyboardToolbar-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "IQKeyboardToolbar-Info.plist"; sourceTree = ""; }; + D5EC7B9244C6E5B0C7776ADA35992A5D /* Pods-Example-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-Example-acknowledgements.plist"; sourceTree = ""; }; D6043471C96F93DC41F7DD1E0D7D8B35 /* Toast-Swift */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = "Toast-Swift"; path = Toast_Swift.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - D6D7C498FA339E02BD53ECB8916CEA8E /* Pods-Example-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-Example-dummy.m"; sourceTree = ""; }; - D6F24EDA81C0D3AF65C1C30A74BC8466 /* UIView+IQKeyboardExtension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UIView+IQKeyboardExtension.swift"; path = "IQKeyboardToolbar/Classes/IQKeyboardExtension/UIView+IQKeyboardExtension.swift"; sourceTree = ""; }; - D70722A63D8C3F991856EF872356AFB1 /* Toast.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Toast.swift; path = Toast/Toast.swift; sourceTree = ""; }; - DB6E29CDC3D716E3A34D01A60A665503 /* IQKeyboardToolbarManager-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "IQKeyboardToolbarManager-Info.plist"; sourceTree = ""; }; - DD9285BD914CCA73118032F2F1792F68 /* IQTextInputViewNotification.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQTextInputViewNotification.swift; path = IQTextInputViewNotification/Classes/IQTextInputViewNotification.swift; sourceTree = ""; }; - DF398810396855B6BEE8D80C8EF6518A /* ConstraintMakerPrioritizable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintMakerPrioritizable.swift; path = Sources/ConstraintMakerPrioritizable.swift; sourceTree = ""; }; - DFCB9340841640E5C5B330DA1777A78E /* IQKeyboardNotification.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = IQKeyboardNotification.release.xcconfig; sourceTree = ""; }; - E3863E29A7A589B2F92E5FA4658C10A7 /* ConstraintPriorityTarget.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintPriorityTarget.swift; path = Sources/ConstraintPriorityTarget.swift; sourceTree = ""; }; - E5DDF11C94E0521FF93720B78FF737EA /* IQKeyboardToolbarManager+Deprecated.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQKeyboardToolbarManager+Deprecated.swift"; path = "IQKeyboardToolbarManager/Classes/IQKeyboardToolbarManager+Deprecated.swift"; sourceTree = ""; }; - E78AC8B5EF810FFB832428E336AF5659 /* UIView+ResignObjc.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UIView+ResignObjc.swift"; path = "IQKeyboardManagerSwift/Resign/UIKItExtensions/UIView+ResignObjc.swift"; sourceTree = ""; }; - E8519902BF501028CEE5387E0C358BE6 /* IQKeyboardCore-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "IQKeyboardCore-prefix.pch"; sourceTree = ""; }; - E86FC2B39794AC78EFE33B8105C529A8 /* IQTextInputViewNotification-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "IQTextInputViewNotification-prefix.pch"; sourceTree = ""; }; - EA1EDABA1BE078F9646EF88F4C71CBFA /* IQKeyboardManagerSwift.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = IQKeyboardManagerSwift.release.xcconfig; sourceTree = ""; }; - EA21B344259B58996DB73382B1B1521F /* Pods-Example-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-Example-acknowledgements.plist"; sourceTree = ""; }; - EF2D58EB40EE8221B053FACB532A13C1 /* ConstraintOffsetTarget.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintOffsetTarget.swift; path = Sources/ConstraintOffsetTarget.swift; sourceTree = ""; }; - EF780280B45D05B3F28826EF5C144118 /* IQKeyboardToolbar.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = IQKeyboardToolbar.debug.xcconfig; sourceTree = ""; }; - F05EC3D3A34DD35BD3BC1C95E19C34B8 /* ResourceBundle-IQKeyboardNotification-IQKeyboardNotification-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "ResourceBundle-IQKeyboardNotification-IQKeyboardNotification-Info.plist"; sourceTree = ""; }; - F6A61B701D8AF835B15A01AC3B3ABDFB /* ConstraintView+Extensions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "ConstraintView+Extensions.swift"; path = "Sources/ConstraintView+Extensions.swift"; sourceTree = ""; }; - F708C6E5D928E67F9C3E7613BCB59A0D /* IQBarButtonItemConfiguration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQBarButtonItemConfiguration.swift; path = IQKeyboardToolbar/Classes/IQBarButtonItem/IQBarButtonItemConfiguration.swift; sourceTree = ""; }; + D63292C39BAA9B9EB776AAA03EABD932 /* IQActiveConfiguration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQActiveConfiguration.swift; path = IQKeyboardManagerSwift/IQKeyboardManager/Configuration/IQActiveConfiguration.swift; sourceTree = ""; }; + D7EF3525F706753F05EA05BD1819EC4E /* SRMutex.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SRMutex.m; path = SocketRocket/Internal/Utilities/SRMutex.m; sourceTree = ""; }; + D8D8726D60E6EF3E455768E64432DA57 /* ConstraintLayoutSupport.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintLayoutSupport.swift; path = Sources/ConstraintLayoutSupport.swift; sourceTree = ""; }; + DA85287A9C3D760A6324EF926C0C44CE /* IQKeyboardNotification-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "IQKeyboardNotification-dummy.m"; sourceTree = ""; }; + DA9BF97689FA8F63852FC5D7EE814D2D /* IQKeyboardReturnManager-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "IQKeyboardReturnManager-umbrella.h"; sourceTree = ""; }; + DCDF74B5DEAC5E25CFC4D9F9B16EFBEB /* IQKeyboardToolbarManager.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = IQKeyboardToolbarManager.debug.xcconfig; sourceTree = ""; }; + DD6C692550BC0661BA84378E58F6BA8A /* LayoutConstraintItem.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = LayoutConstraintItem.swift; path = Sources/LayoutConstraintItem.swift; sourceTree = ""; }; + DD7D32B2F1F5F83790A39F4CDEBBFF96 /* ResourceBundle-IQKeyboardManagerSwift-IQKeyboardManagerSwift-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "ResourceBundle-IQKeyboardManagerSwift-IQKeyboardManagerSwift-Info.plist"; sourceTree = ""; }; + E1CAF7BAA0421C27EFE212A343F56870 /* ResourceBundle-Toast-Swift-Toast-Swift-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "ResourceBundle-Toast-Swift-Toast-Swift-Info.plist"; sourceTree = ""; }; + E25ABD3C4935A40132346F656CA1AA7C /* IQKeyboardAppearanceManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQKeyboardAppearanceManager.swift; path = IQKeyboardManagerSwift/Appearance/IQKeyboardAppearanceManager.swift; sourceTree = ""; }; + E293311AF50DC30E5B7F7D2D91BEB28A /* ConstraintAttributes.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintAttributes.swift; path = Sources/ConstraintAttributes.swift; sourceTree = ""; }; + E39AF10B1F50FF70721677FFF69BED27 /* IQKeyboardResignHandler+Internal.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQKeyboardResignHandler+Internal.swift"; path = "IQKeyboardManagerSwift/Resign/IQKeyboardResignHandler+Internal.swift"; sourceTree = ""; }; + E3B1CECC33970571F4F9AF61CB1D3DCD /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; includeInIndex = 1; name = PrivacyInfo.xcprivacy; path = IQKeyboardReturnManager/Assets/PrivacyInfo.xcprivacy; sourceTree = ""; }; + E54219744D41CC6C6674908699602DD9 /* UILayoutSupport+Extensions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UILayoutSupport+Extensions.swift"; path = "Sources/UILayoutSupport+Extensions.swift"; sourceTree = ""; }; + E6A14C9A838BD693FFDCAF82F4D5604A /* IQKeyboardNotification.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQKeyboardNotification.swift; path = IQKeyboardNotification/Classes/IQKeyboardNotification.swift; sourceTree = ""; }; + E7EE2526E40B99B0F243808A2396A01C /* SRError.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SRError.h; path = SocketRocket/Internal/Utilities/SRError.h; sourceTree = ""; }; + E8366BB09BA070DB9FB5CB54F726B2C0 /* IQKeyboardToolbar-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "IQKeyboardToolbar-prefix.pch"; sourceTree = ""; }; + E88E50F432B6DEA7E36A35EA934B002C /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS18.0.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; + E9BAAEAF59FEC4ED102911D4A47849CB /* SnapKit-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "SnapKit-Info.plist"; sourceTree = ""; }; + EA467055B207002F9B70E96F08A0FF86 /* IQTextInputViewNotification-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "IQTextInputViewNotification-umbrella.h"; sourceTree = ""; }; + EAED633C414062FCB78BD8A5896433FC /* Toast-Swift-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Toast-Swift-Info.plist"; sourceTree = ""; }; + ED22317A1312CBBA0134A8E449ABD201 /* SRHTTPConnectMessage.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SRHTTPConnectMessage.m; path = SocketRocket/Internal/Utilities/SRHTTPConnectMessage.m; sourceTree = ""; }; + ED7286BA89901CA1D622A1FCF81E718C /* NSURLRequest+SRWebSocket.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSURLRequest+SRWebSocket.m"; path = "SocketRocket/NSURLRequest+SRWebSocket.m"; sourceTree = ""; }; + EE1B2703C190723870111C925A464468 /* IQPlaceholderable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQPlaceholderable.swift; path = IQKeyboardToolbar/Placeholderable/IQPlaceholderable.swift; sourceTree = ""; }; + EF4B79F3BC3201907DE2B7A2671776C1 /* IQKeyboardAppearanceConfiguration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQKeyboardAppearanceConfiguration.swift; path = IQKeyboardManagerSwift/Appearance/IQKeyboardAppearanceConfiguration.swift; sourceTree = ""; }; + F2183FF2315FBF68B5F334EC6EB19A9B /* SRHash.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SRHash.h; path = SocketRocket/Internal/Utilities/SRHash.h; sourceTree = ""; }; + F528CE7CB37911E316CD1F5622E5B931 /* IQKeyboardReturnManager.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = IQKeyboardReturnManager.debug.xcconfig; sourceTree = ""; }; + F5522D8F6ABFFF15E2334E694691DD5E /* SocketRocket-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SocketRocket-prefix.pch"; sourceTree = ""; }; + F92A13F8C77041A7711D1764A76C37A3 /* IQKeyboardManager+Internal.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQKeyboardManager+Internal.swift"; path = "IQKeyboardManagerSwift/IQKeyboardManager/IQKeyboardManager+Internal.swift"; sourceTree = ""; }; + F930ACB6AC5D06295D698ED0249EB0AB /* SRLog.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SRLog.m; path = SocketRocket/Internal/Utilities/SRLog.m; sourceTree = ""; }; F956E149F5B195BB7833F97FC6211AE8 /* IQTextInputViewNotification-IQTextInputViewNotification */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; name = "IQTextInputViewNotification-IQTextInputViewNotification"; path = IQTextInputViewNotification.bundle; sourceTree = BUILT_PRODUCTS_DIR; }; - F9E2D89710990C7046505C7864F45ED7 /* IQTextInputViewNotification.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = IQTextInputViewNotification.debug.xcconfig; sourceTree = ""; }; + FA41F5D42C8280BA202FDE26BDBDFFA3 /* NSURLRequest+SRWebSocketPrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSURLRequest+SRWebSocketPrivate.h"; path = "SocketRocket/Internal/NSURLRequest+SRWebSocketPrivate.h"; sourceTree = ""; }; FA727BF5D9541C98C22C9ECC911576E2 /* IQKeyboardToolbarManager */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = IQKeyboardToolbarManager; path = IQKeyboardToolbarManager.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - FB1CED982DADF5E89D9B7C4994281A20 /* ConstraintLayoutSupportDSL.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintLayoutSupportDSL.swift; path = Sources/ConstraintLayoutSupportDSL.swift; sourceTree = ""; }; - FB2B9CC26612D71D9645DAE895E0A6E3 /* UIView+IQKeyboardExtensionDeprecated.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UIView+IQKeyboardExtensionDeprecated.swift"; path = "IQKeyboardToolbar/Classes/IQKeyboardExtension/UIView+IQKeyboardExtensionDeprecated.swift"; sourceTree = ""; }; - FB9E0FF56143337737133FDD5DFF1373 /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; includeInIndex = 1; name = PrivacyInfo.xcprivacy; path = IQKeyboardCore/Assets/PrivacyInfo.xcprivacy; sourceTree = ""; }; + FB23C93E47AFBF1FA651D132F7AC06E2 /* IQKeyboardReturnManager+UITextFieldDelegate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQKeyboardReturnManager+UITextFieldDelegate.swift"; path = "IQKeyboardReturnManager/Classes/Delegates/IQKeyboardReturnManager+UITextFieldDelegate.swift"; sourceTree = ""; }; + FB26ACEBA0181227271430FB01A76848 /* SRHTTPConnectMessage.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SRHTTPConnectMessage.h; path = SocketRocket/Internal/Utilities/SRHTTPConnectMessage.h; sourceTree = ""; }; + FB474AD377D72ECDF638D46A73B7D687 /* ConstraintMakerEditable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintMakerEditable.swift; path = Sources/ConstraintMakerEditable.swift; sourceTree = ""; }; + FBC1F980FADF5CA26AF9C77CF3D9B1A2 /* IQKeyboardConstants.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQKeyboardConstants.swift; path = IQKeyboardCore/Classes/Constants/IQKeyboardConstants.swift; sourceTree = ""; }; FC7F0CF2EA5DF59C59D9995890DA5C47 /* IQKeyboardCore */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = IQKeyboardCore; path = IQKeyboardCore.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - FC9C89E0D0A3A0CBF2646E4FFB03FD79 /* IQKeyboardToolbar.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQKeyboardToolbar.swift; path = IQKeyboardToolbar/Classes/IQKeyboardToolbar.swift; sourceTree = ""; }; - FDCB3A60E0E69B85F6A6D09A3386D833 /* IQKeyboardCore.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = IQKeyboardCore.modulemap; sourceTree = ""; }; + FD07CC20E3828AFE18630B7C25BCCA92 /* IQKeyboardManagerSwift-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "IQKeyboardManagerSwift-prefix.pch"; sourceTree = ""; }; + FDD0C3C29384D3EEBCB4BE346B1CA890 /* IQKeyboardManager+Appearance_Deprecated.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQKeyboardManager+Appearance_Deprecated.swift"; path = "IQKeyboardManagerSwift/Appearance/IQKeyboardManager+Appearance_Deprecated.swift"; sourceTree = ""; }; FEF9AC89E9C4BD37AC0AB78B535D1CFC /* IQKeyboardNotification */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = IQKeyboardNotification; path = IQKeyboardNotification.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + FF3B6C922ADF7DB53066B95C9359B445 /* Pods-Example.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-Example.modulemap"; sourceTree = ""; }; + FF4B96374C0DB9D56AB95C3D5A31B152 /* ConstraintDescription.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintDescription.swift; path = Sources/ConstraintDescription.swift; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - 04BE6D07E21323B9CEF8A64DB1F090CC /* Frameworks */ = { + 2BE4574EA7A2208A3273A02C5D2F1D1B /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - 13370F62359EA40214FB32CCB782E91A /* Frameworks */ = { + 33428AC36668E3ED52DB70316F843FB8 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 205EB01AED14BB574DD54EAFE26E4786 /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - 14F7D5F67076860B84A84E202E620308 /* Frameworks */ = { + 3683C5D0C8F465D221926E5B41E0B565 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 3E8CD7E5D86973B25CF99233C524ED43 /* Foundation.framework in Frameworks */, - F943E8FEFBAB09B9DA17295178CD80A1 /* UIKit.framework in Frameworks */, + 4E7BB3FBF4B3680AF358C0A0A0F34011 /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - 206DAEEAC5B1D52E8D12E9BF1571C67B /* Frameworks */ = { + 4F320E16D10A7BE9185BA7C5A5CCDA43 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 0AE37480557069924C434356A50CB99D /* Foundation.framework in Frameworks */, - F239DABFACA179E89920C7F09D67336B /* UIKit.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - 303B17403FC51446D947C78825258D78 /* Frameworks */ = { + 51FB4B943D35F3E908360703B96C7E25 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 95A620A5272057BA126D00CC498F9B8A /* Combine.framework in Frameworks */, + 8762AC084551DBB2E00C3091CAF011ED /* Foundation.framework in Frameworks */, + AC68F7636D1D7832E4B5B18DD2BF2941 /* UIKit.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - 33428AC36668E3ED52DB70316F843FB8 /* Frameworks */ = { + 524D81F2C5CE61FB9EB4A47C9DEE4C1E /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 205EB01AED14BB574DD54EAFE26E4786 /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - 4A9B7C7D9A2CD8049C8E4EDD7F25DC71 /* Frameworks */ = { + 5B8C51C6BFA979E81A28179CCC2C0936 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 09D303C994021652DF841C463DBD1DC5 /* Foundation.framework in Frameworks */, + 8ACE9296AA479804EFD2D3CC417DE801 /* UIKit.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - 593A1D66DE0099584227B2B9C0CF7DB9 /* Frameworks */ = { + 5C50EB2041FA8E3A1BB9E243091C260E /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - 5B8C51C6BFA979E81A28179CCC2C0936 /* Frameworks */ = { + 5FCE427163262BB0862B486F5E093C1C /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 743D51EAD768EDE4D4AB7D3C665C7D2E /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 09D303C994021652DF841C463DBD1DC5 /* Foundation.framework in Frameworks */, - 8ACE9296AA479804EFD2D3CC417DE801 /* UIKit.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - 8687CBCEBF972D480F700C4A0D1CBEBA /* Frameworks */ = { + 7802B8C3260B2A1D85C8EFC0C6929B18 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 737F408F45BEB0CB13FEFD5E406996A9 /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - AC775A265EBB1A2969CF830711FDFC36 /* Frameworks */ = { + 796567F81D938DA74DF71A2AFF3F8F3D /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - A9C64D3EF4B2D97F8AA93A0C6D3F1018 /* Combine.framework in Frameworks */, - 47B732921A7B90BB28D526626DDB061C /* Foundation.framework in Frameworks */, - 4C484793E290AB422E3600CF962F9792 /* UIKit.framework in Frameworks */, + D2E460754683003AE9ECF32A831D401F /* CFNetwork.framework in Frameworks */, + DEEC14319D7619F96C4E93415A6D577D /* Foundation.framework in Frameworks */, + B4C82668A78939FE910FEA0D314F06C1 /* Security.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - B0639BBF382C714C07A4780B0937F3DD /* Frameworks */ = { + 9688A049F13521CC698EF57654CF2443 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + E3535804CAC5D872E37CD8639C930771 /* Foundation.framework in Frameworks */, + 8DC89975CCCA53253DE9DB5646E468FB /* UIKit.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - B71FB9CF090F3995F09D74676CB6A38F /* Frameworks */ = { + B0A1DA8C8E42CD15049F6F2D79726D7D /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - A102FFF603219976098A876E2E14CF6A /* Foundation.framework in Frameworks */, - 3C9F55B7C2C67A67897AC53281139677 /* UIKit.framework in Frameworks */, + 1213C5A29D13B6F2E3AE2356CB9F5807 /* Foundation.framework in Frameworks */, + 11A3EB5BE3623EC013AA37B49813E56C /* UIKit.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - C2B597C3382CFBEDD298B0A9ED88D7EA /* Frameworks */ = { + B4BF16B463F2EC49D7CBC102A2936235 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 075FBDF5D186F8BF4537BC34E526F9DB /* Foundation.framework in Frameworks */, + 721D0AFDE15FCC46F4579069672719B9 /* UIKit.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - CC0D2D1B4E9DF573CAB4864E913EEF08 /* Frameworks */ = { + D07B79E83A18E3018EFA8CE654EF97CB /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 3E715D5BADDEACEEF30D6A4CA82CDA9B /* Foundation.framework in Frameworks */, + D6EFA9EAA562143F338EB164836B7837 /* UIKit.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - CC8D09BBF8B8F6D33E40ED1BAA1F8113 /* Frameworks */ = { + D5899CD7924A4C13CEA79F5428436874 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + AEA1A05086EA1256D504393FAED3CF4B /* Foundation.framework in Frameworks */, + E4A0C00A361F30B7848B8AE7653C9C60 /* UIKit.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - D07B79E83A18E3018EFA8CE654EF97CB /* Frameworks */ = { + D603B521417D6EFBEB7EAECC9C431345 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 3E715D5BADDEACEEF30D6A4CA82CDA9B /* Foundation.framework in Frameworks */, - D6EFA9EAA562143F338EB164836B7837 /* UIKit.framework in Frameworks */, + AD9EF3D3778212D1147044DC3A971C80 /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - D69032A0184C58B6180580EC9740DF5D /* Frameworks */ = { + D7208CA103D7DAE87F900A6B91736DCC /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - ED936A52EC136457464BFD2C700FB0A3 /* Frameworks */ = { + D9611FA61C59D2592877A687EEBEEFE4 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 0A7F4733B11AE10847063A9D648C9F2C /* Combine.framework in Frameworks */, - 3EE1D20B4B3D689A0E336B4637441CE1 /* Foundation.framework in Frameworks */, - 766984BB04C114C7717FA84FD10CEC77 /* UIKit.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -792,614 +925,725 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - FCF44B7D1CF6026F5C4E8FAD6F93496A /* Frameworks */ = { + F94D8D7F47FD316BA431BF216418ADF4 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + FBA90047961BDAD70FDA139EC0C30DD0 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 50224027880A4546066B64EE1B1C51CF /* Foundation.framework in Frameworks */, - A0AB639AB77EC86109B51D023E788297 /* UIKit.framework in Frameworks */, + B5C5EBCC5EC278EA704D27FB2D333B22 /* Combine.framework in Frameworks */, + F020DBD67EA8E12A860BE211F6BE04D5 /* Foundation.framework in Frameworks */, + 9D71239428D38EB9B5E7F5AA51E3E1BB /* UIKit.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 0EACCA925CF9C4599FAAC20986D820F6 /* Products */ = { + 13E2B5C1BC359C44AB73F5D24BAFDDD5 /* Resources */ = { isa = PBXGroup; children = ( - FC7F0CF2EA5DF59C59D9995890DA5C47 /* IQKeyboardCore */, - 6E897F35E5E27028AC58B14B552FBC8D /* IQKeyboardCore-IQKeyboardCore */, - A8E950A16D00F649C54FFB30F81D7842 /* IQKeyboardManagerSwift */, - 8D8069D3964814114ACEC3084C010B59 /* IQKeyboardManagerSwift-IQKeyboardManagerSwift */, - FEF9AC89E9C4BD37AC0AB78B535D1CFC /* IQKeyboardNotification */, - 120BD4C670EF00F4D5A40AA4B863A7AE /* IQKeyboardNotification-IQKeyboardNotification */, - 15848DEC7727A809830E7F6FC1B6CE0F /* IQKeyboardReturnManager */, - 110BD425B6CAD6801539E2C6AB6E0662 /* IQKeyboardReturnManager-IQKeyboardReturnManager */, - B4B1A58096F15199A14069C5D6AA1C99 /* IQKeyboardToolbar */, - A16FD016E18EACCF6B23F219F2E236FE /* IQKeyboardToolbar-IQKeyboardToolbar */, - FA727BF5D9541C98C22C9ECC911576E2 /* IQKeyboardToolbarManager */, - 80A40EDA3AF0499BDBCFF09467BB49AD /* IQKeyboardToolbarManager-IQKeyboardToolbarManager */, - 06E5B413FEA5A600D76636DA132F8FB9 /* IQTextInputViewNotification */, - F956E149F5B195BB7833F97FC6211AE8 /* IQTextInputViewNotification-IQTextInputViewNotification */, - 0DFD4541FF9DAA31A2FC2A7F6D03ED22 /* IQTextView */, - 847044E56CBBCE1235A6F3CEF3F9F607 /* IQTextView-IQTextView */, - 1F667CC0E19EAF34E5A4119E2121F585 /* Pods-Example */, - 979486118B3E90C08386079D57962701 /* SnapKit */, - B9DCB5EC0B1CDADD221717CADDF62359 /* SnapKit-SnapKit_Privacy */, - D6043471C96F93DC41F7DD1E0D7D8B35 /* Toast-Swift */, - 13FD39576595D8A884BF5166065C5236 /* Toast-Swift-Toast-Swift */, + BC590BB41230B885D405920A55DAD210 /* PrivacyInfo.xcprivacy */, ); - name = Products; + name = Resources; sourceTree = ""; }; - 21D1C96E5F13E6B8835FB020AB766453 /* Support Files */ = { + 1BF8BA79F8DEAC3F899EE1DFFF731A01 /* IQKeyboardCore */ = { isa = PBXGroup; children = ( - 2B7459F0C8EEFEF3A4B8406D396BC764 /* IQKeyboardReturnManager.modulemap */, - C997F74F024831561D7BCC7832899644 /* IQKeyboardReturnManager-dummy.m */, - BEC0587EC3B7B9A0BC5BB1A63BCDE662 /* IQKeyboardReturnManager-Info.plist */, - 96ED5DD9A8DC870C9E93546874FAD053 /* IQKeyboardReturnManager-prefix.pch */, - 612302F0FAD21B517B996AB187CA6449 /* IQKeyboardReturnManager-umbrella.h */, - C8C1B3AFD0A52650DF90D553FC72040D /* IQKeyboardReturnManager.debug.xcconfig */, - 81A4530B3DFED1CF5D377C4320215A4A /* IQKeyboardReturnManager.release.xcconfig */, - C2FE0524AC7581B2CCDF2765D76D4454 /* ResourceBundle-IQKeyboardReturnManager-IQKeyboardReturnManager-Info.plist */, + FBC1F980FADF5CA26AF9C77CF3D9B1A2 /* IQKeyboardConstants.swift */, + A0F99DC81F369C1B739E19DE3923C65A /* IQKeyboardExtended.swift */, + 502964DCE1567348B5B03211445AEA35 /* IQTextInputView.swift */, + A368339039F84E09260E0C59DD294DF3 /* UIView+Hierarchy.swift */, + 50CDA1F6060CF0BC3D55DA36A001EA9D /* Resources */, + A4931A6EF436A36B49F767979C6DFC2C /* Support Files */, ); - name = "Support Files"; - path = "../Target Support Files/IQKeyboardReturnManager"; + name = IQKeyboardCore; + path = IQKeyboardCore; sourceTree = ""; }; - 23DFE6390F48A399EA522FE320A6EA48 /* iOS */ = { + 1D63BF5EA7169C494BFD74466E0A946E /* Support Files */ = { isa = PBXGroup; children = ( - 288DC5C96A5DECE79EDC44987BF2A77C /* Combine.framework */, - 83D92008D686D90200D0E2D8BE76582B /* Foundation.framework */, - 72D1C2A015F7D41AEDD14BCE9FA22C03 /* QuartzCore.framework */, - BB4934EF6FC043A1A5719CC4ACA8C0F2 /* UIKit.framework */, + 1EEC9E9674D2F2735A1237FEC96C44CB /* IQKeyboardReturnManager.modulemap */, + A8FACB5BCF825223E394FFECCE4AA031 /* IQKeyboardReturnManager-dummy.m */, + 67B06A63B2F6FDD332A5D14963BFC3E3 /* IQKeyboardReturnManager-Info.plist */, + 6F879A10A3809420736A229A9720D75A /* IQKeyboardReturnManager-prefix.pch */, + DA9BF97689FA8F63852FC5D7EE814D2D /* IQKeyboardReturnManager-umbrella.h */, + F528CE7CB37911E316CD1F5622E5B931 /* IQKeyboardReturnManager.debug.xcconfig */, + 914B3416C83998074DDAB130CB468706 /* IQKeyboardReturnManager.release.xcconfig */, + 2EFB802792096CDDF8FD170084E303BC /* ResourceBundle-IQKeyboardReturnManager-IQKeyboardReturnManager-Info.plist */, ); - name = iOS; + name = "Support Files"; + path = "../Target Support Files/IQKeyboardReturnManager"; sourceTree = ""; }; - 2976C5AB711BFD82E3B2C8EFEC88A625 /* Resources */ = { + 1D7583ECA74F66EE34F3E9D627C627BA /* Targets Support Files */ = { isa = PBXGroup; children = ( - 5EB5C94FD93112688DCB0AC41215A68F /* PrivacyInfo.xcprivacy */, + 23FD8BC105B5E0EE727A6A6F33FC884D /* Pods-DeepChordsSdk */, + B3257EA856A4DD50C7E8688B28071AAA /* Pods-Example */, ); - name = Resources; + name = "Targets Support Files"; sourceTree = ""; }; - 2F9ADA8091FB3E05181AFBD044C59B5E /* Support Files */ = { + 1FCA4E5DDAB2C58C6C3DA814626EF4AF /* iOS */ = { isa = PBXGroup; children = ( - 35B03A32DAB0EC00D0F7CE971723BD7C /* IQKeyboardNotification.modulemap */, - 7683AA5C3B2022EED0FC68DA18C8CD8F /* IQKeyboardNotification-dummy.m */, - 48287E0AEAB23085B0FF5012495D3C9D /* IQKeyboardNotification-Info.plist */, - 130A1731BEBE0674DF4B874494BFF139 /* IQKeyboardNotification-prefix.pch */, - BCCF122A4CCCE14CB1CC9357A7D12E0E /* IQKeyboardNotification-umbrella.h */, - 99A357D21311D4CAEF91E8D645B9EF1B /* IQKeyboardNotification.debug.xcconfig */, - DFCB9340841640E5C5B330DA1777A78E /* IQKeyboardNotification.release.xcconfig */, - F05EC3D3A34DD35BD3BC1C95E19C34B8 /* ResourceBundle-IQKeyboardNotification-IQKeyboardNotification-Info.plist */, + 0C917A6291C02472ECB91FD7B8B2CFC1 /* CFNetwork.framework */, + 3ED18FF4963E7B4F60DBBA903E25C67B /* Combine.framework */, + E88E50F432B6DEA7E36A35EA934B002C /* Foundation.framework */, + 133A600484839BF74BDD51C8B0BB6EBE /* QuartzCore.framework */, + 91B24E7C9EB4215BEA2C0A23D3960815 /* Security.framework */, + 3A92BC97913B825589680C917211C138 /* UIKit.framework */, ); - name = "Support Files"; - path = "../Target Support Files/IQKeyboardNotification"; + name = iOS; sourceTree = ""; }; - 30649105A36891FA38A918D9E19276C1 /* IQKeyboardToolbarManager */ = { + 23FD8BC105B5E0EE727A6A6F33FC884D /* Pods-DeepChordsSdk */ = { isa = PBXGroup; children = ( - 2527373B09781527CFB5F6FCCAE7B821 /* Array+Sort.swift */, - BE4AFEFA1716D5281D0EA17603944826 /* IQDeepResponderContainerView.swift */, - 7278B677DCE375A2402B9587C28AC4E9 /* IQKeyboardToolbarConfiguration.swift */, - 668BB2AC6F690F784C35587B8BF5F759 /* IQKeyboardToolbarConstants.swift */, - AB854D7CA85BFEEFB6266DFA1E9D61B8 /* IQKeyboardToolbarManager.swift */, - 96778D30391C6741ED9D0A46200EF18C /* IQKeyboardToolbarManager+Action.swift */, - 7717832333BD8513940DC7E1C94C2EBC /* IQKeyboardToolbarManager+Debug.swift */, - E5DDF11C94E0521FF93720B78FF737EA /* IQKeyboardToolbarManager+Deprecated.swift */, - 60CE4193979A1692CB7524C594A33F5F /* IQKeyboardToolbarManager+Internal.swift */, - 442771E28F516C75AF67BCAA132E4A56 /* IQKeyboardToolbarManager+Toolbar.swift */, - 648E8949F15F11A016686DAB0E5B508E /* UIView+Responders.swift */, - ACE56E6AC8845E4C5C29E55E4CA9B2FF /* UIView+RespondersObjc.swift */, - B088B7BB018A62F62DDBFB0B241C20A4 /* Resources */, - A6EB665039B401942EFAF35C2EBFBB32 /* Support Files */, - ); - name = IQKeyboardToolbarManager; - path = IQKeyboardToolbarManager; + A1B189AA95276D5EC85F6B80EED66624 /* Pods-DeepChordsSdk.modulemap */, + 3725B14D6A408FA007F106F8CA983CE3 /* Pods-DeepChordsSdk-acknowledgements.markdown */, + 9D3FF860EEACD6D1A4A582CB31FC31C1 /* Pods-DeepChordsSdk-acknowledgements.plist */, + D5278EBCB01A333274C163B9281DE38B /* Pods-DeepChordsSdk-dummy.m */, + 1917E3D591E530CFE1940C6F4E878690 /* Pods-DeepChordsSdk-Info.plist */, + 284AC2E81CAAA90FEA12A250A16B11AB /* Pods-DeepChordsSdk-umbrella.h */, + 4BF6C697C2EB03CCBCE9CA841EA31F47 /* Pods-DeepChordsSdk.debug.xcconfig */, + 91511868D1335C41FD84563EF906555C /* Pods-DeepChordsSdk.release.xcconfig */, + ); + name = "Pods-DeepChordsSdk"; + path = "Target Support Files/Pods-DeepChordsSdk"; sourceTree = ""; }; - 30B18B74EEB6DA324B56635569BECF75 /* IQKeyboardCore */ = { + 27556D70EE23F0F08BF16229FD0E531E /* Resources */ = { isa = PBXGroup; children = ( - 5CA792EF08162ADE7BAC7607327CBAED /* IQKeyboardConstants.swift */, - 1D298A925E306A10B586FBD63C04A81F /* IQKeyboardExtended.swift */, - 9259BB742B0F6B1D52074F71BD71B42F /* IQTextInputView.swift */, - A1FEE90906065AB1BED6A249EE74C5CB /* UIView+Hierarchy.swift */, - 9581F590260A7A39DABFBC09635C5350 /* Resources */, - C31AA5BFD51EAF9A8A165FF294FA5A9D /* Support Files */, + CF362111EEE4CBA3A09DDC5814422B70 /* PrivacyInfo.xcprivacy */, ); - name = IQKeyboardCore; - path = IQKeyboardCore; + name = Resources; sourceTree = ""; }; - 33974C8DB3931E63B3303D14A3996D95 /* Pods */ = { + 28309F6F20D52ED4CD8FF99A9C1660E7 /* Resources */ = { isa = PBXGroup; children = ( - 30B18B74EEB6DA324B56635569BECF75 /* IQKeyboardCore */, - E32734C02906DE7EB010E7C79FDBCEB4 /* IQKeyboardManagerSwift */, - D980CF2A43EFA3B850A00946B02695D3 /* IQKeyboardNotification */, - 34AE5308D11365AC4D9A2123D39CB1AC /* IQKeyboardReturnManager */, - 8C3770C6EC98B3687CD2C954912D433A /* IQKeyboardToolbar */, - 30649105A36891FA38A918D9E19276C1 /* IQKeyboardToolbarManager */, - DC08D428E307F6527EE62D0B30B8396E /* IQTextInputViewNotification */, - 433F86A6C63C7F6D7155A53312849DD7 /* IQTextView */, - 4BD3FF42394B72A71BC7BCB9AE52C1B4 /* SnapKit */, - 6CA56227A91262AE4DE5411D672E159D /* Toast-Swift */, + 0F6A2BF98BD227110E60762E29808CEC /* PrivacyInfo.xcprivacy */, ); - name = Pods; + name = Resources; sourceTree = ""; }; - 34AE5308D11365AC4D9A2123D39CB1AC /* IQKeyboardReturnManager */ = { + 2C2FAE5EF6DD9554D932D5EFD9116CAF /* Toast-Swift */ = { isa = PBXGroup; children = ( - 5A543731802B05A4CF7F5D8024952273 /* IQKeyboardReturnManager.swift */, - 8AE4CFFFB83D44D25692067A36EE407A /* IQKeyboardReturnManager+UITextFieldDelegate.swift */, - 6D68B5BFA92A84156B07F2625E12FD12 /* IQKeyboardReturnManager+UITextViewDelegate.swift */, - 425F3E2CCAC6FE05E103DD993BE61B34 /* IQTextInputViewInfoModel.swift */, - B702F9EF24696D734D26D854719EC05F /* Resources */, - 21D1C96E5F13E6B8835FB020AB766453 /* Support Files */, + 6D134ED7EB13A9F9FADC82CC86BC10FA /* Toast.swift */, + 27556D70EE23F0F08BF16229FD0E531E /* Resources */, + D9C1D5F2F67176B3E300A9D87ACBD68C /* Support Files */, ); - name = IQKeyboardReturnManager; - path = IQKeyboardReturnManager; + name = "Toast-Swift"; + path = "Toast-Swift"; sourceTree = ""; }; - 3EC7025AD79BF8DE0FB84CF190D85555 /* Placeholderable */ = { + 346904CC6058F4E1176842D4FBB1C297 /* IQKeyboardManagerSwift */ = { isa = PBXGroup; children = ( - 231CDDC4DB13BC0B46D3EB8176FFE464 /* IQPlaceholderable.swift */, + CDD0B85A0330B1E5B6A1922E992D6D74 /* Appearance */, + 609A1498D37F4C29C58C45EFCB47A49F /* Core */, + D1DA56D0B201AACDCF6837C820268F5C /* IQKeyboardToolbarManager */, + 988D9336740C0F448BAA393FDDF28A0C /* Resign */, + A76710793188CE18938A1F3AE19BCA99 /* Resources */, + A8F67839F6044F4381759B3BB49258DA /* Support Files */, ); - name = Placeholderable; + name = IQKeyboardManagerSwift; + path = IQKeyboardManagerSwift; sourceTree = ""; }; - 433F86A6C63C7F6D7155A53312849DD7 /* IQTextView */ = { + 386ACAC75067BB6189F2C50B03C8280B /* Support Files */ = { isa = PBXGroup; children = ( - 9915B34E81CF6906E0C1C0AA6D681726 /* IQTextView.swift */, - 6AD91692C7EF9CB5B47DCFFDBCF2BF1F /* IQTextView+Placeholderable.swift */, - 87DF8D94FE3D73F6F597BD92DAA19FBB /* Resources */, - 5612E372DAF8D59265ACA63F50964E1A /* Support Files */, + 77B67B7AD3900B61154BC9C1973DD611 /* SocketRocket.modulemap */, + B1F45CBD7E407DB108D6FAD8FF0A1415 /* SocketRocket-dummy.m */, + 8EE7DE8BEE69315B9018594B62622247 /* SocketRocket-Info.plist */, + F5522D8F6ABFFF15E2334E694691DD5E /* SocketRocket-prefix.pch */, + 7E46C7EF1F6BD003E0DEC56B05B15DDF /* SocketRocket-umbrella.h */, + 9F272A689E05B2AA0C0ED18AD4383DDE /* SocketRocket.debug.xcconfig */, + 10CAAD795A45AB49A0EE4D6805AB7A1F /* SocketRocket.release.xcconfig */, ); - name = IQTextView; - path = IQTextView; + name = "Support Files"; + path = "../Target Support Files/SocketRocket"; sourceTree = ""; }; - 4BD3FF42394B72A71BC7BCB9AE52C1B4 /* SnapKit */ = { + 472C5FB976462E83207651E16BEEAA5D /* Resources */ = { isa = PBXGroup; children = ( - BA15CE80784F2ABB4BC5A66CFF93FA26 /* Constraint.swift */, - AADFD372200F5622C3E275C18DAEF64C /* ConstraintAttributes.swift */, - 8510B576847C74847E63FDFB695CF836 /* ConstraintConfig.swift */, - 6B2D1FC7F34EF685AF2452AC43FFE816 /* ConstraintConstantTarget.swift */, - 5F474BB8F008181749A6BEDD3FF6B03E /* ConstraintDescription.swift */, - C64F946A6CF4B3D30483C6FCDE237D46 /* ConstraintDirectionalInsets.swift */, - 65CE8BABA0B27FB3861EFDC42FAF7936 /* ConstraintDirectionalInsetTarget.swift */, - 45AE6E9F7BEA7559570D1C4611BC97BA /* ConstraintDSL.swift */, - 859853A4B800A598CFCE06A228A4E5DB /* ConstraintInsets.swift */, - 0D1B695DB3D9B30B1E895FE056EDB0D2 /* ConstraintInsetTarget.swift */, - 679C6C1E29E033FE6D3AF5FAF79916A0 /* ConstraintItem.swift */, - 125B7ADD9F6F9E6FEAA2172EBF355938 /* ConstraintLayoutGuide.swift */, - 4C4A1A93E1ED51A08661C32F4EDBBA11 /* ConstraintLayoutGuide+Extensions.swift */, - 964B48760245F36728533BAAD3F7C58D /* ConstraintLayoutGuideDSL.swift */, - B027F0500294FFF3F8823CC8C93B34DC /* ConstraintLayoutSupport.swift */, - FB1CED982DADF5E89D9B7C4994281A20 /* ConstraintLayoutSupportDSL.swift */, - 71B0C2CECF35343E42C956FB7F6F996F /* ConstraintMaker.swift */, - 1FB0B399D6B51466AFD1D3DABBB19C1A /* ConstraintMakerEditable.swift */, - 3A0EC753684DB9D548B2F21B240AB183 /* ConstraintMakerExtendable.swift */, - ABFD1CA60E15B4B7FCB561F401E9ECDC /* ConstraintMakerFinalizable.swift */, - DF398810396855B6BEE8D80C8EF6518A /* ConstraintMakerPrioritizable.swift */, - 583D0819254BED967661EC2359B98F18 /* ConstraintMakerRelatable.swift */, - 8E142A384801F69E54EECA3E3F8667AF /* ConstraintMakerRelatable+Extensions.swift */, - 42892A584E9AC22D35E1D9FE68B53469 /* ConstraintMultiplierTarget.swift */, - EF2D58EB40EE8221B053FACB532A13C1 /* ConstraintOffsetTarget.swift */, - 8ECEAA4A365919AC774C896E18E759AA /* ConstraintPriority.swift */, - E3863E29A7A589B2F92E5FA4658C10A7 /* ConstraintPriorityTarget.swift */, - 8E85E98FFCFC789BC6D8C97871841FB5 /* ConstraintRelatableTarget.swift */, - B8783F3308A893AC9F1E8B1450DB38B3 /* ConstraintRelation.swift */, - B93572343CE1D7CC5E903F82DF724A64 /* ConstraintView.swift */, - F6A61B701D8AF835B15A01AC3B3ABDFB /* ConstraintView+Extensions.swift */, - 334D1CD5A38B79DE9FE482556C492DFA /* ConstraintViewDSL.swift */, - 789D34626E9F27F10F113B699A0936D7 /* Debugging.swift */, - 629AE0F7346599178ABEF604C7BB964F /* LayoutConstraint.swift */, - AA29B4610AE76CC6CC7A09F3BA316FA3 /* LayoutConstraintItem.swift */, - A1818F69B6E5828B7B096AEDA2284766 /* Typealiases.swift */, - B6BC2BCCF67E34C8D4DF08BBE177A05A /* UILayoutSupport+Extensions.swift */, - ACF6B2672779734AACABB1F520C0CEF3 /* Resources */, - C438DA52C16A13EE4499777BED885A2C /* Support Files */, + 3649D66694159EF7F40B5A7377AC04D1 /* PrivacyInfo.xcprivacy */, ); - name = SnapKit; - path = SnapKit; + name = Resources; sourceTree = ""; }; - 5612E372DAF8D59265ACA63F50964E1A /* Support Files */ = { + 4C6F9E06DF0DA1DF8AC4B116BBF4C9C0 /* Support Files */ = { isa = PBXGroup; children = ( - 0B21B1D5CEC2F4C2602EFA71D8417344 /* IQTextView.modulemap */, - 71450C650474E14E27C58DC6031DED15 /* IQTextView-dummy.m */, - C11B662EA98DB1DB2E0BBB631FFCB9BC /* IQTextView-Info.plist */, - 5E6E2ED6E4CC42A0E37225A15EC2C6F1 /* IQTextView-prefix.pch */, - 8B2918DFD6FEDA148940283A8ED415E2 /* IQTextView-umbrella.h */, - C8482B39147BBBDB16D770864BDE1CD5 /* IQTextView.debug.xcconfig */, - B057F1FE2FF50734827A356AFE1C3763 /* IQTextView.release.xcconfig */, - 8FE0C4981E2732BCC6938C0CC26922A2 /* ResourceBundle-IQTextView-IQTextView-Info.plist */, + A925E59D0B05DC5A56E631BD47C64317 /* IQTextView.modulemap */, + B560A38E28D510B4A50AFF9595D57670 /* IQTextView-dummy.m */, + 4FB988C66900BB1BEEF5C5CA21B14AC9 /* IQTextView-Info.plist */, + 170AE4D919026EA3D1FB264423443921 /* IQTextView-prefix.pch */, + 64607CC28651258E6DAB2D1358080FB5 /* IQTextView-umbrella.h */, + 99B82533878EEF9F0E2FB3560695FF8A /* IQTextView.debug.xcconfig */, + D5434748DD18D8B60013ABF3FFC5B95F /* IQTextView.release.xcconfig */, + B7AEC5DC6E5D0A8EAE327461A3FAFE6B /* ResourceBundle-IQTextView-IQTextView-Info.plist */, ); name = "Support Files"; path = "../Target Support Files/IQTextView"; sourceTree = ""; }; - 5E1F5A0EB6F602CA36CF53DC3958CB68 /* Resources */ = { + 4E55C56B4EBD419565958D777C1D742F /* Resources */ = { isa = PBXGroup; children = ( - 3DC059D4E73E400F389B683A21D3A187 /* PrivacyInfo.xcprivacy */, + 25BADE0B95009E3B02C9E6EBB47417A3 /* PrivacyInfo.xcprivacy */, ); name = Resources; sourceTree = ""; }; - 6CA56227A91262AE4DE5411D672E159D /* Toast-Swift */ = { + 50CDA1F6060CF0BC3D55DA36A001EA9D /* Resources */ = { isa = PBXGroup; children = ( - D70722A63D8C3F991856EF872356AFB1 /* Toast.swift */, - B52DDC198392F29A6909C2D34B4E5103 /* Resources */, - EF258E2223A4CC8EA287B5DC67C106E4 /* Support Files */, + 6C4219D35CB16DFEC9A662797E27F4D8 /* PrivacyInfo.xcprivacy */, ); - name = "Toast-Swift"; - path = "Toast-Swift"; + name = Resources; sourceTree = ""; }; - 74F7E92A0FDEF4AABE6BDDDDE9DB47A8 /* Appearance */ = { + 5173CCD3EAD3FD7627B918D1D542D872 /* Placeholderable */ = { isa = PBXGroup; children = ( - B5563167CBEFFA8F84B6DCD2C1CF029A /* IQKeyboardAppearanceConfiguration.swift */, - 6824C490150831540A8B6007E6B0B0EF /* IQKeyboardAppearanceManager.swift */, - C1081457464A541862ABFB75CFF611B1 /* IQKeyboardAppearanceManager+Internal.swift */, - 18C7EDD0BE0032658D0A03A3BB7CF623 /* IQKeyboardManager+Appearance.swift */, - 33C48FDE215E1319970EE8067F27C546 /* IQKeyboardManager+Appearance_Deprecated.swift */, + EE1B2703C190723870111C925A464468 /* IQPlaceholderable.swift */, ); - name = Appearance; + name = Placeholderable; sourceTree = ""; }; - 7932D428ADB39059F87083BB579013EA /* Support Files */ = { + 52A8D4FE846B6E04B566DBAF11B33A13 /* Support Files */ = { isa = PBXGroup; children = ( - 95251F6BFD6A006568D4215EC8605879 /* IQTextInputViewNotification.modulemap */, - 1445F9B020E299209EDE5CD49F2EF94D /* IQTextInputViewNotification-dummy.m */, - 7AD2B04F0FA541294181478CCE734D25 /* IQTextInputViewNotification-Info.plist */, - E86FC2B39794AC78EFE33B8105C529A8 /* IQTextInputViewNotification-prefix.pch */, - 4CBC06BCB9A7BAD3F1CB9489020EFAA4 /* IQTextInputViewNotification-umbrella.h */, - F9E2D89710990C7046505C7864F45ED7 /* IQTextInputViewNotification.debug.xcconfig */, - 81C8D08EE2B731D17BFDF51DB75C7FD4 /* IQTextInputViewNotification.release.xcconfig */, - 64FDAD67044464E102D4F1F14A995D44 /* ResourceBundle-IQTextInputViewNotification-IQTextInputViewNotification-Info.plist */, + 761B4D8A688672EC9D13AB178F184A16 /* IQKeyboardToolbar.modulemap */, + 48CA3ADFB16E0C4E235D89C552572332 /* IQKeyboardToolbar-dummy.m */, + D5BD8A09B0B0972162CDD072ACB69843 /* IQKeyboardToolbar-Info.plist */, + E8366BB09BA070DB9FB5CB54F726B2C0 /* IQKeyboardToolbar-prefix.pch */, + 994130CE96E0F8ED28DCF165B03CB200 /* IQKeyboardToolbar-umbrella.h */, + 159C74980AC55D136945F073F6CEDC14 /* IQKeyboardToolbar.debug.xcconfig */, + 78882EBBF9DB9EAA48F3FFBF14D1E0B5 /* IQKeyboardToolbar.release.xcconfig */, + 888ACD87ACA8BCCE5527AAC76E41A5A3 /* ResourceBundle-IQKeyboardToolbar-IQKeyboardToolbar-Info.plist */, ); name = "Support Files"; - path = "../Target Support Files/IQTextInputViewNotification"; + path = "../Target Support Files/IQKeyboardToolbar"; sourceTree = ""; }; - 87DF8D94FE3D73F6F597BD92DAA19FBB /* Resources */ = { + 5A6A32F0330DE1F0FF6179C5C3799FF3 /* IQTextInputViewNotification */ = { isa = PBXGroup; children = ( - A8051AF85E41AF3CE961220AB4E33AFE /* PrivacyInfo.xcprivacy */, + 9ECC82996747BDD9C0FF35EC1ECF0751 /* IQTextInputViewInfo.swift */, + 0578E47B5AE5713CF21EA86848CA87DD /* IQTextInputViewNotification.swift */, + 7043FF2BB90FA65D64CD5D4BB3449DE9 /* Resources */, + 6E70A82102C02142D2369D9D1C31773C /* Support Files */, ); - name = Resources; + name = IQTextInputViewNotification; + path = IQTextInputViewNotification; sourceTree = ""; }; - 8C3770C6EC98B3687CD2C954912D433A /* IQKeyboardToolbar */ = { + 609A1498D37F4C29C58C45EFCB47A49F /* Core */ = { isa = PBXGroup; children = ( - C78B5298B69CAA4DE311D05AE9F28FBA /* Core */, - 3EC7025AD79BF8DE0FB84CF190D85555 /* Placeholderable */, - D880C63099F225153C7B5498B9FD4A9B /* Resources */, - C303665FCA6E99B362B3A75F2709DBAD /* Support Files */, + D63292C39BAA9B9EB776AAA03EABD932 /* IQActiveConfiguration.swift */, + 895778DCA58AE753D96DD48F3E036F4F /* IQKeyboardManager.swift */, + 792548D571F70D8E7FA3B52FA58D9591 /* IQKeyboardManager+ActiveConfiguration.swift */, + C4B0C5FFB36CB099605387F3B9F34032 /* IQKeyboardManager+Debug.swift */, + D0689F5C192D1672448116583D233922 /* IQKeyboardManager+Deprecated.swift */, + F92A13F8C77041A7711D1764A76C37A3 /* IQKeyboardManager+Internal.swift */, + 936A804D23E5F53A2A38402D624D6EA2 /* IQKeyboardManager+Position.swift */, + 10C547231342B150BEC39F40295D087E /* IQRootControllerConfiguration.swift */, + 47F6CB0808BEA63D36E484B5D53B6436 /* IQScrollViewConfiguration.swift */, + 115E19C96EB6123FE27F3A530B3BE30D /* UICollectionView+IndexPaths.swift */, + 3F70480B31A6883BEDFC6C623FC76A32 /* UIScrollView+IQKeyboardManagerExtension.swift */, + 4EF1258267E4FF8FA1F298C5303B0E86 /* UIScrollView+IQKeyboardManagerExtensionObjc.swift */, + A15B541658FAC5E8233C91001D7888EC /* UITableView+IndexPaths.swift */, + BDFB64A96CC2B18E25FF662E37821253 /* UIView+IQKeyboardManagerExtension.swift */, + 3D8DC22EC08F3E72E7E53ADA12E80CC0 /* UIView+IQKeyboardManagerExtensionObjc.swift */, + 3F8F3D9A02DBFA1FF9899DD8933A95DA /* UIView+Parent.swift */, + 8BD0BDF557D8D8D7CFB04CB9C9482634 /* UIView+ParentObjc.swift */, + 995B281C84F1083BE4DB31B75BCC029C /* UIViewController+ParentContainer.swift */, ); - name = IQKeyboardToolbar; - path = IQKeyboardToolbar; + name = Core; sourceTree = ""; }; - 9581F590260A7A39DABFBC09635C5350 /* Resources */ = { + 659362BF40FCF9635ED3C52F96CC6133 /* Support Files */ = { isa = PBXGroup; children = ( - FB9E0FF56143337737133FDD5DFF1373 /* PrivacyInfo.xcprivacy */, + 8B5BF34764325604D366CC5C6F31A43A /* IQKeyboardToolbarManager.modulemap */, + 8C2460EF332DB152D7A7B9869C8F4032 /* IQKeyboardToolbarManager-dummy.m */, + 39B4B067040847EC4A5CE870C4E0C5A1 /* IQKeyboardToolbarManager-Info.plist */, + 7E6C82BDAFC8E25852BD0F53480C2FE2 /* IQKeyboardToolbarManager-prefix.pch */, + 1D8DCDE8A3DFBFEA690BD5A6081C5762 /* IQKeyboardToolbarManager-umbrella.h */, + DCDF74B5DEAC5E25CFC4D9F9B16EFBEB /* IQKeyboardToolbarManager.debug.xcconfig */, + 8981CA762CD2FDB68D15FEEA091439B5 /* IQKeyboardToolbarManager.release.xcconfig */, + 32B4B8845C7824A1AB6C42EB0B32845E /* ResourceBundle-IQKeyboardToolbarManager-IQKeyboardToolbarManager-Info.plist */, ); - name = Resources; + name = "Support Files"; + path = "../Target Support Files/IQKeyboardToolbarManager"; sourceTree = ""; }; - 979414F400F55CB13E55EA97AA133F49 /* IQKeyboardToolbarManager */ = { + 6A6ACDADD484E61C0C86AAAC23AA5774 /* Products */ = { isa = PBXGroup; children = ( - C5BFD04CC97A0992D34437E786ACA4D3 /* IQKeyboardManager+ToolbarManager.swift */, - 117ED6DB1BD04E643776E77477BB0EF1 /* IQKeyboardManager+ToolbarManagerDeprecated.swift */, + FC7F0CF2EA5DF59C59D9995890DA5C47 /* IQKeyboardCore */, + 6E897F35E5E27028AC58B14B552FBC8D /* IQKeyboardCore-IQKeyboardCore */, + A8E950A16D00F649C54FFB30F81D7842 /* IQKeyboardManagerSwift */, + 8D8069D3964814114ACEC3084C010B59 /* IQKeyboardManagerSwift-IQKeyboardManagerSwift */, + FEF9AC89E9C4BD37AC0AB78B535D1CFC /* IQKeyboardNotification */, + 120BD4C670EF00F4D5A40AA4B863A7AE /* IQKeyboardNotification-IQKeyboardNotification */, + 15848DEC7727A809830E7F6FC1B6CE0F /* IQKeyboardReturnManager */, + 110BD425B6CAD6801539E2C6AB6E0662 /* IQKeyboardReturnManager-IQKeyboardReturnManager */, + B4B1A58096F15199A14069C5D6AA1C99 /* IQKeyboardToolbar */, + A16FD016E18EACCF6B23F219F2E236FE /* IQKeyboardToolbar-IQKeyboardToolbar */, + FA727BF5D9541C98C22C9ECC911576E2 /* IQKeyboardToolbarManager */, + 80A40EDA3AF0499BDBCFF09467BB49AD /* IQKeyboardToolbarManager-IQKeyboardToolbarManager */, + 06E5B413FEA5A600D76636DA132F8FB9 /* IQTextInputViewNotification */, + F956E149F5B195BB7833F97FC6211AE8 /* IQTextInputViewNotification-IQTextInputViewNotification */, + 0DFD4541FF9DAA31A2FC2A7F6D03ED22 /* IQTextView */, + 847044E56CBBCE1235A6F3CEF3F9F607 /* IQTextView-IQTextView */, + 06FEEB0FA2AA89DF42A1C6525F644FBF /* Pods-DeepChordsSdk */, + 1F667CC0E19EAF34E5A4119E2121F585 /* Pods-Example */, + 979486118B3E90C08386079D57962701 /* SnapKit */, + B9DCB5EC0B1CDADD221717CADDF62359 /* SnapKit-SnapKit_Privacy */, + 85A01882ED06DFEA2E0CE78BCDB204A7 /* SocketRocket */, + D6043471C96F93DC41F7DD1E0D7D8B35 /* Toast-Swift */, + 13FD39576595D8A884BF5166065C5236 /* Toast-Swift-Toast-Swift */, ); - name = IQKeyboardToolbarManager; + name = Products; sourceTree = ""; }; - 9BDBD95ED116334D1B2835202D8D3060 /* Pods-Example */ = { + 6E70A82102C02142D2369D9D1C31773C /* Support Files */ = { isa = PBXGroup; children = ( - 35C305D3797C284E6F5BAA1D3E6F9BF8 /* Pods-Example.modulemap */, - 441854E35F81731E63E53DC7E4EEAD9D /* Pods-Example-acknowledgements.markdown */, - EA21B344259B58996DB73382B1B1521F /* Pods-Example-acknowledgements.plist */, - D6D7C498FA339E02BD53ECB8916CEA8E /* Pods-Example-dummy.m */, - AFECBC24E09D0D25F822C27BD944AFD4 /* Pods-Example-frameworks.sh */, - 31C1D37707DFAA5E6A164BCC07834264 /* Pods-Example-Info.plist */, - 7825A90E082A1582EB16256B0E722B3F /* Pods-Example-umbrella.h */, - B45138496B85A072654D1D0F8EBBEDE5 /* Pods-Example.debug.xcconfig */, - 243410B9535472556EA4BB6DBC133A0D /* Pods-Example.release.xcconfig */, + 07FD04B2D25C4767E2AACE039E3E77A8 /* IQTextInputViewNotification.modulemap */, + C2878B4F3D509987EC767604F46AD0E1 /* IQTextInputViewNotification-dummy.m */, + 3ECA1919991B8674C3FD3253CD02BE4B /* IQTextInputViewNotification-Info.plist */, + AB0D6BE05753DE859156BD2E8FCD55AD /* IQTextInputViewNotification-prefix.pch */, + EA467055B207002F9B70E96F08A0FF86 /* IQTextInputViewNotification-umbrella.h */, + 78F95F4E86380B049117A093BFC1CD7B /* IQTextInputViewNotification.debug.xcconfig */, + 1515EB933E55F8DF1275984150311F6F /* IQTextInputViewNotification.release.xcconfig */, + 4F8CA916A31362AD762A33A32B0D936C /* ResourceBundle-IQTextInputViewNotification-IQTextInputViewNotification-Info.plist */, ); - name = "Pods-Example"; - path = "Target Support Files/Pods-Example"; + name = "Support Files"; + path = "../Target Support Files/IQTextInputViewNotification"; sourceTree = ""; }; - A6EB665039B401942EFAF35C2EBFBB32 /* Support Files */ = { + 7043FF2BB90FA65D64CD5D4BB3449DE9 /* Resources */ = { isa = PBXGroup; children = ( - B2E5A5B9F96103B68EFF7B3BFF9D0D2E /* IQKeyboardToolbarManager.modulemap */, - B017A824A4E1A13FDACEB926F92C62FA /* IQKeyboardToolbarManager-dummy.m */, - DB6E29CDC3D716E3A34D01A60A665503 /* IQKeyboardToolbarManager-Info.plist */, - 2CD6955DD3969A106AF4982FF7008B0F /* IQKeyboardToolbarManager-prefix.pch */, - BE1DF4BC58C1E1E0F060079D0689EC20 /* IQKeyboardToolbarManager-umbrella.h */, - 5AD8C08E06D5E01990AA80544C0901BA /* IQKeyboardToolbarManager.debug.xcconfig */, - 5BEBDD0CF7D42D6159D8E2EF081BD93B /* IQKeyboardToolbarManager.release.xcconfig */, - 76334455F598BE0C113D08A675132729 /* ResourceBundle-IQKeyboardToolbarManager-IQKeyboardToolbarManager-Info.plist */, + C97A233DEE5D1279877CD8292A10AD84 /* PrivacyInfo.xcprivacy */, ); - name = "Support Files"; - path = "../Target Support Files/IQKeyboardToolbarManager"; + name = Resources; sourceTree = ""; }; - ACF6B2672779734AACABB1F520C0CEF3 /* Resources */ = { + 75159EE7B37E3F28B11793B290D99D4D /* Support Files */ = { isa = PBXGroup; children = ( - 168C7D47B997C62E8CB232D83F0310AB /* PrivacyInfo.xcprivacy */, + 0A8C10276B315358D1F985B8F641683A /* ResourceBundle-SnapKit_Privacy-SnapKit-Info.plist */, + CCC7F61220FD5938841683501167A10F /* SnapKit.modulemap */, + 02EDA2792EBD3343A7DBC6B427F1F041 /* SnapKit-dummy.m */, + E9BAAEAF59FEC4ED102911D4A47849CB /* SnapKit-Info.plist */, + 6937B145AC462041831CC9D76D3CF28A /* SnapKit-prefix.pch */, + AFBCEC8A83AB63E7D141D4EA274517BA /* SnapKit-umbrella.h */, + 319AC1D7C71149C2DD5EF02DECE3F511 /* SnapKit.debug.xcconfig */, + 4B6ABE8E0C199299C26E4B5977886B71 /* SnapKit.release.xcconfig */, ); - name = Resources; + name = "Support Files"; + path = "../Target Support Files/SnapKit"; sourceTree = ""; }; - AD5458C307EA5425BF669DA1B559B993 /* Resources */ = { + 8EA7A9F63431873BFF102A07E64CF035 /* Resources */ = { isa = PBXGroup; children = ( - 053B43B12209A016C25BFB227BD91974 /* PrivacyInfo.xcprivacy */, + E3B1CECC33970571F4F9AF61CB1D3DCD /* PrivacyInfo.xcprivacy */, ); name = Resources; sourceTree = ""; }; - B088B7BB018A62F62DDBFB0B241C20A4 /* Resources */ = { + 955D2D4B70444278CFDCF5CF250E2A20 /* Pods */ = { isa = PBXGroup; children = ( - 9A926C38DDD5B0CB77DBF7BE94EF672E /* PrivacyInfo.xcprivacy */, + 1BF8BA79F8DEAC3F899EE1DFFF731A01 /* IQKeyboardCore */, + 346904CC6058F4E1176842D4FBB1C297 /* IQKeyboardManagerSwift */, + D47F0896C3D08DD5FCAAE3AD09D78D07 /* IQKeyboardNotification */, + FE2569B518EBA4ED83E9AD75F910D0D7 /* IQKeyboardReturnManager */, + B05518A8E4E4C4D4DFF1474C45D525EE /* IQKeyboardToolbar */, + C93D11812BB5D25D8ACDA16CA17BF6A4 /* IQKeyboardToolbarManager */, + 5A6A32F0330DE1F0FF6179C5C3799FF3 /* IQTextInputViewNotification */, + DFD394DDF6732B23692437B4AD9ECF1E /* IQTextView */, + FEBA5030F43677046B3656649FBE15ED /* SnapKit */, + BA1DFB9047177FD01B3C29EBE37C8457 /* SocketRocket */, + 2C2FAE5EF6DD9554D932D5EFD9116CAF /* Toast-Swift */, ); - name = Resources; + name = Pods; sourceTree = ""; }; - B52DDC198392F29A6909C2D34B4E5103 /* Resources */ = { + 988D9336740C0F448BAA393FDDF28A0C /* Resign */ = { isa = PBXGroup; children = ( - 5FA5B7CA13253C1FC9B86FA274000F3F /* PrivacyInfo.xcprivacy */, + 236C98A9FAEF3200D70937E889092818 /* IQKeyboardManager+Resign.swift */, + 6EC73E02165E26ABFCACC677AF94DD8B /* IQKeyboardManager+Resign_Deprecated.swift */, + 261E9C437FF6FFF72C01BBB73341409D /* IQKeyboardResignHandler.swift */, + E39AF10B1F50FF70721677FFF69BED27 /* IQKeyboardResignHandler+Internal.swift */, + B704D82F61A7F3E0FF10EBDE953E7E49 /* UIView+Resign.swift */, + 12415404E6E70407610188D7ADDC1D02 /* UIView+ResignObjc.swift */, ); - name = Resources; + name = Resign; sourceTree = ""; }; - B702F9EF24696D734D26D854719EC05F /* Resources */ = { + 9A941C126B5B7C383F87BEF24EFD16F1 /* Resources */ = { isa = PBXGroup; children = ( - BD749634E8E36AB77EC9F46FE998985D /* PrivacyInfo.xcprivacy */, + C688B508E11EFC4D24CB920CAF96B948 /* PrivacyInfo.xcprivacy */, ); name = Resources; sourceTree = ""; }; - BA4F31F07263C99FC76E66D632A59F09 /* Frameworks */ = { + A4931A6EF436A36B49F767979C6DFC2C /* Support Files */ = { isa = PBXGroup; children = ( - 23DFE6390F48A399EA522FE320A6EA48 /* iOS */, + CC93FCE609BBB131B2F1C23EEA6B9997 /* IQKeyboardCore.modulemap */, + BFB6F598FCE7D6294584E7334E04ECF2 /* IQKeyboardCore-dummy.m */, + 42E3FC1A9F2FBB9AE28FDE3285B70F2C /* IQKeyboardCore-Info.plist */, + 7E07F795F5513269A6EA62DE5EE8C187 /* IQKeyboardCore-prefix.pch */, + 9F657D2C1582A8BFEADD06E527D796B2 /* IQKeyboardCore-umbrella.h */, + 9374F8A0206251FC7979A888F803B656 /* IQKeyboardCore.debug.xcconfig */, + AA485EB92636FB68E91AF3FCC1CE9C5E /* IQKeyboardCore.release.xcconfig */, + 8F74E325EE2B99C0C5504B461E558136 /* ResourceBundle-IQKeyboardCore-IQKeyboardCore-Info.plist */, ); - name = Frameworks; + name = "Support Files"; + path = "../Target Support Files/IQKeyboardCore"; sourceTree = ""; }; - C303665FCA6E99B362B3A75F2709DBAD /* Support Files */ = { + A76710793188CE18938A1F3AE19BCA99 /* Resources */ = { isa = PBXGroup; children = ( - CEDA17E76A289361BA57D894985793E8 /* IQKeyboardToolbar.modulemap */, - 903F0FF8B72AF2E84101EE1AD8E525B8 /* IQKeyboardToolbar-dummy.m */, - C54CD51A4611587F72A12DCFF57547B3 /* IQKeyboardToolbar-Info.plist */, - 42F154595907A9B7C232A08628BBC592 /* IQKeyboardToolbar-prefix.pch */, - 0D0E7899589D00C50376C1B07158AC50 /* IQKeyboardToolbar-umbrella.h */, - EF780280B45D05B3F28826EF5C144118 /* IQKeyboardToolbar.debug.xcconfig */, - 0BBF04F3ACCC6329B881C1679E0733BB /* IQKeyboardToolbar.release.xcconfig */, - 267AC3B58CA7E99D46B70842A2CD1255 /* ResourceBundle-IQKeyboardToolbar-IQKeyboardToolbar-Info.plist */, + 643F1AECE038E1886712C3619E367201 /* PrivacyInfo.xcprivacy */, ); - name = "Support Files"; - path = "../Target Support Files/IQKeyboardToolbar"; + name = Resources; sourceTree = ""; }; - C31AA5BFD51EAF9A8A165FF294FA5A9D /* Support Files */ = { + A8F67839F6044F4381759B3BB49258DA /* Support Files */ = { isa = PBXGroup; children = ( - FDCB3A60E0E69B85F6A6D09A3386D833 /* IQKeyboardCore.modulemap */, - 488126919669AEE0AB6BD8855DBA7E1D /* IQKeyboardCore-dummy.m */, - 44B578B4BB9C2CE2BF3D0618DD618E6E /* IQKeyboardCore-Info.plist */, - E8519902BF501028CEE5387E0C358BE6 /* IQKeyboardCore-prefix.pch */, - 2570B16F7E9DBA42AAF1C41E54783C89 /* IQKeyboardCore-umbrella.h */, - 8E4ED9BFDF71764CBE3D2C853E329AC8 /* IQKeyboardCore.debug.xcconfig */, - 3579ECE9098CFE0A18918D8F0F6BBC16 /* IQKeyboardCore.release.xcconfig */, - AF8B43F557099CFFDFCE29B27283089F /* ResourceBundle-IQKeyboardCore-IQKeyboardCore-Info.plist */, + CDD93D5045280AD0FFBB587ADD1D3B83 /* IQKeyboardManagerSwift.modulemap */, + 01E23D7305E51271DEFF79A9CADBF926 /* IQKeyboardManagerSwift-dummy.m */, + 4AB6723E60A4A0D494C4DCA4686CD3F0 /* IQKeyboardManagerSwift-Info.plist */, + FD07CC20E3828AFE18630B7C25BCCA92 /* IQKeyboardManagerSwift-prefix.pch */, + 5C8BDF6ED7A0F1533FC84E97705B2878 /* IQKeyboardManagerSwift-umbrella.h */, + 5084335EF29A15EB6C31DFB1ACA15349 /* IQKeyboardManagerSwift.debug.xcconfig */, + 5AF0EBE9A79115D36EF40E456919D63B /* IQKeyboardManagerSwift.release.xcconfig */, + DD7D32B2F1F5F83790A39F4CDEBBFF96 /* ResourceBundle-IQKeyboardManagerSwift-IQKeyboardManagerSwift-Info.plist */, ); name = "Support Files"; - path = "../Target Support Files/IQKeyboardCore"; + path = "../Target Support Files/IQKeyboardManagerSwift"; + sourceTree = ""; + }; + B05518A8E4E4C4D4DFF1474C45D525EE /* IQKeyboardToolbar */ = { + isa = PBXGroup; + children = ( + C73796DD46B1AEC273D7C44D7E60CDF4 /* Core */, + 5173CCD3EAD3FD7627B918D1D542D872 /* Placeholderable */, + 13E2B5C1BC359C44AB73F5D24BAFDDD5 /* Resources */, + 52A8D4FE846B6E04B566DBAF11B33A13 /* Support Files */, + ); + name = IQKeyboardToolbar; + path = IQKeyboardToolbar; sourceTree = ""; }; - C438DA52C16A13EE4499777BED885A2C /* Support Files */ = { + B22E10DCB2F25088E198204D0681E4C7 /* Support Files */ = { isa = PBXGroup; children = ( - 46363399D08CEC56582B10CBA23FE101 /* ResourceBundle-SnapKit_Privacy-SnapKit-Info.plist */, - 98AA99C68FB3D6ED22719CAE6606E9EA /* SnapKit.modulemap */, - 0FC7A70F2E2D28124280A06C1FD9760B /* SnapKit-dummy.m */, - B148DDA9F2C353D7D89E11352B57A789 /* SnapKit-Info.plist */, - 8C80464FA646E2505448549CED65DFF1 /* SnapKit-prefix.pch */, - 090EF934D945BE1D4018F0D2D19007E0 /* SnapKit-umbrella.h */, - 67BCA4DE5DC478383D44A61FADBBB1A1 /* SnapKit.debug.xcconfig */, - 969958CCDF4F680B2CEA8E4DD27B72C7 /* SnapKit.release.xcconfig */, + 15FF3E312676449AB12DADDDB8D5C352 /* IQKeyboardNotification.modulemap */, + DA85287A9C3D760A6324EF926C0C44CE /* IQKeyboardNotification-dummy.m */, + C2E377B4F7062BE5BC6007798C6619AD /* IQKeyboardNotification-Info.plist */, + 27296D8B66561FF21E0EB354428156C7 /* IQKeyboardNotification-prefix.pch */, + 822DD0DAF7E4428BCCDFE28EAD683ADD /* IQKeyboardNotification-umbrella.h */, + 87F05B4E0307C30EB4FC212724C8F157 /* IQKeyboardNotification.debug.xcconfig */, + 1AB8D5FD6175CD8FCC7153B71E6DD77A /* IQKeyboardNotification.release.xcconfig */, + B7EC4834CE090AEAE5858B4D8B4513C7 /* ResourceBundle-IQKeyboardNotification-IQKeyboardNotification-Info.plist */, ); name = "Support Files"; - path = "../Target Support Files/SnapKit"; + path = "../Target Support Files/IQKeyboardNotification"; + sourceTree = ""; + }; + B3257EA856A4DD50C7E8688B28071AAA /* Pods-Example */ = { + isa = PBXGroup; + children = ( + FF3B6C922ADF7DB53066B95C9359B445 /* Pods-Example.modulemap */, + 2C45BE81EF6A9A12E115F2EDB69FC7D7 /* Pods-Example-acknowledgements.markdown */, + D5EC7B9244C6E5B0C7776ADA35992A5D /* Pods-Example-acknowledgements.plist */, + A6BD2261427B29C50F84843B6BAB7DEA /* Pods-Example-dummy.m */, + 73D26C4F196C661EA1DB04BCC2471A24 /* Pods-Example-frameworks.sh */, + 90A0A417BB33C9C0B15A1946762E0142 /* Pods-Example-Info.plist */, + 93B05AAE9D91B32B46928A2293611FF4 /* Pods-Example-umbrella.h */, + 455A2446E1A8F92123FBE90A1D4B8D0B /* Pods-Example.debug.xcconfig */, + B3AA4CA7BB409A5191DBD08356FE703A /* Pods-Example.release.xcconfig */, + ); + name = "Pods-Example"; + path = "Target Support Files/Pods-Example"; + sourceTree = ""; + }; + BA1DFB9047177FD01B3C29EBE37C8457 /* SocketRocket */ = { + isa = PBXGroup; + children = ( + 306B6BBB2D0B4D417ADD4B82D7D51E82 /* NSRunLoop+SRWebSocket.h */, + 5FB6A208FD72153F040D4E1354F225B4 /* NSRunLoop+SRWebSocket.m */, + 0AE37E30F693ED15CA31B520ED420454 /* NSRunLoop+SRWebSocketPrivate.h */, + 3187DDFEE4C490953B2AEF7B0D19EB1B /* NSURLRequest+SRWebSocket.h */, + ED7286BA89901CA1D622A1FCF81E718C /* NSURLRequest+SRWebSocket.m */, + FA41F5D42C8280BA202FDE26BDBDFFA3 /* NSURLRequest+SRWebSocketPrivate.h */, + 5EF0C08E9D339F2CB75ED0C9E7FA2C0B /* SocketRocket.h */, + 6A3DB74B2C40BCD9F3AFA585DA322FF5 /* SRConstants.h */, + A284951838ACA1015F31DBE6C5A8D45F /* SRConstants.m */, + 2582EC469D9940C7AAE3F903A495E86A /* SRDelegateController.h */, + B4BBB6B50C15DFF1221CD8E66DC2D354 /* SRDelegateController.m */, + E7EE2526E40B99B0F243808A2396A01C /* SRError.h */, + 77195404B1F7ADCD8B3008B1B89F5C03 /* SRError.m */, + F2183FF2315FBF68B5F334EC6EB19A9B /* SRHash.h */, + 109E37988FF06586D32321CEA99162B0 /* SRHash.m */, + FB26ACEBA0181227271430FB01A76848 /* SRHTTPConnectMessage.h */, + ED22317A1312CBBA0134A8E449ABD201 /* SRHTTPConnectMessage.m */, + 26FE696F5243F520CB872AC051139FE5 /* SRIOConsumer.h */, + B5D1545C4C0C2474FD103EFECB90E9C5 /* SRIOConsumer.m */, + 8C4CE911087AC8260002E6859821FAF0 /* SRIOConsumerPool.h */, + A6C0BF00B3D547B50DBE54D99A1307F4 /* SRIOConsumerPool.m */, + AF5E93556B3B98CA5218F3B9E49304F6 /* SRLog.h */, + F930ACB6AC5D06295D698ED0249EB0AB /* SRLog.m */, + CEA0C9AAC08B9E0D20DE8BC894AE3FDE /* SRMutex.h */, + D7EF3525F706753F05EA05BD1819EC4E /* SRMutex.m */, + B278701FAF564A3D25B8F87CCDB798D6 /* SRPinningSecurityPolicy.h */, + 0AF7DA075D6BD7E141707379E62BFA63 /* SRPinningSecurityPolicy.m */, + 32080BC56EEB26340C6292BA94F068B6 /* SRProxyConnect.h */, + C3F49C31FFD05F4734B464D5C31979FB /* SRProxyConnect.m */, + D1B2801FD44E489C5B7F202C13D651F2 /* SRRandom.h */, + 68443C8F28AD901E531D6BFA7559C683 /* SRRandom.m */, + 43CBF3C99F0BF342AEE8D7C7BE945B62 /* SRRunLoopThread.h */, + 8609C41722C0D97335DBF43B1CE7AB03 /* SRRunLoopThread.m */, + C33C375328643D5A9A1D1EA02C88D419 /* SRSecurityPolicy.h */, + 6839FC9EB46E8CB05E17C35E5A5B579F /* SRSecurityPolicy.m */, + 21E9444EE5839429C60E9A16651BAD78 /* SRSIMDHelpers.h */, + 50A2B3566A43C15186D3A1D9F91DB662 /* SRSIMDHelpers.m */, + 27DA2684B87B3639C3D3D439F177E219 /* SRURLUtilities.h */, + 390BB9902E7A26E5A753B9CF32673BE9 /* SRURLUtilities.m */, + D389D10DEC7EB9B503CD45CE58851CA6 /* SRWebSocket.h */, + 95BCD7B08FF0A2A4F9B0A36B92688E27 /* SRWebSocket.m */, + 386ACAC75067BB6189F2C50B03C8280B /* Support Files */, + ); + name = SocketRocket; + path = SocketRocket; sourceTree = ""; }; - C78B5298B69CAA4DE311D05AE9F28FBA /* Core */ = { + C73796DD46B1AEC273D7C44D7E60CDF4 /* Core */ = { isa = PBXGroup; children = ( - 7BEC044A89EDCA943365E4156BE49F6A /* IQBarButtonItem.swift */, - F708C6E5D928E67F9C3E7613BCB59A0D /* IQBarButtonItemConfiguration.swift */, - 92335BB8898DE45ED349EF272C417E5F /* IQInvocation.swift */, - FC9C89E0D0A3A0CBF2646E4FFB03FD79 /* IQKeyboardToolbar.swift */, - 85F474F9E7D6BD1F6B7663352D31EC40 /* IQKeyboardToolbarPlaceholderConfiguration.swift */, - C2DDB1A49CDC72CEC4AC3A0667142BB2 /* IQTitleBarButtonItem.swift */, - D6F24EDA81C0D3AF65C1C30A74BC8466 /* UIView+IQKeyboardExtension.swift */, - FB2B9CC26612D71D9645DAE895E0A6E3 /* UIView+IQKeyboardExtensionDeprecated.swift */, - AE0F784B4D89883BEA9DBDA5D3427CF0 /* UIView+IQKeyboardExtensionObjc.swift */, + 4D6EF89B651DCBED1F5A7FA5D36D1FA6 /* IQBarButtonItem.swift */, + 14A61C146CFCDB5CEC8508DC60360819 /* IQBarButtonItemConfiguration.swift */, + 9939F486FEF106F98BDD0806CA8E0624 /* IQInvocation.swift */, + 63CAFAB9111F6F5AAEFD9E00CD0AF892 /* IQKeyboardToolbar.swift */, + BF60B19D2E8B68520E5121EFFF5A7D4B /* IQKeyboardToolbarPlaceholderConfiguration.swift */, + 2E8E02D90547D6DBD75A856D8A4E1275 /* IQTitleBarButtonItem.swift */, + 9976447B92E50DDDCA64DBDE5A47FD7F /* UIView+IQKeyboardExtension.swift */, + 7F565A673CEEF3B818D7A75F2A2EE8B0 /* UIView+IQKeyboardExtensionDeprecated.swift */, + 6A599D5DDFD46F7296A5F93623AB6C3A /* UIView+IQKeyboardExtensionObjc.swift */, ); name = Core; sourceTree = ""; }; - CA25C2A9CA995C76BE0A8BE4813913E8 /* Support Files */ = { + C93D11812BB5D25D8ACDA16CA17BF6A4 /* IQKeyboardToolbarManager */ = { isa = PBXGroup; children = ( - 04D424EE2CE0897D1A9D495245578DB7 /* IQKeyboardManagerSwift.modulemap */, - 6FB32CD2529DBAA6A58EE1C218F3F26B /* IQKeyboardManagerSwift-dummy.m */, - 8D338917B2BCFE987917671C13FABE6E /* IQKeyboardManagerSwift-Info.plist */, - 0162BAFB778BF2E7D66A112029D508AB /* IQKeyboardManagerSwift-prefix.pch */, - 5C9682F1DA72621A7697B6CC652E5564 /* IQKeyboardManagerSwift-umbrella.h */, - B9E5B7ACA1C4831DB0FC6F6DC415806B /* IQKeyboardManagerSwift.debug.xcconfig */, - EA1EDABA1BE078F9646EF88F4C71CBFA /* IQKeyboardManagerSwift.release.xcconfig */, - 8BAEA3E897A92AD6ABF227954A59DB29 /* ResourceBundle-IQKeyboardManagerSwift-IQKeyboardManagerSwift-Info.plist */, + 7594A52F0B7E0AD0D9F26BE8026E1E4C /* Array+Sort.swift */, + 484ECEC55CB9E98BAF0AE020F8FFF767 /* IQDeepResponderContainerView.swift */, + 44AFC022F6D6DD0DF30E10F9B7C4615A /* IQKeyboardToolbarConfiguration.swift */, + BC713814A822ABA18A07C72E6B97AE04 /* IQKeyboardToolbarConstants.swift */, + BB176716E9339D1CA456C696313236FE /* IQKeyboardToolbarManager.swift */, + 782D18DB9D0B7B74F8613026BAD77E86 /* IQKeyboardToolbarManager+Action.swift */, + 3F992A0DC4578F2D62CB095A497114CC /* IQKeyboardToolbarManager+Debug.swift */, + BF4BC9A0614A1C63539C14C08655781F /* IQKeyboardToolbarManager+Deprecated.swift */, + 158193B636D7824993DB68D81AE2C233 /* IQKeyboardToolbarManager+Internal.swift */, + BA718E8C5B46720F8012D7471BC6BF37 /* IQKeyboardToolbarManager+Toolbar.swift */, + 97D19ACC9A79A3CF24DA377E12303E12 /* UIView+Responders.swift */, + CEAD5B92B7CF2B0746297208D610D3CD /* UIView+RespondersObjc.swift */, + 472C5FB976462E83207651E16BEEAA5D /* Resources */, + 659362BF40FCF9635ED3C52F96CC6133 /* Support Files */, ); - name = "Support Files"; - path = "../Target Support Files/IQKeyboardManagerSwift"; + name = IQKeyboardToolbarManager; + path = IQKeyboardToolbarManager; sourceTree = ""; }; - CE2E825F08D3AD0FD76E6D78D7512ED0 /* Targets Support Files */ = { + CDD0B85A0330B1E5B6A1922E992D6D74 /* Appearance */ = { isa = PBXGroup; children = ( - 9BDBD95ED116334D1B2835202D8D3060 /* Pods-Example */, + EF4B79F3BC3201907DE2B7A2671776C1 /* IQKeyboardAppearanceConfiguration.swift */, + E25ABD3C4935A40132346F656CA1AA7C /* IQKeyboardAppearanceManager.swift */, + 6381011924A059A30C85325FB30E74A7 /* IQKeyboardAppearanceManager+Internal.swift */, + A44F945B3203BCA4B178E49ED53E5391 /* IQKeyboardManager+Appearance.swift */, + FDD0C3C29384D3EEBCB4BE346B1CA890 /* IQKeyboardManager+Appearance_Deprecated.swift */, ); - name = "Targets Support Files"; + name = Appearance; sourceTree = ""; }; CF1408CF629C7361332E53B88F7BD30C = { isa = PBXGroup; children = ( 9D940727FF8FB9C785EB98E56350EF41 /* Podfile */, - BA4F31F07263C99FC76E66D632A59F09 /* Frameworks */, - 33974C8DB3931E63B3303D14A3996D95 /* Pods */, - 0EACCA925CF9C4599FAAC20986D820F6 /* Products */, - CE2E825F08D3AD0FD76E6D78D7512ED0 /* Targets Support Files */, + D68CA58901FBF589D75F5E40F1EAF5BA /* Frameworks */, + 955D2D4B70444278CFDCF5CF250E2A20 /* Pods */, + 6A6ACDADD484E61C0C86AAAC23AA5774 /* Products */, + 1D7583ECA74F66EE34F3E9D627C627BA /* Targets Support Files */, ); sourceTree = ""; }; - D44F612577BFE91AC60B52592E01C6C9 /* Resign */ = { + D1DA56D0B201AACDCF6837C820268F5C /* IQKeyboardToolbarManager */ = { isa = PBXGroup; children = ( - CA0BFED3F4B8F736E248BED9F016F046 /* IQKeyboardManager+Resign.swift */, - 51E4C8BDDCD249D53F68B657894D3C33 /* IQKeyboardManager+Resign_Deprecated.swift */, - 078038EA55CCEFB2FCFDAC364A3A475F /* IQKeyboardResignHandler.swift */, - 45E9A660E884B1EFF55785DC5472CA56 /* IQKeyboardResignHandler+Internal.swift */, - C8E9C7F86EF79309A7D62796C50BD2C4 /* UIView+Resign.swift */, - E78AC8B5EF810FFB832428E336AF5659 /* UIView+ResignObjc.swift */, + 6A737607DB763EBB681D8D0F6E6AB5FB /* IQKeyboardManager+ToolbarManager.swift */, + C61F58870F6E8F6EEF25FA9A6A0E7F60 /* IQKeyboardManager+ToolbarManagerDeprecated.swift */, ); - name = Resign; + name = IQKeyboardToolbarManager; sourceTree = ""; }; - D880C63099F225153C7B5498B9FD4A9B /* Resources */ = { + D47F0896C3D08DD5FCAAE3AD09D78D07 /* IQKeyboardNotification */ = { isa = PBXGroup; children = ( - B10297739CDE35118B5C7226834CD882 /* PrivacyInfo.xcprivacy */, + C0B11EBC98CF5A275C2F8077CDEA1F18 /* IQKeyboardInfo.swift */, + E6A14C9A838BD693FFDCAF82F4D5604A /* IQKeyboardNotification.swift */, + 4E55C56B4EBD419565958D777C1D742F /* Resources */, + B22E10DCB2F25088E198204D0681E4C7 /* Support Files */, ); - name = Resources; + name = IQKeyboardNotification; + path = IQKeyboardNotification; sourceTree = ""; }; - D980CF2A43EFA3B850A00946B02695D3 /* IQKeyboardNotification */ = { + D68CA58901FBF589D75F5E40F1EAF5BA /* Frameworks */ = { isa = PBXGroup; children = ( - 7D66880441D4B9000B03722BC09971E9 /* IQKeyboardInfo.swift */, - 07D76E404E67961840A2FA9E8B592C51 /* IQKeyboardNotification.swift */, - AD5458C307EA5425BF669DA1B559B993 /* Resources */, - 2F9ADA8091FB3E05181AFBD044C59B5E /* Support Files */, + 1FCA4E5DDAB2C58C6C3DA814626EF4AF /* iOS */, ); - name = IQKeyboardNotification; - path = IQKeyboardNotification; + name = Frameworks; sourceTree = ""; }; - DB9D9FCCD6416F8346CF5DB5A25218C9 /* Core */ = { + D9C1D5F2F67176B3E300A9D87ACBD68C /* Support Files */ = { isa = PBXGroup; children = ( - B8159912988182904A096C5A3036AA65 /* IQActiveConfiguration.swift */, - 93B6A56AC9E28078E6884FB890E1B4F3 /* IQKeyboardManager.swift */, - A05DE88657E839818EACAAED4CD60B34 /* IQKeyboardManager+ActiveConfiguration.swift */, - 28400A2CE3EE2B07169489BF74B7FE98 /* IQKeyboardManager+Debug.swift */, - 1D541D12A563E883F4018584090E33DB /* IQKeyboardManager+Deprecated.swift */, - 6B1A7FE44491E9065CDE0EC638D84820 /* IQKeyboardManager+Internal.swift */, - 27FF931A64B73FEE5D4A85928D51804A /* IQKeyboardManager+Position.swift */, - BD6E85B5A6A0DAC92CE30328684DD7C8 /* IQRootControllerConfiguration.swift */, - 5C581F1999F4CCA213DECDF99D28E47A /* IQScrollViewConfiguration.swift */, - B627ECEFAF29D21C3B5D4634873DC799 /* UICollectionView+IndexPaths.swift */, - 6C2845BF731838039657B93E29F7BD5F /* UIScrollView+IQKeyboardManagerExtension.swift */, - 5BF7B9A8FF0D82C370F68F2653F54B11 /* UIScrollView+IQKeyboardManagerExtensionObjc.swift */, - 8F70375CE5D16313A9CC78E1FFAC5536 /* UITableView+IndexPaths.swift */, - A8E4BB35A9C12143A016443E5B5AF064 /* UIView+IQKeyboardManagerExtension.swift */, - 54E68DA1C9D605BCA82C37688A0D6C22 /* UIView+IQKeyboardManagerExtensionObjc.swift */, - A37E4894C5CC2317619C7ECD09116882 /* UIView+Parent.swift */, - 024EBC1EBC8B76295C273069400071F2 /* UIView+ParentObjc.swift */, - 9DAD88CD28AA6C418EA42F22ED77F6BE /* UIViewController+ParentContainer.swift */, + E1CAF7BAA0421C27EFE212A343F56870 /* ResourceBundle-Toast-Swift-Toast-Swift-Info.plist */, + BC06E9DFB77603B36FDA218B323243F1 /* Toast-Swift.modulemap */, + B98BCBD470DE1E0FC19C5E1F3AF37195 /* Toast-Swift-dummy.m */, + EAED633C414062FCB78BD8A5896433FC /* Toast-Swift-Info.plist */, + 61AD3899C2D649897E11DA65A33ABCEE /* Toast-Swift-prefix.pch */, + 3D0CA09E0900EA77648A05D608CBA29F /* Toast-Swift-umbrella.h */, + 02E139B151EDFA1F4F63EA119D2269C7 /* Toast-Swift.debug.xcconfig */, + 79E6154EEE25D08664ACFE66C69DDFA0 /* Toast-Swift.release.xcconfig */, ); - name = Core; + name = "Support Files"; + path = "../Target Support Files/Toast-Swift"; sourceTree = ""; }; - DC08D428E307F6527EE62D0B30B8396E /* IQTextInputViewNotification */ = { + DFD394DDF6732B23692437B4AD9ECF1E /* IQTextView */ = { isa = PBXGroup; children = ( - 7A8AA0C87B06CB08F33F1C9C7749E0DF /* IQTextInputViewInfo.swift */, - DD9285BD914CCA73118032F2F1792F68 /* IQTextInputViewNotification.swift */, - 2976C5AB711BFD82E3B2C8EFEC88A625 /* Resources */, - 7932D428ADB39059F87083BB579013EA /* Support Files */, + 1E2BADF249E4A558D7EE5BB1077C1DE1 /* IQTextView.swift */, + B1F86119EB8AFCE72C0BA2356BBA4C46 /* IQTextView+Placeholderable.swift */, + 28309F6F20D52ED4CD8FF99A9C1660E7 /* Resources */, + 4C6F9E06DF0DA1DF8AC4B116BBF4C9C0 /* Support Files */, ); - name = IQTextInputViewNotification; - path = IQTextInputViewNotification; + name = IQTextView; + path = IQTextView; sourceTree = ""; }; - E32734C02906DE7EB010E7C79FDBCEB4 /* IQKeyboardManagerSwift */ = { + FE2569B518EBA4ED83E9AD75F910D0D7 /* IQKeyboardReturnManager */ = { isa = PBXGroup; children = ( - 74F7E92A0FDEF4AABE6BDDDDE9DB47A8 /* Appearance */, - DB9D9FCCD6416F8346CF5DB5A25218C9 /* Core */, - 979414F400F55CB13E55EA97AA133F49 /* IQKeyboardToolbarManager */, - D44F612577BFE91AC60B52592E01C6C9 /* Resign */, - 5E1F5A0EB6F602CA36CF53DC3958CB68 /* Resources */, - CA25C2A9CA995C76BE0A8BE4813913E8 /* Support Files */, + 224FAFA7B0169BBAAFD0FA422D7D11A6 /* IQKeyboardReturnManager.swift */, + FB23C93E47AFBF1FA651D132F7AC06E2 /* IQKeyboardReturnManager+UITextFieldDelegate.swift */, + 66E229F790E827392A80B7F4C7A6110F /* IQKeyboardReturnManager+UITextViewDelegate.swift */, + 10288C630688257B185941E1EA55E346 /* IQTextInputViewInfoModel.swift */, + 8EA7A9F63431873BFF102A07E64CF035 /* Resources */, + 1D63BF5EA7169C494BFD74466E0A946E /* Support Files */, ); - name = IQKeyboardManagerSwift; - path = IQKeyboardManagerSwift; + name = IQKeyboardReturnManager; + path = IQKeyboardReturnManager; sourceTree = ""; }; - EF258E2223A4CC8EA287B5DC67C106E4 /* Support Files */ = { + FEBA5030F43677046B3656649FBE15ED /* SnapKit */ = { isa = PBXGroup; children = ( - D36423993D0DC2D82438F5A0E2D49149 /* ResourceBundle-Toast-Swift-Toast-Swift-Info.plist */, - 2EDDE4B8CE41298570515C4EBF67CA45 /* Toast-Swift.modulemap */, - A7ACF9EC00F202138E2D10D8C2DE771D /* Toast-Swift-dummy.m */, - 7DC62F5E57E6012851C6645C3C59034B /* Toast-Swift-Info.plist */, - B96E6AE7F8B203883A206CD26BD909D0 /* Toast-Swift-prefix.pch */, - D6041C81E4991A91F5A45F589A80282E /* Toast-Swift-umbrella.h */, - 8BC190548C4E12A7F2A38DB809F88934 /* Toast-Swift.debug.xcconfig */, - 7181351BD01340D69B83002F942C6238 /* Toast-Swift.release.xcconfig */, + 47BC329529726FFACA942239310E3841 /* Constraint.swift */, + E293311AF50DC30E5B7F7D2D91BEB28A /* ConstraintAttributes.swift */, + 972CC8A48122693582F02385A70853A0 /* ConstraintConfig.swift */, + C23ABFD4CEF6F11C0094E61729745DE3 /* ConstraintConstantTarget.swift */, + FF4B96374C0DB9D56AB95C3D5A31B152 /* ConstraintDescription.swift */, + 0EE50CC6D98E37DA330EADC9F9C949F0 /* ConstraintDirectionalInsets.swift */, + 58E0237741E33CAFB3DB96DAA7559910 /* ConstraintDirectionalInsetTarget.swift */, + CFCB22B3ED6C05251CBD3059AAE51013 /* ConstraintDSL.swift */, + 6DFE571CD6A634198545BB1149A5399C /* ConstraintInsets.swift */, + 92C5C459A1F7BF6872A58A16B7092803 /* ConstraintInsetTarget.swift */, + 080D923BC81BB12EE5B738187A72A0D4 /* ConstraintItem.swift */, + D2793937CF93115D3117A82FB873124B /* ConstraintLayoutGuide.swift */, + 45E554E7AE314B29D9C07A10667261BE /* ConstraintLayoutGuide+Extensions.swift */, + 84BBB0405889161CCDDCD4F166723CBF /* ConstraintLayoutGuideDSL.swift */, + D8D8726D60E6EF3E455768E64432DA57 /* ConstraintLayoutSupport.swift */, + A55BC45618B737DBC6885D98DC8C9C0C /* ConstraintLayoutSupportDSL.swift */, + D4C8C6089794ACE3010224A9FB1D90EA /* ConstraintMaker.swift */, + FB474AD377D72ECDF638D46A73B7D687 /* ConstraintMakerEditable.swift */, + 37445197B6E56B3F3CA861A7F21F1C41 /* ConstraintMakerExtendable.swift */, + 24926E8158D8FAD9BE42C760B3154B55 /* ConstraintMakerFinalizable.swift */, + 9101BAF3027E387E34B0301BE000FA50 /* ConstraintMakerPrioritizable.swift */, + C8BFDD7C500F5D6D58D212CB15B52E08 /* ConstraintMakerRelatable.swift */, + 529559A67714BC64192FD9BF92B33312 /* ConstraintMakerRelatable+Extensions.swift */, + 750817E69AAE97D1AF5F958FC5904BF2 /* ConstraintMultiplierTarget.swift */, + B77F72F31D132841951EF8E4FA67360A /* ConstraintOffsetTarget.swift */, + 6058A4E7C2EAB9B01A8DBB5AAD7E72A2 /* ConstraintPriority.swift */, + B932A928D72C73FB59FC964A82AC2723 /* ConstraintPriorityTarget.swift */, + CFB853532F59E8A63D1C93202280CEE9 /* ConstraintRelatableTarget.swift */, + 363F0A017C453E3DC084A7B5BDB87911 /* ConstraintRelation.swift */, + A8BBDD1BF37BF58D4C467C1D1F21D462 /* ConstraintView.swift */, + C1C674397D453B6D18F9DE46BC55B6FF /* ConstraintView+Extensions.swift */, + C53921D76AE7ECC63293C2263C9325A0 /* ConstraintViewDSL.swift */, + B8A90925F3434F73BD6A036480A5A473 /* Debugging.swift */, + 5C0366C8DAD8762352B37EDB4DD62E2E /* LayoutConstraint.swift */, + DD6C692550BC0661BA84378E58F6BA8A /* LayoutConstraintItem.swift */, + AEF5BBB7C4ACF7C06BBD262B6C1145CE /* Typealiases.swift */, + E54219744D41CC6C6674908699602DD9 /* UILayoutSupport+Extensions.swift */, + 9A941C126B5B7C383F87BEF24EFD16F1 /* Resources */, + 75159EE7B37E3F28B11793B290D99D4D /* Support Files */, ); - name = "Support Files"; - path = "../Target Support Files/Toast-Swift"; + name = SnapKit; + path = SnapKit; sourceTree = ""; }; /* End PBXGroup section */ /* Begin PBXHeadersBuildPhase section */ + 060405D4024056E8E8E0AAAA43BAE414 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 860017D588B23C12B08A3C4390BAEA56 /* IQKeyboardNotification-umbrella.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 122D78F42E79267651C92A08FF3CBF82 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 64365C2671D733D3AAE1E25684E73255 /* Pods-Example-umbrella.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 3B1AF30CF9C8E42E24DA5BEA63D1D465 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; @@ -1416,11 +1660,11 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 5437BEDC0113A3C8DFE7EA59C14A7501 /* Headers */ = { + 5800FFAC29D42F17B23D62063D737B73 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 908714BB1129E58E79E45ABBAFC67F5F /* Pods-Example-umbrella.h in Headers */, + 2A1DE175A760E9F7CF7AF711BF549BC9 /* IQKeyboardReturnManager-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1432,59 +1676,81 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 6A2F55995EFF58A04B2C3910187787FB /* Headers */ = { + 82711643BCFA0EA6AA2167CCA71932C5 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 8475FCAD5EF1A75BC9BAF027EAB87AAF /* IQKeyboardToolbarManager-umbrella.h in Headers */, + F1E1B1AC67AA1B21E1AF8D3AB5C9849C /* IQTextInputViewNotification-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - 7CA74D01A767822CD6FC101B25E83B4F /* Headers */ = { + A440384545772625048C36C84242D128 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 43B865B4E034A97737024C4ACBC60866 /* IQKeyboardToolbar-umbrella.h in Headers */, + B543A1E1882CAEA19589891FCE2D17EA /* NSRunLoop+SRWebSocket.h in Headers */, + 3BB0B5D924BE769E95E64A5E6FC1675D /* NSRunLoop+SRWebSocketPrivate.h in Headers */, + 56851E11140A140A15088A41DC4C33BD /* NSURLRequest+SRWebSocket.h in Headers */, + 7174D48AADABCBE6FC53185C5442B952 /* NSURLRequest+SRWebSocketPrivate.h in Headers */, + 07632D281C5DED61CC7866B079BC9D2C /* SocketRocket.h in Headers */, + 5B67445AE2F3934BDA08D407BBA3028B /* SocketRocket-umbrella.h in Headers */, + C92D93F48E74B79C08A2C5B81B68FD7D /* SRConstants.h in Headers */, + EC8DB2CC9791B7DC686DCC78EFBB56C5 /* SRDelegateController.h in Headers */, + 65E5693A457A8AEE3E5758075D1E2792 /* SRError.h in Headers */, + F6E948E2688CC08D3843DAA74F6328E8 /* SRHash.h in Headers */, + DF011D18EBB28ECE459B6D96D3E460D8 /* SRHTTPConnectMessage.h in Headers */, + 9A3B9C740BC8FE0500132251551E5BE7 /* SRIOConsumer.h in Headers */, + 44EFA9A76932F81582D03076A8346A4B /* SRIOConsumerPool.h in Headers */, + 89CAC1E5DC5833EE630A652957D253A7 /* SRLog.h in Headers */, + 782981022BF319DFD85AE89A392639A2 /* SRMutex.h in Headers */, + 04986EEC139DC7C45DAB58056315FDC8 /* SRPinningSecurityPolicy.h in Headers */, + 6464C345447C71904DA3706AACA3F55D /* SRProxyConnect.h in Headers */, + C36214D8311B615CDA115276934926DC /* SRRandom.h in Headers */, + 939EE0216FC02064B2F5894E87628182 /* SRRunLoopThread.h in Headers */, + 2B7184BD487141C385B3CC3F3984AA55 /* SRSecurityPolicy.h in Headers */, + 5DFD87881941225F0A5EAE64EB247708 /* SRSIMDHelpers.h in Headers */, + 57A34E19799F03EB53206496FD362449 /* SRURLUtilities.h in Headers */, + 444E95921E2BDCE7512867EAA1A6B381 /* SRWebSocket.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - 7E6197EB3727119928B6B284301F93BB /* Headers */ = { + C08BBEDF18AE8DF38ABA50C42B1D2E2C /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - CB64410E0CF8BF6ADD6054B90C06E0DB /* IQTextInputViewNotification-umbrella.h in Headers */, + 9298CB7C2E4AC4E751E535DA15BEEFA8 /* IQKeyboardManagerSwift-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - 898BECC5F4305C9121ADF70E8E8D2714 /* Headers */ = { + C88A56468418AB0D810EF16B5B8E485D /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 10B43C98D0F772130D75F66A1984E68C /* IQKeyboardReturnManager-umbrella.h in Headers */, + 7BA968278DAB1050E34D0B65E56E5846 /* IQKeyboardToolbar-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - B5BA93A89BC6540B7A7D509EFFAA8E2C /* Headers */ = { + E0881C44D4CBAF3C805B0C76FC20E95E /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 702C60CEA26061730A208FD9AD3148A3 /* IQTextView-umbrella.h in Headers */, + C4CC8FC7015DCE5912B7607AFB238EFE /* Pods-DeepChordsSdk-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - C08BBEDF18AE8DF38ABA50C42B1D2E2C /* Headers */ = { + ECC96828C08E355DF2C5A52C3625D7B2 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 9298CB7C2E4AC4E751E535DA15BEEFA8 /* IQKeyboardManagerSwift-umbrella.h in Headers */, + A92367989121B0877023A09BF2F96F15 /* IQKeyboardToolbarManager-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - CB76203217C9D732831F564F54A6DF9B /* Headers */ = { + F3A1579A28F2237B19E04D5A1428811C /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 93FA76E7D394EF1BE061B8AEB4E8F603 /* IQKeyboardNotification-umbrella.h in Headers */, + 8667EBBAD4365F7E2DECFE792D488128 /* IQTextView-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1493,19 +1759,19 @@ /* Begin PBXNativeTarget section */ 020993F16DA5986DACE118349EBCE9E5 /* IQKeyboardToolbarManager */ = { isa = PBXNativeTarget; - buildConfigurationList = A599D6F83E2ADA135F5F95E07F3A9F46 /* Build configuration list for PBXNativeTarget "IQKeyboardToolbarManager" */; + buildConfigurationList = D7FB8C3DDF4703D4590435540A2233A9 /* Build configuration list for PBXNativeTarget "IQKeyboardToolbarManager" */; buildPhases = ( - 6A2F55995EFF58A04B2C3910187787FB /* Headers */, - D5F29D43747DC4C2D50FCDFC84D74555 /* Sources */, - 14F7D5F67076860B84A84E202E620308 /* Frameworks */, - DBDB308304AFF5F52C77D8C795824E2E /* Resources */, + ECC96828C08E355DF2C5A52C3625D7B2 /* Headers */, + 1A398E6B367B205FAAAE4088C36F8875 /* Sources */, + B0A1DA8C8E42CD15049F6F2D79726D7D /* Frameworks */, + D10E28E3B3D225E4049054F6C994854A /* Resources */, ); buildRules = ( ); dependencies = ( - E14B48494A76DA8D39B61F7DCFF351AE /* PBXTargetDependency */, - 5BC6280A3651E7CA1B1B64F1EACC399A /* PBXTargetDependency */, - 2EF44922A154A83DC77DEF27F8A592CA /* PBXTargetDependency */, + 806811E474B5E127D48FE9CA32DCFB26 /* PBXTargetDependency */, + FDF0C9122AFE5F4537D84EB5B5EA2535 /* PBXTargetDependency */, + F7852222FD7DD0B21BC78B245F2045A0 /* PBXTargetDependency */, ); name = IQKeyboardToolbarManager; productName = IQKeyboardToolbarManager; @@ -1514,18 +1780,18 @@ }; 0981F89DB5DA3FFCFFEBDE1F56287054 /* IQKeyboardReturnManager */ = { isa = PBXNativeTarget; - buildConfigurationList = 3C4DB880A7885119CB06D685D0A723E7 /* Build configuration list for PBXNativeTarget "IQKeyboardReturnManager" */; + buildConfigurationList = AC758F51A954F3478B41C0B2B845766B /* Build configuration list for PBXNativeTarget "IQKeyboardReturnManager" */; buildPhases = ( - 898BECC5F4305C9121ADF70E8E8D2714 /* Headers */, - C03DAC5FE223C40E754D025088A86583 /* Sources */, - B71FB9CF090F3995F09D74676CB6A38F /* Frameworks */, - AA21BBF4F6F451457382A55A563E10CD /* Resources */, + 5800FFAC29D42F17B23D62063D737B73 /* Headers */, + 7D875C37EC81C736C5CCCE65FA1343A6 /* Sources */, + 9688A049F13521CC698EF57654CF2443 /* Frameworks */, + E733192D0FA619FCCD70BD62F5A6A0F4 /* Resources */, ); buildRules = ( ); dependencies = ( - 09F40E0499F54B795248F87197AB6C87 /* PBXTargetDependency */, - 8B0E935F1FCD5AC1ECE059D205656EFA /* PBXTargetDependency */, + 1F9AF4725D5847BEA5D8B724D1A3B414 /* PBXTargetDependency */, + 9BE1A2A7D5E6D44833CB0C78085D940D /* PBXTargetDependency */, ); name = IQKeyboardReturnManager; productName = IQKeyboardReturnManager; @@ -1534,26 +1800,27 @@ }; 0AEE99A309977BD12A049FF48AF9BA4B /* Pods-Example */ = { isa = PBXNativeTarget; - buildConfigurationList = C99BBC4654DBCB79FC10078A8D8F164A /* Build configuration list for PBXNativeTarget "Pods-Example" */; + buildConfigurationList = 95C096ADDB6F7FCAFFA3FBB358C75EF3 /* Build configuration list for PBXNativeTarget "Pods-Example" */; buildPhases = ( - 5437BEDC0113A3C8DFE7EA59C14A7501 /* Headers */, - 1BC9CC609158C1A3E300AB808DD471CE /* Sources */, - 8687CBCEBF972D480F700C4A0D1CBEBA /* Frameworks */, - 7A76EF2AC0AA73D4492255BD0A0369CB /* Resources */, + 122D78F42E79267651C92A08FF3CBF82 /* Headers */, + 85B610DD95380C789F1D31249548827B /* Sources */, + 3683C5D0C8F465D221926E5B41E0B565 /* Frameworks */, + 2E3D44000BD1509E439B9C80D2F2E273 /* Resources */, ); buildRules = ( ); dependencies = ( - 5332DA368A2DC53BDEAD617F548A4218 /* PBXTargetDependency */, - AD528895684234E9D494E1C650E3E98D /* PBXTargetDependency */, - 338A7F4AE97BA376056068B3DEF9B9C5 /* PBXTargetDependency */, - CE9A17D3B75B6414A3AB270568EB58C1 /* PBXTargetDependency */, - 33022728CDB7938CE554AB26CE94CDF6 /* PBXTargetDependency */, - 02947DA73292D990EFA756FB0A80C749 /* PBXTargetDependency */, - 73C88ECD747110C67B6A0CC0052D1B9F /* PBXTargetDependency */, - 9200AD276048BFDABA6E145FE1119A6B /* PBXTargetDependency */, - 3814D6DB9239F6304E655EB4172BC721 /* PBXTargetDependency */, - 53142CF590266299583D7560D02A52BC /* PBXTargetDependency */, + AEFFF3B21972CDA23989650CB0D06DC1 /* PBXTargetDependency */, + F2792ADD73FF2795D46955194D6DB5FA /* PBXTargetDependency */, + 0A6F859D7948477715DBD4333CD962F5 /* PBXTargetDependency */, + 1EE6EF0BEC589B1038459A693177F2FE /* PBXTargetDependency */, + 6A012670364ED3DE97C5B8D570417F17 /* PBXTargetDependency */, + 54C3CEF0CE5F2ADC19CF09FA97EA2FCD /* PBXTargetDependency */, + 77F02D151BFA0BF2A8184E8F7040E02E /* PBXTargetDependency */, + 7C197C0E14E357C0482C5CECC1F7DAE7 /* PBXTargetDependency */, + FC49926069485756B05C5F53750496AD /* PBXTargetDependency */, + 9143EFF5B329D660A0398F7391E5D055 /* PBXTargetDependency */, + 3E3639BC049B1894293B33F5B52D836A /* PBXTargetDependency */, ); name = "Pods-Example"; productName = Pods_Example; @@ -1562,24 +1829,42 @@ }; 12890DE3ABBC2CA295E108358D85EE69 /* IQTextView */ = { isa = PBXNativeTarget; - buildConfigurationList = D209595F46E26B2152EE325AAA902C34 /* Build configuration list for PBXNativeTarget "IQTextView" */; + buildConfigurationList = D8BBE9E3900D941FF67F5A73A1AECA11 /* Build configuration list for PBXNativeTarget "IQTextView" */; buildPhases = ( - B5BA93A89BC6540B7A7D509EFFAA8E2C /* Headers */, - 642CC99F4C997855611D756BCD96ADCA /* Sources */, - 206DAEEAC5B1D52E8D12E9BF1571C67B /* Frameworks */, - 4BDD093D993E63D088F36F45E4664B3F /* Resources */, + F3A1579A28F2237B19E04D5A1428811C /* Headers */, + EDF3D1BC9513EF41FD61EEC958BC7E9C /* Sources */, + B4BF16B463F2EC49D7CBC102A2936235 /* Frameworks */, + 9E7C5C7D75FB952C9859F404E09D0DBE /* Resources */, ); buildRules = ( ); dependencies = ( - 5FBD91502BE2FA8A62798C4838D849FC /* PBXTargetDependency */, - F803C1642D0E7F6A76B1CE2EAA8F61F5 /* PBXTargetDependency */, + 9AB32C8C254D84A755461731E5E31837 /* PBXTargetDependency */, + 486058C9A622B4968F720109A1CB425D /* PBXTargetDependency */, ); name = IQTextView; productName = IQTextView; productReference = 0DFD4541FF9DAA31A2FC2A7F6D03ED22 /* IQTextView */; productType = "com.apple.product-type.framework"; }; + 1948D0B63D2CF6A48E18B0B292BC6091 /* SocketRocket */ = { + isa = PBXNativeTarget; + buildConfigurationList = 698D46877F77FCD24D7D79E95A4A06D5 /* Build configuration list for PBXNativeTarget "SocketRocket" */; + buildPhases = ( + A440384545772625048C36C84242D128 /* Headers */, + 5B14979992C9DB89400DDFB2EB8B8ECB /* Sources */, + 796567F81D938DA74DF71A2AFF3F8F3D /* Frameworks */, + A540247F97F33E3F24D6C4B41FFA27DB /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = SocketRocket; + productName = SocketRocket; + productReference = 85A01882ED06DFEA2E0CE78BCDB204A7 /* SocketRocket */; + productType = "com.apple.product-type.framework"; + }; 19622742EBA51E823D6DAE3F8CDBFAD4 /* SnapKit */ = { isa = PBXNativeTarget; buildConfigurationList = 80CE967CAA1D35721519F892BAF7A19B /* Build configuration list for PBXNativeTarget "SnapKit" */; @@ -1592,7 +1877,7 @@ buildRules = ( ); dependencies = ( - 373E4E2DF66A8F819F9594800BA0395D /* PBXTargetDependency */, + 032EC8AE715F3D13AD519BE9CA03294E /* PBXTargetDependency */, ); name = SnapKit; productName = SnapKit; @@ -1601,18 +1886,18 @@ }; 283C1F2EA88CD4413165801A6748A48E /* IQTextInputViewNotification */ = { isa = PBXNativeTarget; - buildConfigurationList = E959AB3A73E0C01735D6A0CBB7A46763 /* Build configuration list for PBXNativeTarget "IQTextInputViewNotification" */; + buildConfigurationList = 0DA28833D7A042B27FBAEDF85A1C1D74 /* Build configuration list for PBXNativeTarget "IQTextInputViewNotification" */; buildPhases = ( - 7E6197EB3727119928B6B284301F93BB /* Headers */, - 4B4500F672993B0509740F79C41F6244 /* Sources */, - AC775A265EBB1A2969CF830711FDFC36 /* Frameworks */, - 34A84F34084BCB439F6EF87B05FC89F6 /* Resources */, + 82711643BCFA0EA6AA2167CCA71932C5 /* Headers */, + 64CD60E8B295A57BEBDD5D87A91B92C2 /* Sources */, + 51FB4B943D35F3E908360703B96C7E25 /* Frameworks */, + B13E49C52D1F4CA576AECF646E227048 /* Resources */, ); buildRules = ( ); dependencies = ( - 72F6A0C66EDDCB6E6AE5234030A2C917 /* PBXTargetDependency */, - B209B2433F1107B4974A261EEA588622 /* PBXTargetDependency */, + 0BA497932D68F052CFDA60CB4325E823 /* PBXTargetDependency */, + C2F5904EDA280BF704E19BEC7E450D7C /* PBXTargetDependency */, ); name = IQTextInputViewNotification; productName = IQTextInputViewNotification; @@ -1621,11 +1906,11 @@ }; 2B8FF445A5162845FAB9EC00FC92B694 /* IQKeyboardNotification-IQKeyboardNotification */ = { isa = PBXNativeTarget; - buildConfigurationList = 1C2730F463E4268BFDE6BAF62C9A487F /* Build configuration list for PBXNativeTarget "IQKeyboardNotification-IQKeyboardNotification" */; + buildConfigurationList = 2FC9855C948A66726D61C1BF2072066A /* Build configuration list for PBXNativeTarget "IQKeyboardNotification-IQKeyboardNotification" */; buildPhases = ( - 69B5CAD49C195CC703F7B4E55C30A171 /* Sources */, - 303B17403FC51446D947C78825258D78 /* Frameworks */, - 8BA315B12D94A7CD6399F8963CF03ACA /* Resources */, + 3C441F0A74335E026B3A49DF02ECF4CE /* Sources */, + 524D81F2C5CE61FB9EB4A47C9DEE4C1E /* Frameworks */, + 6FB0C9C708A89616971C79B2B1BB4FD5 /* Resources */, ); buildRules = ( ); @@ -1638,11 +1923,11 @@ }; 4502C7427440BEB17A50C0BF6E638A85 /* IQTextInputViewNotification-IQTextInputViewNotification */ = { isa = PBXNativeTarget; - buildConfigurationList = BEBD8E760EA9789023B9A265429B0CE3 /* Build configuration list for PBXNativeTarget "IQTextInputViewNotification-IQTextInputViewNotification" */; + buildConfigurationList = BA50FBEF420279D7BDB90421B1103569 /* Build configuration list for PBXNativeTarget "IQTextInputViewNotification-IQTextInputViewNotification" */; buildPhases = ( - 068ABE2F7FB7B58B7C8850D3D0DFB234 /* Sources */, - 593A1D66DE0099584227B2B9C0CF7DB9 /* Frameworks */, - 8477C527987BA6E1027C6EB091155175 /* Resources */, + 3C68A4C08DF19233949A87717EEB487B /* Sources */, + D9611FA61C59D2592877A687EEBEEFE4 /* Frameworks */, + 53F78ACD922DFE5F07BB53AF35B10C1B /* Resources */, ); buildRules = ( ); @@ -1653,13 +1938,32 @@ productReference = F956E149F5B195BB7833F97FC6211AE8 /* IQTextInputViewNotification-IQTextInputViewNotification */; productType = "com.apple.product-type.bundle"; }; + 57C07B65DFE17EDE1FBA00A59C380215 /* Pods-DeepChordsSdk */ = { + isa = PBXNativeTarget; + buildConfigurationList = 49D80946082E3E53F4077E15D8887408 /* Build configuration list for PBXNativeTarget "Pods-DeepChordsSdk" */; + buildPhases = ( + E0881C44D4CBAF3C805B0C76FC20E95E /* Headers */, + B559610B7522BD1394961D290D7F9F24 /* Sources */, + D603B521417D6EFBEB7EAECC9C431345 /* Frameworks */, + 51DCE991AF37B3EEABE23F0A727B58A0 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + DDA643E4BF2CFF13D6B0D25A5C59AB5F /* PBXTargetDependency */, + ); + name = "Pods-DeepChordsSdk"; + productName = Pods_DeepChordsSdk; + productReference = 06FEEB0FA2AA89DF42A1C6525F644FBF /* Pods-DeepChordsSdk */; + productType = "com.apple.product-type.framework"; + }; 7C5613175BBC4BF67E36DB4FBEBC01D0 /* IQKeyboardToolbarManager-IQKeyboardToolbarManager */ = { isa = PBXNativeTarget; - buildConfigurationList = 6481ABAE66B2D04512CD62187CEABE6D /* Build configuration list for PBXNativeTarget "IQKeyboardToolbarManager-IQKeyboardToolbarManager" */; + buildConfigurationList = 9E4E9D837E21217746DEB582B898D487 /* Build configuration list for PBXNativeTarget "IQKeyboardToolbarManager-IQKeyboardToolbarManager" */; buildPhases = ( - 5DC98B664B122FBF55B33F1E9864097A /* Sources */, - CC0D2D1B4E9DF573CAB4864E913EEF08 /* Frameworks */, - E212BB5D10DC6F6BEFD50F34F9F2E098 /* Resources */, + 93B28B68B9253146A5A3760F7F07BAB5 /* Sources */, + 2BE4574EA7A2208A3273A02C5D2F1D1B /* Frameworks */, + C8DC5880AFA70136503A77EF1FA12E8B /* Resources */, ); buildRules = ( ); @@ -1672,11 +1976,11 @@ }; 88810798DA63A2F6611B0970EA276DEC /* IQKeyboardReturnManager-IQKeyboardReturnManager */ = { isa = PBXNativeTarget; - buildConfigurationList = F874B41A83B918592D0E9627046D0688 /* Build configuration list for PBXNativeTarget "IQKeyboardReturnManager-IQKeyboardReturnManager" */; + buildConfigurationList = 08CCC0BB4F7D4BA07752DF404F6EDD9A /* Build configuration list for PBXNativeTarget "IQKeyboardReturnManager-IQKeyboardReturnManager" */; buildPhases = ( - E876810B24A176F2DA92BB88194B940A /* Sources */, - B0639BBF382C714C07A4780B0937F3DD /* Frameworks */, - 3F6FD522AF4AAA2893F958338FD95830 /* Resources */, + 4E2755E9D46C6DFDCFEB8FB5461370B2 /* Sources */, + 5C50EB2041FA8E3A1BB9E243091C260E /* Frameworks */, + 648156F3F654BAD048DC31929DADADD3 /* Resources */, ); buildRules = ( ); @@ -1689,11 +1993,11 @@ }; 8A8DB685241263AFDF5E6B20FE67B93A /* SnapKit-SnapKit_Privacy */ = { isa = PBXNativeTarget; - buildConfigurationList = 7ECB31051167A225EFE7C1A45E684E88 /* Build configuration list for PBXNativeTarget "SnapKit-SnapKit_Privacy" */; + buildConfigurationList = 2D29A227B6A83F5A542054A8A8043BAA /* Build configuration list for PBXNativeTarget "SnapKit-SnapKit_Privacy" */; buildPhases = ( - C68CA3D6E979C9C4060A446F5259ED37 /* Sources */, - CC8D09BBF8B8F6D33E40ED1BAA1F8113 /* Frameworks */, - 9189062812A7E0F7228B7F937C93E4FE /* Resources */, + 8BEB91B4B898532A40DB8A8E4B9A7792 /* Sources */, + 4F320E16D10A7BE9185BA7C5A5CCDA43 /* Frameworks */, + 174BF058335E0D9E0D5AE8280994DE37 /* Resources */, ); buildRules = ( ); @@ -1706,11 +2010,11 @@ }; 982A68D37F5DCBC1FC1FDC0BB2F0EB8E /* IQKeyboardManagerSwift-IQKeyboardManagerSwift */ = { isa = PBXNativeTarget; - buildConfigurationList = 67BEB8C8A7A6715308ADC7CCB951A134 /* Build configuration list for PBXNativeTarget "IQKeyboardManagerSwift-IQKeyboardManagerSwift" */; + buildConfigurationList = FD573F16CD31603388EC2DE46509F450 /* Build configuration list for PBXNativeTarget "IQKeyboardManagerSwift-IQKeyboardManagerSwift" */; buildPhases = ( - 778167DCA82E6720C48973FE7E9057ED /* Sources */, - D69032A0184C58B6180580EC9740DF5D /* Frameworks */, - DAA841338E12329C3213B17983D65AB7 /* Resources */, + 5760F041F8E34852DB231732150718DE /* Sources */, + D7208CA103D7DAE87F900A6B91736DCC /* Frameworks */, + 47EBE3AE692A6D5A8D76F3E9294A02F6 /* Resources */, ); buildRules = ( ); @@ -1723,17 +2027,17 @@ }; A26E6FD851C20D652B2755C1464A9990 /* IQKeyboardNotification */ = { isa = PBXNativeTarget; - buildConfigurationList = F8A3F2A1D94EBD3FC696D573D0AB1B0F /* Build configuration list for PBXNativeTarget "IQKeyboardNotification" */; + buildConfigurationList = 7B6A2B3DDE303A370FD2A5C8DB9C6E2D /* Build configuration list for PBXNativeTarget "IQKeyboardNotification" */; buildPhases = ( - CB76203217C9D732831F564F54A6DF9B /* Headers */, - DCEE5F908D05D08CB49810DF257309EB /* Sources */, - ED936A52EC136457464BFD2C700FB0A3 /* Frameworks */, - 890965BE534ED7A2EA3C31AD18FB0268 /* Resources */, + 060405D4024056E8E8E0AAAA43BAE414 /* Headers */, + 536076B1DBBF070DAA25A21BCE546B3C /* Sources */, + FBA90047961BDAD70FDA139EC0C30DD0 /* Frameworks */, + 3F90A77AEBBD3ABB426A427B522E1CA7 /* Resources */, ); buildRules = ( ); dependencies = ( - 15B6A297ECD7769C6179318011DA90D6 /* PBXTargetDependency */, + BAE9291352BA3C02DCD824BD9455EEFB /* PBXTargetDependency */, ); name = IQKeyboardNotification; productName = IQKeyboardNotification; @@ -1742,11 +2046,11 @@ }; A6602BCAA6F4F932A586C41D0B7E019C /* IQTextView-IQTextView */ = { isa = PBXNativeTarget; - buildConfigurationList = F0BDF860071DEA034151A2E0A1E847DD /* Build configuration list for PBXNativeTarget "IQTextView-IQTextView" */; + buildConfigurationList = D2E3CA4A5A5255636741A362E4F6BCF7 /* Build configuration list for PBXNativeTarget "IQTextView-IQTextView" */; buildPhases = ( - 1CBD03D5FAE137959B4BCC3F5F1E587A /* Sources */, - 4A9B7C7D9A2CD8049C8E4EDD7F25DC71 /* Frameworks */, - 827415E22876785B7EEA81F1F2EF17E0 /* Resources */, + 6BA8B3ED1069309303992AA48F45596A /* Sources */, + F94D8D7F47FD316BA431BF216418ADF4 /* Frameworks */, + 2F55A6F40CBE52B1DAF28461F9E6E647 /* Resources */, ); buildRules = ( ); @@ -1759,11 +2063,11 @@ }; B247F77A0CD5E19C8187A9BA1EB58C09 /* IQKeyboardToolbar-IQKeyboardToolbar */ = { isa = PBXNativeTarget; - buildConfigurationList = C3974B1DD3C778FE5733E8306919D1BC /* Build configuration list for PBXNativeTarget "IQKeyboardToolbar-IQKeyboardToolbar" */; + buildConfigurationList = 7468FF21977574A694627CBF4D7DEC53 /* Build configuration list for PBXNativeTarget "IQKeyboardToolbar-IQKeyboardToolbar" */; buildPhases = ( - 3467572FBBD115066D9DAF516B069FB2 /* Sources */, - 04BE6D07E21323B9CEF8A64DB1F090CC /* Frameworks */, - 528EF1DC8744228541DB7475A0D65ECB /* Resources */, + AD7CA0B1355EA84E4891403413E3DFF0 /* Sources */, + 743D51EAD768EDE4D4AB7D3C665C7D2E /* Frameworks */, + 058186BCF638406CD478B0C025C67642 /* Resources */, ); buildRules = ( ); @@ -1786,12 +2090,12 @@ buildRules = ( ); dependencies = ( - 2BEC92FE1E84E8E714624E30C39B0881 /* PBXTargetDependency */, - 8DFAED47E5AE24BD1D2815781962AC04 /* PBXTargetDependency */, - 7E1FE66F1BED650B6A5DE3DF65EDC42E /* PBXTargetDependency */, - 54C243D325925763DDE70362FEF9AB35 /* PBXTargetDependency */, - 7018FAC1C4C71DA57E769F3F34B0CB30 /* PBXTargetDependency */, - 200D486E5AFC167189F7B905CE3DF002 /* PBXTargetDependency */, + 0ED2A9B38A71F6850A959089852BDB0A /* PBXTargetDependency */, + CACDD982D78D0FBB2772B70DB888F8B4 /* PBXTargetDependency */, + E4562E3C97AF6073F7BD53F0DA943866 /* PBXTargetDependency */, + 443ECCCC8495E109D669FC24E39EE5E7 /* PBXTargetDependency */, + 3920F2A30AF54503207FB9C2E5ECC456 /* PBXTargetDependency */, + 3BDAAC90F533878935276DA626D3CE8F /* PBXTargetDependency */, ); name = IQKeyboardManagerSwift; productName = IQKeyboardManagerSwift; @@ -1810,7 +2114,7 @@ buildRules = ( ); dependencies = ( - 81530010EBBCEC9F063C726BEE96FA2E /* PBXTargetDependency */, + 24C84A614B93271254E3B59008326861 /* PBXTargetDependency */, ); name = "Toast-Swift"; productName = Toast_Swift; @@ -1819,11 +2123,11 @@ }; C344E85893FCDEE5B70436E0A4A3472B /* Toast-Swift-Toast-Swift */ = { isa = PBXNativeTarget; - buildConfigurationList = 2C11E195FECCAE83CCDC9E8F3DDC7F1C /* Build configuration list for PBXNativeTarget "Toast-Swift-Toast-Swift" */; + buildConfigurationList = 2DEB3984BC37C7B27AE0091EC7509142 /* Build configuration list for PBXNativeTarget "Toast-Swift-Toast-Swift" */; buildPhases = ( - 23B0266BDD5D742A6985A1A3284FAE3B /* Sources */, - C2B597C3382CFBEDD298B0A9ED88D7EA /* Frameworks */, - B44360D2D920E25764093F836445F02F /* Resources */, + 401AB3CA229BFB5D1BD2B86A0F771029 /* Sources */, + 7802B8C3260B2A1D85C8EFC0C6929B18 /* Frameworks */, + 9ACC5CFB969DD7CBAFA4FD3471F250AB /* Resources */, ); buildRules = ( ); @@ -1836,11 +2140,11 @@ }; EEE261386011CDF271BE289F73FF5959 /* IQKeyboardCore-IQKeyboardCore */ = { isa = PBXNativeTarget; - buildConfigurationList = 1BAF802141BB7A8BEA3D0389842F0DCD /* Build configuration list for PBXNativeTarget "IQKeyboardCore-IQKeyboardCore" */; + buildConfigurationList = D452E33AB7D1DEFA04A6E2B89E1B70BD /* Build configuration list for PBXNativeTarget "IQKeyboardCore-IQKeyboardCore" */; buildPhases = ( - 193FC9D5FF435D6EC04EDCD055A905F7 /* Sources */, - 13370F62359EA40214FB32CCB782E91A /* Frameworks */, - 29E71C1D593DC1AA83C9889794267EF1 /* Resources */, + 0E2B16FF344B7465603C1647248CC9B3 /* Sources */, + 5FCE427163262BB0862B486F5E093C1C /* Frameworks */, + 2BA5C599D1605C3C6BB5CD4D9997593F /* Resources */, ); buildRules = ( ); @@ -1853,18 +2157,18 @@ }; F4FE17428FD0E607723A44F17231B7A1 /* IQKeyboardToolbar */ = { isa = PBXNativeTarget; - buildConfigurationList = E74FC012668CDA2F6C4BF839FEB96069 /* Build configuration list for PBXNativeTarget "IQKeyboardToolbar" */; + buildConfigurationList = 6545B5D9E1142254EECDDEFC1408EA74 /* Build configuration list for PBXNativeTarget "IQKeyboardToolbar" */; buildPhases = ( - 7CA74D01A767822CD6FC101B25E83B4F /* Headers */, - 258B966FF9BF58520053F85BB4C5CB86 /* Sources */, - FCF44B7D1CF6026F5C4E8FAD6F93496A /* Frameworks */, - 69EA636035BF2EDFD91FBFF12F9D98D7 /* Resources */, + C88A56468418AB0D810EF16B5B8E485D /* Headers */, + 3363E27ECA850B6F97ED682F53C6A346 /* Sources */, + D5899CD7924A4C13CEA79F5428436874 /* Frameworks */, + D2C990C2F192D6D365F0DA3D5288AE39 /* Resources */, ); buildRules = ( ); dependencies = ( - 4DA2D12F5FFEF9889288A454BDD7962A /* PBXTargetDependency */, - DE1669B73B7601256AAF289C2AD11837 /* PBXTargetDependency */, + 5A538984C0CD4E2FF0B2AAA2EF368D0F /* PBXTargetDependency */, + 36DB0F3DA574BD5B7448F2F28DFAA125 /* PBXTargetDependency */, ); name = IQKeyboardToolbar; productName = IQKeyboardToolbar; @@ -1883,7 +2187,7 @@ buildRules = ( ); dependencies = ( - F98C8014CD89FC2B8D539B51D3905AA2 /* PBXTargetDependency */, + 9CF7EA505D7A9CAA62AFDC4457D80AEF /* PBXTargetDependency */, ); name = IQKeyboardCore; productName = IQKeyboardCore; @@ -1910,7 +2214,7 @@ mainGroup = CF1408CF629C7361332E53B88F7BD30C; minimizedProjectReferenceProxies = 0; preferredProjectObjectVersion = 77; - productRefGroup = 0EACCA925CF9C4599FAAC20986D820F6 /* Products */; + productRefGroup = 6A6ACDADD484E61C0C86AAAC23AA5774 /* Products */; projectDirPath = ""; projectRoot = ""; targets = ( @@ -1930,9 +2234,11 @@ 4502C7427440BEB17A50C0BF6E638A85 /* IQTextInputViewNotification-IQTextInputViewNotification */, 12890DE3ABBC2CA295E108358D85EE69 /* IQTextView */, A6602BCAA6F4F932A586C41D0B7E019C /* IQTextView-IQTextView */, + 57C07B65DFE17EDE1FBA00A59C380215 /* Pods-DeepChordsSdk */, 0AEE99A309977BD12A049FF48AF9BA4B /* Pods-Example */, 19622742EBA51E823D6DAE3F8CDBFAD4 /* SnapKit */, 8A8DB685241263AFDF5E6B20FE67B93A /* SnapKit-SnapKit_Privacy */, + 1948D0B63D2CF6A48E18B0B292BC6091 /* SocketRocket */, B990BD87169C76A3ED3FE8A9258D91A3 /* Toast-Swift */, C344E85893FCDEE5B70436E0A4A3472B /* Toast-Swift-Toast-Swift */, ); @@ -1940,227 +2246,214 @@ /* End PBXProject section */ /* Begin PBXResourcesBuildPhase section */ - 1DEDF411E550D85A1218E1655456A9CD /* Resources */ = { + 058186BCF638406CD478B0C025C67642 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - 9E0045B41BFE697DB4ADE151228024D2 /* SnapKit-SnapKit_Privacy in Resources */, + 2B518589AC1F3F54CE14633027E81734 /* PrivacyInfo.xcprivacy in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; - 29E71C1D593DC1AA83C9889794267EF1 /* Resources */ = { + 174BF058335E0D9E0D5AE8280994DE37 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - BCA36C0165E90BE953EDB5DF596E961C /* PrivacyInfo.xcprivacy in Resources */, + 49F88DA1CED23ACF70ED0D51D2BCCE4F /* PrivacyInfo.xcprivacy in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; - 30325A914D6527C8259F46363D6D7531 /* Resources */ = { + 1DEDF411E550D85A1218E1655456A9CD /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - 6DE9FD143CBC24075601F8FE2ADC4115 /* IQKeyboardCore-IQKeyboardCore in Resources */, + 9E0045B41BFE697DB4ADE151228024D2 /* SnapKit-SnapKit_Privacy in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; - 34A84F34084BCB439F6EF87B05FC89F6 /* Resources */ = { + 2BA5C599D1605C3C6BB5CD4D9997593F /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - 4D055AD31ECB4F14AA2CD02DB2155BE0 /* IQTextInputViewNotification-IQTextInputViewNotification in Resources */, + 164062B86FCAFF355EE04D7A23A6EA1C /* PrivacyInfo.xcprivacy in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; - 3F6FD522AF4AAA2893F958338FD95830 /* Resources */ = { + 2E3D44000BD1509E439B9C80D2F2E273 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - 36C3C4911A9F44D14023276D2FEB61FC /* PrivacyInfo.xcprivacy in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; - 4BDD093D993E63D088F36F45E4664B3F /* Resources */ = { + 2F55A6F40CBE52B1DAF28461F9E6E647 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - 25BE643B401DBC4C6DC006ED6871486D /* IQTextView-IQTextView in Resources */, + C433EA40A4C18AC4714CF6C9BC1172CA /* PrivacyInfo.xcprivacy in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; - 528EF1DC8744228541DB7475A0D65ECB /* Resources */ = { + 30325A914D6527C8259F46363D6D7531 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - 8B0CD445CE2368FD1D2E5A97917004DA /* PrivacyInfo.xcprivacy in Resources */, + 6DE9FD143CBC24075601F8FE2ADC4115 /* IQKeyboardCore-IQKeyboardCore in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; - 636F2BA8305CAE418272BBDC04936516 /* Resources */ = { + 3F90A77AEBBD3ABB426A427B522E1CA7 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - E6FE2596512201193E95FC356C6E3351 /* IQKeyboardManagerSwift-IQKeyboardManagerSwift in Resources */, + 0B380F6921261E661C9EF26B02E5D634 /* IQKeyboardNotification-IQKeyboardNotification in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; - 69EA636035BF2EDFD91FBFF12F9D98D7 /* Resources */ = { + 47EBE3AE692A6D5A8D76F3E9294A02F6 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - 7B6FECCE2D5B00F838A8938B4A87D5E4 /* IQKeyboardToolbar-IQKeyboardToolbar in Resources */, + 50ECD138DA8BC1FBBEBFBF3CE5CEB5FF /* PrivacyInfo.xcprivacy in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; - 7A76EF2AC0AA73D4492255BD0A0369CB /* Resources */ = { + 51DCE991AF37B3EEABE23F0A727B58A0 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - 827415E22876785B7EEA81F1F2EF17E0 /* Resources */ = { + 53F78ACD922DFE5F07BB53AF35B10C1B /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - 72B966A1388CD724413648ADE6819481 /* PrivacyInfo.xcprivacy in Resources */, + 1CCB9F1FA415F93E8F4AD0E4692E4BC6 /* PrivacyInfo.xcprivacy in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; - 8477C527987BA6E1027C6EB091155175 /* Resources */ = { + 636F2BA8305CAE418272BBDC04936516 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - F4D65B0771272C500F2E872705893146 /* PrivacyInfo.xcprivacy in Resources */, + E6FE2596512201193E95FC356C6E3351 /* IQKeyboardManagerSwift-IQKeyboardManagerSwift in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; - 890965BE534ED7A2EA3C31AD18FB0268 /* Resources */ = { + 648156F3F654BAD048DC31929DADADD3 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - D2E2744A0122A5447E6FD80BBA6FB36A /* IQKeyboardNotification-IQKeyboardNotification in Resources */, + DD4291CF0D9971BFED1BD55FB65ACA32 /* PrivacyInfo.xcprivacy in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; - 8BA315B12D94A7CD6399F8963CF03ACA /* Resources */ = { + 6FB0C9C708A89616971C79B2B1BB4FD5 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - 45D50B26F412D12C2DF12F804CB08FEF /* PrivacyInfo.xcprivacy in Resources */, + 56E30C414ED43846B453D6FDE75DF3B5 /* PrivacyInfo.xcprivacy in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; - 9189062812A7E0F7228B7F937C93E4FE /* Resources */ = { + 9ACC5CFB969DD7CBAFA4FD3471F250AB /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - A9F6F279F9AE6B3EB30CC9ADE242E7C5 /* PrivacyInfo.xcprivacy in Resources */, + 8BA78192EBB4433C386A932BE198C2AD /* PrivacyInfo.xcprivacy in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; - A694D13AD95802E0936531BC8DAEBB89 /* Resources */ = { + 9E7C5C7D75FB952C9859F404E09D0DBE /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - 87E921A1D8B0C683DA2133709C867859 /* Toast-Swift-Toast-Swift in Resources */, + 2409EDE57DC13E13E7C7A81E9E2DDD9E /* IQTextView-IQTextView in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; - AA21BBF4F6F451457382A55A563E10CD /* Resources */ = { + A540247F97F33E3F24D6C4B41FFA27DB /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - 18D58CD25F5E8B4A86170A1D907516C3 /* IQKeyboardReturnManager-IQKeyboardReturnManager in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; - B44360D2D920E25764093F836445F02F /* Resources */ = { + A694D13AD95802E0936531BC8DAEBB89 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - BDA87F0C05C9C4A2AA0A0D2B98C33E8C /* PrivacyInfo.xcprivacy in Resources */, + 87E921A1D8B0C683DA2133709C867859 /* Toast-Swift-Toast-Swift in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; - DAA841338E12329C3213B17983D65AB7 /* Resources */ = { + B13E49C52D1F4CA576AECF646E227048 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - E007B42A515F1B4D6C1477ACA9AD43C0 /* PrivacyInfo.xcprivacy in Resources */, + 4B2FB381B6E14F9E0F442557ADDAA2F8 /* IQTextInputViewNotification-IQTextInputViewNotification in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; - DBDB308304AFF5F52C77D8C795824E2E /* Resources */ = { + C8DC5880AFA70136503A77EF1FA12E8B /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - 644BBAB0F823E2D81A4EF7114F2F264E /* IQKeyboardToolbarManager-IQKeyboardToolbarManager in Resources */, + 0EB83A2AC8AAECEE26C8739477B3A431 /* PrivacyInfo.xcprivacy in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; - E212BB5D10DC6F6BEFD50F34F9F2E098 /* Resources */ = { + D10E28E3B3D225E4049054F6C994854A /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - 1D06D98BA3B7C6A1D7BFEF8DB9CB1948 /* PrivacyInfo.xcprivacy in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXResourcesBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - 068ABE2F7FB7B58B7C8850D3D0DFB234 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 193FC9D5FF435D6EC04EDCD055A905F7 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( + 4C1E30BD1A58C10DE84E572ECD5DB54D /* IQKeyboardToolbarManager-IQKeyboardToolbarManager in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; - 1BC9CC609158C1A3E300AB808DD471CE /* Sources */ = { - isa = PBXSourcesBuildPhase; + D2C990C2F192D6D365F0DA3D5288AE39 /* Resources */ = { + isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - 868AD263A86B61C7722575FBCAD4056A /* Pods-Example-dummy.m in Sources */, + F5F31138D70F9AEBD476D8AE418F37F9 /* IQKeyboardToolbar-IQKeyboardToolbar in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; - 1CBD03D5FAE137959B4BCC3F5F1E587A /* Sources */ = { - isa = PBXSourcesBuildPhase; + E733192D0FA619FCCD70BD62F5A6A0F4 /* Resources */ = { + isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( + 020799C53BF7A383514499A2B455C635 /* IQKeyboardReturnManager-IQKeyboardReturnManager in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; - 23B0266BDD5D742A6985A1A3284FAE3B /* Sources */ = { +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 0E2B16FF344B7465603C1647248CC9B3 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - 258B966FF9BF58520053F85BB4C5CB86 /* Sources */ = { + 1A398E6B367B205FAAAE4088C36F8875 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 09FABB7674B8063235602CC7AEBFAF3D /* IQBarButtonItem.swift in Sources */, - 92884C4C1C02E75A52CC712EC8A34421 /* IQBarButtonItemConfiguration.swift in Sources */, - CFB66030405436F94DE6E8C2D9175A0E /* IQInvocation.swift in Sources */, - 61C3C9CD69B4AD5D26416201A45A80E2 /* IQKeyboardToolbar.swift in Sources */, - F5EA9B9630BC0ABCA401EBB41ACF0CAA /* IQKeyboardToolbar-dummy.m in Sources */, - FA1E4DF059F9D021A2B913A8DA9D1CBE /* IQKeyboardToolbarPlaceholderConfiguration.swift in Sources */, - 8AD605858D16DC3D7B735572F0C7ED8E /* IQPlaceholderable.swift in Sources */, - A74F5C96D4E6C5927CD31690CBBD40F9 /* IQTitleBarButtonItem.swift in Sources */, - 103706F1CB831BCC4745A590866274ED /* UIView+IQKeyboardExtension.swift in Sources */, - 829CA2939955B57238D8CF3C53F3F404 /* UIView+IQKeyboardExtensionDeprecated.swift in Sources */, - AE5E125694A1F601CBC7ED5362DA54E8 /* UIView+IQKeyboardExtensionObjc.swift in Sources */, + 06B16BF7C2EA99B47539C34FF4150ABF /* Array+Sort.swift in Sources */, + 64684CAF22CAC1002958805187019FD7 /* IQDeepResponderContainerView.swift in Sources */, + F312D740135121FC4C7D0EB4A5F76F90 /* IQKeyboardToolbarConfiguration.swift in Sources */, + 992815E207201EE57916809E07ADBD74 /* IQKeyboardToolbarConstants.swift in Sources */, + B1990109AA9AF8F57180C17D4A04EF6B /* IQKeyboardToolbarManager.swift in Sources */, + 07543B1010D44AA155CAFADBF03E66DB /* IQKeyboardToolbarManager+Action.swift in Sources */, + 310A311043229B0F1C21B72E9FD37271 /* IQKeyboardToolbarManager+Debug.swift in Sources */, + 71311BC21C92A7DE376CAD928E325979 /* IQKeyboardToolbarManager+Deprecated.swift in Sources */, + A802B52FE5903601486CB77E2FDCF18B /* IQKeyboardToolbarManager+Internal.swift in Sources */, + 809199B64088AA02A6B900316396A83D /* IQKeyboardToolbarManager+Toolbar.swift in Sources */, + 9CFA943AABBDB657A85AAAF2FB4DED67 /* IQKeyboardToolbarManager-dummy.m in Sources */, + 37E0B956B90DE65985C993A4DF4D6CA3 /* UIView+Responders.swift in Sources */, + 6735CEF5CEDBE284902139B3ED3F2E73 /* UIView+RespondersObjc.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -2203,128 +2496,190 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 3467572FBBD115066D9DAF516B069FB2 /* Sources */ = { + 3363E27ECA850B6F97ED682F53C6A346 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( + F4B260EE81F1B5801FC6DA3097F2E433 /* IQBarButtonItem.swift in Sources */, + CA547E1928ADED547C368A3AB7CE9267 /* IQBarButtonItemConfiguration.swift in Sources */, + 3D1D0BFA512309AE63825C811A1BFC81 /* IQInvocation.swift in Sources */, + 49D83EC94BF242A406B6553F44E52024 /* IQKeyboardToolbar.swift in Sources */, + E51720E5CBEEB2151A69D4FDF36B7E2D /* IQKeyboardToolbar-dummy.m in Sources */, + 3F89C7F7F091BA0DFD648E0286E5665D /* IQKeyboardToolbarPlaceholderConfiguration.swift in Sources */, + 7BEAD7E859FB5BFCACD23CE492484CC4 /* IQPlaceholderable.swift in Sources */, + 7BBD64ADF2DD2B427F258E87F3EDA284 /* IQTitleBarButtonItem.swift in Sources */, + 548F940AC071FBFD9D8DF209775771E5 /* UIView+IQKeyboardExtension.swift in Sources */, + 1A67B4D6FA3F8FB9A1083EF74C966F64 /* UIView+IQKeyboardExtensionDeprecated.swift in Sources */, + 24A7645685912B02F96A1291D607DBAA /* UIView+IQKeyboardExtensionObjc.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - 4B4500F672993B0509740F79C41F6244 /* Sources */ = { + 3C441F0A74335E026B3A49DF02ECF4CE /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - A61774BEF07AB7C1107C3FDA1297E5BB /* IQTextInputViewInfo.swift in Sources */, - 7012CE5AAAF1AEAA878B00AA9B7A3A23 /* IQTextInputViewNotification.swift in Sources */, - 7EDEEAAEA314F2D8221F9ED0179A7843 /* IQTextInputViewNotification-dummy.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - 5DC98B664B122FBF55B33F1E9864097A /* Sources */ = { + 3C68A4C08DF19233949A87717EEB487B /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - 642CC99F4C997855611D756BCD96ADCA /* Sources */ = { + 401AB3CA229BFB5D1BD2B86A0F771029 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - CF42B90B9D36F1A8370820AE19E549D4 /* IQTextView.swift in Sources */, - 42AE30E987B1F2183EEE1414C5108662 /* IQTextView+Placeholderable.swift in Sources */, - 894A8EA7637D4C761EC74FB4F16BEFD3 /* IQTextView-dummy.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - 69B5CAD49C195CC703F7B4E55C30A171 /* Sources */ = { + 4E2755E9D46C6DFDCFEB8FB5461370B2 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - 778167DCA82E6720C48973FE7E9057ED /* Sources */ = { + 536076B1DBBF070DAA25A21BCE546B3C /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( + 4C26DF4F8D6AC77894F18EC89896258B /* IQKeyboardInfo.swift in Sources */, + 975E6903FBA7CF724108613000500E7E /* IQKeyboardNotification.swift in Sources */, + 65ABC841033E6707C3419B304C1DDD50 /* IQKeyboardNotification-dummy.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - B4A020AF82EF829322C86201C5C31A20 /* Sources */ = { + 5760F041F8E34852DB231732150718DE /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 172B6B4E5550420B8131FBD62C975821 /* Toast.swift in Sources */, - A9B5C45C3C4D517B581E536DE846A078 /* Toast-Swift-dummy.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - BF6F1816B0325207E7310ABC9FD05174 /* Sources */ = { + 5B14979992C9DB89400DDFB2EB8B8ECB /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 5E7E257AE5D618E46EF57A5818010F85 /* NSRunLoop+SRWebSocket.m in Sources */, + 6645E9FB4265C5712E38055C931E1630 /* NSURLRequest+SRWebSocket.m in Sources */, + A3585531EE4D8466B74A5A6F7958EC79 /* SocketRocket-dummy.m in Sources */, + B893C0DD5BE32FAE1D6895E1ED392B7A /* SRConstants.m in Sources */, + 1A117EC847E321871E40EB39F3576D11 /* SRDelegateController.m in Sources */, + AB12501C57FFF722131F674ACB425944 /* SRError.m in Sources */, + EB3BCE9B36BF814DA3069FA077168301 /* SRHash.m in Sources */, + 0362BB03F32EC9FB6013DEE29E8E33EF /* SRHTTPConnectMessage.m in Sources */, + FCFC8D5B48F3DC4BC8942320631D8C1B /* SRIOConsumer.m in Sources */, + 20B8C7C05E3AF3032935F30500EF5550 /* SRIOConsumerPool.m in Sources */, + CF6554D8A9380CAC0F51D5043769D930 /* SRLog.m in Sources */, + A564D0B0EE8AED950D943A75C2B3092E /* SRMutex.m in Sources */, + D25185C12789EA624C8BAC6A6432E77B /* SRPinningSecurityPolicy.m in Sources */, + D623A6CB33709C4D87766C66A756A0F7 /* SRProxyConnect.m in Sources */, + 9A3761D8CEFB0E2131D2EFA2DEBB3A99 /* SRRandom.m in Sources */, + 92571FFBEF3A7B2F4F633624013010EE /* SRRunLoopThread.m in Sources */, + 8D0D15CE4E92BA4433AE7EA578FE3E15 /* SRSecurityPolicy.m in Sources */, + 6135798CCD656C1B3A6EA5738A23190A /* SRSIMDHelpers.m in Sources */, + 7F30D73D46CAD9D21A25738B11A6DDDA /* SRURLUtilities.m in Sources */, + 4DC15DC2DF3C4BBA344C86B112C9C68B /* SRWebSocket.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 64CD60E8B295A57BEBDD5D87A91B92C2 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 380EA4E3E2A772560E3A0670B6406450 /* IQTextInputViewInfo.swift in Sources */, + EBDF215E376C3DF934F05D201833DDDC /* IQTextInputViewNotification.swift in Sources */, + 8BA91314914C4486DACA16122819AF1C /* IQTextInputViewNotification-dummy.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 6BA8B3ED1069309303992AA48F45596A /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 7D875C37EC81C736C5CCCE65FA1343A6 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + A98E7BF0F63124A6CB7FC2BB19B1DCBE /* IQKeyboardReturnManager.swift in Sources */, + AA3E0F99979D1B54EE9DCD8FE01816CF /* IQKeyboardReturnManager+UITextFieldDelegate.swift in Sources */, + 5BB666D0986483D015712429F9FF2674 /* IQKeyboardReturnManager+UITextViewDelegate.swift in Sources */, + B7D5043A8EC4C7C38F6C1688ACA93185 /* IQKeyboardReturnManager-dummy.m in Sources */, + 1B5995FCE11B496E4102AC5AD357249A /* IQTextInputViewInfoModel.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 85B610DD95380C789F1D31249548827B /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 7FCA9A032C39444BD74F08A5F3927839 /* Pods-Example-dummy.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 8BEB91B4B898532A40DB8A8E4B9A7792 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 93B28B68B9253146A5A3760F7F07BAB5 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - C945CB4EC42271D435BF23E7749BE6BF /* IQKeyboardConstants.swift in Sources */, - 01216C042B056FFF0FC7EE32A002C38A /* IQKeyboardCore-dummy.m in Sources */, - 378BD5280F6C07B11CF30B253D824972 /* IQKeyboardExtended.swift in Sources */, - A39FE5F72261B202CC63722A7B357206 /* IQTextInputView.swift in Sources */, - E1734E56DB48E6F238408C9A232C7051 /* UIView+Hierarchy.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - C03DAC5FE223C40E754D025088A86583 /* Sources */ = { + AD7CA0B1355EA84E4891403413E3DFF0 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - CB6B20426E6FD0E9970A1514451DE634 /* IQKeyboardReturnManager.swift in Sources */, - CD5C1FEDB9C4C34CB6E33A8A29D6ADA3 /* IQKeyboardReturnManager+UITextFieldDelegate.swift in Sources */, - 6B95FAC4BA6CBF1B1A33BFA00B521A1B /* IQKeyboardReturnManager+UITextViewDelegate.swift in Sources */, - D2AB53462493B2F2B42D070A1D7E54F2 /* IQKeyboardReturnManager-dummy.m in Sources */, - AEAE611FB5BD66AD2DBE734140C75C12 /* IQTextInputViewInfoModel.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - C68CA3D6E979C9C4060A446F5259ED37 /* Sources */ = { + B4A020AF82EF829322C86201C5C31A20 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( + 172B6B4E5550420B8131FBD62C975821 /* Toast.swift in Sources */, + A9B5C45C3C4D517B581E536DE846A078 /* Toast-Swift-dummy.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - D5F29D43747DC4C2D50FCDFC84D74555 /* Sources */ = { + B559610B7522BD1394961D290D7F9F24 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 636E78B80031F9F7AB749AA161B6E2E2 /* Array+Sort.swift in Sources */, - C2A846F101C12CC0E946ED40A0C2C33B /* IQDeepResponderContainerView.swift in Sources */, - 52B0DA7ED06413C2CC26D5CBF31F8352 /* IQKeyboardToolbarConfiguration.swift in Sources */, - 07F73EA22A5F4AA24C081D7739D6652C /* IQKeyboardToolbarConstants.swift in Sources */, - 0185547536624B4BC74DA12FF9D14085 /* IQKeyboardToolbarManager.swift in Sources */, - DF23DA299917B90E658EC4A4844A6464 /* IQKeyboardToolbarManager+Action.swift in Sources */, - 431168277840D15391CA0C4A59E81418 /* IQKeyboardToolbarManager+Debug.swift in Sources */, - A6C834360B4DDD0238C232ED530E46F9 /* IQKeyboardToolbarManager+Deprecated.swift in Sources */, - F4B6A7F0EDE77E5C46C63C4C2125D1D9 /* IQKeyboardToolbarManager+Internal.swift in Sources */, - 181E35D74C67FFDE9F8A5A870F5F60B1 /* IQKeyboardToolbarManager+Toolbar.swift in Sources */, - C00D516DBF4BD4AD8DC4CEF51C5DD8D0 /* IQKeyboardToolbarManager-dummy.m in Sources */, - 700B342543C8220BF44DC2F2448F70C6 /* UIView+Responders.swift in Sources */, - 98403A634D6A5D0ED83E9F41A1A84AB2 /* UIView+RespondersObjc.swift in Sources */, + F3D41915714BC875B1DC32F49293A8B6 /* Pods-DeepChordsSdk-dummy.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - DCEE5F908D05D08CB49810DF257309EB /* Sources */ = { + BF6F1816B0325207E7310ABC9FD05174 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - A1C2AAD2AF8E9E50DA1A078AC74400A9 /* IQKeyboardInfo.swift in Sources */, - 527FF29C02A555B242FEACAB7AE97287 /* IQKeyboardNotification.swift in Sources */, - 46ECF78EB1506D9CB79AA7D6D2383800 /* IQKeyboardNotification-dummy.m in Sources */, + C945CB4EC42271D435BF23E7749BE6BF /* IQKeyboardConstants.swift in Sources */, + 01216C042B056FFF0FC7EE32A002C38A /* IQKeyboardCore-dummy.m in Sources */, + 378BD5280F6C07B11CF30B253D824972 /* IQKeyboardExtended.swift in Sources */, + A39FE5F72261B202CC63722A7B357206 /* IQTextInputView.swift in Sources */, + E1734E56DB48E6F238408C9A232C7051 /* UIView+Hierarchy.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - E876810B24A176F2DA92BB88194B940A /* Sources */ = { + EDF3D1BC9513EF41FD61EEC958BC7E9C /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( + C749F0EFAF3D6CAE7C3C0B198665DFA5 /* IQTextView.swift in Sources */, + 737CE5F34A1D2B09DEF3038425A40877 /* IQTextView+Placeholderable.swift in Sources */, + 870DC4F98094456228D282F5F6200609 /* IQTextView-dummy.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -2376,198 +2731,227 @@ /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ - 02947DA73292D990EFA756FB0A80C749 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = IQKeyboardToolbarManager; - target = 020993F16DA5986DACE118349EBCE9E5 /* IQKeyboardToolbarManager */; - targetProxy = 45341E287C20B448A537FD1F897A05AE /* PBXContainerItemProxy */; - }; - 09F40E0499F54B795248F87197AB6C87 /* PBXTargetDependency */ = { + 032EC8AE715F3D13AD519BE9CA03294E /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = IQKeyboardCore; - target = F9A1BF709B7BA4C24A83664EB1E1C7D4 /* IQKeyboardCore */; - targetProxy = 1708F2EF228CBF9B2A6AB17CAF389904 /* PBXContainerItemProxy */; + name = "SnapKit-SnapKit_Privacy"; + target = 8A8DB685241263AFDF5E6B20FE67B93A /* SnapKit-SnapKit_Privacy */; + targetProxy = 4294839685D9EA7EF6090113DB9528A3 /* PBXContainerItemProxy */; }; - 15B6A297ECD7769C6179318011DA90D6 /* PBXTargetDependency */ = { + 0A6F859D7948477715DBD4333CD962F5 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = "IQKeyboardNotification-IQKeyboardNotification"; - target = 2B8FF445A5162845FAB9EC00FC92B694 /* IQKeyboardNotification-IQKeyboardNotification */; - targetProxy = 82B27615B5CA1FD97F7A8DBCAF5AA360 /* PBXContainerItemProxy */; + name = IQKeyboardNotification; + target = A26E6FD851C20D652B2755C1464A9990 /* IQKeyboardNotification */; + targetProxy = A24EA8C0FD67224523A2A8049A529730 /* PBXContainerItemProxy */; }; - 200D486E5AFC167189F7B905CE3DF002 /* PBXTargetDependency */ = { + 0BA497932D68F052CFDA60CB4325E823 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = IQTextView; - target = 12890DE3ABBC2CA295E108358D85EE69 /* IQTextView */; - targetProxy = 639BD9FF9BA7192485B4F917947EB7B7 /* PBXContainerItemProxy */; + name = IQKeyboardCore; + target = F9A1BF709B7BA4C24A83664EB1E1C7D4 /* IQKeyboardCore */; + targetProxy = C96EFF1386F982C542C2B03977A6FFD6 /* PBXContainerItemProxy */; }; - 2BEC92FE1E84E8E714624E30C39B0881 /* PBXTargetDependency */ = { + 0ED2A9B38A71F6850A959089852BDB0A /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "IQKeyboardManagerSwift-IQKeyboardManagerSwift"; target = 982A68D37F5DCBC1FC1FDC0BB2F0EB8E /* IQKeyboardManagerSwift-IQKeyboardManagerSwift */; - targetProxy = 6887DA1C8583123202CFE8CCD0114D70 /* PBXContainerItemProxy */; + targetProxy = 9A200DA2E207287B114783961A389F97 /* PBXContainerItemProxy */; }; - 2EF44922A154A83DC77DEF27F8A592CA /* PBXTargetDependency */ = { + 1EE6EF0BEC589B1038459A693177F2FE /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = IQTextInputViewNotification; - target = 283C1F2EA88CD4413165801A6748A48E /* IQTextInputViewNotification */; - targetProxy = D0E1C04F54B8D007689B29ABE9DD60E6 /* PBXContainerItemProxy */; + name = IQKeyboardReturnManager; + target = 0981F89DB5DA3FFCFFEBDE1F56287054 /* IQKeyboardReturnManager */; + targetProxy = 8031384E87ED727FE68F4242803FF742 /* PBXContainerItemProxy */; }; - 33022728CDB7938CE554AB26CE94CDF6 /* PBXTargetDependency */ = { + 1F9AF4725D5847BEA5D8B724D1A3B414 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = IQKeyboardToolbar; - target = F4FE17428FD0E607723A44F17231B7A1 /* IQKeyboardToolbar */; - targetProxy = D72F2F53A0379A93208CF4F91FD0C100 /* PBXContainerItemProxy */; + name = IQKeyboardCore; + target = F9A1BF709B7BA4C24A83664EB1E1C7D4 /* IQKeyboardCore */; + targetProxy = 94872272C37CF76A4C27D08B5EC60D6D /* PBXContainerItemProxy */; }; - 338A7F4AE97BA376056068B3DEF9B9C5 /* PBXTargetDependency */ = { + 24C84A614B93271254E3B59008326861 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = IQKeyboardNotification; - target = A26E6FD851C20D652B2755C1464A9990 /* IQKeyboardNotification */; - targetProxy = CA95E7DE958C9E11A32E3AD3AB58DFCD /* PBXContainerItemProxy */; + name = "Toast-Swift-Toast-Swift"; + target = C344E85893FCDEE5B70436E0A4A3472B /* Toast-Swift-Toast-Swift */; + targetProxy = 57A1C5DB51B6CD350C79C7B055A7F66B /* PBXContainerItemProxy */; }; - 373E4E2DF66A8F819F9594800BA0395D /* PBXTargetDependency */ = { + 36DB0F3DA574BD5B7448F2F28DFAA125 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = "SnapKit-SnapKit_Privacy"; - target = 8A8DB685241263AFDF5E6B20FE67B93A /* SnapKit-SnapKit_Privacy */; - targetProxy = 800F28AAF8E18E00B53F6C32799DAF22 /* PBXContainerItemProxy */; + name = "IQKeyboardToolbar-IQKeyboardToolbar"; + target = B247F77A0CD5E19C8187A9BA1EB58C09 /* IQKeyboardToolbar-IQKeyboardToolbar */; + targetProxy = 8581EB306F93FE5BF5504824295F3722 /* PBXContainerItemProxy */; }; - 3814D6DB9239F6304E655EB4172BC721 /* PBXTargetDependency */ = { + 3920F2A30AF54503207FB9C2E5ECC456 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = SnapKit; - target = 19622742EBA51E823D6DAE3F8CDBFAD4 /* SnapKit */; - targetProxy = 92B42FC203D9B7A77B162665E26974A4 /* PBXContainerItemProxy */; + name = IQTextInputViewNotification; + target = 283C1F2EA88CD4413165801A6748A48E /* IQTextInputViewNotification */; + targetProxy = 4BEE988A3465649375AC57D797ABF617 /* PBXContainerItemProxy */; }; - 4DA2D12F5FFEF9889288A454BDD7962A /* PBXTargetDependency */ = { + 3BDAAC90F533878935276DA626D3CE8F /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = IQKeyboardCore; - target = F9A1BF709B7BA4C24A83664EB1E1C7D4 /* IQKeyboardCore */; - targetProxy = C1038B841E8ED4F36EFA5B37AB9B3CC7 /* PBXContainerItemProxy */; + name = IQTextView; + target = 12890DE3ABBC2CA295E108358D85EE69 /* IQTextView */; + targetProxy = 43A509886BF66DE03AA2357743AC5769 /* PBXContainerItemProxy */; }; - 53142CF590266299583D7560D02A52BC /* PBXTargetDependency */ = { + 3E3639BC049B1894293B33F5B52D836A /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "Toast-Swift"; target = B990BD87169C76A3ED3FE8A9258D91A3 /* Toast-Swift */; - targetProxy = 18898E41CB6825094A12ED9DADD5CF80 /* PBXContainerItemProxy */; + targetProxy = 548AF3FE70CC81B2ABBAEF65818BA3A6 /* PBXContainerItemProxy */; }; - 5332DA368A2DC53BDEAD617F548A4218 /* PBXTargetDependency */ = { + 443ECCCC8495E109D669FC24E39EE5E7 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = IQKeyboardCore; - target = F9A1BF709B7BA4C24A83664EB1E1C7D4 /* IQKeyboardCore */; - targetProxy = 68FACE05FDF37AD58CB1E8DBD213317C /* PBXContainerItemProxy */; + name = IQKeyboardToolbarManager; + target = 020993F16DA5986DACE118349EBCE9E5 /* IQKeyboardToolbarManager */; + targetProxy = 186EFCD32F2BEEE1514385E97F48B014 /* PBXContainerItemProxy */; }; - 54C243D325925763DDE70362FEF9AB35 /* PBXTargetDependency */ = { + 486058C9A622B4968F720109A1CB425D /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "IQTextView-IQTextView"; + target = A6602BCAA6F4F932A586C41D0B7E019C /* IQTextView-IQTextView */; + targetProxy = F68560EF2AF1432CDC4EDEE224F0B10F /* PBXContainerItemProxy */; + }; + 54C3CEF0CE5F2ADC19CF09FA97EA2FCD /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = IQKeyboardToolbarManager; target = 020993F16DA5986DACE118349EBCE9E5 /* IQKeyboardToolbarManager */; - targetProxy = 0C35F82AFEAA8CEBC12C81F2D5248473 /* PBXContainerItemProxy */; + targetProxy = D3993F1F1D303ACFD97829D6D9115BA0 /* PBXContainerItemProxy */; }; - 5BC6280A3651E7CA1B1B64F1EACC399A /* PBXTargetDependency */ = { + 5A538984C0CD4E2FF0B2AAA2EF368D0F /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = "IQKeyboardToolbarManager-IQKeyboardToolbarManager"; - target = 7C5613175BBC4BF67E36DB4FBEBC01D0 /* IQKeyboardToolbarManager-IQKeyboardToolbarManager */; - targetProxy = 588F3D8DD7248AC48468DA05E1605928 /* PBXContainerItemProxy */; + name = IQKeyboardCore; + target = F9A1BF709B7BA4C24A83664EB1E1C7D4 /* IQKeyboardCore */; + targetProxy = 925132ADAAA2012B51EAE2C13D1BD31F /* PBXContainerItemProxy */; }; - 5FBD91502BE2FA8A62798C4838D849FC /* PBXTargetDependency */ = { + 6A012670364ED3DE97C5B8D570417F17 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = IQKeyboardToolbar; target = F4FE17428FD0E607723A44F17231B7A1 /* IQKeyboardToolbar */; - targetProxy = C3F103E89D84D1B12D2D9F7EEACD1156 /* PBXContainerItemProxy */; + targetProxy = 6130D9140D152F57AA543D42CA625298 /* PBXContainerItemProxy */; }; - 7018FAC1C4C71DA57E769F3F34B0CB30 /* PBXTargetDependency */ = { + 77F02D151BFA0BF2A8184E8F7040E02E /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = IQTextInputViewNotification; target = 283C1F2EA88CD4413165801A6748A48E /* IQTextInputViewNotification */; - targetProxy = 702967F91B360154587EAF7A3E6E5FE0 /* PBXContainerItemProxy */; + targetProxy = D7076AE16282F5B2F87DAD903E05C6C4 /* PBXContainerItemProxy */; }; - 72F6A0C66EDDCB6E6AE5234030A2C917 /* PBXTargetDependency */ = { + 7C197C0E14E357C0482C5CECC1F7DAE7 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = IQKeyboardCore; - target = F9A1BF709B7BA4C24A83664EB1E1C7D4 /* IQKeyboardCore */; - targetProxy = 00F0DC7B61401655CA2B4F07931B44B9 /* PBXContainerItemProxy */; + name = IQTextView; + target = 12890DE3ABBC2CA295E108358D85EE69 /* IQTextView */; + targetProxy = 1E3FD4E83C3BACBC0EE2DD7F457AA6E9 /* PBXContainerItemProxy */; }; - 73C88ECD747110C67B6A0CC0052D1B9F /* PBXTargetDependency */ = { + 806811E474B5E127D48FE9CA32DCFB26 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = IQTextInputViewNotification; - target = 283C1F2EA88CD4413165801A6748A48E /* IQTextInputViewNotification */; - targetProxy = EE7C8A2F9421920413779D8E1F207DF7 /* PBXContainerItemProxy */; + name = IQKeyboardToolbar; + target = F4FE17428FD0E607723A44F17231B7A1 /* IQKeyboardToolbar */; + targetProxy = 9D53E47458385470A91D7295E48E0FD6 /* PBXContainerItemProxy */; }; - 7E1FE66F1BED650B6A5DE3DF65EDC42E /* PBXTargetDependency */ = { + 9143EFF5B329D660A0398F7391E5D055 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = IQKeyboardReturnManager; - target = 0981F89DB5DA3FFCFFEBDE1F56287054 /* IQKeyboardReturnManager */; - targetProxy = A69D14A28BD4F695373B894B83DC79B0 /* PBXContainerItemProxy */; + name = SocketRocket; + target = 1948D0B63D2CF6A48E18B0B292BC6091 /* SocketRocket */; + targetProxy = BACED4BB4D08C0B382C214709ABE6A91 /* PBXContainerItemProxy */; }; - 81530010EBBCEC9F063C726BEE96FA2E /* PBXTargetDependency */ = { + 9AB32C8C254D84A755461731E5E31837 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = "Toast-Swift-Toast-Swift"; - target = C344E85893FCDEE5B70436E0A4A3472B /* Toast-Swift-Toast-Swift */; - targetProxy = E59379C6B9F90539CF5EDC2160A4A44E /* PBXContainerItemProxy */; + name = IQKeyboardToolbar; + target = F4FE17428FD0E607723A44F17231B7A1 /* IQKeyboardToolbar */; + targetProxy = 7D69ABF84486EAFB55FB87BC9B44D3F6 /* PBXContainerItemProxy */; }; - 8B0E935F1FCD5AC1ECE059D205656EFA /* PBXTargetDependency */ = { + 9BE1A2A7D5E6D44833CB0C78085D940D /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "IQKeyboardReturnManager-IQKeyboardReturnManager"; target = 88810798DA63A2F6611B0970EA276DEC /* IQKeyboardReturnManager-IQKeyboardReturnManager */; - targetProxy = 32D05F1AB78AE48011D6E9E0203F4737 /* PBXContainerItemProxy */; + targetProxy = C7AFFBB48EEA1AF602657886DA4FE905 /* PBXContainerItemProxy */; }; - 8DFAED47E5AE24BD1D2815781962AC04 /* PBXTargetDependency */ = { + 9CF7EA505D7A9CAA62AFDC4457D80AEF /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = IQKeyboardNotification; - target = A26E6FD851C20D652B2755C1464A9990 /* IQKeyboardNotification */; - targetProxy = 706CD7E6D12A879E778A910FA680C4E3 /* PBXContainerItemProxy */; + name = "IQKeyboardCore-IQKeyboardCore"; + target = EEE261386011CDF271BE289F73FF5959 /* IQKeyboardCore-IQKeyboardCore */; + targetProxy = 1CC338AE066CE11E9D4C832A727D9C61 /* PBXContainerItemProxy */; }; - 9200AD276048BFDABA6E145FE1119A6B /* PBXTargetDependency */ = { + AEFFF3B21972CDA23989650CB0D06DC1 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = IQTextView; - target = 12890DE3ABBC2CA295E108358D85EE69 /* IQTextView */; - targetProxy = 372862B6668E1DB2CCD2D7423C0B38B8 /* PBXContainerItemProxy */; + name = IQKeyboardCore; + target = F9A1BF709B7BA4C24A83664EB1E1C7D4 /* IQKeyboardCore */; + targetProxy = D3C8D19228BDBCB03280ABF945D775BA /* PBXContainerItemProxy */; }; - AD528895684234E9D494E1C650E3E98D /* PBXTargetDependency */ = { + BAE9291352BA3C02DCD824BD9455EEFB /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = IQKeyboardManagerSwift; - target = B490E7485944099E16C9CBD79119D1D4 /* IQKeyboardManagerSwift */; - targetProxy = 48FBB4A28EC9FA70CCC88ED390275D62 /* PBXContainerItemProxy */; + name = "IQKeyboardNotification-IQKeyboardNotification"; + target = 2B8FF445A5162845FAB9EC00FC92B694 /* IQKeyboardNotification-IQKeyboardNotification */; + targetProxy = 64F6091A60F53F5A90BEE2C59126E133 /* PBXContainerItemProxy */; }; - B209B2433F1107B4974A261EEA588622 /* PBXTargetDependency */ = { + C2F5904EDA280BF704E19BEC7E450D7C /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "IQTextInputViewNotification-IQTextInputViewNotification"; target = 4502C7427440BEB17A50C0BF6E638A85 /* IQTextInputViewNotification-IQTextInputViewNotification */; - targetProxy = 38C3E138887D23F98FA6B811D30BFFD6 /* PBXContainerItemProxy */; + targetProxy = D0E89F4255608F3B229AA3E8DFD93CF9 /* PBXContainerItemProxy */; }; - CE9A17D3B75B6414A3AB270568EB58C1 /* PBXTargetDependency */ = { + CACDD982D78D0FBB2772B70DB888F8B4 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = IQKeyboardNotification; + target = A26E6FD851C20D652B2755C1464A9990 /* IQKeyboardNotification */; + targetProxy = 6795B29B74A0DFB983C8C121DAC73B8F /* PBXContainerItemProxy */; + }; + DDA643E4BF2CFF13D6B0D25A5C59AB5F /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = SocketRocket; + target = 1948D0B63D2CF6A48E18B0B292BC6091 /* SocketRocket */; + targetProxy = 7C1DC3C44CB9ED8404023CBE11C3A841 /* PBXContainerItemProxy */; + }; + E4562E3C97AF6073F7BD53F0DA943866 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = IQKeyboardReturnManager; target = 0981F89DB5DA3FFCFFEBDE1F56287054 /* IQKeyboardReturnManager */; - targetProxy = FE3107107D5B289341BD608148335E3B /* PBXContainerItemProxy */; + targetProxy = 32B49C1963D38D5E1E60E037311DCDEF /* PBXContainerItemProxy */; }; - DE1669B73B7601256AAF289C2AD11837 /* PBXTargetDependency */ = { + F2792ADD73FF2795D46955194D6DB5FA /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = "IQKeyboardToolbar-IQKeyboardToolbar"; - target = B247F77A0CD5E19C8187A9BA1EB58C09 /* IQKeyboardToolbar-IQKeyboardToolbar */; - targetProxy = 7A006DA632FA3C0EBCCE76968F857A1A /* PBXContainerItemProxy */; + name = IQKeyboardManagerSwift; + target = B490E7485944099E16C9CBD79119D1D4 /* IQKeyboardManagerSwift */; + targetProxy = 2DE1780C07830F70EB974DDA0E002280 /* PBXContainerItemProxy */; }; - E14B48494A76DA8D39B61F7DCFF351AE /* PBXTargetDependency */ = { + F7852222FD7DD0B21BC78B245F2045A0 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = IQKeyboardToolbar; - target = F4FE17428FD0E607723A44F17231B7A1 /* IQKeyboardToolbar */; - targetProxy = 89E300EC786E5D7673A67AC97D2EE1EE /* PBXContainerItemProxy */; + name = IQTextInputViewNotification; + target = 283C1F2EA88CD4413165801A6748A48E /* IQTextInputViewNotification */; + targetProxy = 6C9C732B28DF0513A21CE6E248F89072 /* PBXContainerItemProxy */; }; - F803C1642D0E7F6A76B1CE2EAA8F61F5 /* PBXTargetDependency */ = { + FC49926069485756B05C5F53750496AD /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = "IQTextView-IQTextView"; - target = A6602BCAA6F4F932A586C41D0B7E019C /* IQTextView-IQTextView */; - targetProxy = E7856FD48E3CAE02F84A77F821511AAB /* PBXContainerItemProxy */; + name = SnapKit; + target = 19622742EBA51E823D6DAE3F8CDBFAD4 /* SnapKit */; + targetProxy = 92C92FF2930D007DABF544DC7AC08060 /* PBXContainerItemProxy */; }; - F98C8014CD89FC2B8D539B51D3905AA2 /* PBXTargetDependency */ = { + FDF0C9122AFE5F4537D84EB5B5EA2535 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = "IQKeyboardCore-IQKeyboardCore"; - target = EEE261386011CDF271BE289F73FF5959 /* IQKeyboardCore-IQKeyboardCore */; - targetProxy = 1BBEB339A4BA742D13B5D2CCEEB77C70 /* PBXContainerItemProxy */; + name = "IQKeyboardToolbarManager-IQKeyboardToolbarManager"; + target = 7C5613175BBC4BF67E36DB4FBEBC01D0 /* IQKeyboardToolbarManager-IQKeyboardToolbarManager */; + targetProxy = D72B40330912494BEDC722CCB167FF77 /* PBXContainerItemProxy */; }; /* End PBXTargetDependency section */ /* Begin XCBuildConfiguration section */ - 0436E45C9EB8DF6391E9F25BAF1F9CD6 /* Debug */ = { + 1B2F38B82BEBA44EF2EE45BF7A44037A /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = F9E2D89710990C7046505C7864F45ED7 /* IQTextInputViewNotification.debug.xcconfig */; + baseConfigurationReference = 5AF0EBE9A79115D36EF40E456919D63B /* IQKeyboardManagerSwift.release.xcconfig */; + buildSettings = { + CODE_SIGNING_ALLOWED = NO; + CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/IQKeyboardManagerSwift"; + IBSC_MODULE = IQKeyboardManagerSwift; + INFOPLIST_FILE = "Target Support Files/IQKeyboardManagerSwift/ResourceBundle-IQKeyboardManagerSwift-IQKeyboardManagerSwift-Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + PRODUCT_NAME = IQKeyboardManagerSwift; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + WRAPPER_EXTENSION = bundle; + }; + name = Release; + }; + 1D0FBA28D44BDD4502A8E31DAEABF97D /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 78882EBBF9DB9EAA48F3FFBF14D1E0B5 /* IQKeyboardToolbar.release.xcconfig */; buildSettings = { CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -2579,9 +2963,10 @@ DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; ENABLE_MODULE_VERIFIER = NO; - GCC_PREFIX_HEADER = "Target Support Files/IQTextInputViewNotification/IQTextInputViewNotification-prefix.pch"; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + GCC_PREFIX_HEADER = "Target Support Files/IQKeyboardToolbar/IQKeyboardToolbar-prefix.pch"; GENERATE_INFOPLIST_FILE = NO; - INFOPLIST_FILE = "Target Support Files/IQTextInputViewNotification/IQTextInputViewNotification-Info.plist"; + INFOPLIST_FILE = "Target Support Files/IQKeyboardToolbar/IQKeyboardToolbar-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 13.0; LD_RUNPATH_SEARCH_PATHS = ( @@ -2589,23 +2974,24 @@ "@executable_path/Frameworks", "@loader_path/Frameworks", ); - MODULEMAP_FILE = "Target Support Files/IQTextInputViewNotification/IQTextInputViewNotification.modulemap"; - PRODUCT_MODULE_NAME = IQTextInputViewNotification; - PRODUCT_NAME = IQTextInputViewNotification; + MODULEMAP_FILE = "Target Support Files/IQKeyboardToolbar/IQKeyboardToolbar.modulemap"; + PRODUCT_MODULE_NAME = IQKeyboardToolbar; + PRODUCT_NAME = IQKeyboardToolbar; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; SWIFT_INSTALL_OBJC_HEADER = YES; SWIFT_VERSION = 5.9; TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; - name = Debug; + name = Release; }; - 09CE94D09C78B819D706D0A31E0FDEBF /* Release */ = { + 1F029A7E58A02CC7BF83B726ECB24B27 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 243410B9535472556EA4BB6DBC133A0D /* Pods-Example.release.xcconfig */; + baseConfigurationReference = 455A2446E1A8F92123FBE90A1D4B8D0B /* Pods-Example.debug.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; CLANG_ENABLE_OBJC_WEAK = NO; @@ -2637,32 +3023,31 @@ SDKROOT = iphoneos; SKIP_INSTALL = YES; TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; - name = Release; + name = Debug; }; - 1758ED8F6B52B20715F3E56C0D65C039 /* Debug */ = { + 298BF47A1ADB1CEC5A9281F125EF0788 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 5AD8C08E06D5E01990AA80544C0901BA /* IQKeyboardToolbarManager.debug.xcconfig */; + baseConfigurationReference = 1515EB933E55F8DF1275984150311F6F /* IQTextInputViewNotification.release.xcconfig */; buildSettings = { CODE_SIGNING_ALLOWED = NO; - CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/IQKeyboardToolbarManager"; - IBSC_MODULE = IQKeyboardToolbarManager; - INFOPLIST_FILE = "Target Support Files/IQKeyboardToolbarManager/ResourceBundle-IQKeyboardToolbarManager-IQKeyboardToolbarManager-Info.plist"; + CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/IQTextInputViewNotification"; + IBSC_MODULE = IQTextInputViewNotification; + INFOPLIST_FILE = "Target Support Files/IQTextInputViewNotification/ResourceBundle-IQTextInputViewNotification-IQTextInputViewNotification-Info.plist"; IPHONEOS_DEPLOYMENT_TARGET = 13.0; - PRODUCT_NAME = IQKeyboardToolbarManager; + PRODUCT_NAME = IQTextInputViewNotification; SDKROOT = iphoneos; SKIP_INSTALL = YES; TARGETED_DEVICE_FAMILY = "1,2"; WRAPPER_EXTENSION = bundle; }; - name = Debug; + name = Release; }; 2C4EBC8097D4D07427A18EC0F79738BE /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = EA1EDABA1BE078F9646EF88F4C71CBFA /* IQKeyboardManagerSwift.release.xcconfig */; + baseConfigurationReference = 5AF0EBE9A79115D36EF40E456919D63B /* IQKeyboardManagerSwift.release.xcconfig */; buildSettings = { CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -2699,9 +3084,9 @@ }; name = Release; }; - 2CB0B04E637225A7D7C266292DDC0AFC /* Release */ = { + 3016B50127E54871902147B82FABA968 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = B057F1FE2FF50734827A356AFE1C3763 /* IQTextView.release.xcconfig */; + baseConfigurationReference = 8981CA762CD2FDB68D15FEEA091439B5 /* IQKeyboardToolbarManager.release.xcconfig */; buildSettings = { CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -2713,9 +3098,9 @@ DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; ENABLE_MODULE_VERIFIER = NO; - GCC_PREFIX_HEADER = "Target Support Files/IQTextView/IQTextView-prefix.pch"; + GCC_PREFIX_HEADER = "Target Support Files/IQKeyboardToolbarManager/IQKeyboardToolbarManager-prefix.pch"; GENERATE_INFOPLIST_FILE = NO; - INFOPLIST_FILE = "Target Support Files/IQTextView/IQTextView-Info.plist"; + INFOPLIST_FILE = "Target Support Files/IQKeyboardToolbarManager/IQKeyboardToolbarManager-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 13.0; LD_RUNPATH_SEARCH_PATHS = ( @@ -2723,9 +3108,9 @@ "@executable_path/Frameworks", "@loader_path/Frameworks", ); - MODULEMAP_FILE = "Target Support Files/IQTextView/IQTextView.modulemap"; - PRODUCT_MODULE_NAME = IQTextView; - PRODUCT_NAME = IQTextView; + MODULEMAP_FILE = "Target Support Files/IQKeyboardToolbarManager/IQKeyboardToolbarManager.modulemap"; + PRODUCT_MODULE_NAME = IQKeyboardToolbarManager; + PRODUCT_NAME = IQKeyboardToolbarManager; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; @@ -2738,16 +3123,50 @@ }; name = Release; }; - 2EEB6B3864995CE01531195A8FEFFA95 /* Release */ = { + 34DA1E3BEA25E012EF708AE69C0C9193 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = EA1EDABA1BE078F9646EF88F4C71CBFA /* IQKeyboardManagerSwift.release.xcconfig */; + baseConfigurationReference = 02E139B151EDFA1F4F63EA119D2269C7 /* Toast-Swift.debug.xcconfig */; buildSettings = { CODE_SIGNING_ALLOWED = NO; - CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/IQKeyboardManagerSwift"; - IBSC_MODULE = IQKeyboardManagerSwift; - INFOPLIST_FILE = "Target Support Files/IQKeyboardManagerSwift/ResourceBundle-IQKeyboardManagerSwift-IQKeyboardManagerSwift-Info.plist"; + CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/Toast-Swift"; + IBSC_MODULE = Toast_Swift; + INFOPLIST_FILE = "Target Support Files/Toast-Swift/ResourceBundle-Toast-Swift-Toast-Swift-Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; + PRODUCT_NAME = "Toast-Swift"; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + WRAPPER_EXTENSION = bundle; + }; + name = Debug; + }; + 37AF8DF61716FB1975DE10B4998E2A87 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 79E6154EEE25D08664ACFE66C69DDFA0 /* Toast-Swift.release.xcconfig */; + buildSettings = { + CODE_SIGNING_ALLOWED = NO; + CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/Toast-Swift"; + IBSC_MODULE = Toast_Swift; + INFOPLIST_FILE = "Target Support Files/Toast-Swift/ResourceBundle-Toast-Swift-Toast-Swift-Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; + PRODUCT_NAME = "Toast-Swift"; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + WRAPPER_EXTENSION = bundle; + }; + name = Release; + }; + 397EF464FF32EAD44C05D7CE58A2C382 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = D5434748DD18D8B60013ABF3FFC5B95F /* IQTextView.release.xcconfig */; + buildSettings = { + CODE_SIGNING_ALLOWED = NO; + CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/IQTextView"; + IBSC_MODULE = IQTextView; + INFOPLIST_FILE = "Target Support Files/IQTextView/ResourceBundle-IQTextView-IQTextView-Info.plist"; IPHONEOS_DEPLOYMENT_TARGET = 13.0; - PRODUCT_NAME = IQKeyboardManagerSwift; + PRODUCT_NAME = IQTextView; SDKROOT = iphoneos; SKIP_INSTALL = YES; TARGETED_DEVICE_FAMILY = "1,2"; @@ -2755,9 +3174,26 @@ }; name = Release; }; - 303BB1842F2941ED3B727E7A2F3A81AE /* Debug */ = { + 47C2D0929EA82A67E33FEB42776A6CAC /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 99A357D21311D4CAEF91E8D645B9EF1B /* IQKeyboardNotification.debug.xcconfig */; + baseConfigurationReference = 99B82533878EEF9F0E2FB3560695FF8A /* IQTextView.debug.xcconfig */; + buildSettings = { + CODE_SIGNING_ALLOWED = NO; + CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/IQTextView"; + IBSC_MODULE = IQTextView; + INFOPLIST_FILE = "Target Support Files/IQTextView/ResourceBundle-IQTextView-IQTextView-Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + PRODUCT_NAME = IQTextView; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + WRAPPER_EXTENSION = bundle; + }; + name = Debug; + }; + 4E28A2258944850B8D0D598586B5E92B /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 1AB8D5FD6175CD8FCC7153B71E6DD77A /* IQKeyboardNotification.release.xcconfig */; buildSettings = { CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -2789,21 +3225,22 @@ SWIFT_INSTALL_OBJC_HEADER = YES; SWIFT_VERSION = 5.9; TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; - name = Debug; + name = Release; }; - 33F9EB014D388A982E18E89A18728E6E /* Debug */ = { + 5392BBBB9A595846BCE334B1D7D1D3B7 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = C8482B39147BBBDB16D770864BDE1CD5 /* IQTextView.debug.xcconfig */; + baseConfigurationReference = F528CE7CB37911E316CD1F5622E5B931 /* IQKeyboardReturnManager.debug.xcconfig */; buildSettings = { CODE_SIGNING_ALLOWED = NO; - CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/IQTextView"; - IBSC_MODULE = IQTextView; - INFOPLIST_FILE = "Target Support Files/IQTextView/ResourceBundle-IQTextView-IQTextView-Info.plist"; + CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/IQKeyboardReturnManager"; + IBSC_MODULE = IQKeyboardReturnManager; + INFOPLIST_FILE = "Target Support Files/IQKeyboardReturnManager/ResourceBundle-IQKeyboardReturnManager-IQKeyboardReturnManager-Info.plist"; IPHONEOS_DEPLOYMENT_TARGET = 13.0; - PRODUCT_NAME = IQTextView; + PRODUCT_NAME = IQKeyboardReturnManager; SDKROOT = iphoneos; SKIP_INSTALL = YES; TARGETED_DEVICE_FAMILY = "1,2"; @@ -2811,26 +3248,9 @@ }; name = Debug; }; - 439F5FEBC31ACC3A2D307865C8FEA945 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 0BBF04F3ACCC6329B881C1679E0733BB /* IQKeyboardToolbar.release.xcconfig */; - buildSettings = { - CODE_SIGNING_ALLOWED = NO; - CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/IQKeyboardToolbar"; - IBSC_MODULE = IQKeyboardToolbar; - INFOPLIST_FILE = "Target Support Files/IQKeyboardToolbar/ResourceBundle-IQKeyboardToolbar-IQKeyboardToolbar-Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 13.0; - PRODUCT_NAME = IQKeyboardToolbar; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - WRAPPER_EXTENSION = bundle; - }; - name = Release; - }; - 45EE463F8D495300A81BC1D7C7029EF8 /* Release */ = { + 544532B6E87F836C1A3288A60D36F726 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = DFCB9340841640E5C5B330DA1777A78E /* IQKeyboardNotification.release.xcconfig */; + baseConfigurationReference = D5434748DD18D8B60013ABF3FFC5B95F /* IQTextView.release.xcconfig */; buildSettings = { CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -2842,10 +3262,9 @@ DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; ENABLE_MODULE_VERIFIER = NO; - ENABLE_USER_SCRIPT_SANDBOXING = NO; - GCC_PREFIX_HEADER = "Target Support Files/IQKeyboardNotification/IQKeyboardNotification-prefix.pch"; + GCC_PREFIX_HEADER = "Target Support Files/IQTextView/IQTextView-prefix.pch"; GENERATE_INFOPLIST_FILE = NO; - INFOPLIST_FILE = "Target Support Files/IQKeyboardNotification/IQKeyboardNotification-Info.plist"; + INFOPLIST_FILE = "Target Support Files/IQTextView/IQTextView-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 13.0; LD_RUNPATH_SEARCH_PATHS = ( @@ -2853,9 +3272,9 @@ "@executable_path/Frameworks", "@loader_path/Frameworks", ); - MODULEMAP_FILE = "Target Support Files/IQKeyboardNotification/IQKeyboardNotification.modulemap"; - PRODUCT_MODULE_NAME = IQKeyboardNotification; - PRODUCT_NAME = IQKeyboardNotification; + MODULEMAP_FILE = "Target Support Files/IQTextView/IQTextView.modulemap"; + PRODUCT_MODULE_NAME = IQTextView; + PRODUCT_NAME = IQTextView; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; @@ -2868,67 +3287,132 @@ }; name = Release; }; - 4878B258B51AEB40FC40CDEA8B2FB579 /* Debug */ = { + 5F0B975EFB983C4E1131BDA3D8ED0683 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = F9E2D89710990C7046505C7864F45ED7 /* IQTextInputViewNotification.debug.xcconfig */; + baseConfigurationReference = 78F95F4E86380B049117A093BFC1CD7B /* IQTextInputViewNotification.debug.xcconfig */; buildSettings = { - CODE_SIGNING_ALLOWED = NO; - CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/IQTextInputViewNotification"; - IBSC_MODULE = IQTextInputViewNotification; - INFOPLIST_FILE = "Target Support Files/IQTextInputViewNotification/ResourceBundle-IQTextInputViewNotification-IQTextInputViewNotification-Info.plist"; + 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"; + ENABLE_MODULE_VERIFIER = NO; + GCC_PREFIX_HEADER = "Target Support Files/IQTextInputViewNotification/IQTextInputViewNotification-prefix.pch"; + GENERATE_INFOPLIST_FILE = NO; + INFOPLIST_FILE = "Target Support Files/IQTextInputViewNotification/IQTextInputViewNotification-Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 13.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MODULEMAP_FILE = "Target Support Files/IQTextInputViewNotification/IQTextInputViewNotification.modulemap"; + PRODUCT_MODULE_NAME = IQTextInputViewNotification; PRODUCT_NAME = IQTextInputViewNotification; SDKROOT = iphoneos; SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_INSTALL_OBJC_HEADER = YES; + SWIFT_VERSION = 5.9; TARGETED_DEVICE_FAMILY = "1,2"; - WRAPPER_EXTENSION = bundle; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; }; name = Debug; }; - 4EA7C9F9C6A6C1BC846F6B88E1D270E7 /* Debug */ = { + 60B198379BE0F80DDD5483A405A8AC5F /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 8E4ED9BFDF71764CBE3D2C853E329AC8 /* IQKeyboardCore.debug.xcconfig */; + baseConfigurationReference = 159C74980AC55D136945F073F6CEDC14 /* IQKeyboardToolbar.debug.xcconfig */; buildSettings = { - CODE_SIGNING_ALLOWED = NO; - CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/IQKeyboardCore"; - IBSC_MODULE = IQKeyboardCore; - INFOPLIST_FILE = "Target Support Files/IQKeyboardCore/ResourceBundle-IQKeyboardCore-IQKeyboardCore-Info.plist"; + 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"; + ENABLE_MODULE_VERIFIER = NO; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + GCC_PREFIX_HEADER = "Target Support Files/IQKeyboardToolbar/IQKeyboardToolbar-prefix.pch"; + GENERATE_INFOPLIST_FILE = NO; + INFOPLIST_FILE = "Target Support Files/IQKeyboardToolbar/IQKeyboardToolbar-Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 13.0; - PRODUCT_NAME = IQKeyboardCore; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MODULEMAP_FILE = "Target Support Files/IQKeyboardToolbar/IQKeyboardToolbar.modulemap"; + PRODUCT_MODULE_NAME = IQKeyboardToolbar; + PRODUCT_NAME = IQKeyboardToolbar; SDKROOT = iphoneos; SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_INSTALL_OBJC_HEADER = YES; + SWIFT_VERSION = 5.9; TARGETED_DEVICE_FAMILY = "1,2"; - WRAPPER_EXTENSION = bundle; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; }; name = Debug; }; - 5BF8D5770321101E8BCE20E68D48D452 /* Release */ = { + 60BF7D5EEEA720FA876075D448A3EEFF /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = B057F1FE2FF50734827A356AFE1C3763 /* IQTextView.release.xcconfig */; + baseConfigurationReference = 9F272A689E05B2AA0C0ED18AD4383DDE /* SocketRocket.debug.xcconfig */; buildSettings = { - CODE_SIGNING_ALLOWED = NO; - CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/IQTextView"; - IBSC_MODULE = IQTextView; - INFOPLIST_FILE = "Target Support Files/IQTextView/ResourceBundle-IQTextView-IQTextView-Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 13.0; - PRODUCT_NAME = IQTextView; + 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"; + ENABLE_MODULE_VERIFIER = NO; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + GCC_PREFIX_HEADER = "Target Support Files/SocketRocket/SocketRocket-prefix.pch"; + GENERATE_INFOPLIST_FILE = NO; + INFOPLIST_FILE = "Target Support Files/SocketRocket/SocketRocket-Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MODULEMAP_FILE = "Target Support Files/SocketRocket/SocketRocket.modulemap"; + PRODUCT_MODULE_NAME = SocketRocket; + PRODUCT_NAME = SocketRocket; SDKROOT = iphoneos; SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_INSTALL_OBJC_HEADER = YES; + SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; - WRAPPER_EXTENSION = bundle; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; }; - name = Release; + name = Debug; }; - 6223877B37A9B25479A11E9E87353487 /* Release */ = { + 63E9BC6B186B49FDCAB4170225DF66FE /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = DFCB9340841640E5C5B330DA1777A78E /* IQKeyboardNotification.release.xcconfig */; + baseConfigurationReference = 914B3416C83998074DDAB130CB468706 /* IQKeyboardReturnManager.release.xcconfig */; buildSettings = { CODE_SIGNING_ALLOWED = NO; - CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/IQKeyboardNotification"; - IBSC_MODULE = IQKeyboardNotification; - INFOPLIST_FILE = "Target Support Files/IQKeyboardNotification/ResourceBundle-IQKeyboardNotification-IQKeyboardNotification-Info.plist"; + CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/IQKeyboardReturnManager"; + IBSC_MODULE = IQKeyboardReturnManager; + INFOPLIST_FILE = "Target Support Files/IQKeyboardReturnManager/ResourceBundle-IQKeyboardReturnManager-IQKeyboardReturnManager-Info.plist"; IPHONEOS_DEPLOYMENT_TARGET = 13.0; - PRODUCT_NAME = IQKeyboardNotification; + PRODUCT_NAME = IQKeyboardReturnManager; SDKROOT = iphoneos; SKIP_INSTALL = YES; TARGETED_DEVICE_FAMILY = "1,2"; @@ -2936,26 +3420,26 @@ }; name = Release; }; - 657C7A7169C5A2EF0F21623CA69BD274 /* Release */ = { + 6458EACFEBDCB49A35654564C62A5CDB /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 7181351BD01340D69B83002F942C6238 /* Toast-Swift.release.xcconfig */; + baseConfigurationReference = 87F05B4E0307C30EB4FC212724C8F157 /* IQKeyboardNotification.debug.xcconfig */; buildSettings = { CODE_SIGNING_ALLOWED = NO; - CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/Toast-Swift"; - IBSC_MODULE = Toast_Swift; - INFOPLIST_FILE = "Target Support Files/Toast-Swift/ResourceBundle-Toast-Swift-Toast-Swift-Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; - PRODUCT_NAME = "Toast-Swift"; + CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/IQKeyboardNotification"; + IBSC_MODULE = IQKeyboardNotification; + INFOPLIST_FILE = "Target Support Files/IQKeyboardNotification/ResourceBundle-IQKeyboardNotification-IQKeyboardNotification-Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + PRODUCT_NAME = IQKeyboardNotification; SDKROOT = iphoneos; SKIP_INSTALL = YES; TARGETED_DEVICE_FAMILY = "1,2"; WRAPPER_EXTENSION = bundle; }; - name = Release; + name = Debug; }; - 67A316390B0B6C034F9941202A414C7F /* Release */ = { + 64801BD417925AB9BA656A8FA9DC5CB6 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 81A4530B3DFED1CF5D377C4320215A4A /* IQKeyboardReturnManager.release.xcconfig */; + baseConfigurationReference = DCDF74B5DEAC5E25CFC4D9F9B16EFBEB /* IQKeyboardToolbarManager.debug.xcconfig */; buildSettings = { CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -2967,10 +3451,9 @@ DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; ENABLE_MODULE_VERIFIER = NO; - ENABLE_USER_SCRIPT_SANDBOXING = NO; - GCC_PREFIX_HEADER = "Target Support Files/IQKeyboardReturnManager/IQKeyboardReturnManager-prefix.pch"; + GCC_PREFIX_HEADER = "Target Support Files/IQKeyboardToolbarManager/IQKeyboardToolbarManager-prefix.pch"; GENERATE_INFOPLIST_FILE = NO; - INFOPLIST_FILE = "Target Support Files/IQKeyboardReturnManager/IQKeyboardReturnManager-Info.plist"; + INFOPLIST_FILE = "Target Support Files/IQKeyboardToolbarManager/IQKeyboardToolbarManager-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 13.0; LD_RUNPATH_SEARCH_PATHS = ( @@ -2978,48 +3461,47 @@ "@executable_path/Frameworks", "@loader_path/Frameworks", ); - MODULEMAP_FILE = "Target Support Files/IQKeyboardReturnManager/IQKeyboardReturnManager.modulemap"; - PRODUCT_MODULE_NAME = IQKeyboardReturnManager; - PRODUCT_NAME = IQKeyboardReturnManager; + MODULEMAP_FILE = "Target Support Files/IQKeyboardToolbarManager/IQKeyboardToolbarManager.modulemap"; + PRODUCT_MODULE_NAME = IQKeyboardToolbarManager; + PRODUCT_NAME = IQKeyboardToolbarManager; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; SWIFT_INSTALL_OBJC_HEADER = YES; SWIFT_VERSION = 5.9; TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; - name = Release; + name = Debug; }; - 718BA108A72B1FB5B7A74346285E653B /* Debug */ = { + 74ED47C1AB733A447D6619EAD98BAD82 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 99A357D21311D4CAEF91E8D645B9EF1B /* IQKeyboardNotification.debug.xcconfig */; + baseConfigurationReference = AA485EB92636FB68E91AF3FCC1CE9C5E /* IQKeyboardCore.release.xcconfig */; buildSettings = { CODE_SIGNING_ALLOWED = NO; - CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/IQKeyboardNotification"; - IBSC_MODULE = IQKeyboardNotification; - INFOPLIST_FILE = "Target Support Files/IQKeyboardNotification/ResourceBundle-IQKeyboardNotification-IQKeyboardNotification-Info.plist"; + CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/IQKeyboardCore"; + IBSC_MODULE = IQKeyboardCore; + INFOPLIST_FILE = "Target Support Files/IQKeyboardCore/ResourceBundle-IQKeyboardCore-IQKeyboardCore-Info.plist"; IPHONEOS_DEPLOYMENT_TARGET = 13.0; - PRODUCT_NAME = IQKeyboardNotification; + PRODUCT_NAME = IQKeyboardCore; SDKROOT = iphoneos; SKIP_INSTALL = YES; TARGETED_DEVICE_FAMILY = "1,2"; WRAPPER_EXTENSION = bundle; }; - name = Debug; + name = Release; }; - 75A58E29852A96ED7B9ABD0D60180272 /* Release */ = { + 7AA36B6CE3B0C3B48B651A2702CCFC98 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 3579ECE9098CFE0A18918D8F0F6BBC16 /* IQKeyboardCore.release.xcconfig */; + baseConfigurationReference = 4B6ABE8E0C199299C26E4B5977886B71 /* SnapKit.release.xcconfig */; buildSettings = { CODE_SIGNING_ALLOWED = NO; - CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/IQKeyboardCore"; - IBSC_MODULE = IQKeyboardCore; - INFOPLIST_FILE = "Target Support Files/IQKeyboardCore/ResourceBundle-IQKeyboardCore-IQKeyboardCore-Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 13.0; - PRODUCT_NAME = IQKeyboardCore; + CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/SnapKit"; + IBSC_MODULE = SnapKit; + INFOPLIST_FILE = "Target Support Files/SnapKit/ResourceBundle-SnapKit_Privacy-SnapKit-Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; + PRODUCT_NAME = SnapKit_Privacy; SDKROOT = iphoneos; SKIP_INSTALL = YES; TARGETED_DEVICE_FAMILY = "1,2"; @@ -3027,9 +3509,49 @@ }; name = Release; }; + 7D3C700E017BEA5E61F542AD4EBE06C7 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = B3AA4CA7BB409A5191DBD08356FE703A /* Pods-Example.release.xcconfig */; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; + CLANG_ENABLE_OBJC_WEAK = NO; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_MODULE_VERIFIER = NO; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + INFOPLIST_FILE = "Target Support Files/Pods-Example/Pods-Example-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-Example/Pods-Example.modulemap"; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PODS_ROOT = "$(SRCROOT)"; + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; 7E48D17D0469F73801BBDAF1F20755F2 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 7181351BD01340D69B83002F942C6238 /* Toast-Swift.release.xcconfig */; + baseConfigurationReference = 79E6154EEE25D08664ACFE66C69DDFA0 /* Toast-Swift.release.xcconfig */; buildSettings = { CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -3067,23 +3589,6 @@ }; name = Release; }; - 832343784050169DE494CBA51327CBFC /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 81C8D08EE2B731D17BFDF51DB75C7FD4 /* IQTextInputViewNotification.release.xcconfig */; - buildSettings = { - CODE_SIGNING_ALLOWED = NO; - CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/IQTextInputViewNotification"; - IBSC_MODULE = IQTextInputViewNotification; - INFOPLIST_FILE = "Target Support Files/IQTextInputViewNotification/ResourceBundle-IQTextInputViewNotification-IQTextInputViewNotification-Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 13.0; - PRODUCT_NAME = IQTextInputViewNotification; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - WRAPPER_EXTENSION = bundle; - }; - name = Release; - }; 8DE5143C03248BB6CD542DE3963D6F3A /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { @@ -3150,27 +3655,11 @@ }; name = Debug; }; - 8F70FC038D658E7A6D2BAEADCC022929 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = C8C1B3AFD0A52650DF90D553FC72040D /* IQKeyboardReturnManager.debug.xcconfig */; - buildSettings = { - CODE_SIGNING_ALLOWED = NO; - CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/IQKeyboardReturnManager"; - IBSC_MODULE = IQKeyboardReturnManager; - INFOPLIST_FILE = "Target Support Files/IQKeyboardReturnManager/ResourceBundle-IQKeyboardReturnManager-IQKeyboardReturnManager-Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 13.0; - PRODUCT_NAME = IQKeyboardReturnManager; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - WRAPPER_EXTENSION = bundle; - }; - name = Debug; - }; - 961ED2BDA5D875288E2797D7EE1B40B5 /* Debug */ = { + 8E2D63C2146204D6E9066CFE984F976A /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = EF780280B45D05B3F28826EF5C144118 /* IQKeyboardToolbar.debug.xcconfig */; + baseConfigurationReference = 91511868D1335C41FD84563EF906555C /* Pods-DeepChordsSdk.release.xcconfig */; buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -3182,9 +3671,7 @@ DYLIB_INSTALL_NAME_BASE = "@rpath"; ENABLE_MODULE_VERIFIER = NO; ENABLE_USER_SCRIPT_SANDBOXING = NO; - GCC_PREFIX_HEADER = "Target Support Files/IQKeyboardToolbar/IQKeyboardToolbar-prefix.pch"; - GENERATE_INFOPLIST_FILE = NO; - INFOPLIST_FILE = "Target Support Files/IQKeyboardToolbar/IQKeyboardToolbar-Info.plist"; + INFOPLIST_FILE = "Target Support Files/Pods-DeepChordsSdk/Pods-DeepChordsSdk-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 13.0; LD_RUNPATH_SEARCH_PATHS = ( @@ -3192,61 +3679,42 @@ "@executable_path/Frameworks", "@loader_path/Frameworks", ); - MODULEMAP_FILE = "Target Support Files/IQKeyboardToolbar/IQKeyboardToolbar.modulemap"; - PRODUCT_MODULE_NAME = IQKeyboardToolbar; - PRODUCT_NAME = IQKeyboardToolbar; + MACH_O_TYPE = staticlib; + MODULEMAP_FILE = "Target Support Files/Pods-DeepChordsSdk/Pods-DeepChordsSdk.modulemap"; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PODS_ROOT = "$(SRCROOT)"; + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; SDKROOT = iphoneos; SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_INSTALL_OBJC_HEADER = YES; - SWIFT_VERSION = 5.9; TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; - name = Debug; + name = Release; }; - 99E8CDE0070568463EEBA85DF258F59D /* Debug */ = { + 8F408C586919D67ACCB4002B798BF1CE /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = C8482B39147BBBDB16D770864BDE1CD5 /* IQTextView.debug.xcconfig */; + baseConfigurationReference = 319AC1D7C71149C2DD5EF02DECE3F511 /* SnapKit.debug.xcconfig */; buildSettings = { - CLANG_ENABLE_OBJC_WEAK = NO; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_MODULE_VERIFIER = NO; - GCC_PREFIX_HEADER = "Target Support Files/IQTextView/IQTextView-prefix.pch"; - GENERATE_INFOPLIST_FILE = NO; - INFOPLIST_FILE = "Target Support Files/IQTextView/IQTextView-Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 13.0; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - MODULEMAP_FILE = "Target Support Files/IQTextView/IQTextView.modulemap"; - PRODUCT_MODULE_NAME = IQTextView; - PRODUCT_NAME = IQTextView; + CODE_SIGNING_ALLOWED = NO; + CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/SnapKit"; + IBSC_MODULE = SnapKit; + INFOPLIST_FILE = "Target Support Files/SnapKit/ResourceBundle-SnapKit_Privacy-SnapKit-Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; + PRODUCT_NAME = SnapKit_Privacy; SDKROOT = iphoneos; SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_INSTALL_OBJC_HEADER = YES; - SWIFT_VERSION = 5.9; TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; + WRAPPER_EXTENSION = bundle; }; name = Debug; }; 9D0D7572FEDA4CC9E75E7387846AFE57 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 67BCA4DE5DC478383D44A61FADBBB1A1 /* SnapKit.debug.xcconfig */; + baseConfigurationReference = 319AC1D7C71149C2DD5EF02DECE3F511 /* SnapKit.debug.xcconfig */; buildSettings = { CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -3345,9 +3813,48 @@ }; name = Release; }; + 9E6F8A334BBF6110E0F8360AA5245522 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 87F05B4E0307C30EB4FC212724C8F157 /* IQKeyboardNotification.debug.xcconfig */; + buildSettings = { + CLANG_ENABLE_OBJC_WEAK = NO; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_MODULE_VERIFIER = NO; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + GCC_PREFIX_HEADER = "Target Support Files/IQKeyboardNotification/IQKeyboardNotification-prefix.pch"; + GENERATE_INFOPLIST_FILE = NO; + INFOPLIST_FILE = "Target Support Files/IQKeyboardNotification/IQKeyboardNotification-Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MODULEMAP_FILE = "Target Support Files/IQKeyboardNotification/IQKeyboardNotification.modulemap"; + PRODUCT_MODULE_NAME = IQKeyboardNotification; + PRODUCT_NAME = IQKeyboardNotification; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_INSTALL_OBJC_HEADER = YES; + SWIFT_VERSION = 5.9; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; A0F0EEB28C54A3D861769B31AB6A09BC /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 8E4ED9BFDF71764CBE3D2C853E329AC8 /* IQKeyboardCore.debug.xcconfig */; + baseConfigurationReference = 9374F8A0206251FC7979A888F803B656 /* IQKeyboardCore.debug.xcconfig */; buildSettings = { CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -3384,16 +3891,33 @@ }; name = Debug; }; - A386F313035F8AEDA425825F12F0C578 /* Debug */ = { + B5986331465FE771133F16D76C24C707 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 67BCA4DE5DC478383D44A61FADBBB1A1 /* SnapKit.debug.xcconfig */; + baseConfigurationReference = 9374F8A0206251FC7979A888F803B656 /* IQKeyboardCore.debug.xcconfig */; buildSettings = { CODE_SIGNING_ALLOWED = NO; - CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/SnapKit"; - IBSC_MODULE = SnapKit; - INFOPLIST_FILE = "Target Support Files/SnapKit/ResourceBundle-SnapKit_Privacy-SnapKit-Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; - PRODUCT_NAME = SnapKit_Privacy; + CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/IQKeyboardCore"; + IBSC_MODULE = IQKeyboardCore; + INFOPLIST_FILE = "Target Support Files/IQKeyboardCore/ResourceBundle-IQKeyboardCore-IQKeyboardCore-Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + PRODUCT_NAME = IQKeyboardCore; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + WRAPPER_EXTENSION = bundle; + }; + name = Debug; + }; + BA84D2E7DDC5F76ACF1327798B6F924C /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 78F95F4E86380B049117A093BFC1CD7B /* IQTextInputViewNotification.debug.xcconfig */; + buildSettings = { + CODE_SIGNING_ALLOWED = NO; + CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/IQTextInputViewNotification"; + IBSC_MODULE = IQTextInputViewNotification; + INFOPLIST_FILE = "Target Support Files/IQTextInputViewNotification/ResourceBundle-IQTextInputViewNotification-IQTextInputViewNotification-Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + PRODUCT_NAME = IQTextInputViewNotification; SDKROOT = iphoneos; SKIP_INSTALL = YES; TARGETED_DEVICE_FAMILY = "1,2"; @@ -3401,9 +3925,9 @@ }; name = Debug; }; - A4CA0F05DBCCA70498F8972AE1638AF0 /* Debug */ = { + BAD20131EC29650C6737E66854A3A9FD /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 5AD8C08E06D5E01990AA80544C0901BA /* IQKeyboardToolbarManager.debug.xcconfig */; + baseConfigurationReference = 4B6ABE8E0C199299C26E4B5977886B71 /* SnapKit.release.xcconfig */; buildSettings = { CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -3415,50 +3939,52 @@ DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; ENABLE_MODULE_VERIFIER = NO; - GCC_PREFIX_HEADER = "Target Support Files/IQKeyboardToolbarManager/IQKeyboardToolbarManager-prefix.pch"; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + GCC_PREFIX_HEADER = "Target Support Files/SnapKit/SnapKit-prefix.pch"; GENERATE_INFOPLIST_FILE = NO; - INFOPLIST_FILE = "Target Support Files/IQKeyboardToolbarManager/IQKeyboardToolbarManager-Info.plist"; + INFOPLIST_FILE = "Target Support Files/SnapKit/SnapKit-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 13.0; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", "@loader_path/Frameworks", ); - MODULEMAP_FILE = "Target Support Files/IQKeyboardToolbarManager/IQKeyboardToolbarManager.modulemap"; - PRODUCT_MODULE_NAME = IQKeyboardToolbarManager; - PRODUCT_NAME = IQKeyboardToolbarManager; + MODULEMAP_FILE = "Target Support Files/SnapKit/SnapKit.modulemap"; + PRODUCT_MODULE_NAME = SnapKit; + PRODUCT_NAME = SnapKit; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; SWIFT_INSTALL_OBJC_HEADER = YES; - SWIFT_VERSION = 5.9; + SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; - name = Debug; + name = Release; }; - B7895874B07E7E5BCAEFAA1837F27EF3 /* Debug */ = { + BFE9B004B8D63FFCD9138A8CD9D03F13 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = B9E5B7ACA1C4831DB0FC6F6DC415806B /* IQKeyboardManagerSwift.debug.xcconfig */; + baseConfigurationReference = 1AB8D5FD6175CD8FCC7153B71E6DD77A /* IQKeyboardNotification.release.xcconfig */; buildSettings = { - CODE_SIGNING_ALLOWED = NO; - CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/IQKeyboardManagerSwift"; - IBSC_MODULE = IQKeyboardManagerSwift; - INFOPLIST_FILE = "Target Support Files/IQKeyboardManagerSwift/ResourceBundle-IQKeyboardManagerSwift-IQKeyboardManagerSwift-Info.plist"; + CODE_SIGNING_ALLOWED = NO; + CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/IQKeyboardNotification"; + IBSC_MODULE = IQKeyboardNotification; + INFOPLIST_FILE = "Target Support Files/IQKeyboardNotification/ResourceBundle-IQKeyboardNotification-IQKeyboardNotification-Info.plist"; IPHONEOS_DEPLOYMENT_TARGET = 13.0; - PRODUCT_NAME = IQKeyboardManagerSwift; + PRODUCT_NAME = IQKeyboardNotification; SDKROOT = iphoneos; SKIP_INSTALL = YES; TARGETED_DEVICE_FAMILY = "1,2"; WRAPPER_EXTENSION = bundle; }; - name = Debug; + name = Release; }; - BAD20131EC29650C6737E66854A3A9FD /* Release */ = { + CC57776530A62F3C6BCEE299CDB87503 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 969958CCDF4F680B2CEA8E4DD27B72C7 /* SnapKit.release.xcconfig */; + baseConfigurationReference = 99B82533878EEF9F0E2FB3560695FF8A /* IQTextView.debug.xcconfig */; buildSettings = { CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -3470,35 +3996,33 @@ DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; ENABLE_MODULE_VERIFIER = NO; - ENABLE_USER_SCRIPT_SANDBOXING = NO; - GCC_PREFIX_HEADER = "Target Support Files/SnapKit/SnapKit-prefix.pch"; + GCC_PREFIX_HEADER = "Target Support Files/IQTextView/IQTextView-prefix.pch"; GENERATE_INFOPLIST_FILE = NO; - INFOPLIST_FILE = "Target Support Files/SnapKit/SnapKit-Info.plist"; + INFOPLIST_FILE = "Target Support Files/IQTextView/IQTextView-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", "@loader_path/Frameworks", ); - MODULEMAP_FILE = "Target Support Files/SnapKit/SnapKit.modulemap"; - PRODUCT_MODULE_NAME = SnapKit; - PRODUCT_NAME = SnapKit; + MODULEMAP_FILE = "Target Support Files/IQTextView/IQTextView.modulemap"; + PRODUCT_MODULE_NAME = IQTextView; + PRODUCT_NAME = IQTextView; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; SWIFT_INSTALL_OBJC_HEADER = YES; - SWIFT_VERSION = 5.0; + SWIFT_VERSION = 5.9; TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; - name = Release; + name = Debug; }; - C00AEF1ACF87E7DDD73096FFE0DF3DFC /* Release */ = { + D0C03895DE80B8549E8C1D167D22E44D /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 81C8D08EE2B731D17BFDF51DB75C7FD4 /* IQTextInputViewNotification.release.xcconfig */; + baseConfigurationReference = 5084335EF29A15EB6C31DFB1ACA15349 /* IQKeyboardManagerSwift.debug.xcconfig */; buildSettings = { CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -3510,9 +4034,9 @@ DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; ENABLE_MODULE_VERIFIER = NO; - GCC_PREFIX_HEADER = "Target Support Files/IQTextInputViewNotification/IQTextInputViewNotification-prefix.pch"; + GCC_PREFIX_HEADER = "Target Support Files/IQKeyboardManagerSwift/IQKeyboardManagerSwift-prefix.pch"; GENERATE_INFOPLIST_FILE = NO; - INFOPLIST_FILE = "Target Support Files/IQTextInputViewNotification/IQTextInputViewNotification-Info.plist"; + INFOPLIST_FILE = "Target Support Files/IQKeyboardManagerSwift/IQKeyboardManagerSwift-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 13.0; LD_RUNPATH_SEARCH_PATHS = ( @@ -3520,31 +4044,47 @@ "@executable_path/Frameworks", "@loader_path/Frameworks", ); - MODULEMAP_FILE = "Target Support Files/IQTextInputViewNotification/IQTextInputViewNotification.modulemap"; - PRODUCT_MODULE_NAME = IQTextInputViewNotification; - PRODUCT_NAME = IQTextInputViewNotification; + MODULEMAP_FILE = "Target Support Files/IQKeyboardManagerSwift/IQKeyboardManagerSwift.modulemap"; + PRODUCT_MODULE_NAME = IQKeyboardManagerSwift; + PRODUCT_NAME = IQKeyboardManagerSwift; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; SWIFT_INSTALL_OBJC_HEADER = YES; SWIFT_VERSION = 5.9; TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; - name = Release; + name = Debug; }; - CA21D4707F9652B1F7D5AC7E3553C72A /* Debug */ = { + D0D91380BCB9BC9A0529D56C8ED5FFE9 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 8BC190548C4E12A7F2A38DB809F88934 /* Toast-Swift.debug.xcconfig */; + baseConfigurationReference = 159C74980AC55D136945F073F6CEDC14 /* IQKeyboardToolbar.debug.xcconfig */; buildSettings = { CODE_SIGNING_ALLOWED = NO; - CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/Toast-Swift"; - IBSC_MODULE = Toast_Swift; - INFOPLIST_FILE = "Target Support Files/Toast-Swift/ResourceBundle-Toast-Swift-Toast-Swift-Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; - PRODUCT_NAME = "Toast-Swift"; + CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/IQKeyboardToolbar"; + IBSC_MODULE = IQKeyboardToolbar; + INFOPLIST_FILE = "Target Support Files/IQKeyboardToolbar/ResourceBundle-IQKeyboardToolbar-IQKeyboardToolbar-Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + PRODUCT_NAME = IQKeyboardToolbar; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + WRAPPER_EXTENSION = bundle; + }; + name = Debug; + }; + D138F4694413B3332A4486830C10613A /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = DCDF74B5DEAC5E25CFC4D9F9B16EFBEB /* IQKeyboardToolbarManager.debug.xcconfig */; + buildSettings = { + CODE_SIGNING_ALLOWED = NO; + CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/IQKeyboardToolbarManager"; + IBSC_MODULE = IQKeyboardToolbarManager; + INFOPLIST_FILE = "Target Support Files/IQKeyboardToolbarManager/ResourceBundle-IQKeyboardToolbarManager-IQKeyboardToolbarManager-Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + PRODUCT_NAME = IQKeyboardToolbarManager; SDKROOT = iphoneos; SKIP_INSTALL = YES; TARGETED_DEVICE_FAMILY = "1,2"; @@ -3552,9 +4092,9 @@ }; name = Debug; }; - CB50F8D87C35047B5204B6391E831FC0 /* Release */ = { + D29AEDD40B3E8B1E6FC8C1D23E9FE854 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 5BEBDD0CF7D42D6159D8E2EF081BD93B /* IQKeyboardToolbarManager.release.xcconfig */; + baseConfigurationReference = 1515EB933E55F8DF1275984150311F6F /* IQTextInputViewNotification.release.xcconfig */; buildSettings = { CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -3566,9 +4106,9 @@ DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; ENABLE_MODULE_VERIFIER = NO; - GCC_PREFIX_HEADER = "Target Support Files/IQKeyboardToolbarManager/IQKeyboardToolbarManager-prefix.pch"; + GCC_PREFIX_HEADER = "Target Support Files/IQTextInputViewNotification/IQTextInputViewNotification-prefix.pch"; GENERATE_INFOPLIST_FILE = NO; - INFOPLIST_FILE = "Target Support Files/IQKeyboardToolbarManager/IQKeyboardToolbarManager-Info.plist"; + INFOPLIST_FILE = "Target Support Files/IQTextInputViewNotification/IQTextInputViewNotification-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 13.0; LD_RUNPATH_SEARCH_PATHS = ( @@ -3576,9 +4116,9 @@ "@executable_path/Frameworks", "@loader_path/Frameworks", ); - MODULEMAP_FILE = "Target Support Files/IQKeyboardToolbarManager/IQKeyboardToolbarManager.modulemap"; - PRODUCT_MODULE_NAME = IQKeyboardToolbarManager; - PRODUCT_NAME = IQKeyboardToolbarManager; + MODULEMAP_FILE = "Target Support Files/IQTextInputViewNotification/IQTextInputViewNotification.modulemap"; + PRODUCT_MODULE_NAME = IQTextInputViewNotification; + PRODUCT_NAME = IQTextInputViewNotification; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; @@ -3591,26 +4131,9 @@ }; name = Release; }; - CDB2E7CCB93A0C84B3ED2EE4E44526EE /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 5BEBDD0CF7D42D6159D8E2EF081BD93B /* IQKeyboardToolbarManager.release.xcconfig */; - buildSettings = { - CODE_SIGNING_ALLOWED = NO; - CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/IQKeyboardToolbarManager"; - IBSC_MODULE = IQKeyboardToolbarManager; - INFOPLIST_FILE = "Target Support Files/IQKeyboardToolbarManager/ResourceBundle-IQKeyboardToolbarManager-IQKeyboardToolbarManager-Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 13.0; - PRODUCT_NAME = IQKeyboardToolbarManager; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - WRAPPER_EXTENSION = bundle; - }; - name = Release; - }; - CF2F14AD97C90819B114482F4C9A2A35 /* Debug */ = { + DDBEDC2B6C48735DEA3B7E0F66D166CA /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = B45138496B85A072654D1D0F8EBBEDE5 /* Pods-Example.debug.xcconfig */; + baseConfigurationReference = 4BF6C697C2EB03CCBCE9CA841EA31F47 /* Pods-DeepChordsSdk.debug.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; CLANG_ENABLE_OBJC_WEAK = NO; @@ -3624,7 +4147,7 @@ DYLIB_INSTALL_NAME_BASE = "@rpath"; ENABLE_MODULE_VERIFIER = NO; ENABLE_USER_SCRIPT_SANDBOXING = NO; - INFOPLIST_FILE = "Target Support Files/Pods-Example/Pods-Example-Info.plist"; + INFOPLIST_FILE = "Target Support Files/Pods-DeepChordsSdk/Pods-DeepChordsSdk-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 13.0; LD_RUNPATH_SEARCH_PATHS = ( @@ -3633,7 +4156,7 @@ "@loader_path/Frameworks", ); MACH_O_TYPE = staticlib; - MODULEMAP_FILE = "Target Support Files/Pods-Example/Pods-Example.modulemap"; + MODULEMAP_FILE = "Target Support Files/Pods-DeepChordsSdk/Pods-DeepChordsSdk.modulemap"; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PODS_ROOT = "$(SRCROOT)"; @@ -3647,9 +4170,9 @@ }; name = Debug; }; - D0C03895DE80B8549E8C1D167D22E44D /* Debug */ = { + E06F70F13B606F0979741BCAFE1F1003 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = B9E5B7ACA1C4831DB0FC6F6DC415806B /* IQKeyboardManagerSwift.debug.xcconfig */; + baseConfigurationReference = 02E139B151EDFA1F4F63EA119D2269C7 /* Toast-Swift.debug.xcconfig */; buildSettings = { CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -3661,67 +4184,34 @@ DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; ENABLE_MODULE_VERIFIER = NO; - GCC_PREFIX_HEADER = "Target Support Files/IQKeyboardManagerSwift/IQKeyboardManagerSwift-prefix.pch"; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + GCC_PREFIX_HEADER = "Target Support Files/Toast-Swift/Toast-Swift-prefix.pch"; GENERATE_INFOPLIST_FILE = NO; - INFOPLIST_FILE = "Target Support Files/IQKeyboardManagerSwift/IQKeyboardManagerSwift-Info.plist"; + INFOPLIST_FILE = "Target Support Files/Toast-Swift/Toast-Swift-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 13.0; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", "@loader_path/Frameworks", ); - MODULEMAP_FILE = "Target Support Files/IQKeyboardManagerSwift/IQKeyboardManagerSwift.modulemap"; - PRODUCT_MODULE_NAME = IQKeyboardManagerSwift; - PRODUCT_NAME = IQKeyboardManagerSwift; + MODULEMAP_FILE = "Target Support Files/Toast-Swift/Toast-Swift.modulemap"; + PRODUCT_MODULE_NAME = Toast_Swift; + PRODUCT_NAME = Toast_Swift; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; SWIFT_INSTALL_OBJC_HEADER = YES; - SWIFT_VERSION = 5.9; + SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; name = Debug; }; - D633326018EF82C1AD5D8F9823F5227A /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 81A4530B3DFED1CF5D377C4320215A4A /* IQKeyboardReturnManager.release.xcconfig */; - buildSettings = { - CODE_SIGNING_ALLOWED = NO; - CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/IQKeyboardReturnManager"; - IBSC_MODULE = IQKeyboardReturnManager; - INFOPLIST_FILE = "Target Support Files/IQKeyboardReturnManager/ResourceBundle-IQKeyboardReturnManager-IQKeyboardReturnManager-Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 13.0; - PRODUCT_NAME = IQKeyboardReturnManager; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - WRAPPER_EXTENSION = bundle; - }; - name = Release; - }; - DAE1B07B00732B27AE659B77B614B293 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = EF780280B45D05B3F28826EF5C144118 /* IQKeyboardToolbar.debug.xcconfig */; - buildSettings = { - CODE_SIGNING_ALLOWED = NO; - CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/IQKeyboardToolbar"; - IBSC_MODULE = IQKeyboardToolbar; - INFOPLIST_FILE = "Target Support Files/IQKeyboardToolbar/ResourceBundle-IQKeyboardToolbar-IQKeyboardToolbar-Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 13.0; - PRODUCT_NAME = IQKeyboardToolbar; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - WRAPPER_EXTENSION = bundle; - }; - name = Debug; - }; - E06F70F13B606F0979741BCAFE1F1003 /* Debug */ = { + E0AD5D7D6A14E0A5CE237F7AA2103EDA /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 8BC190548C4E12A7F2A38DB809F88934 /* Toast-Swift.debug.xcconfig */; + baseConfigurationReference = 10CAAD795A45AB49A0EE4D6805AB7A1F /* SocketRocket.release.xcconfig */; buildSettings = { CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -3734,33 +4224,34 @@ DYLIB_INSTALL_NAME_BASE = "@rpath"; ENABLE_MODULE_VERIFIER = NO; ENABLE_USER_SCRIPT_SANDBOXING = NO; - GCC_PREFIX_HEADER = "Target Support Files/Toast-Swift/Toast-Swift-prefix.pch"; + GCC_PREFIX_HEADER = "Target Support Files/SocketRocket/SocketRocket-prefix.pch"; GENERATE_INFOPLIST_FILE = NO; - INFOPLIST_FILE = "Target Support Files/Toast-Swift/Toast-Swift-Info.plist"; + INFOPLIST_FILE = "Target Support Files/SocketRocket/SocketRocket-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", "@loader_path/Frameworks", ); - MODULEMAP_FILE = "Target Support Files/Toast-Swift/Toast-Swift.modulemap"; - PRODUCT_MODULE_NAME = Toast_Swift; - PRODUCT_NAME = Toast_Swift; + MODULEMAP_FILE = "Target Support Files/SocketRocket/SocketRocket.modulemap"; + PRODUCT_MODULE_NAME = SocketRocket; + PRODUCT_NAME = SocketRocket; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; SWIFT_INSTALL_OBJC_HEADER = YES; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; - name = Debug; + name = Release; }; - E96018F78EE6B223E0978C8AA11A36EE /* Debug */ = { + E5E79CB0A013D41033C3D1F195F2D511 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = C8C1B3AFD0A52650DF90D553FC72040D /* IQKeyboardReturnManager.debug.xcconfig */; + baseConfigurationReference = F528CE7CB37911E316CD1F5622E5B931 /* IQKeyboardReturnManager.debug.xcconfig */; buildSettings = { CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -3797,9 +4288,43 @@ }; name = Debug; }; - E9AC192FD9FADF1E1EEB0E4B2C599E57 /* Release */ = { + EA45E75E18A3088D3BECAB8A13C8E1FA /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 5084335EF29A15EB6C31DFB1ACA15349 /* IQKeyboardManagerSwift.debug.xcconfig */; + buildSettings = { + CODE_SIGNING_ALLOWED = NO; + CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/IQKeyboardManagerSwift"; + IBSC_MODULE = IQKeyboardManagerSwift; + INFOPLIST_FILE = "Target Support Files/IQKeyboardManagerSwift/ResourceBundle-IQKeyboardManagerSwift-IQKeyboardManagerSwift-Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + PRODUCT_NAME = IQKeyboardManagerSwift; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + WRAPPER_EXTENSION = bundle; + }; + name = Debug; + }; + ED5F5D7028C0D13C5D338346ADB64D2D /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 78882EBBF9DB9EAA48F3FFBF14D1E0B5 /* IQKeyboardToolbar.release.xcconfig */; + buildSettings = { + CODE_SIGNING_ALLOWED = NO; + CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/IQKeyboardToolbar"; + IBSC_MODULE = IQKeyboardToolbar; + INFOPLIST_FILE = "Target Support Files/IQKeyboardToolbar/ResourceBundle-IQKeyboardToolbar-IQKeyboardToolbar-Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + PRODUCT_NAME = IQKeyboardToolbar; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + WRAPPER_EXTENSION = bundle; + }; + name = Release; + }; + EFB4FCFDA1169E42C1B49870156BCDDD /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 0BBF04F3ACCC6329B881C1679E0733BB /* IQKeyboardToolbar.release.xcconfig */; + baseConfigurationReference = 914B3416C83998074DDAB130CB468706 /* IQKeyboardReturnManager.release.xcconfig */; buildSettings = { CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -3812,9 +4337,9 @@ DYLIB_INSTALL_NAME_BASE = "@rpath"; ENABLE_MODULE_VERIFIER = NO; ENABLE_USER_SCRIPT_SANDBOXING = NO; - GCC_PREFIX_HEADER = "Target Support Files/IQKeyboardToolbar/IQKeyboardToolbar-prefix.pch"; + GCC_PREFIX_HEADER = "Target Support Files/IQKeyboardReturnManager/IQKeyboardReturnManager-prefix.pch"; GENERATE_INFOPLIST_FILE = NO; - INFOPLIST_FILE = "Target Support Files/IQKeyboardToolbar/IQKeyboardToolbar-Info.plist"; + INFOPLIST_FILE = "Target Support Files/IQKeyboardReturnManager/IQKeyboardReturnManager-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 13.0; LD_RUNPATH_SEARCH_PATHS = ( @@ -3822,9 +4347,9 @@ "@executable_path/Frameworks", "@loader_path/Frameworks", ); - MODULEMAP_FILE = "Target Support Files/IQKeyboardToolbar/IQKeyboardToolbar.modulemap"; - PRODUCT_MODULE_NAME = IQKeyboardToolbar; - PRODUCT_NAME = IQKeyboardToolbar; + MODULEMAP_FILE = "Target Support Files/IQKeyboardReturnManager/IQKeyboardReturnManager.modulemap"; + PRODUCT_MODULE_NAME = IQKeyboardReturnManager; + PRODUCT_NAME = IQKeyboardReturnManager; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; @@ -3837,9 +4362,26 @@ }; name = Release; }; + F08D20936BD3635F1144C8ABE3CED471 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 8981CA762CD2FDB68D15FEEA091439B5 /* IQKeyboardToolbarManager.release.xcconfig */; + buildSettings = { + CODE_SIGNING_ALLOWED = NO; + CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/IQKeyboardToolbarManager"; + IBSC_MODULE = IQKeyboardToolbarManager; + INFOPLIST_FILE = "Target Support Files/IQKeyboardToolbarManager/ResourceBundle-IQKeyboardToolbarManager-IQKeyboardToolbarManager-Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + PRODUCT_NAME = IQKeyboardToolbarManager; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + WRAPPER_EXTENSION = bundle; + }; + name = Release; + }; FC91939289B6972DE0D1E8C4EDF5A399 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 3579ECE9098CFE0A18918D8F0F6BBC16 /* IQKeyboardCore.release.xcconfig */; + baseConfigurationReference = AA485EB92636FB68E91AF3FCC1CE9C5E /* IQKeyboardCore.release.xcconfig */; buildSettings = { CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -3877,67 +4419,59 @@ }; name = Release; }; - FF13205D485A6284D16D6C04D8AEBA9D /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 969958CCDF4F680B2CEA8E4DD27B72C7 /* SnapKit.release.xcconfig */; - buildSettings = { - CODE_SIGNING_ALLOWED = NO; - CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/SnapKit"; - IBSC_MODULE = SnapKit; - INFOPLIST_FILE = "Target Support Files/SnapKit/ResourceBundle-SnapKit_Privacy-SnapKit-Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; - PRODUCT_NAME = SnapKit_Privacy; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - WRAPPER_EXTENSION = bundle; - }; - name = Release; - }; /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ - 1BAF802141BB7A8BEA3D0389842F0DCD /* Build configuration list for PBXNativeTarget "IQKeyboardCore-IQKeyboardCore" */ = { + 08CCC0BB4F7D4BA07752DF404F6EDD9A /* Build configuration list for PBXNativeTarget "IQKeyboardReturnManager-IQKeyboardReturnManager" */ = { isa = XCConfigurationList; buildConfigurations = ( - 4EA7C9F9C6A6C1BC846F6B88E1D270E7 /* Debug */, - 75A58E29852A96ED7B9ABD0D60180272 /* Release */, + 5392BBBB9A595846BCE334B1D7D1D3B7 /* Debug */, + 63E9BC6B186B49FDCAB4170225DF66FE /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 1C2730F463E4268BFDE6BAF62C9A487F /* Build configuration list for PBXNativeTarget "IQKeyboardNotification-IQKeyboardNotification" */ = { + 0DA28833D7A042B27FBAEDF85A1C1D74 /* Build configuration list for PBXNativeTarget "IQTextInputViewNotification" */ = { isa = XCConfigurationList; buildConfigurations = ( - 718BA108A72B1FB5B7A74346285E653B /* Debug */, - 6223877B37A9B25479A11E9E87353487 /* Release */, + 5F0B975EFB983C4E1131BDA3D8ED0683 /* Debug */, + D29AEDD40B3E8B1E6FC8C1D23E9FE854 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 2C11E195FECCAE83CCDC9E8F3DDC7F1C /* Build configuration list for PBXNativeTarget "Toast-Swift-Toast-Swift" */ = { + 2D29A227B6A83F5A542054A8A8043BAA /* Build configuration list for PBXNativeTarget "SnapKit-SnapKit_Privacy" */ = { isa = XCConfigurationList; buildConfigurations = ( - CA21D4707F9652B1F7D5AC7E3553C72A /* Debug */, - 657C7A7169C5A2EF0F21623CA69BD274 /* Release */, + 8F408C586919D67ACCB4002B798BF1CE /* Debug */, + 7AA36B6CE3B0C3B48B651A2702CCFC98 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 3208C0F97FCB948C4F12E81E25FFEAF9 /* Build configuration list for PBXNativeTarget "IQKeyboardManagerSwift" */ = { + 2DEB3984BC37C7B27AE0091EC7509142 /* Build configuration list for PBXNativeTarget "Toast-Swift-Toast-Swift" */ = { isa = XCConfigurationList; buildConfigurations = ( - D0C03895DE80B8549E8C1D167D22E44D /* Debug */, - 2C4EBC8097D4D07427A18EC0F79738BE /* Release */, + 34DA1E3BEA25E012EF708AE69C0C9193 /* Debug */, + 37AF8DF61716FB1975DE10B4998E2A87 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 2FC9855C948A66726D61C1BF2072066A /* Build configuration list for PBXNativeTarget "IQKeyboardNotification-IQKeyboardNotification" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 6458EACFEBDCB49A35654564C62A5CDB /* Debug */, + BFE9B004B8D63FFCD9138A8CD9D03F13 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 3C4DB880A7885119CB06D685D0A723E7 /* Build configuration list for PBXNativeTarget "IQKeyboardReturnManager" */ = { + 3208C0F97FCB948C4F12E81E25FFEAF9 /* Build configuration list for PBXNativeTarget "IQKeyboardManagerSwift" */ = { isa = XCConfigurationList; buildConfigurations = ( - E96018F78EE6B223E0978C8AA11A36EE /* Debug */, - 67A316390B0B6C034F9941202A414C7F /* Release */, + D0C03895DE80B8549E8C1D167D22E44D /* Debug */, + 2C4EBC8097D4D07427A18EC0F79738BE /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -3951,146 +4485,155 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 6481ABAE66B2D04512CD62187CEABE6D /* Build configuration list for PBXNativeTarget "IQKeyboardToolbarManager-IQKeyboardToolbarManager" */ = { + 49D80946082E3E53F4077E15D8887408 /* Build configuration list for PBXNativeTarget "Pods-DeepChordsSdk" */ = { isa = XCConfigurationList; buildConfigurations = ( - 1758ED8F6B52B20715F3E56C0D65C039 /* Debug */, - CDB2E7CCB93A0C84B3ED2EE4E44526EE /* Release */, + DDBEDC2B6C48735DEA3B7E0F66D166CA /* Debug */, + 8E2D63C2146204D6E9066CFE984F976A /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 67BEB8C8A7A6715308ADC7CCB951A134 /* Build configuration list for PBXNativeTarget "IQKeyboardManagerSwift-IQKeyboardManagerSwift" */ = { + 6545B5D9E1142254EECDDEFC1408EA74 /* Build configuration list for PBXNativeTarget "IQKeyboardToolbar" */ = { isa = XCConfigurationList; buildConfigurations = ( - B7895874B07E7E5BCAEFAA1837F27EF3 /* Debug */, - 2EEB6B3864995CE01531195A8FEFFA95 /* Release */, + 60B198379BE0F80DDD5483A405A8AC5F /* Debug */, + 1D0FBA28D44BDD4502A8E31DAEABF97D /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 7ECB31051167A225EFE7C1A45E684E88 /* Build configuration list for PBXNativeTarget "SnapKit-SnapKit_Privacy" */ = { + 698D46877F77FCD24D7D79E95A4A06D5 /* Build configuration list for PBXNativeTarget "SocketRocket" */ = { isa = XCConfigurationList; buildConfigurations = ( - A386F313035F8AEDA425825F12F0C578 /* Debug */, - FF13205D485A6284D16D6C04D8AEBA9D /* Release */, + 60BF7D5EEEA720FA876075D448A3EEFF /* Debug */, + E0AD5D7D6A14E0A5CE237F7AA2103EDA /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 80CE967CAA1D35721519F892BAF7A19B /* Build configuration list for PBXNativeTarget "SnapKit" */ = { + 7468FF21977574A694627CBF4D7DEC53 /* Build configuration list for PBXNativeTarget "IQKeyboardToolbar-IQKeyboardToolbar" */ = { isa = XCConfigurationList; buildConfigurations = ( - 9D0D7572FEDA4CC9E75E7387846AFE57 /* Debug */, - BAD20131EC29650C6737E66854A3A9FD /* Release */, + D0D91380BCB9BC9A0529D56C8ED5FFE9 /* Debug */, + ED5F5D7028C0D13C5D338346ADB64D2D /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 9C146D0EDFB76FE1156D655A897B6E94 /* Build configuration list for PBXNativeTarget "Toast-Swift" */ = { + 7B6A2B3DDE303A370FD2A5C8DB9C6E2D /* Build configuration list for PBXNativeTarget "IQKeyboardNotification" */ = { isa = XCConfigurationList; buildConfigurations = ( - E06F70F13B606F0979741BCAFE1F1003 /* Debug */, - 7E48D17D0469F73801BBDAF1F20755F2 /* Release */, + 9E6F8A334BBF6110E0F8360AA5245522 /* Debug */, + 4E28A2258944850B8D0D598586B5E92B /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 80CE967CAA1D35721519F892BAF7A19B /* Build configuration list for PBXNativeTarget "SnapKit" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 9D0D7572FEDA4CC9E75E7387846AFE57 /* Debug */, + BAD20131EC29650C6737E66854A3A9FD /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - A599D6F83E2ADA135F5F95E07F3A9F46 /* Build configuration list for PBXNativeTarget "IQKeyboardToolbarManager" */ = { + 95C096ADDB6F7FCAFFA3FBB358C75EF3 /* Build configuration list for PBXNativeTarget "Pods-Example" */ = { isa = XCConfigurationList; buildConfigurations = ( - A4CA0F05DBCCA70498F8972AE1638AF0 /* Debug */, - CB50F8D87C35047B5204B6391E831FC0 /* Release */, + 1F029A7E58A02CC7BF83B726ECB24B27 /* Debug */, + 7D3C700E017BEA5E61F542AD4EBE06C7 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - B2130418C2FAD0A1E2FD872758AD609B /* Build configuration list for PBXNativeTarget "IQKeyboardCore" */ = { + 9C146D0EDFB76FE1156D655A897B6E94 /* Build configuration list for PBXNativeTarget "Toast-Swift" */ = { isa = XCConfigurationList; buildConfigurations = ( - A0F0EEB28C54A3D861769B31AB6A09BC /* Debug */, - FC91939289B6972DE0D1E8C4EDF5A399 /* Release */, + E06F70F13B606F0979741BCAFE1F1003 /* Debug */, + 7E48D17D0469F73801BBDAF1F20755F2 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - BEBD8E760EA9789023B9A265429B0CE3 /* Build configuration list for PBXNativeTarget "IQTextInputViewNotification-IQTextInputViewNotification" */ = { + 9E4E9D837E21217746DEB582B898D487 /* Build configuration list for PBXNativeTarget "IQKeyboardToolbarManager-IQKeyboardToolbarManager" */ = { isa = XCConfigurationList; buildConfigurations = ( - 4878B258B51AEB40FC40CDEA8B2FB579 /* Debug */, - 832343784050169DE494CBA51327CBFC /* Release */, + D138F4694413B3332A4486830C10613A /* Debug */, + F08D20936BD3635F1144C8ABE3CED471 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - C3974B1DD3C778FE5733E8306919D1BC /* Build configuration list for PBXNativeTarget "IQKeyboardToolbar-IQKeyboardToolbar" */ = { + AC758F51A954F3478B41C0B2B845766B /* Build configuration list for PBXNativeTarget "IQKeyboardReturnManager" */ = { isa = XCConfigurationList; buildConfigurations = ( - DAE1B07B00732B27AE659B77B614B293 /* Debug */, - 439F5FEBC31ACC3A2D307865C8FEA945 /* Release */, + E5E79CB0A013D41033C3D1F195F2D511 /* Debug */, + EFB4FCFDA1169E42C1B49870156BCDDD /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - C99BBC4654DBCB79FC10078A8D8F164A /* Build configuration list for PBXNativeTarget "Pods-Example" */ = { + B2130418C2FAD0A1E2FD872758AD609B /* Build configuration list for PBXNativeTarget "IQKeyboardCore" */ = { isa = XCConfigurationList; buildConfigurations = ( - CF2F14AD97C90819B114482F4C9A2A35 /* Debug */, - 09CE94D09C78B819D706D0A31E0FDEBF /* Release */, + A0F0EEB28C54A3D861769B31AB6A09BC /* Debug */, + FC91939289B6972DE0D1E8C4EDF5A399 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - D209595F46E26B2152EE325AAA902C34 /* Build configuration list for PBXNativeTarget "IQTextView" */ = { + BA50FBEF420279D7BDB90421B1103569 /* Build configuration list for PBXNativeTarget "IQTextInputViewNotification-IQTextInputViewNotification" */ = { isa = XCConfigurationList; buildConfigurations = ( - 99E8CDE0070568463EEBA85DF258F59D /* Debug */, - 2CB0B04E637225A7D7C266292DDC0AFC /* Release */, + BA84D2E7DDC5F76ACF1327798B6F924C /* Debug */, + 298BF47A1ADB1CEC5A9281F125EF0788 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - E74FC012668CDA2F6C4BF839FEB96069 /* Build configuration list for PBXNativeTarget "IQKeyboardToolbar" */ = { + D2E3CA4A5A5255636741A362E4F6BCF7 /* Build configuration list for PBXNativeTarget "IQTextView-IQTextView" */ = { isa = XCConfigurationList; buildConfigurations = ( - 961ED2BDA5D875288E2797D7EE1B40B5 /* Debug */, - E9AC192FD9FADF1E1EEB0E4B2C599E57 /* Release */, + 47C2D0929EA82A67E33FEB42776A6CAC /* Debug */, + 397EF464FF32EAD44C05D7CE58A2C382 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - E959AB3A73E0C01735D6A0CBB7A46763 /* Build configuration list for PBXNativeTarget "IQTextInputViewNotification" */ = { + D452E33AB7D1DEFA04A6E2B89E1B70BD /* Build configuration list for PBXNativeTarget "IQKeyboardCore-IQKeyboardCore" */ = { isa = XCConfigurationList; buildConfigurations = ( - 0436E45C9EB8DF6391E9F25BAF1F9CD6 /* Debug */, - C00AEF1ACF87E7DDD73096FFE0DF3DFC /* Release */, + B5986331465FE771133F16D76C24C707 /* Debug */, + 74ED47C1AB733A447D6619EAD98BAD82 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - F0BDF860071DEA034151A2E0A1E847DD /* Build configuration list for PBXNativeTarget "IQTextView-IQTextView" */ = { + D7FB8C3DDF4703D4590435540A2233A9 /* Build configuration list for PBXNativeTarget "IQKeyboardToolbarManager" */ = { isa = XCConfigurationList; buildConfigurations = ( - 33F9EB014D388A982E18E89A18728E6E /* Debug */, - 5BF8D5770321101E8BCE20E68D48D452 /* Release */, + 64801BD417925AB9BA656A8FA9DC5CB6 /* Debug */, + 3016B50127E54871902147B82FABA968 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - F874B41A83B918592D0E9627046D0688 /* Build configuration list for PBXNativeTarget "IQKeyboardReturnManager-IQKeyboardReturnManager" */ = { + D8BBE9E3900D941FF67F5A73A1AECA11 /* Build configuration list for PBXNativeTarget "IQTextView" */ = { isa = XCConfigurationList; buildConfigurations = ( - 8F70FC038D658E7A6D2BAEADCC022929 /* Debug */, - D633326018EF82C1AD5D8F9823F5227A /* Release */, + CC57776530A62F3C6BCEE299CDB87503 /* Debug */, + 544532B6E87F836C1A3288A60D36F726 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - F8A3F2A1D94EBD3FC696D573D0AB1B0F /* Build configuration list for PBXNativeTarget "IQKeyboardNotification" */ = { + FD573F16CD31603388EC2DE46509F450 /* Build configuration list for PBXNativeTarget "IQKeyboardManagerSwift-IQKeyboardManagerSwift" */ = { isa = XCConfigurationList; buildConfigurations = ( - 303BB1842F2941ED3B727E7A2F3A81AE /* Debug */, - 45EE463F8D495300A81BC1D7C7029EF8 /* Release */, + EA45E75E18A3088D3BECAB8A13C8E1FA /* Debug */, + 1B2F38B82BEBA44EF2EE45BF7A44037A /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; diff --git a/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/SocketRocket/LICENSE b/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/SocketRocket/LICENSE new file mode 100644 index 0000000..032b206 --- /dev/null +++ b/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/SocketRocket/LICENSE @@ -0,0 +1,30 @@ +BSD License + +For SocketRocket software + +Copyright (c) 2016-present, Facebook, Inc. All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + + * Neither the name Facebook nor the names of its contributors may be used to + endorse or promote products derived from this software without specific + prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. \ No newline at end of file diff --git a/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/SocketRocket/LICENSE-examples b/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/SocketRocket/LICENSE-examples new file mode 100644 index 0000000..1de7813 --- /dev/null +++ b/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/SocketRocket/LICENSE-examples @@ -0,0 +1,11 @@ +Copyright (c) 2016-present, Facebook, Inc. All rights reserved. + +The examples provided by Facebook are for non-commercial testing and evaluation +purposes only. Facebook reserves all rights not expressly granted. + +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 +FACEBOOK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/SocketRocket/README.md b/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/SocketRocket/README.md new file mode 100644 index 0000000..7806a7e --- /dev/null +++ b/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/SocketRocket/README.md @@ -0,0 +1,214 @@ +# SocketRocket + +![Platforms][platforms-svg] +[![License][license-svg]][license-link] + +[![Podspec][podspec-svg]][podspec-link] +[![Carthage Compatible][carthage-svg]](carthage-link) + +[![Build Status][build-status-svg]][build-status-link] + +A conforming WebSocket ([RFC 6455](https://tools.ietf.org/html/rfc6455>)) client library for iOS, macOS and tvOS. + +Test results for SocketRocket [here](http://facebook.github.io/SocketRocket/results/). +You can compare to what modern browsers look like [here](http://autobahn.ws/testsuite/reports/clients/index.html). + +SocketRocket currently conforms to all core ~300 of [Autobahn](http://autobahn.ws/testsuite/>)'s fuzzing tests +(aside from two UTF-8 ones where it is merely *non-strict* tests 6.4.2 and 6.4.4). + +## Features/Design + +- TLS (wss) support, including self-signed certificates. +- Seems to perform quite well. +- Supports HTTP Proxies. +- Supports IPv4/IPv6. +- Supports SSL certificate pinning. +- Sends `ping` and can process `pong` events. +- Asynchronous and non-blocking. Most of the work is done on a background thread. +- Supports iOS, macOS, tvOS. + +## Installing + +There are a few options. Choose one, or just figure it out: + +- **[CocoaPods](https://cocoapods.org)** + + Add the following line to your Podfile: + ```ruby + pod 'SocketRocket' + ``` + Run `pod install`, and you are all set. + +- **[Carthage](https://github.com/carthage/carthage)** + + Add the following line to your Cartfile: + ``` + github "facebook/SocketRocket" + ``` + Run `carthage update`, and you should now have the latest version of `SocketRocket` in your `Carthage` folder. + +- **Using SocketRocket as a sub-project** + + You can also include `SocketRocket` as a subproject inside of your application if you'd prefer, although we do not recommend this, as it will increase your indexing time significantly. To do so, just drag and drop the `SocketRocket.xcodeproj` file into your workspace. + +## API + +### `SRWebSocket` + +The Web Socket. + +#### Note: + +`SRWebSocket` will retain itself between `-(void)open` and when it closes, errors, or fails. +This is similar to how `NSURLConnection` behaves (unlike `NSURLConnection`, `SRWebSocket` won't retain the delegate). + +#### Interface + +```objective-c +@interface SRWebSocket : NSObject + +// Make it with this +- (instancetype)initWithURLRequest:(NSURLRequest *)request; + +// Set this before opening +@property (nonatomic, weak) id delegate; + +// Open with this +- (void)open; + +// Close it with this +- (void)close; + +// Send a Data +- (void)sendData:(nullable NSData *)data error:(NSError **)error; + +// Send a UTF8 String +- (void)sendString:(NSString *)string error:(NSError **)error; + +@end +``` + +### `SRWebSocketDelegate` + +You implement this + +```objective-c +@protocol SRWebSocketDelegate + +@optional + +- (void)webSocketDidOpen:(SRWebSocket *)webSocket; + +- (void)webSocket:(SRWebSocket *)webSocket didReceiveMessageWithString:(NSString *)string; +- (void)webSocket:(SRWebSocket *)webSocket didReceiveMessageWithData:(NSData *)data; + +- (void)webSocket:(SRWebSocket *)webSocket didFailWithError:(NSError *)error; +- (void)webSocket:(SRWebSocket *)webSocket didCloseWithCode:(NSInteger)code reason:(nullable NSString *)reason wasClean:(BOOL)wasClean; + +@end +``` + +## Testing + +Included are setup scripts for the python testing environment. +It comes packaged with vitualenv so all the dependencies are installed in userland. + +To run the short test from the command line, run: +```bash + make test +``` + +To run all the tests, run: +```bash + make test_all +``` + +The short tests don't include the performance tests +(the test harness is actually the bottleneck, not SocketRocket). + +The first time this is run, it may take a while to install the dependencies. It will be smooth sailing after that. + +You can also run tests inside Xcode, which runs the same thing, but makes it easier to debug. + +- Choose the `SocketRocketTests` target +- Make sure your running destination is either your Mac or any Simulator +- Run the test action (`⌘+U`) + +### TestChat Demo Application + +SocketRocket includes a demo app, TestChat. +It will "chat" with a listening websocket on port 9900. + +#### TestChat Server + +The sever takes a message and broadcasts it to all other connected clients. + +It requires some dependencies though to run. +We also want to reuse the virtualenv we made when we ran the tests. +If you haven't run the tests yet, go into the SocketRocket root directory and type: + +```bash +make test +``` + +This will set up your [virtualenv](https://pypi.python.org/pypi/virtualenv). + +Now, in your terminal: + +```bash +source .env/bin/activate +pip install git+https://github.com/tornadoweb/tornado.git +``` + +In the same terminal session, start the chatroom server: + +```bash +python TestChatServer/py/chatroom.py +``` + +There's also a Go implementation (with the latest weekly) where you can: + +```bash +cd TestChatServer/go +go run chatroom.go +``` + +#### Chatting + +Now, start TestChat.app (just run the target in the Xcode project). +If you had it started already you can hit the refresh button to reconnect. +It should say "Connected!" on top. + +To talk with the app, open up your browser to [http://localhost:9000](http://localhost:9000) and start chatting. + + +## WebSocket Server Implementation Recommendations + +SocketRocket has been used with the following libraries: + +- [Tornado](https://github.com/tornadoweb/tornado) +- Go's [WebSocket package](https://godoc.org/golang.org/x/net/websocket) or Gorilla's [version](http://www.gorillatoolkit.org/pkg/websocket). +- [Autobahn](http://autobahn.ws/testsuite/) (using its fuzzing client). + +The Tornado one is dirt simple and works like a charm. +([IPython notebook](http://ipython.org/ipython-doc/dev/interactive/htmlnotebook.html) uses it too). +It's much easier to configure handlers and routes than in Autobahn/twisted. + +## Contributing + +We’re glad you’re interested in SocketRocket, and we’d love to see where you take it. +Please read our [contributing guidelines](https://github.com/facebook/SocketRocket/blob/master/CONTRIBUTING.md) prior to submitting a Pull Request. + + [build-status-svg]: https://img.shields.io/travis/facebook/SocketRocket/master.svg + [build-status-link]: https://travis-ci.org/facebook/SocketRocket/branches + + [license-svg]: https://img.shields.io/badge/license-BSD-lightgrey.svg + [license-link]: https://github.com/facebook/SocketRocket/blob/master/LICENSE + + [podspec-svg]: https://img.shields.io/cocoapods/v/SocketRocket.svg + [podspec-link]: https://cocoapods.org/pods/SocketRocket + + [carthage-svg]: https://img.shields.io/badge/Carthage-compatible-4BC51D.svg?style=flat + [carthage-link]: https://github.com/carthage/carthage + + [platforms-svg]: http://img.shields.io/cocoapods/p/SocketRocket.svg?style=flat diff --git a/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/SocketRocket/SocketRocket/Internal/Delegate/SRDelegateController.h b/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/SocketRocket/SocketRocket/Internal/Delegate/SRDelegateController.h new file mode 100644 index 0000000..43634a1 --- /dev/null +++ b/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/SocketRocket/SocketRocket/Internal/Delegate/SRDelegateController.h @@ -0,0 +1,67 @@ +// +// Copyright (c) 2016-present, Facebook, Inc. +// All rights reserved. +// +// This source code is licensed under the BSD-style license found in the +// LICENSE file in the root directory of this source tree. An additional grant +// of patent rights can be found in the PATENTS file in the same directory. +// + +#import + +#import + +NS_ASSUME_NONNULL_BEGIN + +#if OBJC_BOOL_IS_BOOL + +struct SRDelegateAvailableMethods { + BOOL didReceiveMessage : 1; + BOOL didReceiveMessageWithString : 1; + BOOL didReceiveMessageWithData : 1; + BOOL didOpen : 1; + BOOL didFailWithError : 1; + BOOL didCloseWithCode : 1; + BOOL didReceivePing : 1; + BOOL didReceivePong : 1; + BOOL shouldConvertTextFrameToString : 1; +}; + +#else + +struct SRDelegateAvailableMethods { + BOOL didReceiveMessage; + BOOL didReceiveMessageWithString; + BOOL didReceiveMessageWithData; + BOOL didOpen; + BOOL didFailWithError; + BOOL didCloseWithCode; + BOOL didReceivePing; + BOOL didReceivePong; + BOOL shouldConvertTextFrameToString; +}; + +#endif + +typedef struct SRDelegateAvailableMethods SRDelegateAvailableMethods; + +typedef void(^SRDelegateBlock)(id _Nullable delegate, SRDelegateAvailableMethods availableMethods); + +@interface SRDelegateController : NSObject + +@property (nonatomic, weak) id delegate; +@property (atomic, readonly) SRDelegateAvailableMethods availableDelegateMethods; + +@property (nullable, nonatomic, strong) dispatch_queue_t dispatchQueue; +@property (nullable, nonatomic, strong) NSOperationQueue *operationQueue; + +///-------------------------------------- +#pragma mark - Perform +///-------------------------------------- + +- (void)performDelegateBlock:(SRDelegateBlock)block; +- (void)performDelegateQueueBlock:(dispatch_block_t)block; + +@end + +NS_ASSUME_NONNULL_END diff --git a/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/SocketRocket/SocketRocket/Internal/Delegate/SRDelegateController.m b/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/SocketRocket/SocketRocket/Internal/Delegate/SRDelegateController.m new file mode 100644 index 0000000..f20c9d5 --- /dev/null +++ b/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/SocketRocket/SocketRocket/Internal/Delegate/SRDelegateController.m @@ -0,0 +1,138 @@ +// +// Copyright (c) 2016-present, Facebook, Inc. +// All rights reserved. +// +// This source code is licensed under the BSD-style license found in the +// LICENSE file in the root directory of this source tree. An additional grant +// of patent rights can be found in the PATENTS file in the same directory. +// + +#import "SRDelegateController.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface SRDelegateController () + +@property (nonatomic, strong, readonly) dispatch_queue_t accessQueue; + +@property (atomic, assign, readwrite) SRDelegateAvailableMethods availableDelegateMethods; + +@end + +@implementation SRDelegateController + +@synthesize delegate = _delegate; +@synthesize dispatchQueue = _dispatchQueue; +@synthesize operationQueue = _operationQueue; + +///-------------------------------------- +#pragma mark - Init +///-------------------------------------- + +- (instancetype)init +{ + self = [super init]; + if (!self) return self; + + _accessQueue = dispatch_queue_create("com.facebook.socketrocket.delegate.access", DISPATCH_QUEUE_CONCURRENT); + _dispatchQueue = dispatch_get_main_queue(); + + return self; +} + +///-------------------------------------- +#pragma mark - Accessors +///-------------------------------------- + +- (void)setDelegate:(id _Nullable)delegate +{ + dispatch_barrier_async(self.accessQueue, ^{ + self->_delegate = delegate; + + self.availableDelegateMethods = (SRDelegateAvailableMethods){ + .didReceiveMessage = [delegate respondsToSelector:@selector(webSocket:didReceiveMessage:)], + .didReceiveMessageWithString = [delegate respondsToSelector:@selector(webSocket:didReceiveMessageWithString:)], + .didReceiveMessageWithData = [delegate respondsToSelector:@selector(webSocket:didReceiveMessageWithData:)], + .didOpen = [delegate respondsToSelector:@selector(webSocketDidOpen:)], + .didFailWithError = [delegate respondsToSelector:@selector(webSocket:didFailWithError:)], + .didCloseWithCode = [delegate respondsToSelector:@selector(webSocket:didCloseWithCode:reason:wasClean:)], + .didReceivePing = [delegate respondsToSelector:@selector(webSocket:didReceivePingWithData:)], + .didReceivePong = [delegate respondsToSelector:@selector(webSocket:didReceivePong:)], + .shouldConvertTextFrameToString = [delegate respondsToSelector:@selector(webSocketShouldConvertTextFrameToString:)] + }; + }); +} + +- (id _Nullable)delegate +{ + __block id delegate = nil; + dispatch_sync(self.accessQueue, ^{ + delegate = self->_delegate; + }); + return delegate; +} + +- (void)setDispatchQueue:(dispatch_queue_t _Nullable)queue +{ + dispatch_barrier_async(self.accessQueue, ^{ + self->_dispatchQueue = queue ?: dispatch_get_main_queue(); + self->_operationQueue = nil; + }); +} + +- (dispatch_queue_t _Nullable)dispatchQueue +{ + __block dispatch_queue_t queue = nil; + dispatch_sync(self.accessQueue, ^{ + queue = self->_dispatchQueue; + }); + return queue; +} + +- (void)setOperationQueue:(NSOperationQueue *_Nullable)queue +{ + dispatch_barrier_async(self.accessQueue, ^{ + self->_dispatchQueue = queue ? nil : dispatch_get_main_queue(); + self->_operationQueue = queue; + }); +} + +- (NSOperationQueue *_Nullable)operationQueue +{ + __block NSOperationQueue *queue = nil; + dispatch_sync(self.accessQueue, ^{ + queue = self->_operationQueue; + }); + return queue; +} + +///-------------------------------------- +#pragma mark - Perform +///-------------------------------------- + +- (void)performDelegateBlock:(SRDelegateBlock)block +{ + __block __strong id delegate = nil; + __block SRDelegateAvailableMethods availableMethods; + dispatch_sync(self.accessQueue, ^{ + delegate = self->_delegate; // Not `OK` to go through `self`, since queue sync. + availableMethods = self.availableDelegateMethods; // `OK` to call through `self`, since no queue sync. + }); + [self performDelegateQueueBlock:^{ + block(delegate, availableMethods); + }]; +} + +- (void)performDelegateQueueBlock:(dispatch_block_t)block +{ + dispatch_queue_t dispatchQueue = self.dispatchQueue; + if (dispatchQueue) { + dispatch_async(dispatchQueue, block); + } else { + [self.operationQueue addOperationWithBlock:block]; + } +} + +@end + +NS_ASSUME_NONNULL_END diff --git a/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/SocketRocket/SocketRocket/Internal/IOConsumer/SRIOConsumer.h b/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/SocketRocket/SocketRocket/Internal/IOConsumer/SRIOConsumer.h new file mode 100644 index 0000000..6b02a3b --- /dev/null +++ b/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/SocketRocket/SocketRocket/Internal/IOConsumer/SRIOConsumer.h @@ -0,0 +1,40 @@ +// +// Copyright 2012 Square Inc. +// Portions Copyright (c) 2016-present, Facebook, Inc. +// +// All rights reserved. +// +// This source code is licensed under the BSD-style license found in the +// LICENSE file in the root directory of this source tree. An additional grant +// of patent rights can be found in the PATENTS file in the same directory. +// + +#import + +@class SRWebSocket; // TODO: (nlutsenko) Remove dependency on SRWebSocket here. + +// Returns number of bytes consumed. Returning 0 means you didn't match. +// Sends bytes to callback handler; +typedef size_t (^stream_scanner)(NSData *collected_data); +typedef void (^data_callback)(SRWebSocket *webSocket, NSData *data); + +@interface SRIOConsumer : NSObject { + stream_scanner _scanner; + data_callback _handler; + size_t _bytesNeeded; + BOOL _readToCurrentFrame; + BOOL _unmaskBytes; +} +@property (nonatomic, copy, readonly) stream_scanner consumer; +@property (nonatomic, copy, readonly) data_callback handler; +@property (nonatomic, assign) size_t bytesNeeded; +@property (nonatomic, assign, readonly) BOOL readToCurrentFrame; +@property (nonatomic, assign, readonly) BOOL unmaskBytes; + +- (void)resetWithScanner:(stream_scanner)scanner + handler:(data_callback)handler + bytesNeeded:(size_t)bytesNeeded + readToCurrentFrame:(BOOL)readToCurrentFrame + unmaskBytes:(BOOL)unmaskBytes; + +@end diff --git a/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/SocketRocket/SocketRocket/Internal/IOConsumer/SRIOConsumer.m b/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/SocketRocket/SocketRocket/Internal/IOConsumer/SRIOConsumer.m new file mode 100644 index 0000000..8b17e3e --- /dev/null +++ b/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/SocketRocket/SocketRocket/Internal/IOConsumer/SRIOConsumer.m @@ -0,0 +1,36 @@ +// +// Copyright 2012 Square Inc. +// Portions Copyright (c) 2016-present, Facebook, Inc. +// +// All rights reserved. +// +// This source code is licensed under the BSD-style license found in the +// LICENSE file in the root directory of this source tree. An additional grant +// of patent rights can be found in the PATENTS file in the same directory. +// + +#import "SRIOConsumer.h" + +@implementation SRIOConsumer + +@synthesize bytesNeeded = _bytesNeeded; +@synthesize consumer = _scanner; +@synthesize handler = _handler; +@synthesize readToCurrentFrame = _readToCurrentFrame; +@synthesize unmaskBytes = _unmaskBytes; + +- (void)resetWithScanner:(stream_scanner)scanner + handler:(data_callback)handler + bytesNeeded:(size_t)bytesNeeded + readToCurrentFrame:(BOOL)readToCurrentFrame + unmaskBytes:(BOOL)unmaskBytes +{ + _scanner = [scanner copy]; + _handler = [handler copy]; + _bytesNeeded = bytesNeeded; + _readToCurrentFrame = readToCurrentFrame; + _unmaskBytes = unmaskBytes; + assert(_scanner || _bytesNeeded); +} + +@end diff --git a/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/SocketRocket/SocketRocket/Internal/IOConsumer/SRIOConsumerPool.h b/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/SocketRocket/SocketRocket/Internal/IOConsumer/SRIOConsumerPool.h new file mode 100644 index 0000000..1e7ad32 --- /dev/null +++ b/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/SocketRocket/SocketRocket/Internal/IOConsumer/SRIOConsumerPool.h @@ -0,0 +1,28 @@ +// +// Copyright 2012 Square Inc. +// Portions Copyright (c) 2016-present, Facebook, Inc. +// +// All rights reserved. +// +// This source code is licensed under the BSD-style license found in the +// LICENSE file in the root directory of this source tree. An additional grant +// of patent rights can be found in the PATENTS file in the same directory. +// + +#import + +#import "SRIOConsumer.h" // TODO: (nlutsenko) Convert to @class and constants file for block types + +// This class is not thread-safe, and is expected to always be run on the same queue. +@interface SRIOConsumerPool : NSObject + +- (instancetype)initWithBufferCapacity:(NSUInteger)poolSize; + +- (SRIOConsumer *)consumerWithScanner:(stream_scanner)scanner + handler:(data_callback)handler + bytesNeeded:(size_t)bytesNeeded + readToCurrentFrame:(BOOL)readToCurrentFrame + unmaskBytes:(BOOL)unmaskBytes; +- (void)returnConsumer:(SRIOConsumer *)consumer; + +@end diff --git a/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/SocketRocket/SocketRocket/Internal/IOConsumer/SRIOConsumerPool.m b/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/SocketRocket/SocketRocket/Internal/IOConsumer/SRIOConsumerPool.m new file mode 100644 index 0000000..33a4af9 --- /dev/null +++ b/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/SocketRocket/SocketRocket/Internal/IOConsumer/SRIOConsumerPool.m @@ -0,0 +1,64 @@ +// +// Copyright 2012 Square Inc. +// Portions Copyright (c) 2016-present, Facebook, Inc. +// +// All rights reserved. +// +// This source code is licensed under the BSD-style license found in the +// LICENSE file in the root directory of this source tree. An additional grant +// of patent rights can be found in the PATENTS file in the same directory. +// + +#import "SRIOConsumerPool.h" + +@implementation SRIOConsumerPool { + NSUInteger _poolSize; + NSMutableArray *_bufferedConsumers; +} + +- (instancetype)initWithBufferCapacity:(NSUInteger)poolSize +{ + self = [super init]; + if (self) { + _poolSize = poolSize; + _bufferedConsumers = [NSMutableArray arrayWithCapacity:poolSize]; + } + return self; +} + +- (instancetype)init +{ + return [self initWithBufferCapacity:8]; +} + +- (SRIOConsumer *)consumerWithScanner:(stream_scanner)scanner + handler:(data_callback)handler + bytesNeeded:(size_t)bytesNeeded + readToCurrentFrame:(BOOL)readToCurrentFrame + unmaskBytes:(BOOL)unmaskBytes +{ + SRIOConsumer *consumer = nil; + if (_bufferedConsumers.count) { + consumer = [_bufferedConsumers lastObject]; + [_bufferedConsumers removeLastObject]; + } else { + consumer = [[SRIOConsumer alloc] init]; + } + + [consumer resetWithScanner:scanner + handler:handler + bytesNeeded:bytesNeeded + readToCurrentFrame:readToCurrentFrame + unmaskBytes:unmaskBytes]; + + return consumer; +} + +- (void)returnConsumer:(SRIOConsumer *)consumer +{ + if (_bufferedConsumers.count < _poolSize) { + [_bufferedConsumers addObject:consumer]; + } +} + +@end diff --git a/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/SocketRocket/SocketRocket/Internal/NSRunLoop+SRWebSocketPrivate.h b/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/SocketRocket/SocketRocket/Internal/NSRunLoop+SRWebSocketPrivate.h new file mode 100644 index 0000000..098f7a8 --- /dev/null +++ b/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/SocketRocket/SocketRocket/Internal/NSRunLoop+SRWebSocketPrivate.h @@ -0,0 +1,13 @@ +// +// Copyright (c) 2016-present, Facebook, Inc. +// All rights reserved. +// +// This source code is licensed under the BSD-style license found in the +// LICENSE file in the root directory of this source tree. An additional grant +// of patent rights can be found in the PATENTS file in the same directory. +// + +#import + +// Empty function that force links the object file for the category. +extern void import_NSRunLoop_SRWebSocket(void); diff --git a/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/SocketRocket/SocketRocket/Internal/NSURLRequest+SRWebSocketPrivate.h b/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/SocketRocket/SocketRocket/Internal/NSURLRequest+SRWebSocketPrivate.h new file mode 100644 index 0000000..b09dde4 --- /dev/null +++ b/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/SocketRocket/SocketRocket/Internal/NSURLRequest+SRWebSocketPrivate.h @@ -0,0 +1,13 @@ +// +// Copyright (c) 2016-present, Facebook, Inc. +// All rights reserved. +// +// This source code is licensed under the BSD-style license found in the +// LICENSE file in the root directory of this source tree. An additional grant +// of patent rights can be found in the PATENTS file in the same directory. +// + +#import + +// Empty function that force links the object file for the category. +extern void import_NSURLRequest_SRWebSocket(void); diff --git a/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/SocketRocket/SocketRocket/Internal/Proxy/SRProxyConnect.h b/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/SocketRocket/SocketRocket/Internal/Proxy/SRProxyConnect.h new file mode 100644 index 0000000..e947c48 --- /dev/null +++ b/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/SocketRocket/SocketRocket/Internal/Proxy/SRProxyConnect.h @@ -0,0 +1,26 @@ +// +// Copyright (c) 2016-present, Facebook, Inc. +// All rights reserved. +// +// This source code is licensed under the BSD-style license found in the +// LICENSE file in the root directory of this source tree. An additional grant +// of patent rights can be found in the PATENTS file in the same directory. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +typedef void(^SRProxyConnectCompletion)(NSError *_Nullable error, + NSInputStream *_Nullable readStream, + NSOutputStream *_Nullable writeStream); + +@interface SRProxyConnect : NSObject + +- (instancetype)initWithURL:(NSURL *)url; + +- (void)openNetworkStreamWithCompletion:(SRProxyConnectCompletion)completion; + +@end + +NS_ASSUME_NONNULL_END diff --git a/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/SocketRocket/SocketRocket/Internal/Proxy/SRProxyConnect.m b/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/SocketRocket/SocketRocket/Internal/Proxy/SRProxyConnect.m new file mode 100644 index 0000000..cce5844 --- /dev/null +++ b/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/SocketRocket/SocketRocket/Internal/Proxy/SRProxyConnect.m @@ -0,0 +1,481 @@ +// +// Copyright (c) 2016-present, Facebook, Inc. +// All rights reserved. +// +// This source code is licensed under the BSD-style license found in the +// LICENSE file in the root directory of this source tree. An additional grant +// of patent rights can be found in the PATENTS file in the same directory. +// + +#import "SRProxyConnect.h" + +#import "NSRunLoop+SRWebSocket.h" +#import "SRConstants.h" +#import "SRError.h" +#import "SRLog.h" +#import "SRURLUtilities.h" + +@interface SRProxyConnect() + +@property (nonatomic, strong) NSURL *url; +@property (nonatomic, strong) NSInputStream *inputStream; +@property (nonatomic, strong) NSOutputStream *outputStream; + +@end + +@implementation SRProxyConnect +{ + SRProxyConnectCompletion _completion; + + NSString *_httpProxyHost; + uint32_t _httpProxyPort; + + CFHTTPMessageRef _receivedHTTPHeaders; + + NSString *_socksProxyHost; + uint32_t _socksProxyPort; + NSString *_socksProxyUsername; + NSString *_socksProxyPassword; + + BOOL _connectionRequiresSSL; + + NSMutableArray *_inputQueue; + dispatch_queue_t _writeQueue; +} + +///-------------------------------------- +#pragma mark - Init +///-------------------------------------- + +-(instancetype)initWithURL:(NSURL *)url +{ + self = [super init]; + if (!self) return self; + + _url = url; + _connectionRequiresSSL = SRURLRequiresSSL(url); + + _writeQueue = dispatch_queue_create("com.facebook.socketrocket.proxyconnect.write", DISPATCH_QUEUE_SERIAL); + _inputQueue = [NSMutableArray arrayWithCapacity:2]; + + return self; +} + +- (void)dealloc +{ + // If we get deallocated before the socket open finishes - we need to cleanup everything. + + [self.inputStream removeFromRunLoop:[NSRunLoop SR_networkRunLoop] forMode:NSDefaultRunLoopMode]; + self.inputStream.delegate = nil; + [self.inputStream close]; + self.inputStream = nil; + + self.outputStream.delegate = nil; + [self.outputStream close]; + self.outputStream = nil; +} + +///-------------------------------------- +#pragma mark - Open +///-------------------------------------- + +- (void)openNetworkStreamWithCompletion:(SRProxyConnectCompletion)completion +{ + _completion = completion; + [self _configureProxy]; +} + +///-------------------------------------- +#pragma mark - Flow +///-------------------------------------- + +- (void)_didConnect +{ + SRDebugLog(@"_didConnect, return streams"); + if (_connectionRequiresSSL) { + if (_httpProxyHost) { + // Must set the real peer name before turning on SSL + SRDebugLog(@"proxy set peer name to real host %@", self.url.host); + [self.outputStream setProperty:self.url.host forKey:@"_kCFStreamPropertySocketPeerName"]; + } + } + if (_receivedHTTPHeaders) { + CFRelease(_receivedHTTPHeaders); + _receivedHTTPHeaders = NULL; + } + + NSInputStream *inputStream = self.inputStream; + NSOutputStream *outputStream = self.outputStream; + + self.inputStream = nil; + self.outputStream = nil; + + [inputStream removeFromRunLoop:[NSRunLoop SR_networkRunLoop] forMode:NSDefaultRunLoopMode]; + inputStream.delegate = nil; + outputStream.delegate = nil; + + _completion(nil, inputStream, outputStream); +} + +- (void)_failWithError:(NSError *)error +{ + SRDebugLog(@"_failWithError, return error"); + if (!error) { + error = SRHTTPErrorWithCodeDescription(500, 2132,@"Proxy Error"); + } + + if (_receivedHTTPHeaders) { + CFRelease(_receivedHTTPHeaders); + _receivedHTTPHeaders = NULL; + } + + self.inputStream.delegate = nil; + self.outputStream.delegate = nil; + + [self.inputStream removeFromRunLoop:[NSRunLoop SR_networkRunLoop] + forMode:NSDefaultRunLoopMode]; + [self.inputStream close]; + [self.outputStream close]; + self.inputStream = nil; + self.outputStream = nil; + _completion(error, nil, nil); +} + +// get proxy setting from device setting +- (void)_configureProxy +{ + SRDebugLog(@"configureProxy"); + NSDictionary *proxySettings = CFBridgingRelease(CFNetworkCopySystemProxySettings()); + + // CFNetworkCopyProxiesForURL doesn't understand ws:// or wss:// + NSURL *httpURL; + if (_connectionRequiresSSL) { + httpURL = [NSURL URLWithString:[NSString stringWithFormat:@"https://%@", _url.host]]; + } else { + httpURL = [NSURL URLWithString:[NSString stringWithFormat:@"http://%@", _url.host]]; + } + + NSArray *proxies = CFBridgingRelease(CFNetworkCopyProxiesForURL((__bridge CFURLRef)httpURL, (__bridge CFDictionaryRef)proxySettings)); + if (proxies.count == 0) { + SRDebugLog(@"configureProxy no proxies"); + [self _openConnection]; + return; // no proxy + } + NSDictionary *settings = [proxies objectAtIndex:0]; + NSString *proxyType = settings[(NSString *)kCFProxyTypeKey]; + if ([proxyType isEqualToString:(NSString *)kCFProxyTypeAutoConfigurationURL]) { + NSURL *pacURL = settings[(NSString *)kCFProxyAutoConfigurationURLKey]; + if (pacURL) { + [self _fetchPAC:pacURL withProxySettings:proxySettings]; + return; + } + } + if ([proxyType isEqualToString:(__bridge NSString *)kCFProxyTypeAutoConfigurationJavaScript]) { + NSString *script = settings[(__bridge NSString *)kCFProxyAutoConfigurationJavaScriptKey]; + if (script) { + [self _runPACScript:script withProxySettings:proxySettings]; + return; + } + } + [self _readProxySettingWithType:proxyType settings:settings]; + + [self _openConnection]; +} + +- (void)_readProxySettingWithType:(NSString *)proxyType settings:(NSDictionary *)settings +{ + if ([proxyType isEqualToString:(NSString *)kCFProxyTypeHTTP] || + [proxyType isEqualToString:(NSString *)kCFProxyTypeHTTPS]) { + _httpProxyHost = settings[(NSString *)kCFProxyHostNameKey]; + NSNumber *portValue = settings[(NSString *)kCFProxyPortNumberKey]; + if (portValue) { + _httpProxyPort = [portValue intValue]; + } + } + if ([proxyType isEqualToString:(NSString *)kCFProxyTypeSOCKS]) { + _socksProxyHost = settings[(NSString *)kCFProxyHostNameKey]; + NSNumber *portValue = settings[(NSString *)kCFProxyPortNumberKey]; + if (portValue) + _socksProxyPort = [portValue intValue]; + _socksProxyUsername = settings[(NSString *)kCFProxyUsernameKey]; + _socksProxyPassword = settings[(NSString *)kCFProxyPasswordKey]; + } + if (_httpProxyHost) { + SRDebugLog(@"Using http proxy %@:%u", _httpProxyHost, _httpProxyPort); + } else if (_socksProxyHost) { + SRDebugLog(@"Using socks proxy %@:%u", _socksProxyHost, _socksProxyPort); + } else { + SRDebugLog(@"configureProxy no proxies"); + } +} + +- (void)_fetchPAC:(NSURL *)PACurl withProxySettings:(NSDictionary *)proxySettings +{ + SRDebugLog(@"SRWebSocket fetchPAC:%@", PACurl); + + if ([PACurl isFileURL]) { + NSError *error = nil; + NSString *script = [NSString stringWithContentsOfURL:PACurl + usedEncoding:NULL + error:&error]; + + if (error) { + [self _openConnection]; + } else { + [self _runPACScript:script withProxySettings:proxySettings]; + } + return; + } + + NSString *scheme = [PACurl.scheme lowercaseString]; + if (![scheme isEqualToString:@"http"] && ![scheme isEqualToString:@"https"]) { + // Don't know how to read data from this URL, we'll have to give up + // We'll simply assume no proxies, and start the request as normal + [self _openConnection]; + return; + } + __weak typeof(self) wself = self; + NSURLRequest *request = [NSURLRequest requestWithURL:PACurl]; + NSURLSession *session = [NSURLSession sharedSession]; + [[session dataTaskWithRequest:request completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { + __strong typeof(wself) sself = wself; + if (!error) { + NSString *script = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; + [sself _runPACScript:script withProxySettings:proxySettings]; + } else { + [sself _openConnection]; + } + }] resume]; +} + +- (void)_runPACScript:(NSString *)script withProxySettings:(NSDictionary *)proxySettings +{ + if (!script) { + [self _openConnection]; + return; + } + SRDebugLog(@"runPACScript"); + // From: http://developer.apple.com/samplecode/CFProxySupportTool/listing1.html + // Work around . This dummy call to + // CFNetworkCopyProxiesForURL initialise some state within CFNetwork + // that is required by CFNetworkCopyProxiesForAutoConfigurationScript. + CFBridgingRelease(CFNetworkCopyProxiesForURL((__bridge CFURLRef)_url, (__bridge CFDictionaryRef)proxySettings)); + + // Obtain the list of proxies by running the autoconfiguration script + CFErrorRef err = NULL; + + // CFNetworkCopyProxiesForAutoConfigurationScript doesn't understand ws:// or wss:// + NSURL *httpURL; + if (_connectionRequiresSSL) + httpURL = [NSURL URLWithString:[NSString stringWithFormat:@"https://%@", _url.host]]; + else + httpURL = [NSURL URLWithString:[NSString stringWithFormat:@"http://%@", _url.host]]; + + NSArray *proxies = CFBridgingRelease(CFNetworkCopyProxiesForAutoConfigurationScript((__bridge CFStringRef)script,(__bridge CFURLRef)httpURL, &err)); + if (!err && [proxies count] > 0) { + NSDictionary *settings = [proxies objectAtIndex:0]; + NSString *proxyType = settings[(NSString *)kCFProxyTypeKey]; + [self _readProxySettingWithType:proxyType settings:settings]; + } + [self _openConnection]; +} + +- (void)_openConnection +{ + [self _initializeStreams]; + + [self.inputStream scheduleInRunLoop:[NSRunLoop SR_networkRunLoop] + forMode:NSDefaultRunLoopMode]; + //[self.outputStream scheduleInRunLoop:[NSRunLoop SR_networkRunLoop] + // forMode:NSDefaultRunLoopMode]; + [self.outputStream open]; + [self.inputStream open]; +} + +- (void)_initializeStreams +{ + assert(_url.port.unsignedIntValue <= UINT32_MAX); + uint32_t port = _url.port.unsignedIntValue; + if (port == 0) { + port = (_connectionRequiresSSL ? 443 : 80); + } + NSString *host = _url.host; + + if (_httpProxyHost) { + host = _httpProxyHost; + port = (_httpProxyPort ?: 80); + } + + CFReadStreamRef readStream = NULL; + CFWriteStreamRef writeStream = NULL; + + SRDebugLog(@"ProxyConnect connect stream to %@:%u", host, port); + CFStreamCreatePairWithSocketToHost(NULL, (__bridge CFStringRef)host, port, &readStream, &writeStream); + + self.outputStream = CFBridgingRelease(writeStream); + self.inputStream = CFBridgingRelease(readStream); + + if (_socksProxyHost) { + SRDebugLog(@"ProxyConnect set sock property stream to %@:%u user %@ password %@", _socksProxyHost, _socksProxyPort, _socksProxyUsername, _socksProxyPassword); + NSMutableDictionary *settings = [NSMutableDictionary dictionaryWithCapacity:4]; + settings[NSStreamSOCKSProxyHostKey] = _socksProxyHost; + if (_socksProxyPort) { + settings[NSStreamSOCKSProxyPortKey] = @(_socksProxyPort); + } + if (_socksProxyUsername) { + settings[NSStreamSOCKSProxyUserKey] = _socksProxyUsername; + } + if (_socksProxyPassword) { + settings[NSStreamSOCKSProxyPasswordKey] = _socksProxyPassword; + } + [self.inputStream setProperty:settings forKey:NSStreamSOCKSProxyConfigurationKey]; + [self.outputStream setProperty:settings forKey:NSStreamSOCKSProxyConfigurationKey]; + } + self.inputStream.delegate = self; + self.outputStream.delegate = self; +} + +- (void)stream:(NSStream *)aStream handleEvent:(NSStreamEvent)eventCode +{ + SRDebugLog(@"stream handleEvent %u", eventCode); + switch (eventCode) { + case NSStreamEventOpenCompleted: { + if (aStream == self.inputStream) { + if (_httpProxyHost) { + [self _proxyDidConnect]; + } else { + [self _didConnect]; + } + } + } break; + case NSStreamEventErrorOccurred: { + [self _failWithError:aStream.streamError]; + } break; + case NSStreamEventEndEncountered: { + [self _failWithError:aStream.streamError]; + } break; + case NSStreamEventHasBytesAvailable: { + if (aStream == _inputStream) { + [self _processInputStream]; + } + } break; + case NSStreamEventHasSpaceAvailable: + case NSStreamEventNone: + SRDebugLog(@"(default) %@", aStream); + break; + } +} + +- (void)_proxyDidConnect +{ + SRDebugLog(@"Proxy Connected"); + uint32_t port = _url.port.unsignedIntValue; + if (port == 0) { + port = (_connectionRequiresSSL ? 443 : 80); + } + // Send HTTP CONNECT Request + NSString *connectRequestStr = [NSString stringWithFormat:@"CONNECT %@:%u HTTP/1.1\r\nHost: %@\r\nConnection: keep-alive\r\nProxy-Connection: keep-alive\r\n\r\n", _url.host, port, _url.host]; + + NSData *message = [connectRequestStr dataUsingEncoding:NSUTF8StringEncoding]; + SRDebugLog(@"Proxy sending %@", connectRequestStr); + + [self _writeData:message]; +} + +///handles the incoming bytes and sending them to the proper processing method +- (void)_processInputStream +{ + NSMutableData *buf = [NSMutableData dataWithCapacity:SRDefaultBufferSize()]; + uint8_t *buffer = buf.mutableBytes; + NSInteger length = [_inputStream read:buffer maxLength:SRDefaultBufferSize()]; + + if (length <= 0) { + return; + } + + BOOL process = (_inputQueue.count == 0); + [_inputQueue addObject:[NSData dataWithBytes:buffer length:length]]; + + if (process) { + [self _dequeueInput]; + } +} + +// dequeue the incoming input so it is processed in order + +- (void)_dequeueInput +{ + while (_inputQueue.count > 0) { + NSData *data = _inputQueue.firstObject; + [_inputQueue removeObjectAtIndex:0]; + + // No need to process any data further, we got the full header data. + if ([self _proxyProcessHTTPResponseWithData:data]) { + break; + } + } +} +//handle checking the proxy connection status +- (BOOL)_proxyProcessHTTPResponseWithData:(NSData *)data +{ + if (_receivedHTTPHeaders == NULL) { + _receivedHTTPHeaders = CFHTTPMessageCreateEmpty(NULL, NO); + } + + CFHTTPMessageAppendBytes(_receivedHTTPHeaders, (const UInt8 *)data.bytes, data.length); + if (CFHTTPMessageIsHeaderComplete(_receivedHTTPHeaders)) { + SRDebugLog(@"Finished reading headers %@", CFBridgingRelease(CFHTTPMessageCopyAllHeaderFields(_receivedHTTPHeaders))); + [self _proxyHTTPHeadersDidFinish]; + return YES; + } + + return NO; +} + +- (void)_proxyHTTPHeadersDidFinish +{ + NSInteger responseCode = CFHTTPMessageGetResponseStatusCode(_receivedHTTPHeaders); + + if (responseCode >= 299) { + SRDebugLog(@"Connect to Proxy Request failed with response code %d", responseCode); + NSError *error = SRHTTPErrorWithCodeDescription(responseCode, 2132, + [NSString stringWithFormat:@"Received bad response code from proxy server: %d.", + (int)responseCode]); + [self _failWithError:error]; + return; + } + SRDebugLog(@"proxy connect return %d, call socket connect", responseCode); + [self _didConnect]; +} + +static NSTimeInterval const SRProxyConnectWriteTimeout = 5.0; + +- (void)_writeData:(NSData *)data +{ + const uint8_t * bytes = data.bytes; + __block NSInteger timeout = (NSInteger)(SRProxyConnectWriteTimeout * 1000000); // wait timeout before giving up + __weak typeof(self) wself = self; + dispatch_async(_writeQueue, ^{ + __strong typeof(wself) sself = self; + if (!sself) { + return; + } + NSOutputStream *outStream = sself.outputStream; + if (!outStream) { + return; + } + while (![outStream hasSpaceAvailable]) { + usleep(100); //wait until the socket is ready + timeout -= 100; + if (timeout < 0) { + NSError *error = SRHTTPErrorWithCodeDescription(408, 2132, @"Proxy timeout"); + [sself _failWithError:error]; + } else if (outStream.streamError != nil) { + [sself _failWithError:outStream.streamError]; + } + } + [outStream write:bytes maxLength:data.length]; + }); +} + +@end diff --git a/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/SocketRocket/SocketRocket/Internal/RunLoop/SRRunLoopThread.h b/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/SocketRocket/SocketRocket/Internal/RunLoop/SRRunLoopThread.h new file mode 100644 index 0000000..380cfa0 --- /dev/null +++ b/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/SocketRocket/SocketRocket/Internal/RunLoop/SRRunLoopThread.h @@ -0,0 +1,24 @@ +// +// Copyright 2012 Square Inc. +// Portions Copyright (c) 2016-present, Facebook, Inc. +// +// All rights reserved. +// +// This source code is licensed under the BSD-style license found in the +// LICENSE file in the root directory of this source tree. An additional grant +// of patent rights can be found in the PATENTS file in the same directory. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface SRRunLoopThread : NSThread + +@property (nonatomic, strong, readonly) NSRunLoop *runLoop; + ++ (instancetype)sharedThread; + +@end + +NS_ASSUME_NONNULL_END diff --git a/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/SocketRocket/SocketRocket/Internal/RunLoop/SRRunLoopThread.m b/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/SocketRocket/SocketRocket/Internal/RunLoop/SRRunLoopThread.m new file mode 100644 index 0000000..c692ae6 --- /dev/null +++ b/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/SocketRocket/SocketRocket/Internal/RunLoop/SRRunLoopThread.m @@ -0,0 +1,84 @@ +// +// Copyright 2012 Square Inc. +// Portions Copyright (c) 2016-present, Facebook, Inc. +// +// All rights reserved. +// +// This source code is licensed under the BSD-style license found in the +// LICENSE file in the root directory of this source tree. An additional grant +// of patent rights can be found in the PATENTS file in the same directory. +// + +#import "SRRunLoopThread.h" + +@interface SRRunLoopThread () +{ + dispatch_group_t _waitGroup; +} + +@property (nonatomic, strong, readwrite) NSRunLoop *runLoop; + +@end + +@implementation SRRunLoopThread + ++ (instancetype)sharedThread +{ + static SRRunLoopThread *thread; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + thread = [[SRRunLoopThread alloc] init]; + thread.name = @"com.facebook.SocketRocket.NetworkThread"; + thread.qualityOfService = NSQualityOfServiceUserInitiated; + [thread start]; + }); + return thread; +} + +- (instancetype)init +{ + self = [super init]; + if (self) { + _waitGroup = dispatch_group_create(); + dispatch_group_enter(_waitGroup); + } + return self; +} + +- (void)main +{ + @autoreleasepool { + _runLoop = [NSRunLoop currentRunLoop]; + dispatch_group_leave(_waitGroup); + + // Add an empty run loop source to prevent runloop from spinning. + CFRunLoopSourceContext sourceCtx = { + .version = 0, + .info = NULL, + .retain = NULL, + .release = NULL, + .copyDescription = NULL, + .equal = NULL, + .hash = NULL, + .schedule = NULL, + .cancel = NULL, + .perform = NULL + }; + CFRunLoopSourceRef source = CFRunLoopSourceCreate(NULL, 0, &sourceCtx); + CFRunLoopAddSource(CFRunLoopGetCurrent(), source, kCFRunLoopDefaultMode); + CFRelease(source); + + while ([_runLoop runMode:NSDefaultRunLoopMode beforeDate:[NSDate distantFuture]]) { + + } + assert(NO); + } +} + +- (NSRunLoop *)runLoop +{ + dispatch_group_wait(_waitGroup, DISPATCH_TIME_FOREVER); + return _runLoop; +} + +@end diff --git a/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/SocketRocket/SocketRocket/Internal/SRConstants.h b/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/SocketRocket/SocketRocket/Internal/SRConstants.h new file mode 100644 index 0000000..38dd009 --- /dev/null +++ b/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/SocketRocket/SocketRocket/Internal/SRConstants.h @@ -0,0 +1,26 @@ +// +// Copyright (c) 2016-present, Facebook, Inc. +// All rights reserved. +// +// This source code is licensed under the BSD-style license found in the +// LICENSE file in the root directory of this source tree. An additional grant +// of patent rights can be found in the PATENTS file in the same directory. +// + +#import + +typedef NS_ENUM(uint8_t, SROpCode) +{ + SROpCodeTextFrame = 0x1, + SROpCodeBinaryFrame = 0x2, + // 3-7 reserved. + SROpCodeConnectionClose = 0x8, + SROpCodePing = 0x9, + SROpCodePong = 0xA, + // B-F reserved. +}; + +/** + Default buffer size that is used for reading/writing to streams. + */ +extern size_t SRDefaultBufferSize(void); diff --git a/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/SocketRocket/SocketRocket/Internal/SRConstants.m b/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/SocketRocket/SocketRocket/Internal/SRConstants.m new file mode 100644 index 0000000..1dbd774 --- /dev/null +++ b/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/SocketRocket/SocketRocket/Internal/SRConstants.m @@ -0,0 +1,19 @@ +// +// Copyright (c) 2016-present, Facebook, Inc. +// All rights reserved. +// +// This source code is licensed under the BSD-style license found in the +// LICENSE file in the root directory of this source tree. An additional grant +// of patent rights can be found in the PATENTS file in the same directory. +// + +#import "SRConstants.h" + +size_t SRDefaultBufferSize(void) { + static size_t size; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + size = getpagesize(); + }); + return size; +} diff --git a/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/SocketRocket/SocketRocket/Internal/Security/SRPinningSecurityPolicy.h b/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/SocketRocket/SocketRocket/Internal/Security/SRPinningSecurityPolicy.h new file mode 100644 index 0000000..0d498b2 --- /dev/null +++ b/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/SocketRocket/SocketRocket/Internal/Security/SRPinningSecurityPolicy.h @@ -0,0 +1,27 @@ +// +// Copyright (c) 2016-present, Facebook, Inc. +// All rights reserved. +// +// This source code is licensed under the BSD-style license found in the +// LICENSE file in the root directory of this source tree. An additional grant +// of patent rights can be found in the PATENTS file in the same directory. +// + +#import + +#import + +NS_ASSUME_NONNULL_BEGIN + +/** + * NOTE: While publicly, SocketRocket does not support configuring the security policy with pinned certificates, + * it is still possible to manually construct a security policy of this class. If you do this, note that you may + * be open to MitM attacks, and we will not support any issues you may have. Dive at your own risk. + */ +@interface SRPinningSecurityPolicy : SRSecurityPolicy + +- (instancetype)initWithCertificates:(NSArray *)pinnedCertificates; + +@end + +NS_ASSUME_NONNULL_END diff --git a/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/SocketRocket/SocketRocket/Internal/Security/SRPinningSecurityPolicy.m b/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/SocketRocket/SocketRocket/Internal/Security/SRPinningSecurityPolicy.m new file mode 100644 index 0000000..c12dffa --- /dev/null +++ b/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/SocketRocket/SocketRocket/Internal/Security/SRPinningSecurityPolicy.m @@ -0,0 +1,71 @@ +// +// Copyright (c) 2016-present, Facebook, Inc. +// All rights reserved. +// +// This source code is licensed under the BSD-style license found in the +// LICENSE file in the root directory of this source tree. An additional grant +// of patent rights can be found in the PATENTS file in the same directory. +// + +#import "SRPinningSecurityPolicy.h" + +#import + +#import "SRLog.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface SRPinningSecurityPolicy () + +@property (nonatomic, copy, readonly) NSArray *pinnedCertificates; + +@end + +@implementation SRPinningSecurityPolicy + +- (instancetype)initWithCertificates:(NSArray *)pinnedCertificates +{ +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated" + // Do not validate certificate chain since we're pinning to specific certificates. + self = [super initWithCertificateChainValidationEnabled:NO]; +#pragma clang diagnostic pop + + if (!self) { return self; } + + if (pinnedCertificates.count == 0) { + @throw [NSException exceptionWithName:@"Creating security policy failed." + reason:@"Must specify at least one certificate when creating a pinning policy." + userInfo:nil]; + } + _pinnedCertificates = [pinnedCertificates copy]; + + return self; +} + +- (BOOL)evaluateServerTrust:(SecTrustRef)serverTrust forDomain:(NSString *)domain +{ + SRDebugLog(@"Pinned cert count: %d", self.pinnedCertificates.count); + NSUInteger requiredCertCount = self.pinnedCertificates.count; + + NSUInteger validatedCertCount = 0; + CFIndex serverCertCount = SecTrustGetCertificateCount(serverTrust); + for (CFIndex i = 0; i < serverCertCount; i++) { + SecCertificateRef cert = SecTrustGetCertificateAtIndex(serverTrust, i); + NSData *data = CFBridgingRelease(SecCertificateCopyData(cert)); + for (id ref in self.pinnedCertificates) { + SecCertificateRef trustedCert = (__bridge SecCertificateRef)ref; + // TODO: (nlutsenko) Add caching, so we don't copy the data for every pinned cert all the time. + NSData *trustedCertData = CFBridgingRelease(SecCertificateCopyData(trustedCert)); + if ([trustedCertData isEqualToData:data]) { + validatedCertCount++; + break; + } + } + } + return (requiredCertCount == validatedCertCount); +} + +@end + +NS_ASSUME_NONNULL_END diff --git a/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/SocketRocket/SocketRocket/Internal/Utilities/SRError.h b/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/SocketRocket/SocketRocket/Internal/Utilities/SRError.h new file mode 100644 index 0000000..7e13a82 --- /dev/null +++ b/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/SocketRocket/SocketRocket/Internal/Utilities/SRError.h @@ -0,0 +1,20 @@ +// +// Copyright (c) 2016-present, Facebook, Inc. +// All rights reserved. +// +// This source code is licensed under the BSD-style license found in the +// LICENSE file in the root directory of this source tree. An additional grant +// of patent rights can be found in the PATENTS file in the same directory. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +extern NSError *SRErrorWithDomainCodeDescription(NSString *domain, NSInteger code, NSString *description); +extern NSError *SRErrorWithCodeDescription(NSInteger code, NSString *description); +extern NSError *SRErrorWithCodeDescriptionUnderlyingError(NSInteger code, NSString *description, NSError *underlyingError); + +extern NSError *SRHTTPErrorWithCodeDescription(NSInteger httpCode, NSInteger errorCode, NSString *description); + +NS_ASSUME_NONNULL_END diff --git a/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/SocketRocket/SocketRocket/Internal/Utilities/SRError.m b/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/SocketRocket/SocketRocket/Internal/Utilities/SRError.m new file mode 100644 index 0000000..eeabe03 --- /dev/null +++ b/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/SocketRocket/SocketRocket/Internal/Utilities/SRError.m @@ -0,0 +1,42 @@ +// +// Copyright (c) 2016-present, Facebook, Inc. +// All rights reserved. +// +// This source code is licensed under the BSD-style license found in the +// LICENSE file in the root directory of this source tree. An additional grant +// of patent rights can be found in the PATENTS file in the same directory. +// + +#import "SRError.h" + +#import "SRWebSocket.h" + +NS_ASSUME_NONNULL_BEGIN + +NSError *SRErrorWithDomainCodeDescription(NSString *domain, NSInteger code, NSString *description) +{ + return [NSError errorWithDomain:domain code:code userInfo:@{ NSLocalizedDescriptionKey: description }]; +} + +NSError *SRErrorWithCodeDescription(NSInteger code, NSString *description) +{ + return SRErrorWithDomainCodeDescription(SRWebSocketErrorDomain, code, description); +} + +NSError *SRErrorWithCodeDescriptionUnderlyingError(NSInteger code, NSString *description, NSError *underlyingError) +{ + return [NSError errorWithDomain:SRWebSocketErrorDomain + code:code + userInfo:@{ NSLocalizedDescriptionKey: description, + NSUnderlyingErrorKey: underlyingError }]; +} + +NSError *SRHTTPErrorWithCodeDescription(NSInteger httpCode, NSInteger errorCode, NSString *description) +{ + return [NSError errorWithDomain:SRWebSocketErrorDomain + code:errorCode + userInfo:@{ NSLocalizedDescriptionKey: description, + SRHTTPResponseErrorKey: @(httpCode) }]; +} + +NS_ASSUME_NONNULL_END diff --git a/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/SocketRocket/SocketRocket/Internal/Utilities/SRHTTPConnectMessage.h b/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/SocketRocket/SocketRocket/Internal/Utilities/SRHTTPConnectMessage.h new file mode 100644 index 0000000..b67f3d5 --- /dev/null +++ b/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/SocketRocket/SocketRocket/Internal/Utilities/SRHTTPConnectMessage.h @@ -0,0 +1,21 @@ +// +// Copyright (c) 2016-present, Facebook, Inc. +// All rights reserved. +// +// This source code is licensed under the BSD-style license found in the +// LICENSE file in the root directory of this source tree. An additional grant +// of patent rights can be found in the PATENTS file in the same directory. +// + +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +extern CFHTTPMessageRef SRHTTPConnectMessageCreate(NSURLRequest *request, + NSString *securityKey, + uint8_t webSocketProtocolVersion, + NSArray *_Nullable cookies, + NSArray *_Nullable requestedProtocols); + +NS_ASSUME_NONNULL_END diff --git a/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/SocketRocket/SocketRocket/Internal/Utilities/SRHTTPConnectMessage.m b/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/SocketRocket/SocketRocket/Internal/Utilities/SRHTTPConnectMessage.m new file mode 100644 index 0000000..b2f9760 --- /dev/null +++ b/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/SocketRocket/SocketRocket/Internal/Utilities/SRHTTPConnectMessage.m @@ -0,0 +1,73 @@ +// +// Copyright (c) 2016-present, Facebook, Inc. +// All rights reserved. +// +// This source code is licensed under the BSD-style license found in the +// LICENSE file in the root directory of this source tree. An additional grant +// of patent rights can be found in the PATENTS file in the same directory. +// + +#import "SRHTTPConnectMessage.h" + +#import "SRURLUtilities.h" + +NS_ASSUME_NONNULL_BEGIN + +static NSString *_SRHTTPConnectMessageHost(NSURL *url) +{ + NSString *host = url.host; + if (url.port) { + host = [host stringByAppendingFormat:@":%@", url.port]; + } + return host; +} + +CFHTTPMessageRef SRHTTPConnectMessageCreate(NSURLRequest *request, + NSString *securityKey, + uint8_t webSocketProtocolVersion, + NSArray *_Nullable cookies, + NSArray *_Nullable requestedProtocols) +{ + NSURL *url = request.URL; + + CFHTTPMessageRef message = CFHTTPMessageCreateRequest(NULL, (__bridge CFStringRef)request.HTTPMethod, (__bridge CFURLRef)url, kCFHTTPVersion1_1); + + // Set host first so it defaults + CFHTTPMessageSetHeaderFieldValue(message, CFSTR("Host"), (__bridge CFStringRef)_SRHTTPConnectMessageHost(url)); + + // Apply cookies if any have been provided + if (cookies) { + NSDictionary *messageCookies = [NSHTTPCookie requestHeaderFieldsWithCookies:(NSArray *_Nonnull)cookies]; + [messageCookies enumerateKeysAndObjectsUsingBlock:^(NSString * _Nonnull key, NSString * _Nonnull obj, BOOL * _Nonnull stop) { + if (key.length && obj.length) { + CFHTTPMessageSetHeaderFieldValue(message, (__bridge CFStringRef)key, (__bridge CFStringRef)obj); + } + }]; + } + + // set header for http basic auth + NSString *basicAuthorizationString = SRBasicAuthorizationHeaderFromURL(url); + if (basicAuthorizationString) { + CFHTTPMessageSetHeaderFieldValue(message, CFSTR("Authorization"), (__bridge CFStringRef)basicAuthorizationString); + } + + CFHTTPMessageSetHeaderFieldValue(message, CFSTR("Upgrade"), CFSTR("websocket")); + CFHTTPMessageSetHeaderFieldValue(message, CFSTR("Connection"), CFSTR("Upgrade")); + CFHTTPMessageSetHeaderFieldValue(message, CFSTR("Sec-WebSocket-Key"), (__bridge CFStringRef)securityKey); + CFHTTPMessageSetHeaderFieldValue(message, CFSTR("Sec-WebSocket-Version"), (__bridge CFStringRef)@(webSocketProtocolVersion).stringValue); + + CFHTTPMessageSetHeaderFieldValue(message, CFSTR("Origin"), (__bridge CFStringRef)SRURLOrigin(url)); + + if (requestedProtocols.count) { + CFHTTPMessageSetHeaderFieldValue(message, CFSTR("Sec-WebSocket-Protocol"), + (__bridge CFStringRef)[requestedProtocols componentsJoinedByString:@", "]); + } + + [request.allHTTPHeaderFields enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) { + CFHTTPMessageSetHeaderFieldValue(message, (__bridge CFStringRef)key, (__bridge CFStringRef)obj); + }]; + + return message; +} + +NS_ASSUME_NONNULL_END diff --git a/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/SocketRocket/SocketRocket/Internal/Utilities/SRHash.h b/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/SocketRocket/SocketRocket/Internal/Utilities/SRHash.h new file mode 100644 index 0000000..3db14de --- /dev/null +++ b/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/SocketRocket/SocketRocket/Internal/Utilities/SRHash.h @@ -0,0 +1,19 @@ +// +// Copyright (c) 2016-present, Facebook, Inc. +// All rights reserved. +// +// This source code is licensed under the BSD-style license found in the +// LICENSE file in the root directory of this source tree. An additional grant +// of patent rights can be found in the PATENTS file in the same directory. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +extern NSData *SRSHA1HashFromString(NSString *string); +extern NSData *SRSHA1HashFromBytes(const char *bytes, size_t length); + +extern NSString *SRBase64EncodedStringFromData(NSData *data); + +NS_ASSUME_NONNULL_END diff --git a/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/SocketRocket/SocketRocket/Internal/Utilities/SRHash.m b/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/SocketRocket/SocketRocket/Internal/Utilities/SRHash.m new file mode 100644 index 0000000..a150ecc --- /dev/null +++ b/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/SocketRocket/SocketRocket/Internal/Utilities/SRHash.m @@ -0,0 +1,47 @@ +// +// Copyright (c) 2016-present, Facebook, Inc. +// All rights reserved. +// +// This source code is licensed under the BSD-style license found in the +// LICENSE file in the root directory of this source tree. An additional grant +// of patent rights can be found in the PATENTS file in the same directory. +// + +#import "SRHash.h" + +#import + +NS_ASSUME_NONNULL_BEGIN + +NSData *SRSHA1HashFromString(NSString *string) +{ + const char *utf8String = string.UTF8String; + if (!utf8String) { + return [NSData data]; + } + size_t length = [string lengthOfBytesUsingEncoding:NSUTF8StringEncoding]; + return SRSHA1HashFromBytes(utf8String, length); +} + +NSData *SRSHA1HashFromBytes(const char *bytes, size_t length) +{ + uint8_t outputLength = CC_SHA1_DIGEST_LENGTH; + unsigned char output[outputLength]; + CC_SHA1(bytes, (CC_LONG)length, output); + + return [NSData dataWithBytes:output length:outputLength]; +} + +NSString *SRBase64EncodedStringFromData(NSData *data) +{ + if ([data respondsToSelector:@selector(base64EncodedStringWithOptions:)]) { + return [data base64EncodedStringWithOptions:0]; + } + +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" + return [data base64Encoding]; +#pragma clang diagnostic pop +} + +NS_ASSUME_NONNULL_END diff --git a/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/SocketRocket/SocketRocket/Internal/Utilities/SRLog.h b/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/SocketRocket/SocketRocket/Internal/Utilities/SRLog.h new file mode 100644 index 0000000..99689ef --- /dev/null +++ b/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/SocketRocket/SocketRocket/Internal/Utilities/SRLog.h @@ -0,0 +1,20 @@ +// +// Copyright (c) 2016-present, Facebook, Inc. +// All rights reserved. +// +// This source code is licensed under the BSD-style license found in the +// LICENSE file in the root directory of this source tree. An additional grant +// of patent rights can be found in the PATENTS file in the same directory. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +// Uncomment this line to enable debug logging +//#define SR_DEBUG_LOG_ENABLED + +extern void SRErrorLog(NSString *format, ...); +extern void SRDebugLog(NSString *format, ...); + +NS_ASSUME_NONNULL_END diff --git a/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/SocketRocket/SocketRocket/Internal/Utilities/SRLog.m b/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/SocketRocket/SocketRocket/Internal/Utilities/SRLog.m new file mode 100644 index 0000000..4596017 --- /dev/null +++ b/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/SocketRocket/SocketRocket/Internal/Utilities/SRLog.m @@ -0,0 +1,33 @@ +// +// Copyright (c) 2016-present, Facebook, Inc. +// All rights reserved. +// +// This source code is licensed under the BSD-style license found in the +// LICENSE file in the root directory of this source tree. An additional grant +// of patent rights can be found in the PATENTS file in the same directory. +// + +#import "SRLog.h" + +NS_ASSUME_NONNULL_BEGIN + +extern void SRErrorLog(NSString *format, ...) +{ + __block va_list arg_list; + va_start (arg_list, format); + + NSString *formattedString = [[NSString alloc] initWithFormat:format arguments:arg_list]; + + va_end(arg_list); + + NSLog(@"[SocketRocket] %@", formattedString); +} + +extern void SRDebugLog(NSString *format, ...) +{ +#ifdef SR_DEBUG_LOG_ENABLED + SRErrorLog(tag, format); +#endif +} + +NS_ASSUME_NONNULL_END diff --git a/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/SocketRocket/SocketRocket/Internal/Utilities/SRMutex.h b/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/SocketRocket/SocketRocket/Internal/Utilities/SRMutex.h new file mode 100644 index 0000000..8226ce6 --- /dev/null +++ b/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/SocketRocket/SocketRocket/Internal/Utilities/SRMutex.h @@ -0,0 +1,22 @@ +// +// Copyright (c) 2016-present, Facebook, Inc. +// All rights reserved. +// +// This source code is licensed under the BSD-style license found in the +// LICENSE file in the root directory of this source tree. An additional grant +// of patent rights can be found in the PATENTS file in the same directory. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +typedef __attribute__((capability("mutex"))) pthread_mutex_t *SRMutex; + +extern SRMutex SRMutexInitRecursive(void); +extern void SRMutexDestroy(SRMutex mutex); + +extern void SRMutexLock(SRMutex mutex) __attribute__((acquire_capability(mutex))); +extern void SRMutexUnlock(SRMutex mutex) __attribute__((release_capability(mutex))); + +NS_ASSUME_NONNULL_END diff --git a/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/SocketRocket/SocketRocket/Internal/Utilities/SRMutex.m b/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/SocketRocket/SocketRocket/Internal/Utilities/SRMutex.m new file mode 100644 index 0000000..03b5939 --- /dev/null +++ b/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/SocketRocket/SocketRocket/Internal/Utilities/SRMutex.m @@ -0,0 +1,47 @@ +// +// Copyright (c) 2016-present, Facebook, Inc. +// All rights reserved. +// +// This source code is licensed under the BSD-style license found in the +// LICENSE file in the root directory of this source tree. An additional grant +// of patent rights can be found in the PATENTS file in the same directory. +// + +#import "SRMutex.h" + +#import + +NS_ASSUME_NONNULL_BEGIN + +SRMutex SRMutexInitRecursive(void) +{ + pthread_mutex_t *mutex = malloc(sizeof(pthread_mutex_t)); + pthread_mutexattr_t attributes; + + pthread_mutexattr_init(&attributes); + pthread_mutexattr_settype(&attributes, PTHREAD_MUTEX_RECURSIVE); + pthread_mutex_init(mutex, &attributes); + pthread_mutexattr_destroy(&attributes); + + return mutex; +} + +void SRMutexDestroy(SRMutex mutex) +{ + pthread_mutex_destroy(mutex); + free(mutex); +} + +__attribute__((no_thread_safety_analysis)) +void SRMutexLock(SRMutex mutex) +{ + pthread_mutex_lock(mutex); +} + +__attribute__((no_thread_safety_analysis)) +void SRMutexUnlock(SRMutex mutex) +{ + pthread_mutex_unlock(mutex); +} + +NS_ASSUME_NONNULL_END diff --git a/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/SocketRocket/SocketRocket/Internal/Utilities/SRRandom.h b/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/SocketRocket/SocketRocket/Internal/Utilities/SRRandom.h new file mode 100644 index 0000000..9b116cf --- /dev/null +++ b/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/SocketRocket/SocketRocket/Internal/Utilities/SRRandom.h @@ -0,0 +1,16 @@ +// +// Copyright (c) 2016-present, Facebook, Inc. +// All rights reserved. +// +// This source code is licensed under the BSD-style license found in the +// LICENSE file in the root directory of this source tree. An additional grant +// of patent rights can be found in the PATENTS file in the same directory. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +extern NSData *SRRandomData(NSUInteger length); + +NS_ASSUME_NONNULL_END diff --git a/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/SocketRocket/SocketRocket/Internal/Utilities/SRRandom.m b/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/SocketRocket/SocketRocket/Internal/Utilities/SRRandom.m new file mode 100644 index 0000000..acfbfe9 --- /dev/null +++ b/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/SocketRocket/SocketRocket/Internal/Utilities/SRRandom.m @@ -0,0 +1,29 @@ +// +// Copyright (c) 2016-present, Facebook, Inc. +// All rights reserved. +// +// This source code is licensed under the BSD-style license found in the +// LICENSE file in the root directory of this source tree. An additional grant +// of patent rights can be found in the PATENTS file in the same directory. +// + +#import "SRRandom.h" + +#import + +NS_ASSUME_NONNULL_BEGIN + +NSData *SRRandomData(NSUInteger length) +{ + NSMutableData *_Nullable data = [NSMutableData dataWithLength:length]; + if (data == nil) { + [NSException raise:NSInternalInconsistencyException format:@"Failed to allocate random data"]; + } + int result = SecRandomCopyBytes(kSecRandomDefault, data.length, ((NSMutableData *_Nonnull)data).mutableBytes); + if (result != errSecSuccess) { + [NSException raise:NSInternalInconsistencyException format:@"Failed to generate random bytes with OSStatus: %d", result]; + } + return (NSMutableData *_Nonnull)data; +} + +NS_ASSUME_NONNULL_END diff --git a/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/SocketRocket/SocketRocket/Internal/Utilities/SRSIMDHelpers.h b/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/SocketRocket/SocketRocket/Internal/Utilities/SRSIMDHelpers.h new file mode 100644 index 0000000..8291cc7 --- /dev/null +++ b/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/SocketRocket/SocketRocket/Internal/Utilities/SRSIMDHelpers.h @@ -0,0 +1,19 @@ +// +// Copyright (c) 2016-present, Facebook, Inc. +// All rights reserved. +// +// This source code is licensed under the BSD-style license found in the +// LICENSE file in the root directory of this source tree. An additional grant +// of patent rights can be found in the PATENTS file in the same directory. +// + +#import + +/** + Unmask bytes using XOR via SIMD. + + @param bytes The bytes to unmask. + @param length The number of bytes to unmask. + @param maskKey The mask to XOR with MUST be of length sizeof(uint32_t). + */ +void SRMaskBytesSIMD(uint8_t *bytes, size_t length, uint8_t *maskKey); diff --git a/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/SocketRocket/SocketRocket/Internal/Utilities/SRSIMDHelpers.m b/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/SocketRocket/SocketRocket/Internal/Utilities/SRSIMDHelpers.m new file mode 100644 index 0000000..97e6fc1 --- /dev/null +++ b/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/SocketRocket/SocketRocket/Internal/Utilities/SRSIMDHelpers.m @@ -0,0 +1,73 @@ +// +// Copyright (c) 2016-present, Facebook, Inc. +// All rights reserved. +// +// This source code is licensed under the BSD-style license found in the +// LICENSE file in the root directory of this source tree. An additional grant +// of patent rights can be found in the PATENTS file in the same directory. +// + +#import "SRSIMDHelpers.h" + +typedef uint8_t uint8x32_t __attribute__((vector_size(32))); + +static void SRMaskBytesManual(uint8_t *bytes, size_t length, uint8_t *maskKey) { + for (size_t i = 0; i < length; i++) { + bytes[i] = bytes[i] ^ maskKey[i % sizeof(uint32_t)]; + } +} + +/** + Right-shift the elements of a vector, circularly. + + @param vector The vector to circular shift. + @param by The number of elements to shift by. + + @return A shifted vector. + */ +static uint8x32_t SRShiftVector(uint8x32_t vector, size_t by) { + uint8x32_t vectorCopy = vector; + by = by % _Alignof(uint8x32_t); + + uint8_t *vectorPointer = (uint8_t *)&vector; + uint8_t *vectorCopyPointer = (uint8_t *)&vectorCopy; + + memmove(vectorPointer + by, vectorPointer, sizeof(vector) - by); + memcpy(vectorPointer, vectorCopyPointer + (sizeof(vector) - by), by); + + return vector; +} + +void SRMaskBytesSIMD(uint8_t *bytes, size_t length, uint8_t *maskKey) { + size_t alignmentBytes = _Alignof(uint8x32_t) - ((uintptr_t)bytes % _Alignof(uint8x32_t)); + if (alignmentBytes == _Alignof(uint8x32_t)) { + alignmentBytes = 0; + } + + // If the number of bytes that can be processed after aligning is + // less than the number of bytes we can put into a vector, + // then there's no work to do with SIMD, just call the manual version. + if (alignmentBytes > length || (length - alignmentBytes) < sizeof(uint8x32_t)) { + SRMaskBytesManual(bytes, length, maskKey); + return; + } + + size_t vectorLength = (length - alignmentBytes) / sizeof(uint8x32_t); + size_t manualStartOffset = alignmentBytes + (vectorLength * sizeof(uint8x32_t)); + size_t manualLength = length - manualStartOffset; + + uint8x32_t *vector = (uint8x32_t *)(bytes + alignmentBytes); + uint8x32_t maskVector; + + memset_pattern4(&maskVector, maskKey, sizeof(uint8x32_t)); + maskVector = SRShiftVector(maskVector, alignmentBytes); + + SRMaskBytesManual(bytes, alignmentBytes, maskKey); + + for (size_t vectorIndex = 0; vectorIndex < vectorLength; vectorIndex++) { + vector[vectorIndex] = vector[vectorIndex] ^ maskVector; + } + + // Use the shifted mask for the final manual part. + SRMaskBytesManual(bytes + manualStartOffset, manualLength, (uint8_t *) &maskVector); +} diff --git a/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/SocketRocket/SocketRocket/Internal/Utilities/SRURLUtilities.h b/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/SocketRocket/SocketRocket/Internal/Utilities/SRURLUtilities.h new file mode 100644 index 0000000..a9ec782 --- /dev/null +++ b/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/SocketRocket/SocketRocket/Internal/Utilities/SRURLUtilities.h @@ -0,0 +1,26 @@ +// +// Copyright (c) 2016-present, Facebook, Inc. +// All rights reserved. +// +// This source code is licensed under the BSD-style license found in the +// LICENSE file in the root directory of this source tree. An additional grant +// of patent rights can be found in the PATENTS file in the same directory. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +// The origin isn't really applicable for a native application. +// So instead, just map ws -> http and wss -> https. +extern NSString *SRURLOrigin(NSURL *url); + +extern BOOL SRURLRequiresSSL(NSURL *_Nullable url); + +// Extracts `user` and `password` from url (if available) into `Basic base64(user:password)`. +extern NSString *_Nullable SRBasicAuthorizationHeaderFromURL(NSURL *url); + +// Returns a valid value for `NSStreamNetworkServiceType` or `nil`. +extern NSString *_Nullable SRStreamNetworkServiceTypeFromURLRequest(NSURLRequest *request); + +NS_ASSUME_NONNULL_END diff --git a/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/SocketRocket/SocketRocket/Internal/Utilities/SRURLUtilities.m b/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/SocketRocket/SocketRocket/Internal/Utilities/SRURLUtilities.m new file mode 100644 index 0000000..cb1eef6 --- /dev/null +++ b/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/SocketRocket/SocketRocket/Internal/Utilities/SRURLUtilities.m @@ -0,0 +1,86 @@ +// +// Copyright (c) 2016-present, Facebook, Inc. +// All rights reserved. +// +// This source code is licensed under the BSD-style license found in the +// LICENSE file in the root directory of this source tree. An additional grant +// of patent rights can be found in the PATENTS file in the same directory. +// + +#import "SRURLUtilities.h" + +#import "SRHash.h" + +NS_ASSUME_NONNULL_BEGIN + +NSString *SRURLOrigin(NSURL *url) +{ + NSMutableString *origin = [NSMutableString string]; + + NSString *scheme = url.scheme.lowercaseString; + if ([scheme isEqualToString:@"wss"]) { + scheme = @"https"; + } else if ([scheme isEqualToString:@"ws"]) { + scheme = @"http"; + } + [origin appendFormat:@"%@://%@", scheme, url.host]; + + NSNumber *port = url.port; + BOOL portIsDefault = (!port || + ([scheme isEqualToString:@"http"] && port.integerValue == 80) || + ([scheme isEqualToString:@"https"] && port.integerValue == 443)); + if (!portIsDefault) { + [origin appendFormat:@":%@", port.stringValue]; + } + return origin; +} + +extern BOOL SRURLRequiresSSL(NSURL *_Nullable url) +{ + NSString *scheme = url.scheme.lowercaseString; + return ([scheme isEqualToString:@"wss"] || [scheme isEqualToString:@"https"]); +} + +extern NSString *_Nullable SRBasicAuthorizationHeaderFromURL(NSURL *url) +{ + if (!url.user || !url.password) { + return nil; + } + + NSData *data = [[NSString stringWithFormat:@"%@:%@", url.user, url.password] dataUsingEncoding:NSUTF8StringEncoding]; + return [NSString stringWithFormat:@"Basic %@", SRBase64EncodedStringFromData(data)]; +} + +extern NSString *_Nullable SRStreamNetworkServiceTypeFromURLRequest(NSURLRequest *request) +{ + NSString *networkServiceType = nil; + switch (request.networkServiceType) { + case NSURLNetworkServiceTypeDefault: + case NSURLNetworkServiceTypeResponsiveData: + case NSURLNetworkServiceTypeAVStreaming: + case NSURLNetworkServiceTypeResponsiveAV: + break; + case NSURLNetworkServiceTypeVoIP: + networkServiceType = NSStreamNetworkServiceTypeVoIP; + break; + case NSURLNetworkServiceTypeVideo: + networkServiceType = NSStreamNetworkServiceTypeVideo; + break; + case NSURLNetworkServiceTypeBackground: + networkServiceType = NSStreamNetworkServiceTypeBackground; + break; + case NSURLNetworkServiceTypeVoice: + networkServiceType = NSStreamNetworkServiceTypeVoice; + break; +#if (__MAC_OS_X_VERSION_MAX_ALLOWED >= 101200 || __IPHONE_OS_VERSION_MAX_ALLOWED >= 100000 || __TV_OS_VERSION_MAX_ALLOWED >= 100000 || __WATCH_OS_VERSION_MAX_ALLOWED >= 30000) + case NSURLNetworkServiceTypeCallSignaling: { + if (@available(iOS 10.0, tvOS 10.0, macOS 10.12, *)) { + networkServiceType = NSStreamNetworkServiceTypeCallSignaling; + } + } break; +#endif + } + return networkServiceType; +} + +NS_ASSUME_NONNULL_END diff --git a/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/SocketRocket/SocketRocket/NSRunLoop+SRWebSocket.h b/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/SocketRocket/SocketRocket/NSRunLoop+SRWebSocket.h new file mode 100644 index 0000000..8f419e3 --- /dev/null +++ b/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/SocketRocket/SocketRocket/NSRunLoop+SRWebSocket.h @@ -0,0 +1,27 @@ +// +// Copyright 2012 Square Inc. +// Portions Copyright (c) 2016-present, Facebook, Inc. +// +// All rights reserved. +// +// This source code is licensed under the BSD-style license found in the +// LICENSE file in the root directory of this source tree. An additional grant +// of patent rights can be found in the PATENTS file in the same directory. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface NSRunLoop (SRWebSocket) + +/** + Default run loop that will be used to schedule all instances of `SRWebSocket`. + + @return An instance of `NSRunLoop`. + */ ++ (NSRunLoop *)SR_networkRunLoop; + +@end + +NS_ASSUME_NONNULL_END diff --git a/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/SocketRocket/SocketRocket/NSRunLoop+SRWebSocket.m b/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/SocketRocket/SocketRocket/NSRunLoop+SRWebSocket.m new file mode 100644 index 0000000..30eb608 --- /dev/null +++ b/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/SocketRocket/SocketRocket/NSRunLoop+SRWebSocket.m @@ -0,0 +1,27 @@ +// +// Copyright 2012 Square Inc. +// Portions Copyright (c) 2016-present, Facebook, Inc. +// +// All rights reserved. +// +// This source code is licensed under the BSD-style license found in the +// LICENSE file in the root directory of this source tree. An additional grant +// of patent rights can be found in the PATENTS file in the same directory. +// + +#import "NSRunLoop+SRWebSocket.h" +#import "NSRunLoop+SRWebSocketPrivate.h" + +#import "SRRunLoopThread.h" + +// Required for object file to always be linked. +void import_NSRunLoop_SRWebSocket(void) { } + +@implementation NSRunLoop (SRWebSocket) + ++ (NSRunLoop *)SR_networkRunLoop +{ + return [SRRunLoopThread sharedThread].runLoop; +} + +@end diff --git a/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/SocketRocket/SocketRocket/NSURLRequest+SRWebSocket.h b/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/SocketRocket/SocketRocket/NSURLRequest+SRWebSocket.h new file mode 100644 index 0000000..4ccffd5 --- /dev/null +++ b/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/SocketRocket/SocketRocket/NSURLRequest+SRWebSocket.h @@ -0,0 +1,38 @@ +// +// Copyright 2012 Square Inc. +// Portions Copyright (c) 2016-present, Facebook, Inc. +// +// All rights reserved. +// +// This source code is licensed under the BSD-style license found in the +// LICENSE file in the root directory of this source tree. An additional grant +// of patent rights can be found in the PATENTS file in the same directory. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface NSURLRequest (SRWebSocket) + +/** + An array of pinned `SecCertificateRef` SSL certificates that `SRWebSocket` will use for validation. + */ +@property (nullable, nonatomic, copy, readonly) NSArray *SR_SSLPinnedCertificates + DEPRECATED_MSG_ATTRIBUTE("Using pinned certificates is neither secure nor supported in SocketRocket, " + "and leads to security issues. Please use a proper, trust chain validated certificate."); + +@end + +@interface NSMutableURLRequest (SRWebSocket) + +/** + An array of pinned `SecCertificateRef` SSL certificates that `SRWebSocket` will use for validation. + */ +@property (nullable, nonatomic, copy) NSArray *SR_SSLPinnedCertificates + DEPRECATED_MSG_ATTRIBUTE("Using pinned certificates is neither secure nor supported in SocketRocket, " + "and leads to security issues. Please use a proper, trust chain validated certificate."); + +@end + +NS_ASSUME_NONNULL_END diff --git a/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/SocketRocket/SocketRocket/NSURLRequest+SRWebSocket.m b/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/SocketRocket/SocketRocket/NSURLRequest+SRWebSocket.m new file mode 100644 index 0000000..8efb090 --- /dev/null +++ b/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/SocketRocket/SocketRocket/NSURLRequest+SRWebSocket.m @@ -0,0 +1,42 @@ +// +// Copyright 2012 Square Inc. +// Portions Copyright (c) 2016-present, Facebook, Inc. +// +// All rights reserved. +// +// This source code is licensed under the BSD-style license found in the +// LICENSE file in the root directory of this source tree. An additional grant +// of patent rights can be found in the PATENTS file in the same directory. +// + +#import "NSURLRequest+SRWebSocket.h" +#import "NSURLRequest+SRWebSocketPrivate.h" + +// Required for object file to always be linked. +void import_NSURLRequest_SRWebSocket(void) { } + +NS_ASSUME_NONNULL_BEGIN + +static NSString *const SRSSLPinnnedCertificatesKey = @"SocketRocket_SSLPinnedCertificates"; + +@implementation NSURLRequest (SRWebSocket) + +- (nullable NSArray *)SR_SSLPinnedCertificates +{ + return nil; +} + +@end + +@implementation NSMutableURLRequest (SRWebSocket) + +- (void)setSR_SSLPinnedCertificates:(nullable NSArray *)SR_SSLPinnedCertificates +{ + [NSException raise:NSInvalidArgumentException + format:@"Using pinned certificates is neither secure nor supported in SocketRocket, " + "and leads to security issues. Please use a proper, trust chain validated certificate."]; +} + +@end + +NS_ASSUME_NONNULL_END diff --git a/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/SocketRocket/SocketRocket/SRSecurityPolicy.h b/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/SocketRocket/SocketRocket/SRSecurityPolicy.h new file mode 100644 index 0000000..3fbd809 --- /dev/null +++ b/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/SocketRocket/SocketRocket/SRSecurityPolicy.h @@ -0,0 +1,72 @@ +// +// Copyright (c) 2016-present, Facebook, Inc. +// All rights reserved. +// +// This source code is licensed under the BSD-style license found in the +// LICENSE file in the root directory of this source tree. An additional grant +// of patent rights can be found in the PATENTS file in the same directory. +// + +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface SRSecurityPolicy : NSObject + +/** + A default `SRSecurityPolicy` implementation specifies socket security and + validates the certificate chain. + + Use a subclass of `SRSecurityPolicy` for more fine grained customization. + */ ++ (instancetype)defaultPolicy; + +/** + Specifies socket security and provider certificate pinning, disregarding certificate + chain validation. + + @param pinnedCertificates Array of `SecCertificateRef` SSL certificates to use for validation. + */ ++ (instancetype)pinnningPolicyWithCertificates:(NSArray *)pinnedCertificates + DEPRECATED_MSG_ATTRIBUTE("Using pinned certificates is neither secure nor supported in SocketRocket, " + "and leads to security issues. Please use a proper, trust chain validated certificate."); + +/** + Specifies socket security and optional certificate chain validation. + + @param enabled Whether or not to validate the SSL certificate chain. If you + are considering using this method because your certificate was not issued by a + recognized certificate authority, consider using `pinningPolicyWithCertificates` instead. + */ +- (instancetype)initWithCertificateChainValidationEnabled:(BOOL)enabled + DEPRECATED_MSG_ATTRIBUTE("Disabling certificate chain validation is unsafe. " + "Please use a proper Certificate Authority to issue your TLS certificates.") + NS_DESIGNATED_INITIALIZER; + +/** + Updates all the security options for input and output streams, for example you + can set your socket security level here. + + @param stream Stream to update the options in. + */ +- (void)updateSecurityOptionsInStream:(NSStream *)stream; + +/** + Whether or not the specified server trust should be accepted, based on the security policy. + + This method should be used when responding to an authentication challenge from + a server. In the default implemenation, no further validation is done here, but + you're free to override it in a subclass. See `SRPinningSecurityPolicy.h` for + an example. + + @param serverTrust The X.509 certificate trust of the server. + @param domain The domain of serverTrust. + + @return Whether or not to trust the server. + */ +- (BOOL)evaluateServerTrust:(SecTrustRef)serverTrust forDomain:(NSString *)domain; + +@end + +NS_ASSUME_NONNULL_END diff --git a/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/SocketRocket/SocketRocket/SRSecurityPolicy.m b/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/SocketRocket/SocketRocket/SRSecurityPolicy.m new file mode 100644 index 0000000..3759d26 --- /dev/null +++ b/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/SocketRocket/SocketRocket/SRSecurityPolicy.m @@ -0,0 +1,75 @@ +// +// Copyright (c) 2016-present, Facebook, Inc. +// All rights reserved. +// +// This source code is licensed under the BSD-style license found in the +// LICENSE file in the root directory of this source tree. An additional grant +// of patent rights can be found in the PATENTS file in the same directory. +// + +#import "SRSecurityPolicy.h" +#import "SRPinningSecurityPolicy.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface SRSecurityPolicy () + +@property (nonatomic, assign, readonly) BOOL certificateChainValidationEnabled; + +@end + +@implementation SRSecurityPolicy + ++ (instancetype)defaultPolicy +{ + return [self new]; +} + ++ (instancetype)pinnningPolicyWithCertificates:(NSArray *)pinnedCertificates +{ + [NSException raise:NSInvalidArgumentException + format:@"Using pinned certificates is neither secure nor supported in SocketRocket, " + "and leads to security issues. Please use a proper, trust chain validated certificate."]; + + return nil; +} + +- (instancetype)initWithCertificateChainValidationEnabled:(BOOL)enabled +{ + self = [super init]; + if (!self) { return self; } + + _certificateChainValidationEnabled = enabled; + + return self; +} + +- (instancetype)init +{ +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated" + + return [self initWithCertificateChainValidationEnabled:YES]; + +#pragma clang diagnostic pop +} + +- (void)updateSecurityOptionsInStream:(NSStream *)stream +{ + // Enforce TLS 1.2 + [stream setProperty:(__bridge id)CFSTR("kCFStreamSocketSecurityLevelTLSv1_2") forKey:(__bridge id)kCFStreamPropertySocketSecurityLevel]; + + // Validate certificate chain for this stream if enabled. + NSDictionary *sslOptions = @{ (__bridge NSString *)kCFStreamSSLValidatesCertificateChain : @(self.certificateChainValidationEnabled) }; + [stream setProperty:sslOptions forKey:(__bridge NSString *)kCFStreamPropertySSLSettings]; +} + +- (BOOL)evaluateServerTrust:(SecTrustRef)serverTrust forDomain:(NSString *)domain +{ + // No further evaluation happens in the default policy. + return YES; +} + +@end + +NS_ASSUME_NONNULL_END diff --git a/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/SocketRocket/SocketRocket/SRWebSocket.h b/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/SocketRocket/SocketRocket/SRWebSocket.h new file mode 100644 index 0000000..a3806f1 --- /dev/null +++ b/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/SocketRocket/SocketRocket/SRWebSocket.h @@ -0,0 +1,417 @@ +// +// Copyright 2012 Square Inc. +// Portions Copyright (c) 2016-present, Facebook, Inc. +// +// All rights reserved. +// +// This source code is licensed under the BSD-style license found in the +// LICENSE file in the root directory of this source tree. An additional grant +// of patent rights can be found in the PATENTS file in the same directory. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +typedef NS_ENUM(NSInteger, SRReadyState) { + SR_CONNECTING = 0, + SR_OPEN = 1, + SR_CLOSING = 2, + SR_CLOSED = 3, +}; + +typedef NS_ENUM(NSInteger, SRStatusCode) { + // 0-999: Reserved and not used. + SRStatusCodeNormal = 1000, + SRStatusCodeGoingAway = 1001, + SRStatusCodeProtocolError = 1002, + SRStatusCodeUnhandledType = 1003, + // 1004 reserved. + SRStatusNoStatusReceived = 1005, + SRStatusCodeAbnormal = 1006, + SRStatusCodeInvalidUTF8 = 1007, + SRStatusCodePolicyViolated = 1008, + SRStatusCodeMessageTooBig = 1009, + SRStatusCodeMissingExtension = 1010, + SRStatusCodeInternalError = 1011, + SRStatusCodeServiceRestart = 1012, + SRStatusCodeTryAgainLater = 1013, + // 1014: Reserved for future use by the WebSocket standard. + SRStatusCodeTLSHandshake = 1015, + // 1016-1999: Reserved for future use by the WebSocket standard. + // 2000-2999: Reserved for use by WebSocket extensions. + // 3000-3999: Available for use by libraries and frameworks. May not be used by applications. Available for registration at the IANA via first-come, first-serve. + // 4000-4999: Available for use by applications. +}; + +@class SRWebSocket; +@class SRSecurityPolicy; + +/** + Error domain used for errors reported by SRWebSocket. + */ +extern NSString *const SRWebSocketErrorDomain; + +/** + Key used for HTTP status code if bad response was received from the server. + */ +extern NSString *const SRHTTPResponseErrorKey; + +@protocol SRWebSocketDelegate; + +///-------------------------------------- +#pragma mark - SRWebSocket +///-------------------------------------- + +/** + A `SRWebSocket` object lets you connect, send and receive data to a remote Web Socket. + */ +@interface SRWebSocket : NSObject + +/** + The delegate of the web socket. + + The web socket delegate is notified on all state changes that happen to the web socket. + */ +@property (nonatomic, weak) id delegate; + +/** + A dispatch queue for scheduling the delegate calls. The queue doesn't need be a serial queue. + + If `nil` and `delegateOperationQueue` is `nil`, the socket uses main queue for performing all delegate method calls. + */ +@property (nullable, nonatomic, strong) dispatch_queue_t delegateDispatchQueue; + +/** + An operation queue for scheduling the delegate calls. + + If `nil` and `delegateOperationQueue` is `nil`, the socket uses main queue for performing all delegate method calls. + */ +@property (nullable, nonatomic, strong) NSOperationQueue *delegateOperationQueue; + +/** + Current ready state of the socket. Default: `SR_CONNECTING`. + + This property is Key-Value Observable and fully thread-safe. + */ +@property (atomic, assign, readonly) SRReadyState readyState; + +/** + An instance of `NSURL` that this socket connects to. + */ +@property (nullable, nonatomic, strong, readonly) NSURL *url; + +/** + All HTTP headers that were received by socket or `nil` if none were received so far. + */ +@property (nullable, nonatomic, assign, readonly) CFHTTPMessageRef receivedHTTPHeaders; + +/** + Array of `NSHTTPCookie` cookies to apply to the connection. + */ +@property (nullable, nonatomic, copy) NSArray *requestCookies; + +/** + The negotiated web socket protocol or `nil` if handshake did not yet complete. + */ +@property (nullable, nonatomic, copy, readonly) NSString *protocol; + +/** + A boolean value indicating whether this socket will allow connection without SSL trust chain evaluation. + For DEBUG builds this flag is ignored, and SSL connections are allowed regardless of the certificate trust configuration + */ +@property (nonatomic, assign, readonly) BOOL allowsUntrustedSSLCertificates; + +///-------------------------------------- +#pragma mark - Constructors +///-------------------------------------- + +/** + Initializes a web socket with a given `NSURLRequest`. + + @param request Request to initialize with. + */ +- (instancetype)initWithURLRequest:(NSURLRequest *)request; + +/** + Initializes a web socket with a given `NSURLRequest`, specifying a transport security policy (e.g. SSL configuration). + + @param request Request to initialize with. + @param securityPolicy Policy object describing transport security behavior. + */ +- (instancetype)initWithURLRequest:(NSURLRequest *)request securityPolicy:(SRSecurityPolicy *)securityPolicy; + +/** + Initializes a web socket with a given `NSURLRequest` and list of sub-protocols. + + @param request Request to initialize with. + @param protocols An array of strings that turn into `Sec-WebSocket-Protocol`. Default: `nil`. + */ +- (instancetype)initWithURLRequest:(NSURLRequest *)request protocols:(nullable NSArray *)protocols; + +/** + Initializes a web socket with a given `NSURLRequest`, list of sub-protocols and whether untrusted SSL certificates are allowed. + + @param request Request to initialize with. + @param protocols An array of strings that turn into `Sec-WebSocket-Protocol`. Default: `nil`. + @param allowsUntrustedSSLCertificates Boolean value indicating whether untrusted SSL certificates are allowed. Default: `false`. + */ +- (instancetype)initWithURLRequest:(NSURLRequest *)request protocols:(nullable NSArray *)protocols allowsUntrustedSSLCertificates:(BOOL)allowsUntrustedSSLCertificates + DEPRECATED_MSG_ATTRIBUTE("Disabling certificate chain validation is unsafe. " + "Please use a proper Certificate Authority to issue your TLS certificates."); + +/** + Initializes a web socket with a given `NSURLRequest`, list of sub-protocols and whether untrusted SSL certificates are allowed. + + @param request Request to initialize with. + @param protocols An array of strings that turn into `Sec-WebSocket-Protocol`. Default: `nil`. + @param securityPolicy Policy object describing transport security behavior. + */ +- (instancetype)initWithURLRequest:(NSURLRequest *)request protocols:(nullable NSArray *)protocols securityPolicy:(SRSecurityPolicy *)securityPolicy NS_DESIGNATED_INITIALIZER; + +/** + Initializes a web socket with a given `NSURL`. + + @param url URL to initialize with. + */ +- (instancetype)initWithURL:(NSURL *)url; + +/** + Initializes a web socket with a given `NSURL` and list of sub-protocols. + + @param url URL to initialize with. + @param protocols An array of strings that turn into `Sec-WebSocket-Protocol`. Default: `nil`. + */ +- (instancetype)initWithURL:(NSURL *)url protocols:(nullable NSArray *)protocols; + +/** + Initializes a web socket with a given `NSURL`, specifying a transport security policy (e.g. SSL configuration). + + @param url URL to initialize with. + @param securityPolicy Policy object describing transport security behavior. + */ +- (instancetype)initWithURL:(NSURL *)url securityPolicy:(SRSecurityPolicy *)securityPolicy; + +/** + Initializes a web socket with a given `NSURL`, list of sub-protocols and whether untrusted SSL certificates are allowed. + + @param url URL to initialize with. + @param protocols An array of strings that turn into `Sec-WebSocket-Protocol`. Default: `nil`. + @param allowsUntrustedSSLCertificates Boolean value indicating whether untrusted SSL certificates are allowed. Default: `false`. + */ +- (instancetype)initWithURL:(NSURL *)url protocols:(nullable NSArray *)protocols allowsUntrustedSSLCertificates:(BOOL)allowsUntrustedSSLCertificates + DEPRECATED_MSG_ATTRIBUTE("Disabling certificate chain validation is unsafe. " + "Please use a proper Certificate Authority to issue your TLS certificates."); + +/** + Unavailable initializer. Please use any other initializer. + */ +- (instancetype)init NS_UNAVAILABLE; + +/** + Unavailable constructor. Please use any other initializer. + */ ++ (instancetype)new NS_UNAVAILABLE; + +///-------------------------------------- +#pragma mark - Schedule +///-------------------------------------- + +/** + Schedules a received on a given run loop in a given mode. + By default, a web socket will schedule itself on `+[NSRunLoop SR_networkRunLoop]` using `NSDefaultRunLoopMode`. + + @param runLoop The run loop on which to schedule the receiver. + @param mode The mode for the run loop. + */ +- (void)scheduleInRunLoop:(NSRunLoop *)runLoop forMode:(NSString *)mode NS_SWIFT_NAME(schedule(in:forMode:)); + +/** + Removes the receiver from a given run loop running in a given mode. + + @param runLoop The run loop on which the receiver was scheduled. + @param mode The mode for the run loop. + */ +- (void)unscheduleFromRunLoop:(NSRunLoop *)runLoop forMode:(NSString *)mode NS_SWIFT_NAME(unschedule(from:forMode:)); + +///-------------------------------------- +#pragma mark - Open / Close +///-------------------------------------- + +/** + Opens web socket, which will trigger connection, authentication and start receiving/sending events. + An instance of `SRWebSocket` is intended for one-time-use only. This method should be called once and only once. + */ +- (void)open; + +/** + Closes a web socket using `SRStatusCodeNormal` code and no reason. + */ +- (void)close; + +/** + Closes a web socket using a given code and reason. + + @param code Code to close the socket with. + @param reason Reason to send to the server or `nil`. + */ +- (void)closeWithCode:(NSInteger)code reason:(nullable NSString *)reason; + +///-------------------------------------- +#pragma mark Send +///-------------------------------------- + +/** + Send a UTF-8 string or binary data to the server. + + @param message UTF-8 String or Data to send. + + @deprecated Please use `sendString:` or `sendData` instead. + */ +- (void)send:(nullable id)message __attribute__((deprecated("Please use `sendString:error:` or `sendData:error:` instead."))); + +/** + Send a UTF-8 String to the server. + + @param string String to send. + @param error On input, a pointer to variable for an `NSError` object. + If an error occurs, this pointer is set to an `NSError` object containing information about the error. + You may specify `nil` to ignore the error information. + + @return `YES` if the string was scheduled to send, otherwise - `NO`. + */ +- (BOOL)sendString:(NSString *)string error:(NSError **)error NS_SWIFT_NAME(send(string:)); + +/** + Send binary data to the server. + + @param data Data to send. + @param error On input, a pointer to variable for an `NSError` object. + If an error occurs, this pointer is set to an `NSError` object containing information about the error. + You may specify `nil` to ignore the error information. + + @return `YES` if the string was scheduled to send, otherwise - `NO`. + */ +- (BOOL)sendData:(nullable NSData *)data error:(NSError **)error NS_SWIFT_NAME(send(data:)); + +/** + Send binary data to the server, without making a defensive copy of it first. + + @param data Data to send. + @param error On input, a pointer to variable for an `NSError` object. + If an error occurs, this pointer is set to an `NSError` object containing information about the error. + You may specify `nil` to ignore the error information. + + @return `YES` if the string was scheduled to send, otherwise - `NO`. + */ +- (BOOL)sendDataNoCopy:(nullable NSData *)data error:(NSError **)error NS_SWIFT_NAME(send(dataNoCopy:)); + +/** + Send Ping message to the server with optional data. + + @param data Instance of `NSData` or `nil`. + @param error On input, a pointer to variable for an `NSError` object. + If an error occurs, this pointer is set to an `NSError` object containing information about the error. + You may specify `nil` to ignore the error information. + + @return `YES` if the string was scheduled to send, otherwise - `NO`. + */ +- (BOOL)sendPing:(nullable NSData *)data error:(NSError **)error NS_SWIFT_NAME(sendPing(_:)); + +@end + +///-------------------------------------- +#pragma mark - SRWebSocketDelegate +///-------------------------------------- + +/** + The `SRWebSocketDelegate` protocol describes the methods that `SRWebSocket` objects + call on their delegates to handle status and messsage events. + */ +@protocol SRWebSocketDelegate + +@optional + +#pragma mark Receive Messages + +/** + Called when any message was received from a web socket. + This method is suboptimal and might be deprecated in a future release. + + @param webSocket An instance of `SRWebSocket` that received a message. + @param message Received message. Either a `String` or `NSData`. + */ +- (void)webSocket:(SRWebSocket *)webSocket didReceiveMessage:(id)message; + +/** + Called when a frame was received from a web socket. + + @param webSocket An instance of `SRWebSocket` that received a message. + @param string Received text in a form of UTF-8 `String`. + */ +- (void)webSocket:(SRWebSocket *)webSocket didReceiveMessageWithString:(NSString *)string; + +/** + Called when a frame was received from a web socket. + + @param webSocket An instance of `SRWebSocket` that received a message. + @param data Received data in a form of `NSData`. + */ +- (void)webSocket:(SRWebSocket *)webSocket didReceiveMessageWithData:(NSData *)data; + +#pragma mark Status & Connection + +/** + Called when a given web socket was open and authenticated. + + @param webSocket An instance of `SRWebSocket` that was open. + */ +- (void)webSocketDidOpen:(SRWebSocket *)webSocket; + +/** + Called when a given web socket encountered an error. + + @param webSocket An instance of `SRWebSocket` that failed with an error. + @param error An instance of `NSError`. + */ +- (void)webSocket:(SRWebSocket *)webSocket didFailWithError:(NSError *)error; + +/** + Called when a given web socket was closed. + + @param webSocket An instance of `SRWebSocket` that was closed. + @param code Code reported by the server. + @param reason Reason in a form of a String that was reported by the server or `nil`. + @param wasClean Boolean value indicating whether a socket was closed in a clean state. + */ +- (void)webSocket:(SRWebSocket *)webSocket didCloseWithCode:(NSInteger)code reason:(nullable NSString *)reason wasClean:(BOOL)wasClean; + +/** + Called on receive of a ping message from the server. + + @param webSocket An instance of `SRWebSocket` that received a ping frame. + @param data Payload that was received or `nil` if there was no payload. + */ +- (void)webSocket:(SRWebSocket *)webSocket didReceivePingWithData:(nullable NSData *)data; + +/** + Called when a pong data was received in response to ping. + + @param webSocket An instance of `SRWebSocket` that received a pong frame. + @param pongData Payload that was received or `nil` if there was no payload. + */ +- (void)webSocket:(SRWebSocket *)webSocket didReceivePong:(nullable NSData *)pongData; + +/** + Sent before reporting a text frame to be able to configure if it shuold be convert to a UTF-8 String or passed as `NSData`. + If the method is not implemented - it will always convert text frames to String. + + @param webSocket An instance of `SRWebSocket` that received a text frame. + + @return `YES` if text frame should be converted to UTF-8 String, otherwise - `NO`. Default: `YES`. + */ +- (BOOL)webSocketShouldConvertTextFrameToString:(SRWebSocket *)webSocket NS_SWIFT_NAME(webSocketShouldConvertTextFrameToString(_:)); + +@end + +NS_ASSUME_NONNULL_END diff --git a/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/SocketRocket/SocketRocket/SRWebSocket.m b/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/SocketRocket/SocketRocket/SRWebSocket.m new file mode 100644 index 0000000..83bf212 --- /dev/null +++ b/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/SocketRocket/SocketRocket/SRWebSocket.m @@ -0,0 +1,1655 @@ +// +// Copyright 2012 Square Inc. +// Portions Copyright (c) 2016-present, Facebook, Inc. +// +// All rights reserved. +// +// This source code is licensed under the BSD-style license found in the +// LICENSE file in the root directory of this source tree. An additional grant +// of patent rights can be found in the PATENTS file in the same directory. +// + +#import "SRWebSocket.h" + +#if __has_include() +#define HAS_ICU +#endif + +#ifdef HAS_ICU +#import +#endif + +#import + +#import "SRDelegateController.h" +#import "SRIOConsumer.h" +#import "SRIOConsumerPool.h" +#import "SRHash.h" +#import "SRURLUtilities.h" +#import "SRError.h" +#import "NSURLRequest+SRWebSocket.h" +#import "NSRunLoop+SRWebSocket.h" +#import "SRProxyConnect.h" +#import "SRSecurityPolicy.h" +#import "SRHTTPConnectMessage.h" +#import "SRRandom.h" +#import "SRLog.h" +#import "SRMutex.h" +#import "SRSIMDHelpers.h" +#import "NSURLRequest+SRWebSocketPrivate.h" +#import "NSRunLoop+SRWebSocketPrivate.h" +#import "SRConstants.h" + +#if !__has_feature(objc_arc) +#error SocketRocket must be compiled with ARC enabled +#endif + +__attribute__((used)) static void importCategories(void) +{ + import_NSURLRequest_SRWebSocket(); + import_NSRunLoop_SRWebSocket(); +} + +typedef struct { + BOOL fin; + // BOOL rsv1; + // BOOL rsv2; + // BOOL rsv3; + uint8_t opcode; + BOOL masked; + uint64_t payload_length; +} frame_header; + +static NSString *const SRWebSocketAppendToSecKeyString = @"258EAFA5-E914-47DA-95CA-C5AB0DC85B11"; + +static inline int32_t validate_dispatch_data_partial_string(NSData *data); + +static uint8_t const SRWebSocketProtocolVersion = 13; + +NSString *const SRWebSocketErrorDomain = @"SRWebSocketErrorDomain"; +NSString *const SRHTTPResponseErrorKey = @"HTTPResponseStatusCode"; + +@interface SRWebSocket () + +@property (atomic, assign, readwrite) SRReadyState readyState; + +// Specifies whether SSL trust chain should NOT be evaluated. +// By default this flag is set to NO, meaning only secure SSL connections are allowed. +// For DEBUG builds this flag is ignored, and SSL connections are allowed regardless +// of the certificate trust configuration +@property (nonatomic, assign, readwrite) BOOL allowsUntrustedSSLCertificates; + +@property (nonatomic, strong, readonly) SRDelegateController *delegateController; + +@end + +@implementation SRWebSocket { + SRMutex _kvoLock; + os_unfair_lock _propertyLock; + + dispatch_queue_t _workQueue; + NSMutableArray *_consumers; + + NSInputStream *_inputStream; + NSOutputStream *_outputStream; + + dispatch_data_t _readBuffer; + NSUInteger _readBufferOffset; + + dispatch_data_t _outputBuffer; + NSUInteger _outputBufferOffset; + + uint8_t _currentFrameOpcode; + size_t _currentFrameCount; + size_t _readOpCount; + uint32_t _currentStringScanPosition; + NSMutableData *_currentFrameData; + + NSString *_closeReason; + + NSString *_secKey; + + SRSecurityPolicy *_securityPolicy; + BOOL _requestRequiresSSL; + BOOL _streamSecurityValidated; + + uint8_t _currentReadMaskKey[4]; + size_t _currentReadMaskOffset; + + BOOL _closeWhenFinishedWriting; + BOOL _failed; + + NSURLRequest *_urlRequest; + + BOOL _sentClose; + BOOL _didFail; + BOOL _cleanupScheduled; + int _closeCode; + + BOOL _isPumping; + + NSMutableSet *_scheduledRunloops; // Set<[RunLoop, Mode]>. TODO: (nlutsenko) Fix clowntown + + // We use this to retain ourselves. + __strong SRWebSocket *_selfRetain; + + NSArray *_requestedProtocols; + SRIOConsumerPool *_consumerPool; + + // proxy support + SRProxyConnect *_proxyConnect; +} + +@synthesize readyState = _readyState; + +///-------------------------------------- +#pragma mark - Init +///-------------------------------------- + +- (instancetype)initWithURLRequest:(NSURLRequest *)request protocols:(NSArray *)protocols securityPolicy:(SRSecurityPolicy *)securityPolicy +{ + self = [super init]; + if (!self) return self; + + assert(request.URL); + _url = request.URL; + _urlRequest = request; + _requestedProtocols = [protocols copy]; + _securityPolicy = securityPolicy; + _requestRequiresSSL = SRURLRequiresSSL(_url); + + _readyState = SR_CONNECTING; + + _propertyLock = OS_UNFAIR_LOCK_INIT; + _kvoLock = SRMutexInitRecursive(); + _workQueue = dispatch_queue_create(NULL, DISPATCH_QUEUE_SERIAL); + + // Going to set a specific on the queue so we can validate we're on the work queue + dispatch_queue_set_specific(_workQueue, (__bridge void *)self, (__bridge void *)(_workQueue), NULL); + + _delegateController = [[SRDelegateController alloc] init]; + + _readBuffer = dispatch_data_empty; + _outputBuffer = dispatch_data_empty; + + _currentFrameData = [[NSMutableData alloc] init]; + + _consumers = [[NSMutableArray alloc] init]; + + _consumerPool = [[SRIOConsumerPool alloc] init]; + + _scheduledRunloops = [[NSMutableSet alloc] init]; + + return self; +} + +- (instancetype)initWithURLRequest:(NSURLRequest *)request protocols:(NSArray *)protocols allowsUntrustedSSLCertificates:(BOOL)allowsUntrustedSSLCertificates +{ + SRSecurityPolicy *securityPolicy; + NSArray *pinnedCertificates = request.SR_SSLPinnedCertificates; + if (pinnedCertificates) { +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated" + securityPolicy = [SRSecurityPolicy pinnningPolicyWithCertificates:pinnedCertificates]; +#pragma clang diagnostic pop + } else { + BOOL certificateChainValidationEnabled = !allowsUntrustedSSLCertificates; + securityPolicy = [[SRSecurityPolicy alloc] initWithCertificateChainValidationEnabled:certificateChainValidationEnabled]; + } + + return [self initWithURLRequest:request protocols:protocols securityPolicy:securityPolicy]; +} + +- (instancetype)initWithURLRequest:(NSURLRequest *)request securityPolicy:(SRSecurityPolicy *)securityPolicy +{ + return [self initWithURLRequest:request protocols:nil securityPolicy:securityPolicy]; +} + +- (instancetype)initWithURLRequest:(NSURLRequest *)request protocols:(NSArray *)protocols +{ +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated" + return [self initWithURLRequest:request protocols:protocols allowsUntrustedSSLCertificates:NO]; +#pragma clang diagnostic pop +} + +- (instancetype)initWithURLRequest:(NSURLRequest *)request +{ + return [self initWithURLRequest:request protocols:nil]; +} + +- (instancetype)initWithURL:(NSURL *)url +{ + return [self initWithURL:url protocols:nil]; +} + +- (instancetype)initWithURL:(NSURL *)url protocols:(NSArray *)protocols +{ +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated" + return [self initWithURL:url protocols:protocols allowsUntrustedSSLCertificates:NO]; +#pragma clang diagnostic pop +} + +- (instancetype)initWithURL:(NSURL *)url securityPolicy:(SRSecurityPolicy *)securityPolicy +{ + NSURLRequest *request = [NSURLRequest requestWithURL:url]; + return [self initWithURLRequest:request protocols:nil securityPolicy:securityPolicy]; +} + +- (instancetype)initWithURL:(NSURL *)url protocols:(NSArray *)protocols allowsUntrustedSSLCertificates:(BOOL)allowsUntrustedSSLCertificates +{ + NSURLRequest *request = [NSURLRequest requestWithURL:url]; + return [self initWithURLRequest:request protocols:protocols allowsUntrustedSSLCertificates:allowsUntrustedSSLCertificates]; +} + +- (void)assertOnWorkQueue +{ + assert(dispatch_get_specific((__bridge void *)self) == (__bridge void *)_workQueue); +} + +///-------------------------------------- +#pragma mark - Dealloc +///-------------------------------------- + +- (void)dealloc +{ + _inputStream.delegate = nil; + _outputStream.delegate = nil; + + [_inputStream close]; + [_outputStream close]; + + if (_receivedHTTPHeaders) { + CFRelease(_receivedHTTPHeaders); + _receivedHTTPHeaders = NULL; + } + + SRMutexDestroy(_kvoLock); +} + +///-------------------------------------- +#pragma mark - Accessors +///-------------------------------------- + +#pragma mark readyState + +- (void)setReadyState:(SRReadyState)readyState +{ + @try { + SRMutexLock(_kvoLock); + if (_readyState != readyState) { + [self willChangeValueForKey:@"readyState"]; + os_unfair_lock_lock(&_propertyLock); + _readyState = readyState; + os_unfair_lock_unlock(&_propertyLock); + [self didChangeValueForKey:@"readyState"]; + } + } + @finally { + SRMutexUnlock(_kvoLock); + } +} + +- (SRReadyState)readyState +{ + SRReadyState state = 0; + os_unfair_lock_lock(&_propertyLock); + state = _readyState; + os_unfair_lock_unlock(&_propertyLock); + return state; +} + ++ (BOOL)automaticallyNotifiesObserversOfReadyState { + return NO; +} + +///-------------------------------------- +#pragma mark - Open / Close +///-------------------------------------- + +- (void)open +{ + NSURL* const url = _url; + if (!url) { + NSError *error = SRErrorWithDomainCodeDescription(NSURLErrorDomain, NSURLErrorBadURL, @"Unable to open socket with emtpy URL."); + [self _failWithError:error]; + return; + } + NSAssert(self.readyState == SR_CONNECTING, @"Cannot call -(void)open on SRWebSocket more than once."); + + _selfRetain = self; + + if (_urlRequest.timeoutInterval > 0) { + dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(_urlRequest.timeoutInterval * NSEC_PER_SEC)); + __weak typeof(self) wself = self; + dispatch_after(popTime, dispatch_get_main_queue(), ^{ + __strong SRWebSocket *sself = wself; + if (!sself) { + return; + } + if (sself.readyState == SR_CONNECTING) { + NSError *error = SRErrorWithDomainCodeDescription(NSURLErrorDomain, NSURLErrorTimedOut, @"Timed out connecting to server."); + [sself _failWithError:error]; + } + }); + } + + _proxyConnect = [[SRProxyConnect alloc] initWithURL:url]; + + __weak typeof(self) wself = self; + [_proxyConnect openNetworkStreamWithCompletion:^(NSError *error, NSInputStream *readStream, NSOutputStream *writeStream) { + [wself _connectionDoneWithError:error readStream:readStream writeStream:writeStream]; + }]; +} + +- (void)_connectionDoneWithError:(NSError *)error readStream:(NSInputStream *)readStream writeStream:(NSOutputStream *)writeStream +{ + if (error != nil) { + [self _failWithError:error]; + } else { + _outputStream = writeStream; + _inputStream = readStream; + + _inputStream.delegate = self; + _outputStream.delegate = self; + [self _updateSecureStreamOptions]; + + if (!_scheduledRunloops.count) { + [self scheduleInRunLoop:[NSRunLoop SR_networkRunLoop] forMode:NSDefaultRunLoopMode]; + } + + // If we don't require SSL validation - consider that we connected. + // Otherwise `didConnect` is called when SSL validation finishes. + if (!_requestRequiresSSL) { + dispatch_async(_workQueue, ^{ + [self didConnect]; + }); + } + } + // Schedule to run on a work queue, to make sure we don't run this inline and deallocate `self` inside `SRProxyConnect`. + // TODO: (nlutsenko) Find a better structure for this, maybe Bolts Tasks? + dispatch_async(_workQueue, ^{ + self->_proxyConnect = nil; + }); +} + +- (BOOL)_checkHandshake:(CFHTTPMessageRef)httpMessage +{ + NSString *acceptHeader = CFBridgingRelease(CFHTTPMessageCopyHeaderFieldValue(httpMessage, CFSTR("Sec-WebSocket-Accept"))); + + if (acceptHeader == nil) { + return NO; + } + + NSString *concattedString = [_secKey stringByAppendingString:SRWebSocketAppendToSecKeyString]; + NSData *hashedString = SRSHA1HashFromString(concattedString); + NSString *expectedAccept = SRBase64EncodedStringFromData(hashedString); + return [acceptHeader isEqualToString:expectedAccept]; +} + +- (void)_HTTPHeadersDidFinish:(CFHTTPMessageRef)httpMessage +{ + NSInteger responseCode = CFHTTPMessageGetResponseStatusCode(httpMessage); + if (responseCode >= 400) { + SRDebugLog(@"Request failed with response code %d", responseCode); + NSError *error = SRHTTPErrorWithCodeDescription(responseCode, 2132, + [NSString stringWithFormat:@"Received bad response code from server: %d.", + (int)responseCode]); + [self _failWithError:error]; + return; + } + + if(![self _checkHandshake:httpMessage]) { + NSError *error = SRErrorWithCodeDescription(2133, @"Invalid Sec-WebSocket-Accept response."); + [self _failWithError:error]; + return; + } + + NSString *negotiatedProtocol = CFBridgingRelease(CFHTTPMessageCopyHeaderFieldValue(httpMessage, CFSTR("Sec-WebSocket-Protocol"))); + if (negotiatedProtocol) { + // Make sure we requested the protocol + if ([_requestedProtocols indexOfObject:negotiatedProtocol] == NSNotFound) { + NSError *error = SRErrorWithCodeDescription(2133, @"Server specified Sec-WebSocket-Protocol that wasn't requested."); + [self _failWithError:error]; + return; + } + + _protocol = negotiatedProtocol; + } + + self.readyState = SR_OPEN; + + if (!_didFail) { + [self _readFrameNew]; + } + + [self.delegateController performDelegateBlock:^(id _Nullable delegate, SRDelegateAvailableMethods availableMethods) { + if (availableMethods.didOpen) { + [delegate webSocketDidOpen:self]; + } + }]; +} + + +- (void)_readHTTPHeader +{ + if (_receivedHTTPHeaders == NULL) { + _receivedHTTPHeaders = CFHTTPMessageCreateEmpty(NULL, NO); + } + + [self _readUntilHeaderCompleteWithCallback:^(SRWebSocket *socket, NSData *data) { + if (!socket) { + return; + } + CFHTTPMessageRef receivedHTTPHeaders = socket->_receivedHTTPHeaders; + + CFHTTPMessageAppendBytes(receivedHTTPHeaders, (const UInt8 *)data.bytes, data.length); + + if (CFHTTPMessageIsHeaderComplete(receivedHTTPHeaders)) { + SRDebugLog(@"Finished reading headers %@", CFBridgingRelease(CFHTTPMessageCopyAllHeaderFields(receivedHTTPHeaders))); + [socket _HTTPHeadersDidFinish:receivedHTTPHeaders]; + } else { + [socket _readHTTPHeader]; + } + }]; +} + +- (void)didConnect +{ + SRDebugLog(@"Connected"); + + _secKey = SRBase64EncodedStringFromData(SRRandomData(16)); + assert([_secKey length] == 24); + + CFHTTPMessageRef message = SRHTTPConnectMessageCreate(_urlRequest, + _secKey, + SRWebSocketProtocolVersion, + self.requestCookies, + _requestedProtocols); + + NSData *messageData = CFBridgingRelease(CFHTTPMessageCopySerializedMessage(message)); + + CFRelease(message); + + [self _writeData:messageData]; + [self _readHTTPHeader]; +} + +- (void)_updateSecureStreamOptions +{ + if (_requestRequiresSSL) { + SRDebugLog(@"Setting up security for streams."); + [_securityPolicy updateSecurityOptionsInStream:_inputStream]; + [_securityPolicy updateSecurityOptionsInStream:_outputStream]; + } + + NSString *networkServiceType = SRStreamNetworkServiceTypeFromURLRequest(_urlRequest); + if (networkServiceType != nil) { + [_inputStream setProperty:networkServiceType forKey:NSStreamNetworkServiceType]; + [_outputStream setProperty:networkServiceType forKey:NSStreamNetworkServiceType]; + } +} + +- (void)scheduleInRunLoop:(NSRunLoop *)aRunLoop forMode:(NSString *)mode +{ + [_outputStream scheduleInRunLoop:aRunLoop forMode:mode]; + [_inputStream scheduleInRunLoop:aRunLoop forMode:mode]; + + [_scheduledRunloops addObject:@[aRunLoop, mode]]; +} + +- (void)unscheduleFromRunLoop:(NSRunLoop *)aRunLoop forMode:(NSString *)mode +{ + [_outputStream removeFromRunLoop:aRunLoop forMode:mode]; + [_inputStream removeFromRunLoop:aRunLoop forMode:mode]; + + [_scheduledRunloops removeObject:@[aRunLoop, mode]]; +} + +- (void)close +{ + [self closeWithCode:SRStatusCodeNormal reason:nil]; +} + +- (void)closeWithCode:(NSInteger)code reason:(NSString *)reason +{ + assert(code); + __weak typeof(self) wself = self; + dispatch_async(_workQueue, ^{ + __strong SRWebSocket *sself = wself; + if (!sself) { + return; + } + if (sself.readyState == SR_CLOSING || sself.readyState == SR_CLOSED) { + return; + } + + BOOL wasConnecting = sself.readyState == SR_CONNECTING; + + sself.readyState = SR_CLOSING; + + SRDebugLog(@"Closing with code %d reason %@", code, reason); + + if (wasConnecting) { + [sself closeConnection]; + return; + } + + size_t maxMsgSize = [reason maximumLengthOfBytesUsingEncoding:NSUTF8StringEncoding]; + NSMutableData *mutablePayload = [[NSMutableData alloc] initWithLength:sizeof(uint16_t) + maxMsgSize]; + NSData *payload = mutablePayload; + + ((uint16_t *)mutablePayload.mutableBytes)[0] = CFSwapInt16BigToHost((uint16_t)code); + + if (reason) { + NSRange remainingRange = {0}; + + NSUInteger usedLength = 0; + + BOOL success = [reason getBytes:(char *)mutablePayload.mutableBytes + sizeof(uint16_t) maxLength:payload.length - sizeof(uint16_t) usedLength:&usedLength encoding:NSUTF8StringEncoding options:NSStringEncodingConversionExternalRepresentation range:NSMakeRange(0, reason.length) remainingRange:&remainingRange]; +#pragma unused (success) + + assert(success); + assert(remainingRange.length == 0); + + if (usedLength != maxMsgSize) { + payload = [payload subdataWithRange:NSMakeRange(0, usedLength + sizeof(uint16_t))]; + } + } + + + [sself _sendFrameWithOpcode:SROpCodeConnectionClose data:payload]; + }); +} + +- (void)_closeWithProtocolError:(NSString *)message +{ + // Need to shunt this on the _callbackQueue first to see if they received any messages + [self.delegateController performDelegateQueueBlock:^{ + [self closeWithCode:SRStatusCodeProtocolError reason:message]; + dispatch_async(self->_workQueue, ^{ + [self closeConnection]; + }); + }]; +} + +- (void)_failWithError:(NSError *)error +{ + dispatch_async(_workQueue, ^{ + if (self.readyState != SR_CLOSED) { + self->_failed = YES; + [self.delegateController performDelegateBlock:^(id _Nullable delegate, SRDelegateAvailableMethods availableMethods) { + if (availableMethods.didFailWithError) { + [delegate webSocket:self didFailWithError:error]; + } + }]; + + self.readyState = SR_CLOSED; + + SRDebugLog(@"Failing with error %@", error.localizedDescription); + + [self closeConnection]; + [self _scheduleCleanup]; + } + }); +} + +- (void)_writeData:(NSData *)data +{ + [self assertOnWorkQueue]; + + if (_closeWhenFinishedWriting) { + return; + } + + __block NSData *strongData = data; + dispatch_data_t newData = dispatch_data_create(data.bytes, data.length, nil, ^{ + strongData = nil; + }); + (void)strongData; + _outputBuffer = dispatch_data_create_concat(_outputBuffer, newData); + [self _pumpWriting]; +} + +- (void)send:(nullable id)message +{ + if (!message) { + [self sendData:nil error:nil]; // Send Data, but it doesn't matter since we are going to send the same text frame with 0 length. + } else if ([message isKindOfClass:[NSString class]]) { + [self sendString:(NSString *_Nonnull)message error:nil]; + } else if ([message isKindOfClass:[NSData class]]) { + [self sendData:message error:nil]; + } else { + NSAssert(NO, @"Unrecognized message. Not able to send anything other than a String or NSData."); + } +} + +- (BOOL)sendString:(NSString *)string error:(NSError **)error +{ + if (self.readyState != SR_OPEN) { + NSString *message = @"Invalid State: Cannot call `sendString:error:` until connection is open."; + if (error) { + *error = SRErrorWithCodeDescription(2134, message); + } + SRDebugLog(message); + return NO; + } + + string = [string copy]; + dispatch_async(_workQueue, ^{ + [self _sendFrameWithOpcode:SROpCodeTextFrame data:[string dataUsingEncoding:NSUTF8StringEncoding]]; + }); + return YES; +} + +- (BOOL)sendData:(nullable NSData *)data error:(NSError **)error +{ + data = [data copy]; + return [self sendDataNoCopy:data error:error]; +} + +- (BOOL)sendDataNoCopy:(nullable NSData *)data error:(NSError **)error +{ + if (self.readyState != SR_OPEN) { + NSString *message = @"Invalid State: Cannot call `sendDataNoCopy:error:` until connection is open."; + if (error) { + *error = SRErrorWithCodeDescription(2134, message); + } + SRDebugLog(message); + return NO; + } + + dispatch_async(_workQueue, ^{ + if (data) { + [self _sendFrameWithOpcode:SROpCodeBinaryFrame data:data]; + } else { + [self _sendFrameWithOpcode:SROpCodeTextFrame data:nil]; + } + }); + return YES; +} + +- (BOOL)sendPing:(nullable NSData *)data error:(NSError **)error +{ + if (self.readyState != SR_OPEN) { + NSString *message = @"Invalid State: Cannot call `sendPing:error:` until connection is open."; + if (error) { + *error = SRErrorWithCodeDescription(2134, message); + } + SRDebugLog(message); + return NO; + } + + data = [data copy] ?: [NSData data]; // It's okay for a ping to be empty + dispatch_async(_workQueue, ^{ + [self _sendFrameWithOpcode:SROpCodePing data:data]; + }); + return YES; +} + +- (void)_handlePingWithData:(nullable NSData *)data +{ + // Need to pingpong this off _callbackQueue first to make sure messages happen in order + [self.delegateController performDelegateBlock:^(id _Nullable delegate, SRDelegateAvailableMethods availableMethods) { + if (availableMethods.didReceivePing) { + [delegate webSocket:self didReceivePingWithData:data]; + } + dispatch_async(self->_workQueue, ^{ + [self _sendFrameWithOpcode:SROpCodePong data:data]; + }); + }]; +} + +- (void)handlePong:(NSData *)pongData +{ + SRDebugLog(@"Received pong"); + [self.delegateController performDelegateBlock:^(id _Nullable delegate, SRDelegateAvailableMethods availableMethods) { + if (availableMethods.didReceivePong) { + [delegate webSocket:self didReceivePong:pongData]; + } + }]; +} + + +static inline BOOL closeCodeIsValid(int closeCode) { + if (closeCode < 1000) { + return NO; + } + + if (closeCode >= 1000 && closeCode <= 1011) { + if (closeCode == 1004 || + closeCode == 1005 || + closeCode == 1006) { + return NO; + } + return YES; + } + + if (closeCode >= 3000 && closeCode <= 3999) { + return YES; + } + + if (closeCode >= 4000 && closeCode <= 4999) { + return YES; + } + + return NO; +} + +// Note from RFC: +// +// If there is a body, the first two +// bytes of the body MUST be a 2-byte unsigned integer (in network byte +// order) representing a status code with value /code/ defined in +// Section 7.4. Following the 2-byte integer the body MAY contain UTF-8 +// encoded data with value /reason/, the interpretation of which is not +// defined by this specification. + +- (void)handleCloseWithData:(NSData *)data +{ + size_t dataSize = data.length; + __block uint16_t closeCode = 0; + + SRDebugLog(@"Received close frame"); + + if (dataSize == 1) { + // TODO handle error + [self _closeWithProtocolError:@"Payload for close must be larger than 2 bytes"]; + return; + } else if (dataSize >= 2) { + [data getBytes:&closeCode length:sizeof(closeCode)]; + _closeCode = CFSwapInt16BigToHost(closeCode); + if (!closeCodeIsValid(_closeCode)) { + [self _closeWithProtocolError:[NSString stringWithFormat:@"Cannot have close code of %d", _closeCode]]; + return; + } + if (dataSize > 2) { + _closeReason = [[NSString alloc] initWithData:[data subdataWithRange:NSMakeRange(2, dataSize - 2)] encoding:NSUTF8StringEncoding]; + if (!_closeReason) { + [self _closeWithProtocolError:@"Close reason MUST be valid UTF-8"]; + return; + } + } + } else { + _closeCode = SRStatusNoStatusReceived; + } + + [self assertOnWorkQueue]; + + if (self.readyState == SR_OPEN) { + [self closeWithCode:1000 reason:nil]; + } + dispatch_async(_workQueue, ^{ + [self closeConnection]; + }); +} + +- (void)closeConnection +{ + [self assertOnWorkQueue]; + SRDebugLog(@"Trying to disconnect"); + _closeWhenFinishedWriting = YES; + [self _pumpWriting]; +} + +- (void)_handleFrameWithData:(NSData *)frameData opCode:(SROpCode)opcode +{ + // Check that the current data is valid UTF8 + + BOOL isControlFrame = (opcode == SROpCodePing || opcode == SROpCodePong || opcode == SROpCodeConnectionClose); + if (isControlFrame) { + //frameData will be copied before passing to handlers + //otherwise there can be misbehaviours when value at the pointer is changed + frameData = [frameData copy]; + + dispatch_async(_workQueue, ^{ + [self _readFrameContinue]; + }); + } else { + [self _readFrameNew]; + } + + switch (opcode) { + case SROpCodeTextFrame: { + NSString *string = [[NSString alloc] initWithData:frameData encoding:NSUTF8StringEncoding]; + if (!string && frameData) { + [self closeWithCode:SRStatusCodeInvalidUTF8 reason:@"Text frames must be valid UTF-8."]; + dispatch_async(_workQueue, ^{ + [self closeConnection]; + }); + return; + } + SRDebugLog(@"Received text message."); + [self.delegateController performDelegateBlock:^(id _Nullable delegate, SRDelegateAvailableMethods availableMethods) { + // Don't convert into string - iff `delegate` tells us not to. Otherwise - create UTF8 string and handle that. + if (availableMethods.shouldConvertTextFrameToString && ![delegate webSocketShouldConvertTextFrameToString:self]) { + if (availableMethods.didReceiveMessage) { + [delegate webSocket:self didReceiveMessage:frameData]; + } + if (availableMethods.didReceiveMessageWithData) { + [delegate webSocket:self didReceiveMessageWithData:frameData]; + } + } else { + if (availableMethods.didReceiveMessage) { + [delegate webSocket:self didReceiveMessage:string]; + } + if (availableMethods.didReceiveMessageWithString) { + [delegate webSocket:self didReceiveMessageWithString:string]; + } + } + }]; + break; + } + case SROpCodeBinaryFrame: { + SRDebugLog(@"Received data message."); + [self.delegateController performDelegateBlock:^(id _Nullable delegate, SRDelegateAvailableMethods availableMethods) { + if (availableMethods.didReceiveMessage) { + [delegate webSocket:self didReceiveMessage:frameData]; + } + if (availableMethods.didReceiveMessageWithData) { + [delegate webSocket:self didReceiveMessageWithData:frameData]; + } + }]; + } + break; + case SROpCodeConnectionClose: + [self handleCloseWithData:frameData]; + break; + case SROpCodePing: + [self _handlePingWithData:frameData]; + break; + case SROpCodePong: + [self handlePong:frameData]; + break; + default: + [self _closeWithProtocolError:[NSString stringWithFormat:@"Unknown opcode %ld", (long)opcode]]; + // TODO: Handle invalid opcode + break; + } +} + +- (void)_handleFrameHeader:(frame_header)frame_header curData:(NSData *)curData +{ + assert(frame_header.opcode != 0); + + if (self.readyState == SR_CLOSED) { + return; + } + + + BOOL isControlFrame = (frame_header.opcode == SROpCodePing || frame_header.opcode == SROpCodePong || frame_header.opcode == SROpCodeConnectionClose); + + if (isControlFrame && !frame_header.fin) { + [self _closeWithProtocolError:@"Fragmented control frames not allowed"]; + return; + } + + if (isControlFrame && frame_header.payload_length >= 126) { + [self _closeWithProtocolError:@"Control frames cannot have payloads larger than 126 bytes"]; + return; + } + + if (!isControlFrame) { + _currentFrameOpcode = frame_header.opcode; + _currentFrameCount += 1; + } + + if (frame_header.payload_length == 0) { + if (isControlFrame) { + [self _handleFrameWithData:curData opCode:frame_header.opcode]; + } else { + if (frame_header.fin) { + [self _handleFrameWithData:_currentFrameData opCode:frame_header.opcode]; + } else { + // TODO add assert that opcode is not a control; + [self _readFrameContinue]; + } + } + } else { + assert(frame_header.payload_length <= SIZE_T_MAX); + [self _addConsumerWithDataLength:(size_t)frame_header.payload_length callback:^(SRWebSocket *sself, NSData *newData) { + if (isControlFrame) { + [sself _handleFrameWithData:newData opCode:frame_header.opcode]; + } else { + if (frame_header.fin) { + [sself _handleFrameWithData:sself->_currentFrameData opCode:frame_header.opcode]; + } else { + // TODO add assert that opcode is not a control; + [sself _readFrameContinue]; + } + } + } readToCurrentFrame:!isControlFrame unmaskBytes:frame_header.masked]; + } +} + +/* From RFC: + + 0 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-------+-+-------------+-------------------------------+ + |F|R|R|R| opcode|M| Payload len | Extended payload length | + |I|S|S|S| (4) |A| (7) | (16/64) | + |N|V|V|V| |S| | (if payload len==126/127) | + | |1|2|3| |K| | | + +-+-+-+-+-------+-+-------------+ - - - - - - - - - - - - - - - + + | Extended payload length continued, if payload len == 127 | + + - - - - - - - - - - - - - - - +-------------------------------+ + | |Masking-key, if MASK set to 1 | + +-------------------------------+-------------------------------+ + | Masking-key (continued) | Payload Data | + +-------------------------------- - - - - - - - - - - - - - - - + + : Payload Data continued ... : + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + | Payload Data continued ... | + +---------------------------------------------------------------+ + */ + +static const uint8_t SRFinMask = 0x80; +static const uint8_t SROpCodeMask = 0x0F; +static const uint8_t SRRsvMask = 0x70; +static const uint8_t SRMaskMask = 0x80; +static const uint8_t SRPayloadLenMask = 0x7F; + + +- (void)_readFrameContinue +{ + assert((_currentFrameCount == 0 && _currentFrameOpcode == 0) || (_currentFrameCount > 0 && _currentFrameOpcode > 0)); + + [self _addConsumerWithDataLength:2 callback:^(SRWebSocket *sself, NSData *data) { + __block frame_header header = {0}; + + const uint8_t *headerBuffer = data.bytes; + assert(data.length >= 2); + + if (headerBuffer[0] & SRRsvMask) { + [sself _closeWithProtocolError:@"Server used RSV bits"]; + return; + } + + uint8_t receivedOpcode = (SROpCodeMask & headerBuffer[0]); + + BOOL isControlFrame = (receivedOpcode == SROpCodePing || receivedOpcode == SROpCodePong || receivedOpcode == SROpCodeConnectionClose); + + if (!isControlFrame && receivedOpcode != 0 && sself->_currentFrameCount > 0) { + [sself _closeWithProtocolError:@"all data frames after the initial data frame must have opcode 0"]; + return; + } + + if (receivedOpcode == 0 && sself->_currentFrameCount == 0) { + [sself _closeWithProtocolError:@"cannot continue a message"]; + return; + } + + header.opcode = receivedOpcode == 0 ? sself->_currentFrameOpcode : receivedOpcode; + + header.fin = !!(SRFinMask & headerBuffer[0]); + + + header.masked = !!(SRMaskMask & headerBuffer[1]); + header.payload_length = SRPayloadLenMask & headerBuffer[1]; + + headerBuffer = NULL; + + if (header.masked) { + [sself _closeWithProtocolError:@"Client must receive unmasked data"]; + return; + } + + size_t extra_bytes_needed = header.masked ? sizeof(sself->_currentReadMaskKey) : 0; + + if (header.payload_length == 126) { + extra_bytes_needed += sizeof(uint16_t); + } else if (header.payload_length == 127) { + extra_bytes_needed += sizeof(uint64_t); + } + + if (extra_bytes_needed == 0) { + [sself _handleFrameHeader:header curData:sself->_currentFrameData]; + } else { + [sself _addConsumerWithDataLength:extra_bytes_needed callback:^(SRWebSocket *eself, NSData *edata) { + size_t mapped_size = edata.length; +#pragma unused (mapped_size) + const void *mapped_buffer = edata.bytes; + size_t offset = 0; + + if (header.payload_length == 126) { + assert(mapped_size >= sizeof(uint16_t)); + uint16_t payloadLength = 0; + memcpy(&payloadLength, mapped_buffer, sizeof(uint16_t)); + payloadLength = CFSwapInt16BigToHost(payloadLength); + + header.payload_length = payloadLength; + offset += sizeof(uint16_t); + } else if (header.payload_length == 127) { + assert(mapped_size >= sizeof(uint64_t)); + uint64_t payloadLength = 0; + memcpy(&payloadLength, mapped_buffer, sizeof(uint64_t)); + payloadLength = CFSwapInt64BigToHost(payloadLength); + + header.payload_length = payloadLength; + offset += sizeof(uint64_t); + } else { + assert(header.payload_length < 126 && header.payload_length >= 0); + } + + if (header.masked) { + assert(mapped_size >= sizeof(eself->_currentReadMaskOffset) + offset); + memcpy(eself->_currentReadMaskKey, ((uint8_t *)mapped_buffer) + offset, sizeof(eself->_currentReadMaskKey)); + } + + [eself _handleFrameHeader:header curData:eself->_currentFrameData]; + } readToCurrentFrame:NO unmaskBytes:NO]; + } + } readToCurrentFrame:NO unmaskBytes:NO]; +} + +- (void)_readFrameNew +{ + dispatch_async(_workQueue, ^{ + // Don't reset the length, since Apple doesn't guarantee that this will free the memory (and in tests on + // some platforms, it doesn't seem to, effectively causing a leak the size of the biggest frame so far). + self->_currentFrameData = [[NSMutableData alloc] init]; + + self->_currentFrameOpcode = 0; + self->_currentFrameCount = 0; + self->_readOpCount = 0; + self->_currentStringScanPosition = 0; + + [self _readFrameContinue]; + }); +} + +- (void)_pumpWriting +{ + [self assertOnWorkQueue]; + + NSUInteger dataLength = dispatch_data_get_size(_outputBuffer); + if (dataLength - _outputBufferOffset > 0 && _outputStream.hasSpaceAvailable) { + __block NSInteger bytesWritten = 0; + __block BOOL streamFailed = NO; + + dispatch_data_t dataToSend = dispatch_data_create_subrange(_outputBuffer, _outputBufferOffset, dataLength - _outputBufferOffset); + dispatch_data_apply(dataToSend, ^bool(dispatch_data_t region, size_t offset, const void *buffer, size_t size) { + NSInteger sentLength = [_outputStream write:buffer maxLength:size]; + if (sentLength == -1) { + streamFailed = YES; + return false; + } + bytesWritten += sentLength; + return (sentLength >= (NSInteger)size); // If we can't write all the data into the stream - bail-out early. + }); + if (streamFailed) { + NSInteger code = 2145; + NSString *description = @"Error writing to stream."; + NSError *streamError = _outputStream.streamError; + NSError *error = streamError ? SRErrorWithCodeDescriptionUnderlyingError(code, description, streamError) : SRErrorWithCodeDescription(code, description); + [self _failWithError:error]; + return; + } + + _outputBufferOffset += bytesWritten; + + if (_outputBufferOffset > SRDefaultBufferSize() && _outputBufferOffset > dataLength / 2) { + _outputBuffer = dispatch_data_create_subrange(_outputBuffer, _outputBufferOffset, dataLength - _outputBufferOffset); + _outputBufferOffset = 0; + } + } + + if (_closeWhenFinishedWriting && + (dispatch_data_get_size(_outputBuffer) - _outputBufferOffset) == 0 && + (_inputStream.streamStatus != NSStreamStatusNotOpen && + _inputStream.streamStatus != NSStreamStatusClosed) && + !_sentClose) { + _sentClose = YES; + + @synchronized(self) { + [_outputStream close]; + [_inputStream close]; + + + for (NSArray *runLoop in [_scheduledRunloops copy]) { + [self unscheduleFromRunLoop:[runLoop objectAtIndex:0] forMode:[runLoop objectAtIndex:1]]; + } + } + + if (!_failed) { + [self.delegateController performDelegateBlock:^(id _Nullable delegate, SRDelegateAvailableMethods availableMethods) { + if (availableMethods.didCloseWithCode) { + [delegate webSocket:self didCloseWithCode:self->_closeCode reason:self->_closeReason wasClean:YES]; + } + }]; + } + + [self _scheduleCleanup]; + } +} + +- (void)_addConsumerWithScanner:(stream_scanner)consumer callback:(data_callback)callback +{ + [self assertOnWorkQueue]; + [self _addConsumerWithScanner:consumer callback:callback dataLength:0]; +} + +- (void)_addConsumerWithDataLength:(size_t)dataLength callback:(data_callback)callback readToCurrentFrame:(BOOL)readToCurrentFrame unmaskBytes:(BOOL)unmaskBytes +{ + [self assertOnWorkQueue]; + assert(dataLength); + + [_consumers addObject:[_consumerPool consumerWithScanner:nil handler:callback bytesNeeded:dataLength readToCurrentFrame:readToCurrentFrame unmaskBytes:unmaskBytes]]; + [self _pumpScanner]; +} + +- (void)_addConsumerWithScanner:(stream_scanner)consumer callback:(data_callback)callback dataLength:(size_t)dataLength +{ + [self assertOnWorkQueue]; + [_consumers addObject:[_consumerPool consumerWithScanner:consumer handler:callback bytesNeeded:dataLength readToCurrentFrame:NO unmaskBytes:NO]]; + [self _pumpScanner]; +} + + +- (void)_scheduleCleanup +{ + @synchronized(self) { + if (_cleanupScheduled) { + return; + } + + _cleanupScheduled = YES; + + // Cleanup NSStream delegate's in the same RunLoop used by the streams themselves: + // This way we'll prevent race conditions between handleEvent and SRWebsocket's dealloc + NSTimer *timer = [NSTimer timerWithTimeInterval:(0.0f) target:self selector:@selector(_cleanupSelfReference:) userInfo:nil repeats:NO]; + [[NSRunLoop SR_networkRunLoop] addTimer:timer forMode:NSDefaultRunLoopMode]; + } +} + +- (void)_cleanupSelfReference:(NSTimer *)timer +{ + @synchronized(self) { + // Nuke NSStream delegate's + _inputStream.delegate = nil; + _outputStream.delegate = nil; + + // Remove the streams, right now, from the networkRunLoop + [_inputStream close]; + [_outputStream close]; + } + + // Cleanup selfRetain in the same GCD queue as usual + dispatch_async(_workQueue, ^{ + self->_selfRetain = nil; + }); +} + + +static const char CRLFCRLFBytes[] = {'\r', '\n', '\r', '\n'}; + +- (void)_readUntilHeaderCompleteWithCallback:(data_callback)dataHandler +{ + [self _readUntilBytes:CRLFCRLFBytes length:sizeof(CRLFCRLFBytes) callback:dataHandler]; +} + +- (void)_readUntilBytes:(const void *)bytes length:(size_t)length callback:(data_callback)dataHandler +{ + // TODO optimize so this can continue from where we last searched + stream_scanner consumer = ^size_t(NSData *data) { + __block size_t found_size = 0; + __block size_t match_count = 0; + + size_t size = data.length; + const unsigned char *buffer = data.bytes; + for (size_t i = 0; i < size; i++ ) { + if (((const unsigned char *)buffer)[i] == ((const unsigned char *)bytes)[match_count]) { + match_count += 1; + if (match_count == length) { + found_size = i + 1; + break; + } + } else { + match_count = 0; + } + } + return found_size; + }; + [self _addConsumerWithScanner:consumer callback:dataHandler]; +} + + +// Returns true if did work +- (BOOL)_innerPumpScanner { + + BOOL didWork = NO; + + if (self.readyState >= SR_CLOSED) { + return didWork; + } + + size_t readBufferSize = dispatch_data_get_size(_readBuffer); + + if (!_consumers.count) { + return didWork; + } + + size_t curSize = readBufferSize - _readBufferOffset; + if (!curSize) { + return didWork; + } + + SRIOConsumer *consumer = [_consumers objectAtIndex:0]; + + size_t bytesNeeded = consumer.bytesNeeded; + + size_t foundSize = 0; + if (consumer.consumer) { + NSData *subdata = (NSData *)dispatch_data_create_subrange(_readBuffer, _readBufferOffset, readBufferSize - _readBufferOffset); + foundSize = consumer.consumer(subdata); + } else { + assert(consumer.bytesNeeded); + if (curSize >= bytesNeeded) { + foundSize = bytesNeeded; + } else if (consumer.readToCurrentFrame) { + foundSize = curSize; + } + } + + if (consumer.readToCurrentFrame || foundSize) { + dispatch_data_t slice = dispatch_data_create_subrange(_readBuffer, _readBufferOffset, foundSize); + + _readBufferOffset += foundSize; + + if (_readBufferOffset > SRDefaultBufferSize() && _readBufferOffset > readBufferSize / 2) { + _readBuffer = dispatch_data_create_subrange(_readBuffer, _readBufferOffset, readBufferSize - _readBufferOffset); + _readBufferOffset = 0; + } + + if (consumer.unmaskBytes) { + __block NSMutableData *mutableSlice = [slice mutableCopy]; + + NSUInteger len = mutableSlice.length; + uint8_t *bytes = mutableSlice.mutableBytes; + + for (NSUInteger i = 0; i < len; i++) { + bytes[i] = bytes[i] ^ _currentReadMaskKey[_currentReadMaskOffset % sizeof(_currentReadMaskKey)]; + _currentReadMaskOffset += 1; + } + + slice = dispatch_data_create(bytes, len, nil, ^{ + mutableSlice = nil; + }); + } + + if (consumer.readToCurrentFrame) { + dispatch_data_apply(slice, ^bool(dispatch_data_t region, size_t offset, const void *buffer, size_t size) { + [_currentFrameData appendBytes:buffer length:size]; + return true; + }); + + _readOpCount += 1; + + if (_currentFrameOpcode == SROpCodeTextFrame) { + // Validate UTF8 stuff. + size_t currentDataSize = _currentFrameData.length; + if (_currentFrameOpcode == SROpCodeTextFrame && currentDataSize > 0) { + // TODO: Optimize the crap out of this. Don't really have to copy all the data each time + + size_t scanSize = currentDataSize - _currentStringScanPosition; + + NSData *scan_data = [_currentFrameData subdataWithRange:NSMakeRange(_currentStringScanPosition, scanSize)]; + int32_t valid_utf8_size = validate_dispatch_data_partial_string(scan_data); + + if (valid_utf8_size == -1) { + [self closeWithCode:SRStatusCodeInvalidUTF8 reason:@"Text frames must be valid UTF-8"]; + dispatch_async(_workQueue, ^{ + [self closeConnection]; + }); + return didWork; + } else { + _currentStringScanPosition += valid_utf8_size; + } + } + + } + + consumer.bytesNeeded -= foundSize; + + if (consumer.bytesNeeded == 0) { + [_consumers removeObjectAtIndex:0]; + consumer.handler(self, nil); + [_consumerPool returnConsumer:consumer]; + didWork = YES; + } + } else if (foundSize) { + [_consumers removeObjectAtIndex:0]; + consumer.handler(self, (NSData *)slice); + [_consumerPool returnConsumer:consumer]; + didWork = YES; + } + } + return didWork; +} + +-(void)_pumpScanner +{ + [self assertOnWorkQueue]; + + if (!_isPumping) { + _isPumping = YES; + } else { + return; + } + + while ([self _innerPumpScanner]) { + + } + + _isPumping = NO; +} + +//#define NOMASK + +static const size_t SRFrameHeaderOverhead = 32; + +- (void)_sendFrameWithOpcode:(SROpCode)opCode data:(NSData *)data +{ + [self assertOnWorkQueue]; + + if (!data) { + return; + } + + size_t payloadLength = data.length; + + NSMutableData *frameData = [[NSMutableData alloc] initWithLength:payloadLength + SRFrameHeaderOverhead]; + if (!frameData) { + [self closeWithCode:SRStatusCodeMessageTooBig reason:@"Message too big"]; + return; + } + uint8_t *frameBuffer = (uint8_t *)frameData.mutableBytes; + + // set fin + frameBuffer[0] = SRFinMask | opCode; + + // set the mask and header + frameBuffer[1] |= SRMaskMask; + + size_t frameBufferSize = 2; + + if (payloadLength < 126) { + frameBuffer[1] |= payloadLength; + } else { + uint64_t declaredPayloadLength = 0; + size_t declaredPayloadLengthSize = 0; + + if (payloadLength <= UINT16_MAX) { + frameBuffer[1] |= 126; + + declaredPayloadLength = CFSwapInt16BigToHost((uint16_t)payloadLength); + declaredPayloadLengthSize = sizeof(uint16_t); + } else { + frameBuffer[1] |= 127; + + declaredPayloadLength = CFSwapInt64BigToHost((uint64_t)payloadLength); + declaredPayloadLengthSize = sizeof(uint64_t); + } + + memcpy((frameBuffer + frameBufferSize), &declaredPayloadLength, declaredPayloadLengthSize); + frameBufferSize += declaredPayloadLengthSize; + } + + const uint8_t *unmaskedPayloadBuffer = (uint8_t *)data.bytes; + uint8_t *maskKey = frameBuffer + frameBufferSize; + + size_t randomBytesSize = sizeof(uint32_t); + NSData *randomData = SRRandomData(randomBytesSize); + [randomData getBytes:maskKey range:NSMakeRange(0, randomBytesSize)]; + frameBufferSize += randomBytesSize; + + // Copy and unmask the buffer + uint8_t *frameBufferPayloadPointer = frameBuffer + frameBufferSize; + + memcpy(frameBufferPayloadPointer, unmaskedPayloadBuffer, payloadLength); + SRMaskBytesSIMD(frameBufferPayloadPointer, payloadLength, maskKey); + frameBufferSize += payloadLength; + + assert(frameBufferSize <= frameData.length); + frameData.length = frameBufferSize; + + [self _writeData:frameData]; +} + +- (void)stream:(NSStream *)aStream handleEvent:(NSStreamEvent)eventCode +{ + __weak typeof(self) wself = self; + + if (_requestRequiresSSL && !_streamSecurityValidated && + (eventCode == NSStreamEventHasBytesAvailable || eventCode == NSStreamEventHasSpaceAvailable)) { + SecTrustRef trust = (__bridge SecTrustRef)[aStream propertyForKey:(__bridge id)kCFStreamPropertySSLPeerTrust]; + if (trust) { + NSString *const host = _urlRequest.URL.host; + if (!host || host.length == 0) { + dispatch_async(_workQueue, ^{ + NSError *error = SRErrorWithDomainCodeDescription(NSURLErrorDomain, + NSURLErrorBadURL, + @"Unable to validate certificate for empty host."); + [wself _failWithError:error]; + }); + return; + } + _streamSecurityValidated = [_securityPolicy evaluateServerTrust:trust forDomain:host]; + } + if (!_streamSecurityValidated) { + dispatch_async(_workQueue, ^{ + NSError *error = SRErrorWithDomainCodeDescription(NSURLErrorDomain, + NSURLErrorClientCertificateRejected, + @"Invalid server certificate."); + [wself _failWithError:error]; + }); + return; + } + dispatch_async(_workQueue, ^{ + [self didConnect]; + }); + } + dispatch_async(_workQueue, ^{ + [wself safeHandleEvent:eventCode stream:aStream]; + }); +} + +- (void)safeHandleEvent:(NSStreamEvent)eventCode stream:(NSStream *)aStream +{ + switch (eventCode) { + case NSStreamEventOpenCompleted: { + SRDebugLog(@"NSStreamEventOpenCompleted %@", aStream); + if (self.readyState >= SR_CLOSING) { + return; + } + assert(_readBuffer); + + if (!_requestRequiresSSL && self.readyState == SR_CONNECTING && aStream == _inputStream) { + [self didConnect]; + } + + [self _pumpWriting]; + [self _pumpScanner]; + + break; + } + + case NSStreamEventErrorOccurred: { + SRDebugLog(@"NSStreamEventErrorOccurred %@ %@", aStream, [[aStream streamError] copy]); + /// TODO specify error better! + [self _failWithError:aStream.streamError]; + _readBufferOffset = 0; + _readBuffer = dispatch_data_empty; + break; + + } + + case NSStreamEventEndEncountered: { + [self _pumpScanner]; + SRDebugLog(@"NSStreamEventEndEncountered %@", aStream); + if (aStream.streamError) { + [self _failWithError:aStream.streamError]; + } else { + dispatch_async(_workQueue, ^{ + if (self.readyState != SR_CLOSED) { + self.readyState = SR_CLOSED; + [self _scheduleCleanup]; + } + + if (!self->_sentClose && !self->_failed) { + self->_sentClose = YES; + // If we get closed in this state it's probably not clean because we should be sending this when we send messages + [self.delegateController performDelegateBlock:^(id _Nullable delegate, SRDelegateAvailableMethods availableMethods) { + if (availableMethods.didCloseWithCode) { + [delegate webSocket:self + didCloseWithCode:SRStatusCodeGoingAway + reason:@"Stream end encountered" + wasClean:NO]; + } + }]; + } + }); + } + + break; + } + + case NSStreamEventHasBytesAvailable: { + SRDebugLog(@"NSStreamEventHasBytesAvailable %@", aStream); + uint8_t buffer[SRDefaultBufferSize()]; + + while (_inputStream.hasBytesAvailable) { + NSInteger bytesRead = [_inputStream read:buffer maxLength:SRDefaultBufferSize()]; + if (bytesRead > 0) { + dispatch_data_t data = dispatch_data_create(buffer, bytesRead, nil, DISPATCH_DATA_DESTRUCTOR_DEFAULT); + if (!data) { + NSError *error = SRErrorWithCodeDescription(SRStatusCodeMessageTooBig, + @"Unable to allocate memory to read from socket."); + [self _failWithError:error]; + return; + } + _readBuffer = dispatch_data_create_concat(_readBuffer, data); + } else if (bytesRead == -1) { + [self _failWithError:_inputStream.streamError]; + } + } + [self _pumpScanner]; + break; + } + + case NSStreamEventHasSpaceAvailable: { + SRDebugLog(@"NSStreamEventHasSpaceAvailable %@", aStream); + [self _pumpWriting]; + break; + } + + case NSStreamEventNone: + SRDebugLog(@"(default) %@", aStream); + break; + } +} + +///-------------------------------------- +#pragma mark - Delegate +///-------------------------------------- + +- (id _Nullable)delegate +{ + return self.delegateController.delegate; +} + +- (void)setDelegate:(id _Nullable)delegate +{ + self.delegateController.delegate = delegate; +} + +- (void)setDelegateDispatchQueue:(dispatch_queue_t _Nullable)queue +{ + self.delegateController.dispatchQueue = queue; +} + +- (dispatch_queue_t _Nullable)delegateDispatchQueue +{ + return self.delegateController.dispatchQueue; +} + +- (void)setDelegateOperationQueue:(NSOperationQueue *_Nullable)queue +{ + self.delegateController.operationQueue = queue; +} + +- (NSOperationQueue *_Nullable)delegateOperationQueue +{ + return self.delegateController.operationQueue; +} + +@end + +#ifdef HAS_ICU + +static inline int32_t validate_dispatch_data_partial_string(NSData *data) { + if ([data length] > INT32_MAX) { + // INT32_MAX is the limit so long as this Framework is using 32 bit ints everywhere. + return -1; + } + + int32_t size = (int32_t)[data length]; + + const void * contents = [data bytes]; + const uint8_t *str = (const uint8_t *)contents; + + UChar32 codepoint = 1; + int32_t offset = 0; + int32_t lastOffset = 0; + while(offset < size && codepoint > 0) { + lastOffset = offset; + U8_NEXT(str, offset, size, codepoint); + } + + if (codepoint == -1) { + // Check to see if the last byte is valid or whether it was just continuing + if (!U8_IS_LEAD(str[lastOffset]) || U8_COUNT_TRAIL_BYTES(str[lastOffset]) + lastOffset < (int32_t)size) { + + size = -1; + } else { + uint8_t leadByte = str[lastOffset]; + U8_MASK_LEAD_BYTE(leadByte, U8_COUNT_TRAIL_BYTES(leadByte)); + + for (int i = lastOffset + 1; i < offset; i++) { + if (U8_IS_SINGLE(str[i]) || U8_IS_LEAD(str[i]) || !U8_IS_TRAIL(str[i])) { + size = -1; + } + } + + if (size != -1) { + size = lastOffset; + } + } + } + + if (size != -1 && ![[NSString alloc] initWithBytesNoCopy:(char *)[data bytes] length:size encoding:NSUTF8StringEncoding freeWhenDone:NO]) { + size = -1; + } + + return size; +} + +#else + +// This is a hack, and probably not optimal +static inline int32_t validate_dispatch_data_partial_string(NSData *data) { + static const int maxCodepointSize = 3; + + for (int i = 0; i < maxCodepointSize; i++) { + NSString *str = [[NSString alloc] initWithBytesNoCopy:(char *)data.bytes length:data.length - i encoding:NSUTF8StringEncoding freeWhenDone:NO]; + if (str) { + return (int32_t)data.length - i; + } + } + + return -1; +} + +#endif diff --git a/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/SocketRocket/SocketRocket/SocketRocket.h b/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/SocketRocket/SocketRocket/SocketRocket.h new file mode 100644 index 0000000..c7ab062 --- /dev/null +++ b/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/SocketRocket/SocketRocket/SocketRocket.h @@ -0,0 +1,15 @@ +// +// Copyright 2012 Square Inc. +// Portions Copyright (c) 2016-present, Facebook, Inc. +// +// All rights reserved. +// +// This source code is licensed under the BSD-style license found in the +// LICENSE file in the root directory of this source tree. An additional grant +// of patent rights can be found in the PATENTS file in the same directory. +// + +#import +#import +#import +#import diff --git a/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/Target Support Files/Pods-DeepChordsSdk/Pods-DeepChordsSdk-Info.plist b/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/Target Support Files/Pods-DeepChordsSdk/Pods-DeepChordsSdk-Info.plist new file mode 100644 index 0000000..19cf209 --- /dev/null +++ b/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/Target Support Files/Pods-DeepChordsSdk/Pods-DeepChordsSdk-Info.plist @@ -0,0 +1,26 @@ + + + + + CFBundleDevelopmentRegion + ${PODS_DEVELOPMENT_LANGUAGE} + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIdentifier + ${PRODUCT_BUNDLE_IDENTIFIER} + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${PRODUCT_NAME} + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.0.0 + CFBundleSignature + ???? + CFBundleVersion + ${CURRENT_PROJECT_VERSION} + NSPrincipalClass + + + diff --git a/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/Target Support Files/Pods-DeepChordsSdk/Pods-DeepChordsSdk-acknowledgements.markdown b/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/Target Support Files/Pods-DeepChordsSdk/Pods-DeepChordsSdk-acknowledgements.markdown new file mode 100644 index 0000000..3f648a5 --- /dev/null +++ b/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/Target Support Files/Pods-DeepChordsSdk/Pods-DeepChordsSdk-acknowledgements.markdown @@ -0,0 +1,36 @@ +# Acknowledgements +This application makes use of the following third party libraries: + +## SocketRocket + +BSD License + +For SocketRocket software + +Copyright (c) 2016-present, Facebook, Inc. All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + + * Neither the name Facebook nor the names of its contributors may be used to + endorse or promote products derived from this software without specific + prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +Generated by CocoaPods - https://cocoapods.org diff --git a/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/Target Support Files/Pods-DeepChordsSdk/Pods-DeepChordsSdk-acknowledgements.plist b/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/Target Support Files/Pods-DeepChordsSdk/Pods-DeepChordsSdk-acknowledgements.plist new file mode 100644 index 0000000..7a35f4a --- /dev/null +++ b/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/Target Support Files/Pods-DeepChordsSdk/Pods-DeepChordsSdk-acknowledgements.plist @@ -0,0 +1,68 @@ + + + + + PreferenceSpecifiers + + + FooterText + This application makes use of the following third party libraries: + Title + Acknowledgements + Type + PSGroupSpecifier + + + FooterText + BSD License + +For SocketRocket software + +Copyright (c) 2016-present, Facebook, Inc. All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + + * Neither the name Facebook nor the names of its contributors may be used to + endorse or promote products derived from this software without specific + prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + License + BSD + Title + SocketRocket + Type + PSGroupSpecifier + + + FooterText + Generated by CocoaPods - https://cocoapods.org + Title + + Type + PSGroupSpecifier + + + StringsTable + Acknowledgements + Title + Acknowledgements + + diff --git a/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/Target Support Files/Pods-DeepChordsSdk/Pods-DeepChordsSdk-dummy.m b/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/Target Support Files/Pods-DeepChordsSdk/Pods-DeepChordsSdk-dummy.m new file mode 100644 index 0000000..49baa2a --- /dev/null +++ b/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/Target Support Files/Pods-DeepChordsSdk/Pods-DeepChordsSdk-dummy.m @@ -0,0 +1,5 @@ +#import +@interface PodsDummy_Pods_DeepChordsSdk : NSObject +@end +@implementation PodsDummy_Pods_DeepChordsSdk +@end diff --git a/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/Target Support Files/Pods-DeepChordsSdk/Pods-DeepChordsSdk-umbrella.h b/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/Target Support Files/Pods-DeepChordsSdk/Pods-DeepChordsSdk-umbrella.h new file mode 100644 index 0000000..32e1e90 --- /dev/null +++ b/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/Target Support Files/Pods-DeepChordsSdk/Pods-DeepChordsSdk-umbrella.h @@ -0,0 +1,16 @@ +#ifdef __OBJC__ +#import +#else +#ifndef FOUNDATION_EXPORT +#if defined(__cplusplus) +#define FOUNDATION_EXPORT extern "C" +#else +#define FOUNDATION_EXPORT extern +#endif +#endif +#endif + + +FOUNDATION_EXPORT double Pods_DeepChordsSdkVersionNumber; +FOUNDATION_EXPORT const unsigned char Pods_DeepChordsSdkVersionString[]; + diff --git a/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/Target Support Files/Pods-DeepChordsSdk/Pods-DeepChordsSdk.debug.xcconfig b/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/Target Support Files/Pods-DeepChordsSdk/Pods-DeepChordsSdk.debug.xcconfig new file mode 100644 index 0000000..14872ce --- /dev/null +++ b/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/Target Support Files/Pods-DeepChordsSdk/Pods-DeepChordsSdk.debug.xcconfig @@ -0,0 +1,13 @@ +CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO +FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/SocketRocket" +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/SocketRocket/SocketRocket.framework/Headers" +LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' '@executable_path/../../Frameworks' +OTHER_LDFLAGS = $(inherited) -l"icucore" -framework "CFNetwork" -framework "Security" -framework "SocketRocket" +OTHER_MODULE_VERIFIER_FLAGS = $(inherited) "-F${PODS_CONFIGURATION_BUILD_DIR}/SocketRocket" +PODS_BUILD_DIR = ${BUILD_DIR} +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_PODFILE_DIR_PATH = ${SRCROOT}/.. +PODS_ROOT = ${SRCROOT}/../Pods +PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates +USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/Target Support Files/Pods-DeepChordsSdk/Pods-DeepChordsSdk.modulemap b/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/Target Support Files/Pods-DeepChordsSdk/Pods-DeepChordsSdk.modulemap new file mode 100644 index 0000000..b8f06b0 --- /dev/null +++ b/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/Target Support Files/Pods-DeepChordsSdk/Pods-DeepChordsSdk.modulemap @@ -0,0 +1,6 @@ +framework module Pods_DeepChordsSdk { + umbrella header "Pods-DeepChordsSdk-umbrella.h" + + export * + module * { export * } +} diff --git a/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/Target Support Files/Pods-DeepChordsSdk/Pods-DeepChordsSdk.release.xcconfig b/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/Target Support Files/Pods-DeepChordsSdk/Pods-DeepChordsSdk.release.xcconfig new file mode 100644 index 0000000..14872ce --- /dev/null +++ b/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/Target Support Files/Pods-DeepChordsSdk/Pods-DeepChordsSdk.release.xcconfig @@ -0,0 +1,13 @@ +CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO +FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/SocketRocket" +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/SocketRocket/SocketRocket.framework/Headers" +LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' '@executable_path/../../Frameworks' +OTHER_LDFLAGS = $(inherited) -l"icucore" -framework "CFNetwork" -framework "Security" -framework "SocketRocket" +OTHER_MODULE_VERIFIER_FLAGS = $(inherited) "-F${PODS_CONFIGURATION_BUILD_DIR}/SocketRocket" +PODS_BUILD_DIR = ${BUILD_DIR} +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_PODFILE_DIR_PATH = ${SRCROOT}/.. +PODS_ROOT = ${SRCROOT}/../Pods +PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates +USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/Target Support Files/Pods-Example/Pods-Example-acknowledgements.markdown b/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/Target Support Files/Pods-Example/Pods-Example-acknowledgements.markdown index 7e83a9c..7c475f8 100644 --- a/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/Target Support Files/Pods-Example/Pods-Example-acknowledgements.markdown +++ b/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/Target Support Files/Pods-Example/Pods-Example-acknowledgements.markdown @@ -1,6 +1,39 @@ # Acknowledgements This application makes use of the following third party libraries: +## SocketRocket + +BSD License + +For SocketRocket software + +Copyright (c) 2016-present, Facebook, Inc. All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + + * Neither the name Facebook nor the names of its contributors may be used to + endorse or promote products derived from this software without specific + prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + ## IQKeyboardCore MIT License diff --git a/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/Target Support Files/Pods-Example/Pods-Example-acknowledgements.plist b/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/Target Support Files/Pods-Example/Pods-Example-acknowledgements.plist index 871d3f2..f164213 100644 --- a/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/Target Support Files/Pods-Example/Pods-Example-acknowledgements.plist +++ b/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/Target Support Files/Pods-Example/Pods-Example-acknowledgements.plist @@ -12,6 +12,45 @@ Type PSGroupSpecifier + + FooterText + BSD License + +For SocketRocket software + +Copyright (c) 2016-present, Facebook, Inc. All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + + * Neither the name Facebook nor the names of its contributors may be used to + endorse or promote products derived from this software without specific + prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + License + BSD + Title + SocketRocket + Type + PSGroupSpecifier + FooterText MIT License diff --git a/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/Target Support Files/Pods-Example/Pods-Example-frameworks-Debug-input-files.xcfilelist b/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/Target Support Files/Pods-Example/Pods-Example-frameworks-Debug-input-files.xcfilelist index 8d0983c..c7c1447 100644 --- a/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/Target Support Files/Pods-Example/Pods-Example-frameworks-Debug-input-files.xcfilelist +++ b/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/Target Support Files/Pods-Example/Pods-Example-frameworks-Debug-input-files.xcfilelist @@ -1,4 +1,5 @@ ${PODS_ROOT}/Target Support Files/Pods-Example/Pods-Example-frameworks.sh +${BUILT_PRODUCTS_DIR}/SocketRocket/SocketRocket.framework ${BUILT_PRODUCTS_DIR}/IQKeyboardCore/IQKeyboardCore.framework ${BUILT_PRODUCTS_DIR}/IQKeyboardManagerSwift/IQKeyboardManagerSwift.framework ${BUILT_PRODUCTS_DIR}/IQKeyboardNotification/IQKeyboardNotification.framework diff --git a/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/Target Support Files/Pods-Example/Pods-Example-frameworks-Debug-output-files.xcfilelist b/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/Target Support Files/Pods-Example/Pods-Example-frameworks-Debug-output-files.xcfilelist index ab7171d..0f3e419 100644 --- a/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/Target Support Files/Pods-Example/Pods-Example-frameworks-Debug-output-files.xcfilelist +++ b/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/Target Support Files/Pods-Example/Pods-Example-frameworks-Debug-output-files.xcfilelist @@ -1,3 +1,4 @@ +${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/SocketRocket.framework ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/IQKeyboardCore.framework ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/IQKeyboardManagerSwift.framework ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/IQKeyboardNotification.framework diff --git a/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/Target Support Files/Pods-Example/Pods-Example-frameworks-Release-input-files.xcfilelist b/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/Target Support Files/Pods-Example/Pods-Example-frameworks-Release-input-files.xcfilelist index 8d0983c..c7c1447 100644 --- a/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/Target Support Files/Pods-Example/Pods-Example-frameworks-Release-input-files.xcfilelist +++ b/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/Target Support Files/Pods-Example/Pods-Example-frameworks-Release-input-files.xcfilelist @@ -1,4 +1,5 @@ ${PODS_ROOT}/Target Support Files/Pods-Example/Pods-Example-frameworks.sh +${BUILT_PRODUCTS_DIR}/SocketRocket/SocketRocket.framework ${BUILT_PRODUCTS_DIR}/IQKeyboardCore/IQKeyboardCore.framework ${BUILT_PRODUCTS_DIR}/IQKeyboardManagerSwift/IQKeyboardManagerSwift.framework ${BUILT_PRODUCTS_DIR}/IQKeyboardNotification/IQKeyboardNotification.framework diff --git a/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/Target Support Files/Pods-Example/Pods-Example-frameworks-Release-output-files.xcfilelist b/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/Target Support Files/Pods-Example/Pods-Example-frameworks-Release-output-files.xcfilelist index ab7171d..0f3e419 100644 --- a/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/Target Support Files/Pods-Example/Pods-Example-frameworks-Release-output-files.xcfilelist +++ b/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/Target Support Files/Pods-Example/Pods-Example-frameworks-Release-output-files.xcfilelist @@ -1,3 +1,4 @@ +${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/SocketRocket.framework ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/IQKeyboardCore.framework ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/IQKeyboardManagerSwift.framework ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/IQKeyboardNotification.framework diff --git a/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/Target Support Files/Pods-Example/Pods-Example-frameworks.sh b/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/Target Support Files/Pods-Example/Pods-Example-frameworks.sh index db83c79..d9fc13b 100755 --- a/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/Target Support Files/Pods-Example/Pods-Example-frameworks.sh +++ b/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/Target Support Files/Pods-Example/Pods-Example-frameworks.sh @@ -176,6 +176,7 @@ code_sign_if_enabled() { } if [[ "$CONFIGURATION" == "Debug" ]]; then + install_framework "${BUILT_PRODUCTS_DIR}/SocketRocket/SocketRocket.framework" install_framework "${BUILT_PRODUCTS_DIR}/IQKeyboardCore/IQKeyboardCore.framework" install_framework "${BUILT_PRODUCTS_DIR}/IQKeyboardManagerSwift/IQKeyboardManagerSwift.framework" install_framework "${BUILT_PRODUCTS_DIR}/IQKeyboardNotification/IQKeyboardNotification.framework" @@ -188,6 +189,7 @@ if [[ "$CONFIGURATION" == "Debug" ]]; then install_framework "${BUILT_PRODUCTS_DIR}/Toast-Swift/Toast_Swift.framework" fi if [[ "$CONFIGURATION" == "Release" ]]; then + install_framework "${BUILT_PRODUCTS_DIR}/SocketRocket/SocketRocket.framework" install_framework "${BUILT_PRODUCTS_DIR}/IQKeyboardCore/IQKeyboardCore.framework" install_framework "${BUILT_PRODUCTS_DIR}/IQKeyboardManagerSwift/IQKeyboardManagerSwift.framework" install_framework "${BUILT_PRODUCTS_DIR}/IQKeyboardNotification/IQKeyboardNotification.framework" diff --git a/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/Target Support Files/Pods-Example/Pods-Example.debug.xcconfig b/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/Target Support Files/Pods-Example/Pods-Example.debug.xcconfig index 91784a7..d623907 100644 --- a/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/Target Support Files/Pods-Example/Pods-Example.debug.xcconfig +++ b/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/Target Support Files/Pods-Example/Pods-Example.debug.xcconfig @@ -1,13 +1,13 @@ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO ENABLE_USER_SCRIPT_SANDBOXING = NO -FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardCore" "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardManagerSwift" "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardNotification" "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardReturnManager" "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardToolbar" "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardToolbarManager" "${PODS_CONFIGURATION_BUILD_DIR}/IQTextInputViewNotification" "${PODS_CONFIGURATION_BUILD_DIR}/IQTextView" "${PODS_CONFIGURATION_BUILD_DIR}/SnapKit" "${PODS_CONFIGURATION_BUILD_DIR}/Toast-Swift" +FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardCore" "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardManagerSwift" "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardNotification" "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardReturnManager" "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardToolbar" "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardToolbarManager" "${PODS_CONFIGURATION_BUILD_DIR}/IQTextInputViewNotification" "${PODS_CONFIGURATION_BUILD_DIR}/IQTextView" "${PODS_CONFIGURATION_BUILD_DIR}/SnapKit" "${PODS_CONFIGURATION_BUILD_DIR}/SocketRocket" "${PODS_CONFIGURATION_BUILD_DIR}/Toast-Swift" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardCore/IQKeyboardCore.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardManagerSwift/IQKeyboardManagerSwift.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardNotification/IQKeyboardNotification.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardReturnManager/IQKeyboardReturnManager.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardToolbar/IQKeyboardToolbar.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardToolbarManager/IQKeyboardToolbarManager.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/IQTextInputViewNotification/IQTextInputViewNotification.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/IQTextView/IQTextView.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SnapKit/SnapKit.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Toast-Swift/Toast_Swift.framework/Headers" +HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardCore/IQKeyboardCore.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardManagerSwift/IQKeyboardManagerSwift.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardNotification/IQKeyboardNotification.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardReturnManager/IQKeyboardReturnManager.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardToolbar/IQKeyboardToolbar.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardToolbarManager/IQKeyboardToolbarManager.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/IQTextInputViewNotification/IQTextInputViewNotification.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/IQTextView/IQTextView.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SnapKit/SnapKit.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SocketRocket/SocketRocket.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Toast-Swift/Toast_Swift.framework/Headers" LD_RUNPATH_SEARCH_PATHS = $(inherited) /usr/lib/swift '@executable_path/Frameworks' '@loader_path/Frameworks' LIBRARY_SEARCH_PATHS = $(inherited) "${TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" /usr/lib/swift $(SDKROOT)/usr/lib/swift -OTHER_LDFLAGS = $(inherited) -l"swiftCoreGraphics" -framework "Combine" -framework "IQKeyboardCore" -framework "IQKeyboardManagerSwift" -framework "IQKeyboardNotification" -framework "IQKeyboardReturnManager" -framework "IQKeyboardToolbar" -framework "IQKeyboardToolbarManager" -framework "IQTextInputViewNotification" -framework "IQTextView" -framework "QuartzCore" -framework "SnapKit" -framework "Toast_Swift" -framework "UIKit" -OTHER_MODULE_VERIFIER_FLAGS = $(inherited) "-F${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardCore" "-F${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardManagerSwift" "-F${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardNotification" "-F${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardReturnManager" "-F${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardToolbar" "-F${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardToolbarManager" "-F${PODS_CONFIGURATION_BUILD_DIR}/IQTextInputViewNotification" "-F${PODS_CONFIGURATION_BUILD_DIR}/IQTextView" "-F${PODS_CONFIGURATION_BUILD_DIR}/SnapKit" "-F${PODS_CONFIGURATION_BUILD_DIR}/Toast-Swift" +OTHER_LDFLAGS = $(inherited) -l"icucore" -l"swiftCoreGraphics" -framework "CFNetwork" -framework "Combine" -framework "IQKeyboardCore" -framework "IQKeyboardManagerSwift" -framework "IQKeyboardNotification" -framework "IQKeyboardReturnManager" -framework "IQKeyboardToolbar" -framework "IQKeyboardToolbarManager" -framework "IQTextInputViewNotification" -framework "IQTextView" -framework "QuartzCore" -framework "Security" -framework "SnapKit" -framework "SocketRocket" -framework "Toast_Swift" -framework "UIKit" +OTHER_MODULE_VERIFIER_FLAGS = $(inherited) "-F${PODS_CONFIGURATION_BUILD_DIR}/SocketRocket" "-F${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardCore" "-F${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardManagerSwift" "-F${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardNotification" "-F${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardReturnManager" "-F${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardToolbar" "-F${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardToolbarManager" "-F${PODS_CONFIGURATION_BUILD_DIR}/IQTextInputViewNotification" "-F${PODS_CONFIGURATION_BUILD_DIR}/IQTextView" "-F${PODS_CONFIGURATION_BUILD_DIR}/SnapKit" "-F${PODS_CONFIGURATION_BUILD_DIR}/Toast-Swift" 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/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/Target Support Files/Pods-Example/Pods-Example.release.xcconfig b/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/Target Support Files/Pods-Example/Pods-Example.release.xcconfig index 91784a7..d623907 100644 --- a/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/Target Support Files/Pods-Example/Pods-Example.release.xcconfig +++ b/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/Target Support Files/Pods-Example/Pods-Example.release.xcconfig @@ -1,13 +1,13 @@ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO ENABLE_USER_SCRIPT_SANDBOXING = NO -FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardCore" "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardManagerSwift" "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardNotification" "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardReturnManager" "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardToolbar" "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardToolbarManager" "${PODS_CONFIGURATION_BUILD_DIR}/IQTextInputViewNotification" "${PODS_CONFIGURATION_BUILD_DIR}/IQTextView" "${PODS_CONFIGURATION_BUILD_DIR}/SnapKit" "${PODS_CONFIGURATION_BUILD_DIR}/Toast-Swift" +FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardCore" "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardManagerSwift" "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardNotification" "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardReturnManager" "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardToolbar" "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardToolbarManager" "${PODS_CONFIGURATION_BUILD_DIR}/IQTextInputViewNotification" "${PODS_CONFIGURATION_BUILD_DIR}/IQTextView" "${PODS_CONFIGURATION_BUILD_DIR}/SnapKit" "${PODS_CONFIGURATION_BUILD_DIR}/SocketRocket" "${PODS_CONFIGURATION_BUILD_DIR}/Toast-Swift" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardCore/IQKeyboardCore.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardManagerSwift/IQKeyboardManagerSwift.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardNotification/IQKeyboardNotification.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardReturnManager/IQKeyboardReturnManager.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardToolbar/IQKeyboardToolbar.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardToolbarManager/IQKeyboardToolbarManager.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/IQTextInputViewNotification/IQTextInputViewNotification.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/IQTextView/IQTextView.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SnapKit/SnapKit.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Toast-Swift/Toast_Swift.framework/Headers" +HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardCore/IQKeyboardCore.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardManagerSwift/IQKeyboardManagerSwift.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardNotification/IQKeyboardNotification.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardReturnManager/IQKeyboardReturnManager.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardToolbar/IQKeyboardToolbar.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardToolbarManager/IQKeyboardToolbarManager.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/IQTextInputViewNotification/IQTextInputViewNotification.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/IQTextView/IQTextView.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SnapKit/SnapKit.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SocketRocket/SocketRocket.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Toast-Swift/Toast_Swift.framework/Headers" LD_RUNPATH_SEARCH_PATHS = $(inherited) /usr/lib/swift '@executable_path/Frameworks' '@loader_path/Frameworks' LIBRARY_SEARCH_PATHS = $(inherited) "${TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" /usr/lib/swift $(SDKROOT)/usr/lib/swift -OTHER_LDFLAGS = $(inherited) -l"swiftCoreGraphics" -framework "Combine" -framework "IQKeyboardCore" -framework "IQKeyboardManagerSwift" -framework "IQKeyboardNotification" -framework "IQKeyboardReturnManager" -framework "IQKeyboardToolbar" -framework "IQKeyboardToolbarManager" -framework "IQTextInputViewNotification" -framework "IQTextView" -framework "QuartzCore" -framework "SnapKit" -framework "Toast_Swift" -framework "UIKit" -OTHER_MODULE_VERIFIER_FLAGS = $(inherited) "-F${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardCore" "-F${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardManagerSwift" "-F${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardNotification" "-F${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardReturnManager" "-F${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardToolbar" "-F${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardToolbarManager" "-F${PODS_CONFIGURATION_BUILD_DIR}/IQTextInputViewNotification" "-F${PODS_CONFIGURATION_BUILD_DIR}/IQTextView" "-F${PODS_CONFIGURATION_BUILD_DIR}/SnapKit" "-F${PODS_CONFIGURATION_BUILD_DIR}/Toast-Swift" +OTHER_LDFLAGS = $(inherited) -l"icucore" -l"swiftCoreGraphics" -framework "CFNetwork" -framework "Combine" -framework "IQKeyboardCore" -framework "IQKeyboardManagerSwift" -framework "IQKeyboardNotification" -framework "IQKeyboardReturnManager" -framework "IQKeyboardToolbar" -framework "IQKeyboardToolbarManager" -framework "IQTextInputViewNotification" -framework "IQTextView" -framework "QuartzCore" -framework "Security" -framework "SnapKit" -framework "SocketRocket" -framework "Toast_Swift" -framework "UIKit" +OTHER_MODULE_VERIFIER_FLAGS = $(inherited) "-F${PODS_CONFIGURATION_BUILD_DIR}/SocketRocket" "-F${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardCore" "-F${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardManagerSwift" "-F${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardNotification" "-F${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardReturnManager" "-F${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardToolbar" "-F${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardToolbarManager" "-F${PODS_CONFIGURATION_BUILD_DIR}/IQTextInputViewNotification" "-F${PODS_CONFIGURATION_BUILD_DIR}/IQTextView" "-F${PODS_CONFIGURATION_BUILD_DIR}/SnapKit" "-F${PODS_CONFIGURATION_BUILD_DIR}/Toast-Swift" 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/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/Target Support Files/SocketRocket/SocketRocket-Info.plist b/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/Target Support Files/SocketRocket/SocketRocket-Info.plist new file mode 100644 index 0000000..b23720f --- /dev/null +++ b/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/Target Support Files/SocketRocket/SocketRocket-Info.plist @@ -0,0 +1,26 @@ + + + + + CFBundleDevelopmentRegion + ${PODS_DEVELOPMENT_LANGUAGE} + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIdentifier + ${PRODUCT_BUNDLE_IDENTIFIER} + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${PRODUCT_NAME} + CFBundlePackageType + FMWK + CFBundleShortVersionString + 0.7.1 + CFBundleSignature + ???? + CFBundleVersion + ${CURRENT_PROJECT_VERSION} + NSPrincipalClass + + + diff --git a/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/Target Support Files/SocketRocket/SocketRocket-dummy.m b/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/Target Support Files/SocketRocket/SocketRocket-dummy.m new file mode 100644 index 0000000..1e9d2c9 --- /dev/null +++ b/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/Target Support Files/SocketRocket/SocketRocket-dummy.m @@ -0,0 +1,5 @@ +#import +@interface PodsDummy_SocketRocket : NSObject +@end +@implementation PodsDummy_SocketRocket +@end diff --git a/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/Target Support Files/SocketRocket/SocketRocket-prefix.pch b/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/Target Support Files/SocketRocket/SocketRocket-prefix.pch new file mode 100644 index 0000000..beb2a24 --- /dev/null +++ b/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/Target Support Files/SocketRocket/SocketRocket-prefix.pch @@ -0,0 +1,12 @@ +#ifdef __OBJC__ +#import +#else +#ifndef FOUNDATION_EXPORT +#if defined(__cplusplus) +#define FOUNDATION_EXPORT extern "C" +#else +#define FOUNDATION_EXPORT extern +#endif +#endif +#endif + diff --git a/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/Target Support Files/SocketRocket/SocketRocket-umbrella.h b/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/Target Support Files/SocketRocket/SocketRocket-umbrella.h new file mode 100644 index 0000000..dd9d9ef --- /dev/null +++ b/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/Target Support Files/SocketRocket/SocketRocket-umbrella.h @@ -0,0 +1,21 @@ +#ifdef __OBJC__ +#import +#else +#ifndef FOUNDATION_EXPORT +#if defined(__cplusplus) +#define FOUNDATION_EXPORT extern "C" +#else +#define FOUNDATION_EXPORT extern +#endif +#endif +#endif + +#import "NSRunLoop+SRWebSocket.h" +#import "NSURLRequest+SRWebSocket.h" +#import "SocketRocket.h" +#import "SRSecurityPolicy.h" +#import "SRWebSocket.h" + +FOUNDATION_EXPORT double SocketRocketVersionNumber; +FOUNDATION_EXPORT const unsigned char SocketRocketVersionString[]; + diff --git a/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/Target Support Files/SocketRocket/SocketRocket.debug.xcconfig b/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/Target Support Files/SocketRocket/SocketRocket.debug.xcconfig new file mode 100644 index 0000000..62cdd4a --- /dev/null +++ b/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/Target Support Files/SocketRocket/SocketRocket.debug.xcconfig @@ -0,0 +1,14 @@ +BUILD_LIBRARY_FOR_DISTRIBUTION = YES +CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO +CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/SocketRocket +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +OTHER_LDFLAGS = $(inherited) -l"icucore" -framework "CFNetwork" -framework "Security" +PODS_BUILD_DIR = ${BUILD_DIR} +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} +PODS_ROOT = ${SRCROOT} +PODS_TARGET_SRCROOT = ${PODS_ROOT}/SocketRocket +PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates +PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} +SKIP_INSTALL = YES +USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/Target Support Files/SocketRocket/SocketRocket.modulemap b/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/Target Support Files/SocketRocket/SocketRocket.modulemap new file mode 100644 index 0000000..52acc5d --- /dev/null +++ b/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/Target Support Files/SocketRocket/SocketRocket.modulemap @@ -0,0 +1,6 @@ +framework module SocketRocket { + umbrella header "SocketRocket-umbrella.h" + + export * + module * { export * } +} diff --git a/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/Target Support Files/SocketRocket/SocketRocket.release.xcconfig b/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/Target Support Files/SocketRocket/SocketRocket.release.xcconfig new file mode 100644 index 0000000..62cdd4a --- /dev/null +++ b/document/DeepChordsSdk_iOS/DeepChordsSdk/Pods/Target Support Files/SocketRocket/SocketRocket.release.xcconfig @@ -0,0 +1,14 @@ +BUILD_LIBRARY_FOR_DISTRIBUTION = YES +CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO +CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/SocketRocket +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +OTHER_LDFLAGS = $(inherited) -l"icucore" -framework "CFNetwork" -framework "Security" +PODS_BUILD_DIR = ${BUILD_DIR} +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} +PODS_ROOT = ${SRCROOT} +PODS_TARGET_SRCROOT = ${PODS_ROOT}/SocketRocket +PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates +PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} +SKIP_INSTALL = YES +USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/document/DeepChordsSdk_iOS/DeepChordsSdk/podfile b/document/DeepChordsSdk_iOS/DeepChordsSdk/podfile index e031ec1..2b7a0d4 100644 --- a/document/DeepChordsSdk_iOS/DeepChordsSdk/podfile +++ b/document/DeepChordsSdk_iOS/DeepChordsSdk/podfile @@ -3,6 +3,10 @@ source "https://gitee.com/mirrors/CocoaPods-Specs.git" platform :ios, '13.0' use_frameworks! +target 'DeepChordsSdk' do + use_frameworks! + pod 'SocketRocket' +end workspace 'DeepChordsSdk' project 'Example/Example.xcodeproj' @@ -10,4 +14,5 @@ target 'Example' do pod 'SnapKit', '~> 5.7.0' pod 'IQKeyboardManagerSwift' pod 'Toast-Swift' + pod 'SocketRocket' end